Why your QR code isn't scanning
Updated September 2026
A QR code that won't scan is almost always one of five things: not enough contrast, no white border, printed too small, an oversized logo, or a destination that has moved. Here is how to find which one it is and fix it — in order of how often it's the cause.
1. Contrast is too low
This is the number one cause. A phone camera reads a QR code by telling dark modules from light ones. If your dots are a mid-tone colour — a soft blue, a pastel, a light grey — on white, the camera can't separate them, especially in dim light or at an angle.
The fix: use a dark foreground (aim for a contrast ratio of about 7:1 against the background) and keep the background light. Pure black on white always works. If you need brand colour, go a shade or two darker than you think — a deep navy scans, a sky blue often doesn't.
Avoid an inverted code (light dots on a dark background) unless you have tested it on several phones. Many older scanners refuse to read inverted codes at all.
2. There's no quiet zone
The quiet zone is the plain margin around the code. The scanner uses it to find where the code starts and stops. If your code sits flush against text, a photo, a coloured panel or the edge of a label, the camera can't lock on.
Leave a clear border all the way around, at least four modules wide — roughly the width of one of the three corner squares. When in doubt, give it more space, not less.
3. It's printed too small for the viewing distance
There's a simple rule: the minimum size of a QR code is the scanning distance divided by ten. A code scanned from 30 cm away needs to be at least 3 cm wide. A code on a shop window read from two metres away needs to be at least 20 cm wide.
On business cards, 2 cm is about the floor. On packaging, 2.5–3 cm. On posters and signage, bigger is always safer — there is no penalty for a code that is easy to scan.
4. The logo or gradient is too strong
A centre logo covers real data. QR codes have built-in error correction that can rebuild what's hidden, but only up to a point — roughly 30% at the highest level. If your logo is more than about a quarter of the code's width, or you've stacked a logo on top of a strong gradient, you can push past what error correction can recover.
Keep the logo to 20–25% of the width, leave a small clear ring around it, and make sure error correction is set to High (this tool does that automatically when you add a logo). If a gradient is involved, keep both ends dark.
5. The destination has moved — the code is fine
If the code scans (your phone shows a link or an action) but the page is a 404, a login wall, or the wrong content, the QR code did its job — the problem is downstream.
Static QR codes can't be edited: the link is baked in. If the destination URL might change, that's the case for a dynamic QR code, where the code points at a short redirect you can re-aim later. Until then, only put a static code on a URL you control and don't plan to move.
Other things that stop a scan
A few less common causes worth checking:
- Damage — a torn label, a deep crease through a corner square, or heavy ink smudging
- Reflection — a glossy laminate or a screen under bright light bounces the camera's view
- Curved surfaces — a code wrapped tightly around a bottle or a pen distorts the grid
- Camera focus — a cracked lens, a dirty lens, or a phone too close to focus (pull back 10–15 cm)
- An old scanner app — the built-in camera on any phone from the last five years is more reliable than most third-party apps
Test before you print
Always scan your own code, at the size and on the material it will actually be used on, with more than one phone if you can. A code that scans on your screen might fail once it's printed small on a matte sticker.
This generator reads every code back as you design it and flags low contrast, a large logo or a strong gradient the moment it becomes a risk — so most of these problems never make it to print.