What you are seeing
The printed code scans fine, yet the same code shown on a monitor, a projector, or a phone screen fails. Screens introduce their own faults: low display resolution, screen glare, moire interference between the module grid and the pixel grid, brightness set too low, and colour profiles that weaken contrast. A code that was designed for print may also be shown too small on screen, or scaled by a browser in a way that blurs the modules. The fix is to treat the screen display as its own medium with its own proof, not as a smaller version of the print.
Likely causes
1.
Browser or app scaling blurs the modules — A code image stretched or shrunk by a page layout can land on fractional pixels, which blurs the module edges. Test: view the code at its native size; if it scans at native size but not when scaled, scaling is the cause.
2.
Moire interference on the display — The regular module grid can clash with the screen pixel grid and create shimmering bands that confuse the camera. Test: zoom the display slightly or move the scanning phone; if the pattern shifts and scanning improves, moire is the cause.
3.
Low brightness or glare on the screen — A dim screen or a reflection across the display washes out the modules. Test: raise the brightness and shade the screen; if scanning improves, brightness or glare is the cause.
4.
Code displayed too small — A code sized for a poster may be shown at thumbnail size in a slide or a web page, making the modules too small to resolve. Test: enlarge the on-screen code; if it starts scanning, size is the cause.
5.
Low-contrast colours on the display — A colour pair that prints with strong contrast can look weaker on a particular screen, especially on a projector. Test: switch to plain black on white on the same screen; if that scans, colour is the cause.
Step-by-step fix
1. Show the code at a size that keeps the modules crisp on that screen, and avoid fractional scaling.
2. Raise the screen brightness and remove reflections from the display.
3. Use plain black modules on a white background for screen display.
4. Add a plain white margin around the code on screen so the camera has a clean target.
5. Test on the actual screen your audience will use, at the distance they will stand.
6. Keep a print version and a screen version as separate exports if their sizes differ.
Putting this into practice
In practice, screens punish small codes and low contrast more than paper does, because the camera is reading light emitted by the display rather than light reflected from ink. Give the on-screen code more size and more contrast than you think it needs, and test it on the weakest screen in the room, not the best one. 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
- Assuming a code that passes on paper will automatically pass on a projector or a dim monitor.
- 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 works in print but not on screen will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that works in print but not on screen.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- The on-screen code is shown large enough to resolve cleanly
- Brightness is up and reflections are controlled
- The screen version passes on two phones at audience distance
- 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)