What this actually does
A QR code either decodes or it does not, and every generator on the internet will happily show you one that decodes on a clean screen at full size. That tells you almost nothing about whether it will still work printed on a table card in a dim restaurant.
This tool answers the more useful question. It takes your code, degrades it step by step in four ways that actually happen to printed codes, and reports the exact point where each one stops decoding. Everything runs in your browser using jsQR. Your image is never uploaded anywhere.
The four tests, and why these four
We chose these four because we measured all of them first, and published what we found in our scan limits test and our damage test. The short version of both:
- Blur. The one that matters. In our testing a code died once the image was blurred by roughly four tenths of one module, which on a 20 mm printed code is about two tenths of a millimetre. Focus, not size, is what breaks most real scans.
- Viewing angle. Far more forgiving than people expect. A code survived being tilted 60 degrees off square. If someone is standing to the side of your poster, that is not their problem.
- Resolution. Also forgiving. Ours held down to about 1.7 pixels per module, which is why a screenshot is essentially never too small.
- Corner damage. The brutal one. The three large corner squares are position markers, and they have no error correction at all. A single missing module there killed a code that shrugged off 19% of its area being covered in the middle.
We left rotation out of the results table because it makes no difference whatsoever. We tested 15, 45, 90, 135 and 180 degrees and every one decoded. A QR code has no up.
Reading your results
The numbers that matter most are the blur figure and the corner result.
Blur is reported as a fraction of one module, so it transfers to any print size. A higher number is better. If your code fails at a low blur figure it is usually because it is dense, meaning you have encoded a lot of data, and every module is therefore small relative to the whole. The fix is not a better printer, it is less data. Shorten the URL, drop optional vCard fields, or print larger.
Resolution is reported as the fewest pixels per module that still decoded. Multiply that by your module count to get the smallest usable image, and note that print is a different question from screen: our print sizing guide covers the distance arithmetic.
Corner damage should fail immediately on any code. If yours survives a corner hit, the image probably has a generous quiet zone and the decoder found the pattern anyway. It is not a sign that you can safely put a sticker there.
What it cannot tell you
Being clear about the limits, because a confident number from a tool is easy to over trust:
- This is a software decoder on a clean image. A phone camera adds sensor noise, uneven light and lens softness that we do not simulate. Treat every figure here as a best case.
- A phone gets many attempts, we give one. Your camera captures roughly thirty frames a second and refocuses between them, so it retries constantly. A code that fails one of our single shots may still work in someone's hand.
- Different decoders disagree. We use jsQR. iOS, Android and every scanning app use their own, and they do not all draw the line in the same place.
- We cannot test your printer. Ink spread, paper texture and lamination all matter, and none of them exist in a PNG.
What the tool is genuinely good for is comparison. Run two versions of the same code, one with a logo and one without, or one with a long URL and one with a short one, and the difference between the two results is real and useful even if the absolute numbers are optimistic.
Common questions
Is my image uploaded to a server?
No. The file is read by your browser and all four tests run on your own machine. There is no upload step, and the page works with your connection dropped once it has loaded.
Why did my code fail the very first test?
If the baseline decode fails, nothing else can run. The usual causes are a photograph of a code rather than the code itself, a code with no white border around it, or an image where the code is only a small part of a larger picture. Crop to the code, keep the white margin, and try again.
What is a module?
One of the small squares that make up the code. A code described as 29 by 29 has 29 modules on each side. Measuring blur and resolution in module widths rather than pixels means the answer holds no matter what size you print at.
My code has a logo. Should I test it here?
Yes, and this is one of the better uses for the tool. Export the finished code with the logo in place and run it. A logo eats the error correction budget you would otherwise be spending on print imperfections, so a logo code usually shows visibly worse blur tolerance than the same code without one. Our designer applies a 15% coverage ceiling for that reason.
Can I test a code I did not make?
Yes. If you have been handed artwork by a designer or a printer, this is a quick way to check it before it goes on a thousand flyers. Use our scanner first if you also want to see where the code points.
Related tools
Make a code with the URL, WiFi or vCard generator, style one in the designer, or read an existing one with the scanner. If you are producing a batch, the bulk generator makes them all at once, and it is worth stress testing one from the batch before printing the rest.