QR Code Not Scanning? 10 Common Problems and How to Fix Them

June 10, 2026 9 min read Snipinsta Team
Troubleshooting QR Codes
Test your QR code right now. Upload the artwork and see exactly what it decodes to. Open QR Scanner

You printed 500 flyers and the QR code won't scan. Before reprinting anything, work through this list - QR failures almost always come down to one of ten causes, and most are fixable in minutes with a regenerated code.

First: Find Out Whether the Code or the Link Is Broken

There are two completely different failure modes, and the fix depends on which one you have:

  1. The code won't decode at all - the camera never reacts, no notification appears. This is a visual/print problem (causes 1-7 below).
  2. The code decodes but nothing useful happens - a browser opens an error page or a dead link. This is a data problem (causes 8-9).

To tell them apart in 10 seconds: upload a photo or the original artwork to the free QR code scanner. If it returns the encoded value, the pattern is fine and your problem is the destination. If it returns nothing, the pattern itself is the problem.

1. The Code Is Printed Too Small

The most common print failure. Phone cameras need each module (the little squares) to span several pixels in the captured image.

The 10:1 rule: minimum code width = scanning distance ÷ 10.

PlacementTypical scan distanceMinimum code size
Business card, menu, flyer25–30 cm2.5 x 2.5 cm (1 in)
Product packaging30–50 cm3–5 cm
Poster in a hallway1–2 m10–20 cm
Billboard / storefront window3 m+30 cm+

Fix: regenerate the code at a high resolution with the QR code generator and scale it up in the layout. Never enlarge a small raster image of the code - export it large in the first place.

2. Not Enough Contrast

Scanners binarize the image - every pixel becomes either "dark" or "light." A pastel-on-white or gray-on-beige code can fall entirely on one side of that threshold.

Fix: keep at least a 40% brightness difference between the code and its background. Dark navy, charcoal, or brand-dark colors on white all work; yellow, light gray, or light pastels on white do not.

3. Inverted Colors

The QR spec assumes dark modules on a light background. A white code on a black T-shirt looks striking, but many scanner apps - including some default camera apps - refuse inverted codes.

Fix: if your design demands a dark background, place the QR code inside a white rounded rectangle and use a dark code inside it. You keep the look and the reliability.

Logos work because of error correction - level H codes survive up to 30% damage. But every bit of logo "spends" part of that budget, and so does print wear, glare, and dirt.

Fix: keep the logo to 20% of the code area or less, centered, never touching the three large corner squares (finder patterns). Generate at error correction level H. Our walkthrough on creating QR codes with custom logos covers the exact settings.

5. Missing Quiet Zone

The quiet zone is the empty margin around the code - the spec requires at least 4 modules of clear space on every side. Designers routinely crop it off or run text and borders right up against the code, which prevents scanners from locating the code at all.

Fix: leave a white margin roughly the width of one finder square (the corner box) on all four sides. No text, borders, or graphics inside it.

6. Blurry or Pixelated Output

Common when a tiny PNG (say, 200x200) is enlarged for print, or when the code is screenshotted, recompressed, and re-exported a few times. Soft module edges defeat the scanner's binarization.

Fix: export the code at print resolution from the start - at least 1000x1000 px for small print, more for posters. Avoid re-saving as JPG; JPG artifacts blur module edges (PNG keeps them sharp - see PNG vs JPG).

7. Curved, Glossy, or Damaged Surface

Codes wrapped around bottles or mugs distort geometrically; glossy lamination throws specular glare that wipes out part of the pattern; weathered outdoor stickers lose modules.

Fix: place codes on flat areas of packaging where possible, prefer matte finishes, size up the code on curved surfaces, and bump error correction to H for anything outdoors.

The code decodes fine - to a URL that 404s, a shortener that shut down, or a "dynamic QR" trial that expired. This is the classic "QR code expired" complaint: static codes never expire, destinations do.

Fix: decode the code with the QR scanner to see the exact URL, then fix or redirect that URL. For print campaigns, encode a domain you control (e.g. yoursite.com/menu) rather than a third-party short link, so you can change the destination server-side without reprinting.

9. Too Much Data in the Code

QR capacity is real but finite (about 3 KB binary). A 500-character URL with tracking parameters produces a dense forest of tiny modules that's hard to scan at small sizes - density and physical size trade off directly.

Fix: encode short URLs. Strip tracking parameters or move them server-side with a redirect. Fewer characters = chunkier modules = scans from farther away on smaller prints.

10. It's the Scanner, Not the Code

Sometimes the code is perfect. Old Android camera apps without native QR support, cracked lenses, low-light conditions, or scanning from an extreme angle can all fail on a valid code.

Fix: test on at least two devices (one iPhone, one Android) before blaming the artwork. If a printed code resists a live camera, photograph it and upload the photo to the image-based QR reader - if that decodes it, the pattern is valid and the issue is capture conditions.

Pre-Print Testing Checklist

  • Generated at error correction level H (if using a logo) with the QR generator
  • Exported as PNG at 1000px+
  • Dark code on light background, 40%+ contrast
  • Quiet zone intact on all four sides
  • Logo ≤ 20% of area, finder patterns untouched
  • Decoded with the QR scanner - data is exactly right
  • Test-scanned on two phones, from the real-world distance
  • Printed proof scanned once more before the full run

Frequently Asked Questions

Static QR codes never expire - the data lives in the pattern itself. What stops working is the destination: deleted pages, dead short links, or dynamic-QR subscriptions that lapsed. Decode the code to see where it points, then fix the destination.

Usually a marginal code - low contrast, small size, or inverted colors - that one camera stack tolerates and the other doesn't. Treat it as a failing code and fix the underlying issue rather than shipping something that only half your audience can scan.

Only if the problem is the destination and you control the encoded URL - point that URL to the right place and every printed code starts working again. Visual problems (size, contrast, quiet zone) always require regenerating and reprinting.

Level M (15%) is fine for clean digital display. Use level Q (25%) or H (30%) for print, outdoor placement, or any code with a logo. Higher levels make the code denser, so pair them with adequate physical size.

Quick recap: verify the code with the scanner, fix the specific cause, regenerate at high resolution with the generator, and test on real devices before printing. For background on how the format works, read the Complete Guide to QR Codes.