What you are seeing
This fix walks you from a completely dead code to a verified working one in a single pass. You will isolate whether the fault is in the artwork, the payload, the print, or the placement, then repair only the part that failed. Keep the original file and one printed proof beside you while you work, and retest after every change so you know exactly which step fixed it. Do not reorder the steps: the early checks are cheap and catch the faults that make later steps pointless.
Likely causes
1.
Damaged or covered finder patterns — Quick test: hold the original digital file next to the printed code and compare all three corner squares.
2.
Quiet zone eaten by nearby text or trim — Quick test: measure the clear margin on all four sides and look for nearby ink or trim edges.
3.
Contrast too low to separate modules — Quick test: view a photo of the code in greyscale and check that dark and light modules separate cleanly.
4.
Payload is malformed or empty — Quick test: decode the code and read the raw payload instead of trusting the preview banner.
5.
Print too small for the scan distance — Quick test: step closer until the code scans, and note the distance where it first locks on.
Step-by-step fix
Step 1: Photograph the failing code and compare it with the original digital file. Note every difference, starting with the three corner finder patterns.
Step 2: Check the quiet zone. Clear at least four modules of empty margin on all four sides and remove anything crowding the symbol.
Step 3: Print a single test proof in plain black on white at the intended size. Scan it in the real lighting. If this proof scans, the fault is in the original artwork or colours, not the payload.
Step 4: Decode the payload and read it character by character. Fix any typo, missing scheme, or stray space, then regenerate the code from the corrected payload.
Step 5: Test the corrected proof at the real distance on two phones. Move closer and further away to find the range where it locks on.
Step 6: If it still fails, regenerate at a larger size with a shorter payload and a higher error-correction setting, then retest.
Step 7: Reprint the full run only after the proof scans on both phones. Keep the proof as your reference for the next batch.
Putting this into practice
In practice, the fix that sticks is the one you verify twice: once on the proof and once on the first copies off the real printer. File the corrected artwork with a short note naming what failed and what you changed, so a colleague reprinting the job does not reintroduce the same fault. Record the before-and-after behaviour with the job file, so the fix is provable rather than anecdotal. When the same failure appears again, that record tells you whether the old fix held or a new cause appeared.
Common mistakes to avoid
- Reprinting the full run from the same file before testing a single proof, which turns one broken code into hundreds.
- 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 will not scan at all will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that will not scan at all.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- All three finder patterns are fully visible and match the digital file
- A clear quiet zone surrounds the code on all four sides
- Dark modules sit on a plain light background with strong contrast
- 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 payload inspector](/qr-payload-inspector)
- [QR offline verifier](/qr-offline-verifier)
- [QR scanner](/qr-scanner)
- [QR size calculator](/qr-size-calculator)
- [QR safety checker](/qr-safety-checker)
- [blog](/blog)