Why QR codes fail to scan

Most failures are one of six things: printed too small for the distance, quiet zone obstructed, insufficient contrast, an oversized logo, a glossy or curved surface, or a destination that has since died. All six are avoidable before printing.

Work out your size

The length matters: more data means more modules, which means a larger code.

Print it at least
47 mm
Absolute minimum
36 mm
Each module
1.42 mm
At 300 DPI
556 px
Code density
version 2, 25×25

1. Printed too small for the distance

The most common cause by a distance. A code sized for a flyer gets used on a poster, and nobody checks. The camera cannot resolve the individual modules, so there is nothing to decode.

The symptom is characteristic: it scans fine when you walk right up to it and not at all from where people actually stand.

2. The quiet zone is obstructed

The blank margin around the pattern is part of the code. Scanners use it to locate the edges, and the specification requires four modules' worth on every side.

Designers remove it constantly, because it looks like wasted space — a border drawn tight around the code, a caption tucked in beside it, a background image running underneath. The code then works on a plain background and fails on a busy one, which makes it look intermittent rather than broken.

3. Not enough contrast, or inverted

Scanners threshold the image into dark and light. Two colours that look clearly different to a person can be nearly identical in luminance, and a mid-grey pattern on a pale background frequently is.

Inversion — a light pattern on a dark background — is its own problem. It looks striking, and many scanners assume dark-on-light and simply do not read it.

Every generator here checks both before you download, and refuses to let you export a combination that will not work.

4. The logo is too big

A centre logo covers modules that error correction then has to reconstruct. Within limits that works, which is exactly why it is dangerous: the code appears fine right up until it does not.

The failure usually appears after printing, when the logo damage combines with the print's own imperfections and pushes the total past what error correction can recover.

The rule applied here is to spend at most half the recovery capacity on the logo, leaving the rest for the real world. Every code is then decoded with the logo in place before it can be downloaded — which is the only way to actually know.

5. Gloss, curves and materials

Glossy lamination reflects overhead lighting straight back into the camera. A code that scans on a matt proof can fail on the laminated version, indoors, under exactly the lights it will live under.

Curved surfaces — bottles, cups, tubes — distort the pattern. Small codes on gentle curves are usually fine; large codes on tight curves usually are not.

Fabric, textured card and low-quality thermal receipt printers all blur module edges. Where the substrate is poor, raise the error correction level and print larger than the calculator's minimum.

6. The code scans but the destination is dead

This is not really a scanning failure, and it is the one that costs the most, because it happens months after printing when nobody is watching.

The menu PDF moved. The campaign page was deleted. The site was rebuilt and the URL changed. The code still decodes perfectly and delivers everyone to a 404.

It is also the only one of the six that a static code cannot recover from. This is the strongest practical argument for making a code dynamic when it will be printed on something with a long life.

Questions

My code works on my phone but not on my customer's. Why?
Almost always a marginal code meeting a weaker camera. Older phones, cracked lenses and poor lighting all reduce effective resolution. If a code is close to the size or contrast limit, it will work on a good camera and fail on an average one — which means half your customers.
Can I test a code without printing it?
Partly. Every generator here decodes the finished code before you download it, which catches encoding, logo and contrast problems. What it cannot test is the physical print — gloss, curvature, ink spread and lighting. Always scan the actual proof.
Does adding a caption help?
Yes, substantially, though not with scanning. A code labelled with what it does is scanned considerably more often than a bare one, because people scan for a reason rather than out of curiosity. Keep the caption outside the quiet zone.

More guides