What you are seeing
The code scans when you hold the phone near it and fails when you step back to the distance where people will actually stand. Distance scanning fails because the camera cannot resolve modules that are too small, too dense, or too low in contrast for the range. Posters, banners, windows, and billboards all suffer from this, because the designer judges the code at arm's length while the audience stands metres away. The fix is to size the code for the furthest reader, not the nearest one.
Likely causes
1.
Code too small for the viewing distance — Modules shrink with distance until the camera cannot separate them. Test: step closer until it scans, and note the distance where it first locks on.
2.
Payload too dense — A long payload packs many small modules into the symbol, which vanish first at distance. Test: compare a short-payload version at the same size and distance.
3.
Weak contrast over distance — Contrast that looks adequate up close fades with distance, haze, and glare. Test: compare a black-on-white proof at the same distance.
4.
Glare or reflections at the viewing angle — From further away, the viewing angle changes and reflections can cover the symbol. Test: view the code from the audience position and check for reflections.
5.
Code placed too high, low, or behind an obstruction — A code behind a barrier, at an awkward height, or at a sharp angle forces the camera to read a distorted symbol. Test: stand where the audience stands and check the angle and obstructions.
Step-by-step fix
1. Measure the distance from the code to the furthest reader, and use that distance for every test.
2. Shorten the payload so the modules get larger at the same print size.
3. Enlarge the printed code until it locks on from the furthest point.
4. Raise the contrast with dark modules on a plain light background.
5. Move the code to a clear, well-lit position at a comfortable height and a straight-on angle.
6. Retest from the furthest point on two phones before approving the run.
Putting this into practice
In practice, the distance test is the one that matters for posters, windows, and signs. A code that scans at arm's length but not from the queue or the pavement is a code that most visitors will never use. Always test from the furthest realistic point, and size for that reader. Keep a short note of what you tested, what failed, and what you changed, so the next person starts from evidence rather than guesswork. A fix that is written down survives staff changes and reprints; a fix that lives only in memory gets repeated.
Common mistakes to avoid
- Sizing a poster code by how it looks on a desk, then discovering visitors cannot scan it from the queue.
- Reprinting the full run before a single proof passes, which turns one failure into many.
- Testing on one phone in ideal conditions instead of two phones in the real conditions where a code that scans up close but not from a distance will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that scans up close but not from a distance.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- The code locks on from the furthest reader position
- The payload is as short as the destination allows
- The code sits at a clear, straight-on, well-lit position
- The corrected proof passes on two phones in the real conditions
- The fix is recorded in the job file so the next reprint starts from a proven setup
- Every printed copy is checked against the approved proof
- The proof is retested after any later change to the link, design, or placement
Related tools and guides
- [QR minimum size checker](/qr-minimum-size-checker)
- [QR contrast checker](/qr-contrast-checker)
- [QR print proof checklist](/qr-print-proof-checklist)
- [QR DPI calculator](/qr-dpi-calculator)
- [QR quiet zone calculator](/qr-quiet-zone-calculator)
- [printed QR tester](/printed-qr-tester)
- [QR size calculator](/qr-size-calculator)