Skip to content
Upgfrog.online

Topic

Why QR codes fail, and how to stop yours failing

The practical engineering of getting a code to read reliably, off paper, in bad light, on someone else's phone.

Most writing about QR codes assumes the hard part is generating one. It is not. Generating a code is arithmetic, and any tool can do it. The hard part is that the code has to survive a printer, a material, a lighting condition and a camera you will never see.

This is where nearly all real-world failure lives, and it is unusually easy to get wrong because a broken code looks completely fine on screen. Three of our own design presets rendered beautifully and decoded zero times until we tested them properly.

Everything grouped here comes from decoding real rendered files rather than repeating received wisdom, and where our results contradicted what we expected, we have said so.

What you'll learn here

  • Why contrast — not shape, size or cleverness — causes most unscannable codes, and what ratio to aim for.
  • What the quiet zone actually does, and why cropping it breaks codes that worked in the studio.
  • How much of a code a centre logo can safely cover, and why error correction level H is not a blank cheque.
  • How to tell in thirty seconds whether your problem is the code or the content encoded inside it.

6 guides

Common questions

What is the single most common reason a QR code will not scan?
Insufficient contrast between the foreground and background. In our own testing it caused more failures than every other cause combined, and it is the hardest to spot because the code still looks fine to a human eye.
Does a bigger QR code always scan better?
Size helps, but only relative to distance and content length. A useful rule is that the printed code should be about one tenth of the scanning distance. Shortening the encoded URL often helps more than enlarging the code, because fewer characters means fewer, larger modules.
Can I test scannability without printing anything?
Partly. You can catch contrast, quiet zone and payload problems on screen. You cannot catch ink spread, glare, curvature or material texture, which is why a physical test at final size remains necessary before a print run.

Related topics

Build a code with these rules applied

The generator shows a live contrast reading and blocks corner shape pairings our testing found unreadable, so most of what you just read is enforced as you design.

Open the generator