All posts
From the blog

Why isn't my QR code scanning? A short troubleshooting guide

Eight specific reasons QR codes fail in the real world, ranked roughly by how often each one is the culprit. Most failures are physical, not technical.

Joe
  • guide
  • troubleshooting

Most QR codes that “don’t work” aren’t broken. They’re printed too small, photographed too close, or stuck on a glossy surface where the camera can’t focus. Here’s a fast list of the actual culprits, in roughly the order I’d check them.

3cm

Too small for distance

Code is 3 cm wide; scanner is 1 m away.

No quiet zone

Code bleeds straight into surrounding art.

Low contrast

Pastel-on-pastel, or color too close to the background.

Finder covered

Logo or sticker on a corner finder square.

Glare / reflection

Glossy laminate or screen catches light.

Inverted colors

Light dots on dark background — many scanners refuse.

The most common reasons a QR fails in the wild — almost all physical, not digital.

1. The code is too small for the scan distance

This is the most common failure by a wide margin. If your QR is on a poster across a coffee shop, but it’s only 3 cm wide, the camera can’t resolve the individual modules. The code is technically valid — it just can’t be read from where people are standing.

The rule of thumb: minimum code size = scan distance ÷ 10. A QR on a wall behind a checkout counter (~1 m away) needs to be at least 10 cm. For details, see our print-ready QR guide.

2. There’s no quiet zone

QR codes need empty space around them — at least 4 modules wide on every side. This “quiet zone” is what lets the scanner find the edges of the code. If you bleed the QR right up to a graphic, a colored background, or another design element, scanners get confused and either fail to detect it or grab the wrong region.

Fix: leave a margin of clear, light space around the QR. About the width of one of the corner finder squares is usually enough.

3. The contrast is wrong

Camera scanners are trained on dark modules on a light background. You can use color, but the modules need to be much darker than the background. A useful test: print the design in greyscale. If the modules don’t stand out clearly against the background in greyscale, the scanner will struggle in real-world lighting.

The two specific things that break codes most often:

4. A finder pattern is damaged or covered

The three big squares in the corners are the scanner’s anchors. If any of them is obscured — by a sticker, a logo, a watermark, a fold — the scanner can’t orient the code and gives up immediately. There is no error-correction budget for the finder patterns; they have to be intact.

If your design needs a logo in the middle of the QR, that’s fine. Just keep the corners clean.

5. The surface is glossy or reflective

Glare on a glossy magazine, a window decal, a phone screen, or a laminated menu can confuse the scanner just enough to fail. The QR is fine — the camera just can’t see it through the reflection.

Quick fixes: matte laminate instead of gloss, or print on uncoated stock for posters. For phone-to-phone scanning (like sharing a Wi-Fi QR), turn screen brightness up and minimize tilt.

6. The print is blurry or low resolution

Modules need crisp edges. A QR rendered at 72 DPI and then upscaled, or a JPEG that’s been re-saved a few times, can have soft module boundaries that the scanner misreads as data. Always:

7. The code is too dense for the size

A QR encoding a long URL has more modules. A 200-character URL might generate a QR with 57×57 modules — almost twice as many as a short URL. At small print sizes, the individual modules become physically tiny and harder for cameras to resolve.

Fixes:

8. The QR provider quietly killed it

If you used a “free” QR generator a couple of weeks ago and your code suddenly stops working — but a freshly generated QR for the same URL works fine — you’ve been hit by the dynamic-QR expiration trick. The dots haven’t changed, but the redirect they encode now points at an upgrade page.

This isn’t a printing problem. It’s a billing problem. (We wrote a whole post about it.) The fix is to regenerate the QR with a service that doesn’t do this — encoding your URL directly as a static QR if you can.

A 30-second debugging routine

When a code fails, in order:

  1. Scan it from the exact distance and angle a real user would. Phone camera, indoor light, no zoom.
  2. Decode the QR with any online decoder. If you see your URL: it’s a printing/contrast/size issue. If you see someone else’s domain: it’s a dynamic-QR expiration issue.
  3. Check the corners. Logo on a finder pattern? Sticker over a corner? Margin too tight?
  4. Try a brand-new code generated fresh, at the same size, on the same surface. If the new one works and the old one doesn’t, see step 2.

Almost every “broken QR” turns out to be one of these eight things. The good news is that almost every fix is also free.

Need a QR code that won't expire?

Make one in your browser, free, no signup. Or sign in with Google to manage dynamic codes with scan stats.