1. The contrast is too low
Scanners need a clear difference between the dark and light parts. Light grey on white, pastel colours, or a dark code on a dark photo all make that difference too small.
Fix: use a dark colour for the code and white or a very light colour for the background. The generator shows the contrast ratio; aim for at least 4:1, and higher is better.
2. The colours are inverted
A light code on a dark background can look great, but some phone cameras and older scanner apps cannot read it.
Fix: keep the code dark on light. If your design is dark, put the code on a white panel.
3. There is no quiet zone
The empty border around the code tells the scanner where the code begins. When text, images or the edge of the paper touch the pattern, detection fails.
Fix: leave at least four modules of empty space on every side. Do not crop the downloaded image.
4. It is printed too small
If the squares are too small for the camera at that distance, it cannot separate them.
Fix: make the code bigger, or shorten the content so the squares get larger. A rough guide is that the code should be at least one tenth of the scanning distance. The printing size guide has a table.
5. There is too much content in it
Long links, long text and full contact cards produce very dense codes. Dense codes need more pixels, better printing and steadier hands.
Fix: shorten the link (remove unneeded tracking parameters), shorten the text, or leave optional fields out of a vCard.
6. The logo is too big
A logo covers part of the pattern. The code survives only because error correction can rebuild the missing part, and that capacity has a limit: about 30% at level H, less at lower levels. Real-world damage (scratches, glare) uses up the same budget.
Fix: make the logo smaller, keep it centred, and set error correction to H. The generator warns you when the logo is getting too large for the chosen level.
7. The styling went too far
Rounded dots, circles and gradients usually scan fine. Combined with a dense code, low contrast or a big logo, they can tip a working code into a failing one.
Fix: go back to square modules and a solid colour, test, then add styling back one change at a time.
8. The print or surface is the problem
Glossy lamination reflects light, curved bottles distort the grid, and low-resolution images get blurry when enlarged.
Fix: use a matte finish, print from SVG or a large PNG, and avoid sharp curves. Test a printed copy, not just the screen version.
9. It scans, but the link does not work
Sometimes the code is fine and the destination is not: a typo in the address, a page that was moved, a file that is not shared publicly, or a link that only works when you are logged in.
Fix: scan the code and read the address it shows. Open it on a phone that is not logged in to your accounts. If the address is wrong, you need a new code, because a static code cannot be edited.
10. The phone is the problem
Dirty lenses, very low light, or an old phone without built-in QR scanning can all fail on a perfect code.
Fix: clean the lens, add light, hold the phone steady and parallel to the code. On older Android phones, QR scanning may be inside Google Lens rather than the camera app.
A quick checklist before you print
- Dark code on a light background, contrast 4:1 or better.
- Quiet zone intact on all four sides.
- Printed at a size suited to the scanning distance.
- Logo small and centred, error correction H.
- Scanned on two different phones, on screen and on a test print.
- The destination opens correctly on a phone that is not logged in.
You can check an existing code with the QR code scanner, and make a clean replacement with the generator.