What you are seeing
The printed code looks washed out: the dark modules and the light background are too close in lightness, and the scanner struggles to separate them. Low contrast is the most common reason a code that looks acceptable to the eye fails on a camera, because the eye forgives a weak pair that the camera cannot. The cause can be the colour pair, the stock, the printer, or a background that darkened in print. The fix is to measure the contrast the camera sees and to strengthen the pair until the proof passes.
Likely causes
1.
Colour pair too close in lightness — Two colours that differ in hue but not in lightness look distinct to the eye while the camera sees similar greys. Test: view a photo of the code in greyscale.
2.
Background darkened in print — A light background can print darker than designed, especially on coloured or recycled stock. Test: compare the printed background with the design.
3.
Modules printed pale — Low ink, an economy mode, or a pale module colour can leave grey modules instead of dark ones. Test: check the ink level, the printer settings, and the module colour.
4.
Stock reduces the contrast — Coloured, textured, or glossy stock can weaken the difference between modules and background. Test: print the same file on plain white stock and compare.
5.
Background pattern behind the code — A pattern or photograph behind the code breaks up the background and confuses the scanner. Test: check whether the background behind the code is plain.
Step-by-step fix
1. Photograph the proof and view it in greyscale to judge the contrast the camera sees.
2. Darken the modules and lighten the background, increasing the lightness difference.
3. Print the code on a plain white background panel if the stock or pattern weakens the contrast.
4. Check the ink level and switch off any economy mode.
5. Test a black-on-white proof on the same stock as a baseline.
6. Reprint one proof and confirm it scans on two phones before approving the run.
Putting this into practice
In practice, judge every QR colour pair in greyscale, because that is what the camera sees. A pair that looks lively in colour but flat in greyscale will fail. Make the greyscale check part of every proof, and treat a weak greyscale result as a defect, not a matter of taste. 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
- Choosing a QR colour pair by how it looks in colour and never checking it in greyscale.
- 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 prints with low contrast will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that prints with low contrast.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- Greyscale contrast is strong on the printed proof
- The background behind the code is plain and light
- The proof scans on two phones in the real lighting
- 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)