Why Your QR Code Won't Scan: 7 Causes and Fixes
Most scanning failures come down to something you can see, once you know what to look for. Work through these in order, because the first two cause most of them.
Before anything else, decode the code with a free QR code scanner on a desktop. If it reads from an image file but fails on a phone in the real world, the problem is physical: size, print, or surface. If it fails there too, the code itself is broken.
When the QR code itself is the problem
Inverted or low-contrast colors. Scanners expect dark modules on a light background. Light-on-dark works on some readers and fails on plenty of others, and a mid-grey code on a beige flyer fails almost everywhere. Keep strong contrast between the modules and the background, and if you're matching brand colors, darken the code rather than lightening the paper.
No quiet zone. The blank margin around a QR code isn't decoration, it's part of the specification: four modules wide on every side. Designers crop it constantly to save space. Without it the scanner can't find the edges of the code, and something that worked in the design file stops working in print.
Too much data. Every extra character adds modules, and a denser grid needs more resolution and steadier focus to read. A 300-character URL full of tracking parameters produces a visibly busier code than a 25-character short link. This is the easiest fix on the list: point the code at a short URL instead of the full destination.
A logo covering too much of it. QR codes survive damage through error correction, and the level you choose decides how much damage is survivable.
| Level | Recovers | Use it when |
|---|---|---|
| L | ~7% | Clean digital display, no logo |
| M | ~15% | Standard print, no logo |
| Q | ~25% | Small logo, some wear expected |
| H | ~30% | Logo, outdoor use, rough surfaces |
A centered logo eats into that budget. At level H you can cover roughly a quarter of the code and still scan it. At level L the same logo kills it. Raise the correction level before you add the logo, not after someone reports a dead code.
When the printing is the problem
Printed too small for the scanning distance. The working rule is 10:1: divide the scanning distance by ten to get the minimum width. A code read from 5 meters across a car park needs to be about 50 cm wide. A table tent read from 30 cm can be 3 cm. Our QR code size calculator works this out for you.
Glare, curves, and the wrong material. Gloss lamination throws light straight back at the camera and washes out the pattern. Codes wrapped around bottles or cans distort at the edges. A low-resolution image scaled up for a poster gives soft module edges that scanners read as noise. Export vector artwork where you can, and pick matte over gloss for anything printed at size.
When the QR code scans but nothing happens
The code is fine. The destination isn't. Expired domains, deleted landing pages, a typo nobody caught, links still pointing at plain http on a browser that now refuses them.
This failure is worse than a code that won't scan, because everything looks correct from your side. It only shows up in the wild, usually weeks after the print run.
Stop reprinting to fix a broken QR code
Almost everything above is permanent if the code is static, because the destination is baked into the pattern. Reprinting is the only fix.
With dynamic QR codes the printed code points at a short redirect you control. A wrong link becomes a two-second edit instead of a reprint run. You also get scan tracking, which is how you notice a code has stopped working before a customer has to tell you.
Create a dynamic QR code for free
Test on real phones before you print. Cameras vary more than you would expect.