TrustScan

Why Is My QR Code Not Scanning?

A QR code usually fails to scan for one of three reasons: it is printed too small for the distance it is read from, its white border has been cropped, or there is too little contrast between the code and its background. Size and quiet zone account for most real-world failures.

Start here: is it the code or the destination?

Before redesigning anything, rule out the boring possibility. Scan the code yourself and read what comes back. If your phone shows the correct address and the page simply fails to load, the code is fine and the problem is your website, your hosting, or a typo in the URL you encoded.

This catches a surprising share of reported failures, particularly with menu QR codes pointing at a PDF that was moved or a file-sharing link that expired. Fixing the destination costs nothing; reprinting a thousand table cards does not.

1. It is printed too small

This is the most common cause by a wide margin. A QR code needs to be roughly one tenth of the distance it will be scanned from. Below about 2 cm, phone cameras cannot reliably resolve individual modules no matter how good the camera is, because of minimum focus distance rather than resolution.

Where it isScan distanceMinimum width
Business card20–25 cm2–2.5 cm
Restaurant table card30–40 cm3–4 cm
Product packaging25 cm2.5 cm
A4 poster1 m10 cm
Shop window2 m20 cm
Van livery3 m30 cm
Billboard10 m1 m

Vehicle livery is the one people underestimate most: a code on a van door that looks generous in the artwork is unreadable from the pavement. There is more detail in the guide to QR code size for printing.

2. The quiet zone has been cropped

Every QR code needs a clear margin around it — the quiet zone — equal to four modules on each side. Scanners use it to work out where the code ends and the world begins. Without it, the algorithm cannot lock onto the code's boundary and simply never sees a code at all.

Designers crop it constantly, because to the eye it looks like wasted white space in a tight layout. If your code sits flush against a coloured block, a photograph or the edge of a card, this is very likely your problem. Every code downloaded from this site already includes the quiet zone — do not trim it, and do not let a printer bleed into it.

3. Contrast is too low, or inverted

Dark modules on a light background. That is the rule, and the margin for creativity is smaller than designers expect.

  • Pale grey on white fails on most phones. Anything lighter than about 40% grey is asking for trouble.
  • Light code on a dark background — an inverted code — works on modern iPhones and recent Android but fails on plenty of older scanners, which assume dark-on-light.
  • Two mid-tone colours, like a mid-blue code on a mid-green background, can look high-contrast to the eye while being nearly identical in luminance, which is what the scanner measures.

If you are colouring a code on the generator, keep the modules genuinely dark and the background genuinely light. The preset swatches there are all tested combinations.

4. It is too dense for the size you printed

A long URL with tracking parameters, or a full vCard with every field filled in, produces a version 10 or higher code with hundreds of tiny modules. Printed at the same physical size as a short code, each module is a fraction of the width, and the whole thing falls below what a camera can resolve.

The fix is to shorten the content rather than enlarge the code. Drop UTM parameters. Use a short path on your own domain. For a vCard, include a name, one phone number, one email and a website — not a postal address, a fax number and three social profiles.

Every generator on this site shows the version and module count as you type, so you can watch density climb and stop before it becomes a problem.

5. The surface is curved, glossy or wet

Bottles, cups, tins and pens all wrap the code around a curve, which distorts its geometry. Scanners tolerate a little perspective distortion — that is what the corner finder patterns are for — but a tight curve breaks the grid entirely.

Gloss laminate is the other frequent culprit: it throws the phone's flash straight back into the lens. Matt finishes scan far more reliably, and matt lamination on a restaurant table card is worth the small extra cost purely for scan rate.

6. The camera cannot focus that close

Phone cameras have a minimum focus distance, commonly around 10 cm and worse on cheaper handsets. When a code will not scan, the instinct is to move closer — which pushes it inside the focus range and makes it worse.

If you are testing and it will not read, back off to arm's length first. If your users are consistently holding it too close, the code is too small for the job.

7. A logo is covering too much

A centre logo consumes error correction. Keep it under about a fifth of the code's area, and never let it touch the three large corner squares — those are the finder patterns the scanner uses to locate and orient the code at all.

If you need a logo, raise error correction to High or Highest first. The full explanation of how much you can safely cover is in the logo guide, and the logo generator handles the padding automatically.

8. The code is damaged or partly obscured

Error correction can rebuild a remarkable amount — up to roughly 30% of the pattern at the highest level — but not if the damage lands on the three corner finder patterns. A scratch across the middle is usually survivable. A coffee ring over the top-left square is not.

On printed material that gets handled, laminate it, and set error correction to High rather than the default Medium. The extra density is a worthwhile trade for something that lives on a table.

9. Someone replaced it

Worth considering if a code that worked yesterday stopped working today, or if customers report being taken somewhere unexpected. Criminals place stickers over genuine QR codes on parking meters, tables and delivery cards, and a badly aligned sticker often fails to scan at all.

Run a fingernail along the edge — a sticker over print has a lip you can catch. There is more on this in the guide to QR code sticker scams, and you can check any address a code gives you before opening it.

10. The printer rendered it badly

Inkjet bleed thickens modules and closes the gaps between them. Screen printing on fabric distorts the grid. Thermal receipt printers fade within weeks. Anti-aliasing from a low-resolution PNG softens module edges into grey, which is exactly where a scanner looks for a hard transition.

Use the SVG download for anything printed. It is mathematically sharp at any size, so the printer's RIP produces clean edges rather than interpolating a fixed pixel grid.

11. It is a dynamic code and the service stopped

If the code came from a subscription QR service, it does not contain your destination — it contains a short link on that company's server, which forwards the scanner onward. If the subscription lapsed, the trial ended or the company shut down, every printed code dies at once and there is nothing wrong with the pattern at all.

Scan it and read the address. If it shows a domain you have never heard of rather than your own, that is what happened. See do QR codes expire for the full explanation.

12. You are testing with an unusual scanner

Some third-party scanner apps are worse than the built-in camera, and a few refuse formats the camera handles fine. Before concluding a code is broken, test with at least two phones — ideally one recent iPhone and one cheap Android, because that spread covers most of what your audience actually carries.

A checklist before any print run

  1. Print one at final size, on the final material.
  2. Scan it with a cheap Android phone, not just your own.
  3. Test it in the light the code will actually live in — dim restaurant, bright shop window, night-time street.
  4. Have someone unfamiliar with it try, from where a customer would stand.
  5. Confirm the destination loads, not just that the code reads.

Five minutes here has saved more reprints than any other advice on this page.

Check a link before you trust it

Anyone can print a QR code and stick it over yours. TrustScan reads the address and runs 21 checks on it before the page opens — free, offline, and on every scan. Try the checker or get the app.

Make a fresh QR code

Related guides