Aug 11, 2026
Why Your QR Code Won't Scan: 11 Causes and Fixes
A QR code either scans instantly or feels broken. When it fails, it's almost never mysterious — it's one of a short list of causes. Here they are roughly in order of how often they're the culprit.
1. It's too small for the distance
The most common cause by a distance. The working rule is ten to one: divide the scanning distance by ten to get the minimum code width. A code read from two metres needs to be about 20cm. A 3cm code on a poster read from across a room will never scan, no matter how good the print.
Fix: measure the real scanning distance and resize. Round up.
2. There's no quiet zone
QR codes need clear space around them — about four modules' worth. Scanners use that margin to locate the code's edges. Designers routinely crop it tight against a border or photo.
Fix: keep the margin. Don't let anyone trim it in layout.
3. Glare
Gloss laminate under a spotlight reflects straight into the camera and erases part of the code. This is the classic failure that passes every test at your desk and fails in the venue.
Fix: matte finish for anything under lighting. Test in the actual room.
4. Poor contrast
Mid-tone on mid-tone looks tasteful and scans badly. Brand colours are frequently the cause.
Fix: dark code on light background with genuine contrast. If it would be hard to read as text, it fails as a code.
5. It's inverted
Light code on a dark background. Some scanners handle it; enough don't.
Fix: don't invert. It's not worth the share of users you lose.
6. It was printed from a PNG
A raster image scaled up for print produces soft module edges, and softness defeats the camera's threshold detection. This is why a code looks fine on screen and fails on paper.
Fix: export SVG for print. Vector stays sharp at any size.
7. Too much data
Every character adds modules. A long URL with tracking parameters makes a dense grid, and at a fixed physical size each module gets physically smaller and harder to resolve.
Fix: encode a short link instead of the raw URL. Fewer characters, coarser grid, far more forgiving — and the destination stays editable.
8. Error correction set too high
Counterintuitive but real. Higher error correction adds redundancy, which is more data, which means smaller modules at the same printed size. High correction on a small code can scan worse than medium.
Fix: use Medium for most print. Reserve High for codes with a logo overlay or that will get physically damaged.
9. It's on a curved or textured surface
Bottles, cups, fabric, crumpled paper. Curvature distorts the grid and the scanner can't resolve the geometry.
Fix: flat area, or a larger code with higher error correction. Test on the actual object, not a flat proof.
10. The destination is broken, not the code
The code scans fine and nothing happens — or an error page appears. People report this as "the QR doesn't work".
Fix: open the destination URL in a browser directly. Check it loads on mobile, over a slow connection, with a valid certificate.
11. Bad connectivity where people scan
Common in venues, basements and crowded halls. The scan succeeds and the page never loads, which is indistinguishable from a broken code to the person holding the phone.
Fix: make the destination light — minimal images, no autoplay. Test on a throttled connection.
A five-minute diagnostic
- Scan it on screen at 100%. Fails? The code or its data is wrong.
- Scan the print from 20cm. Fails? Print quality, contrast or vector issue.
- Scan the print from the real distance. Fails? It's too small.
- Scan in the real lighting. Fails? Glare — go matte.
- Try three phones including an old one.
- Open the destination manually. Fails? It was never the code.
That sequence isolates it almost every time.
Generate a code with the right settings — pick error correction, keep the quiet zone, download SVG for print.