Will your QR code actually scan?
Drop in a QR code — one you made anywhere, not just here — and this measures the four things that decide whether it survives print: contrast, quiet zone, module size, and whether it still decodes once it has been shrunk and softened the way a phone camera sees it.
Why codes fail after they are printed
Almost every QR code that fails in the world worked perfectly on the screen it was designed on. A monitor is the easiest possible case: backlit, evenly lit, noise-free, and held flat at a comfortable distance. Paper is none of those things.
So the useful question is not whether a code reads on your laptop. It is whether it still reads once it is small, slightly out of focus, at an angle, under a café's lighting, on a phone two years older than yours. That is what the shrunk-and-softened test approximates here.
What gets measured
Contrast, at the worst point
A scanner does not see your colours. It thresholds the image into two populations — dark and light — and reads the pattern that remains. Everything depends on those two populations being separable. We report the ratio at the worst point in the code rather than the average, because a gradient has no single dark colour and averaging hides the end that fails.
Below 3:1 is very likely to fail in print. Between 3:1 and 4:1 works on a screen and is tight on paper. Above that you have room to spare.
Quiet zone
The clear margin around the code, measured in modules. The specification asks for four on every side; scanners use that margin to work out where the symbol starts. Codes that fall short often read fine on a white page, because the page itself supplies the missing margin — and then fail the moment the code lands on a coloured panel or runs to the edge of a label.
One caveat this tool cannot see past: if you cropped the image tightly before uploading it, the margin it measures is the one in your file, not the one on your poster.
Minimum print size
Derived from the module count, at half a millimetre per module. A denser code — a long URL, a vCard, a Wi-Fi password with a long passphrase — has more modules in the same square, so each one is smaller, so the whole thing has to be printed wider. This is the number people are most often surprised by.
The decode test
The code is read twice: once as uploaded, and once cropped to the symbol, scaled down to roughly what a phone captures of a small printed code, and blurred slightly for the lens. A code that passes the first and fails the second is the classic screen-only code — and it is the single most common reason a printed run has to be reprinted.
What this cannot tell you
It measures a file. Ink spreads on uncoated stock and closes the gaps between modules. Glossy laminate throws glare straight back at the camera. A code on a curved bottle is not flat. Somebody will scan it in the dark. None of that is in the image you uploaded, and no checker that only sees an image can honestly claim otherwise.
Treat a pass as evidence rather than a promise, and print one test copy at the real size on the real material before you order five hundred. The failure this tool is authoritative about is the negative one: a code that will not decode here, shrunk and softened, is not going to work on a wall.
Questions people actually ask
Does this tell me my code will definitely scan?
No, and be wary of any tool that says it does. This measures the image file. Printing adds ink spread, paper texture, glare and viewing angle, none of which are in the file. A pass here is good evidence and not a guarantee. The negative is the reliable half: if a code cannot be read here once it has been shrunk and softened, it will not survive a wall.
Is my image uploaded anywhere?
No. The file is read by your browser and decoded on a canvas in the page. It never leaves your device, which is also why this works with the tab offline once the page has loaded.
What is a quiet zone and why does it matter?
The clear margin around a code. The specification asks for four modules on every side, and scanners use it to find where the code begins. Codes with too little margin often read perfectly on white paper — the page supplies what is missing — and then fail the moment the code is placed on a coloured background or against the edge of a label.
Why does it say my contrast is low when the code looks black?
Contrast is measured at the worst point in the code, not on average. A gradient has no single dark colour, and averaging hides the end that actually fails. If one corner of your code fades towards the background, that corner is what a scanner has to cope with.
My code failed the shrunk test. What do I change?
Print it larger, or simplify it. Very round module shapes, thin corner styles and a large logo all spend the same budget: they distort or remove modules that error correction then has to reconstruct. Removing the logo or stepping back to a squarer module shape usually recovers it without changing the size.
It cannot read my photo of a code at all.
Crop closer. A code that occupies a small part of a large photograph has few pixels per module, and there is nothing left to decode. Crop to the code plus a margin around it and try again — that is also a fair test, since a phone camera focuses on the code rather than the whole poster.
Need a code that passes?
The FigQR generator decodes every code in your browser as you design it, so the same check runs before you download rather than after you print. Free, no account, and the code never expires.