What actually goes into the code
A QR code is not a link to a database — it is the data itself, written as a grid of black and white modules. That is why these codes never expire and need no account, and equally why nothing about them can be changed once they are printed. Each tab here simply assembles a differently formatted string before encoding it. A Wi-Fi code becomes WIFI:T:WPA;S:NetworkName;P:password;H:false;;. A contact becomes a vCard 3.0 block with name, organisation, telephone and email fields. Email builds a mailto: URL with the subject and body percent-encoded. Phone and SMS build tel: and SMSTO:. Your phone's camera reads the string and recognises the prefix; the QR code itself has no idea what a Wi-Fi network is.
The rendering happens in the page with a styling library that draws the modules as shapes rather than plain squares, which is what makes the rounded, dotted and classy presets possible. Nothing is sent anywhere — worth knowing given that the Wi-Fi and contact tabs handle real credentials and personal details.
One feature here is unusual and worth using deliberately: after each render, the generated image is fed back through a QR decoder and the result compared against what you asked to encode. The badge tells you whether the code actually scans and whether it decodes to exactly the right string. Heavy styling, a large logo, a tight margin or low error correction can each produce something that looks like a valid QR code and is not, and this catches that before you commit it to print.
Error correction and capacity
QR codes carry redundant data so a damaged or partially covered code still reads. The level you pick sets how much of the code can be lost, and it is also what makes a centre logo possible at all — the logo is damage, and error correction is what absorbs it.
| Level | Recoverable | Max bytes (largest code) | Use for |
| L — Low | ~7% | 2,953 | Long payloads on clean digital screens. Rarely the right choice in print. |
| M — Medium | ~15% | 2,331 | The default, and correct for most printed codes without a logo. |
| Q — Quartile | ~25% | 1,663 | Codes on surfaces that get handled, scuffed or curved. |
| H — High | ~30% | 1,273 | Anything with a logo, or codes on packaging and outdoor signage. |
Notice what higher correction costs: capacity. The same physical square has to hold both your data and the redundancy, so raising the level either shrinks how much you can encode or forces a denser grid. This is the single strongest argument for keeping payloads short — a 30-character URL at level H produces a coarse, forgiving code that scans from across a room, while a 300-character one produces a fine mesh that needs a steady hand and good light.
Where QR codes fail
Static means permanent. If the URL you encode changes, every printed copy is dead. The fix is not a different generator — it is to encode a URL you control and can redirect later, so that the code points at your own short link rather than directly at the destination. Decide that before printing, not after.
The quiet zone is not decoration. The specification requires a clear margin of four modules around the code. Dropping the margin slider to zero to fit a tighter layout is one of the most common reasons a code that looks perfect will not scan, because the decoder cannot find the code's boundary against the surrounding artwork.
Contrast and polarity matter. Dark modules on a light background is what scanners expect. Inverting that — light modules on a dark background — fails on a meaningful share of readers even though it looks striking, and a low-contrast pairing such as mid-grey on white fails in poor lighting even when it decodes on your desk. Keep the foreground genuinely dark and the background genuinely light.
A Wi-Fi QR code is not security. The password sits in the code as plain text. Anyone who photographs the card on the counter has your network credentials permanently, whether or not they were ever a guest. For a café or an office that is a reasonable trade; for a home network, consider a guest network instead of sharing the main one.
Some formats are less universal than they look. URLs, plain text and Wi-Fi are handled consistently almost everywhere. SMS and vCard handling varies between phones, and a long vCard produces a dense code that scans poorly. And the verification badge here checks the on-screen image at full size — it confirms the code is structurally valid, not that a two-centimetre print of it will scan from a metre away.
Getting a code that works in the real world
Size it by scan distance. The common working rule is that a code should be at least a tenth as wide as the distance it will be scanned from — about 10 cm across for a poster read from a metre away, and no smaller than roughly 2 cm for anything handheld. Print smaller than that and you are relying on the reader's camera being better than average.
Download SVG for anything that will be printed. It is vector, so a print shop can scale it to a billboard without a soft edge, and the module boundaries stay mathematically crisp instead of being resampled. PNG is right for screens, slide decks and social posts, and the size slider controls its pixel dimensions. The copy button puts a PNG straight on the clipboard where the browser supports it.
If you are adding a logo, set error correction to High first, then keep the logo under about a third of the width and check the verification badge — the tool keeps the area behind the logo clear of modules, but there is still a point past which too much data is missing. Then test on a real phone, ideally two different ones, before any print run. Codes that fail in the field usually failed for a mundane reason: too small, too little margin, printed on a curved or reflective surface, or placed somewhere with no phone signal to load the link.
The batch tab takes one payload per line, up to 500, and returns a ZIP of individually named PNGs using the current design settings — the practical way to produce table numbers, asset tags or per-item product links. To check a code you have found rather than one you have made, the QR scanner reads it with your camera and shows the raw contents before you visit anything, and the barcode generator handles the linear formats that retail and logistics still use.