QR code not scanning: 10 causes
When a code fails, the print or the design is almost always to blame, not the phone. Work through the list from most to least common.
1. Weak contrast
Modules must be clearly darker than the background. Grey on beige or pastel matching the interior blends into the background. Below 4.5:1 is already risky.
2. Code lighter than the background
White on black works on modern phone cameras, but many third-party scanners and older phones fail. For a broad audience print dark on light.
3. Too small
Close-up codes need at least 2 cm per side; in general about one tenth of the scanning distance.
4. No quiet zone
The code needs empty space around it so the camera knows where it ends. A common mistake is placing it tight against an image, text or trim line.
5. Logo too large
A logo covers modules. At level M even a small mark can break the code. Raise error correction to Q or H or shrink the logo.
6. Corner squares covered
The camera finds the code by its three corner squares. A logo, text or frame element on them breaks scanning even at maximum error correction.
7. Link too long
Every character adds modules. A 200-character link produces a dense grid. Trim tracking tags or use a short address.
8. Glare and curvature
Glossy lamination, shop glass, bottles and curved packaging distort the pattern. Choose matte materials and flat surfaces.
9. Blurry print
A small raster image stretched in the layout turns to mush. Use SVG or PNG of at least 1024 px.
10. The code works but the link does not
Sometimes the code scans but opens an error: the page was deleted, the domain changed or the link has a typo. Check the address the phone shows.
The indicator above the preview in the studio decodes the finished image the way a phone camera does. If it says the code scans, the problem is almost certainly print or placement.
FAQ
How do I test a code before printing?
Check the indicator in the generator, then print a proof at real size and scan it with two different phones.
Can a damaged code be repaired?
Error correction recovers some damage automatically. If the code still fails, reprinting is simplest.