Enqre
Back to blog

Published on 8/4/2026

Why Won’t My QR Code Scan? The Six Real Causes

A code that will not scan is rarely mysterious. In practice it is one of six things — and the useful part is that you can narrow it down in about two minutes without any special equipment.

Work through them in this order, because that is roughly the order of how often each is the culprit.

1. Not enough contrast — and not the kind of contrast you think

This is the most common cause by a wide margin. A camera does not see your brand colours; it sees luminance. Two colours that look clearly different to you can be nearly the same shade of grey to a sensor, and the code becomes a texture rather than a pattern.

The classic failure is a mid grey on white. Something like #9aa0a6 looks like a tasteful soft grey on screen and gives a contrast ratio of about 2.6:1 — enough for a phone held 10 cm away in good light, and not enough for anything else. Aim for 5:1 or better; below 3:1 treat the code as broken.

Two related traps:

  • Gradients. A code is only as scannable as its palest end. A gradient from near-black to a light pastel reads fine at the top and dissolves at the bottom.
  • The three corner squares. A scanner has to find those finder patterns before it can decode anything. Making them a light brand accent while the body stays dark fails earlier than the reverse.

Our designer computes these ratios live and shows the number as you pick colours, precisely because this failure is invisible on a bright monitor and obvious on a printed sheet.

2. Too small for the distance it is read from

The working rule is roughly a tenth of the reading distance. A code read at 30 cm wants about 3 cm; one on a wall read from 3 m wants about 30 cm. People routinely put a 2 cm code on a poster and conclude that QR codes do not work.

Two adjustments to the rule: outdoors or in poor light, go bigger, because a phone in dim light cannot resolve fine modules. And a code holding more data has more, smaller modules at the same physical size — which is one practical argument for a short redirect link over a long URL.

3. The quiet zone is gone

The white border around a code is part of the code. Scanners use it to find where the pattern ends. Designers delete it constantly — cropping tight to the modules, butting the code against a coloured block, or letting body text run into it.

Leave a clear margin of about four modules on all four sides, in the background colour. A scuffed or overprinted edge fails more often than a scuffed middle.

4. A logo eating more modules than error correction can pay for

QR codes survive damage because they carry redundant data. How much depends on the level: L tolerates roughly 7% of the code being lost, M about 15%, Q about 25%, H about 30%. A centre logo is deliberate damage, and it has to fit inside that budget.

So: a logo with level H is normally fine. The same logo at level L is a broken code that may still scan on your phone, in your hand, today — and fail on a customer's older phone in a dark restaurant. Use H whenever there is a logo, keep the logo modest and centred, and never place graphics over the three corner squares.

5. It is inverted

Light modules on a dark background. The majority of modern scanners handle inversion, but a meaningful minority still does not, and you will never hear from the people it failed for. If the design allows, keep dark modules on a light background. If it does not, test on more than one phone.

6. Something happened at print

The file is fine and the artefact is not. In rough order of frequency:

  • Raster where vector belonged. A 300-pixel PNG blown up to 20 cm gives soft, ragged modules. Export SVG or PDF for anything printed.
  • Ink spread on absorbent stock. On uncoated paper, cardboard or textile, modules bleed into each other and the light gaps close. Go larger and consider a lower data payload.
  • Glossy laminate. A perfect code under a shiny finish becomes a mirror under ceiling lights. Matte laminate for anything horizontal — table tents, menus, floor decals.
  • Curved or flexible surfaces. Bottles, cups, cable wraps. The pattern distorts; scanners tolerate some of it, not a lot. Keep codes on the flattest available panel.
  • Low toner, misregistration, cheap thermal labels. Print one and scan it before you print ten thousand.

Narrowing it down in two minutes

  1. Scan the design on your screen. If the on-screen version fails, the problem is the design — go back to contrast, size, quiet zone or logo. If it scans, the design is fine and the problem is physical.
  2. Photograph the printed code and zoom in. Blurred or merged modules mean a print problem; crisp modules mean contrast or size.
  3. Try a second phone, ideally an older Android. Works on yours but not theirs is the signature of a code with no margin left — usually low contrast, an aggressive logo, or inversion.
  4. Cover the surroundings with a plain white sheet, leaving only the code. If it suddenly scans, you had a quiet-zone problem.
  5. Move further away and closer. Fails close but works far means the camera cannot focus that near; fails far means the code is too small.

The test that prevents all of this

Before a print run, scan the actual proof — not the file on your monitor — with at least two phones, one of them not new, from the distance and in the lighting where it will really live. That single check costs five minutes and catches every cause on this page except a laminate you have not applied yet.

And if the code is dynamic, one more piece of insurance: a code that scans but leads to the wrong place is not a scanning problem at all, and it is the one failure you can fix after printing.

Quick answers

  • Why does my QR code work on my phone but not on others? The code has no margin left — usually contrast, a logo too large for the error-correction level, or inversion. Your phone is newer and your light is better.
  • Can a QR code be too small to scan? Yes. Under roughly a tenth of the reading distance it becomes unreliable.
  • Do colours break QR codes? Colour is fine; low luminance contrast is not. Dark modules on a light background, 5:1 or better.
  • Why did my code stop working after printing? Look at ink spread, glossy lamination, a curved surface, or a raster export enlarged past its resolution.
  • Can I put a logo in the middle? Yes, with error correction at H and the logo kept small and off the corner squares.