QR Code Generator
Generate QR codes for text, URLs, WiFi networks, email, phone, SMS and contact cards. Choose the size, colours and error-correction level, add a centre logo, and export as a PNG or an infinitely scalable SVG. The encoder runs entirely in your browser — your WiFi password and contact details are never uploaded. Free, no signup.
How to Use This Tool
- Pick what the code should do — choose Text, URL, WiFi, Email, Phone, SMS or vCard. The form changes to match.
- Fill in the details — the code regenerates as you type, and the panel shows the version, module count and encoding mode.
- Set size, colours and error correction — higher error correction survives more damage but makes the grid denser. Use H if you add a logo.
- Download PNG or SVG — PNG suits screens and quick sharing; SVG stays razor-sharp at any print size.
About QR Codes
A QR code is a two-dimensional barcode that stores data in a grid of black and white modules. The three large squares in the corners are finder patterns that let a scanner locate and orient the code from any angle, which is why a QR code reads upside down while a traditional barcode does not. Around them sit timing patterns that establish the grid spacing, alignment patterns that correct for perspective distortion when the code is photographed at an angle, and a format block that tells the scanner which error-correction level and mask pattern were used. Everything else is your data, plus its error-correction codewords.
Error correction is the feature that makes QR codes genuinely robust, and it is the setting people most often get wrong. The four levels recover roughly 7, 15, 25 and 30 percent of the code if it is damaged, dirty, partially covered or badly lit. This works through Reed-Solomon coding, the same family of mathematics used on compact discs and in deep-space communication: redundant codewords are computed from your data so the original can be reconstructed even when a chunk is unreadable. The trade-off is size. Higher correction means more codewords, which means a denser grid for the same content, which can itself make scanning harder if the code is printed small.
Choosing a level is a practical judgement rather than a rule. Level M is a sensible default for screens and clean print. Level Q or H earns its place on packaging, outdoor signage, vehicle livery, restaurant tables and anywhere the code will be scuffed, curved, wet or photographed in poor light. Level H is effectively mandatory if you place a logo in the centre, because that logo destroys modules and the correction has to rebuild them. Even then, keep the logo under about a fifth of the width, which is why this tool caps it at 22 percent, and always test the finished code with an actual phone before committing to a print run.
Two physical details cause most real-world scanning failures, and neither is about the code itself. The first is the quiet zone: the specification requires a clear margin of at least four modules on every side, and without it a scanner cannot tell where the code ends. Designers routinely crop this away to make a layout tidier and then wonder why nothing scans. The second is contrast and polarity. Scanners expect dark modules on a light background, and an inverted code, or one using two mid-tone brand colours, often fails even though it looks fine to the eye. This tool warns you about both.
It is worth understanding the difference between static and dynamic codes. Everything generated here is static: the data is encoded directly into the pattern, so the code works forever, needs no service behind it, cannot be tracked, and cannot be changed after printing. Dynamic codes instead encode a short redirect URL, which lets you change the destination later and collect scan analytics, but they depend on a third-party service staying online and paid for. Plenty of printed campaigns have been broken by a shortener shutting down. If you want the flexibility of a dynamic code without the dependency, point a static code at a URL on your own domain and manage the redirect yourself.
Pair this with our Business Card Generator to put a contact code on print-ready cards, the Bio Link Page Generator for the landing page behind it, and the URL Encoder for tracking parameters.
Frequently Asked Questions
What do the QR error correction levels mean?
There are four levels, named L, M, Q and H, and they set how much of the code can be destroyed while still being readable: roughly 7 percent for L, 15 for M, 25 for Q and 30 for H. The recovery works through Reed-Solomon coding, which adds redundant data so a scanner can rebuild what it cannot see. The cost is density, because higher correction needs more space for the same content and produces a busier grid. Use M for screens and clean print, Q or H for packaging, signage and anything that will be scuffed or photographed badly, and H whenever you place a logo over the middle.
What is the format for a WiFi QR code?
It is a plain text string in the shape WIFI:T:WPA;S:NetworkName;P:password;H:false;; where T is the security type, S is the network name, P is the password and H marks a hidden network. The type is WPA for WPA, WPA2 and WPA3 networks, WEP for the obsolete WEP standard, or nopass for an open network with no password. One detail catches people out: if the network name or password contains a semicolon, comma, colon, quote or backslash, that character has to be escaped with a backslash or the scanner will misread where each field ends. This tool handles that escaping for you.
Are vCard QR codes a standard?
Yes. vCard is a long-established format for contact data, and version 3.0 is the one with the broadest support across phones. The record starts with BEGIN:VCARD and ends with END:VCARD, with fields in between for the structured name, formatted name, organisation, title, phone, email, website and address. Some tools use MECARD instead, which is more compact and was popular on older Japanese handsets, but vCard is better supported on modern iOS and Android. Because contact records carry a lot of text, they produce noticeably denser codes, so keep the fields to what you actually need.
How much data fits in a QR code?
The theoretical maximum at the largest size and lowest error correction is about 7,089 numeric digits, 4,296 alphanumeric characters, or 2,953 bytes of arbitrary data. Those numbers are close to useless in practice, though, because a code that large has a 177 by 177 module grid that needs to be printed very big and photographed very cleanly to scan at all. A realistic working limit for something people will scan with a phone is a few hundred characters. If your content is longer than that, the right answer is almost always to encode a short URL and put the content on a web page.
Can I put a logo in the middle of a QR code?
Yes, and it works because of error correction rather than in spite of it. The logo destroys the modules it covers, and the Reed-Solomon codewords reconstruct them. That means you must use error correction level H, which recovers up to about 30 percent, and you must keep the logo small. This tool caps it at 22 percent of the width, which stays comfortably inside the recovery budget. Put a small margin of background colour around the logo so it does not blur into the surrounding modules, keep the three corner finder patterns completely clear, and always test the finished code with a real phone before printing.
What is the difference between static and dynamic QR codes?
A static code, which is what this tool produces, has the data encoded directly into the pattern. It works forever, needs no service behind it, collects no analytics and cannot be changed once printed. A dynamic code encodes a short redirect URL owned by a QR service, so the destination can be edited later and every scan can be counted. The catch is the dependency: if that service goes down, changes its pricing or shuts the link off, every printed code stops working. A good middle path is to make a static code that points at a URL on your own domain, then manage the redirect yourself.
Why will my QR code not scan?
Five causes account for almost all failures. There is no quiet zone, meaning the clear margin of about four modules on every side has been cropped away. The colours are inverted, with light modules on a dark background, which many scanners refuse. Contrast between the two colours is too low, which happens when both are mid-tone brand colours. The code is printed too small for its density, which is common with long content at high error correction. Or a logo covers too much of the middle. This tool warns you about polarity, contrast, missing quiet zone and high density as you work.
Is my data private when I generate a QR code here?
Yes. The encoder runs entirely in your browser, so nothing you type is uploaded, logged or stored on a server. That matters most for the WiFi and vCard types, where you are entering a network password or personal contact details. Only your preferences, meaning size, colours and error correction, are kept in your own browser localStorage so the tool remembers how you like it. Do bear in mind the separate risk that a QR code is not itself private: anyone who photographs a printed WiFi code can read the password out of it, so place those thoughtfully.