QR code not scanning

Nine causes, in the order they actually happen. Most are fixable without reprinting.

Make a replacement code

Free, no account, and the code never expires. Nothing you type is uploaded.

A code that refuses to scan is rarely broken data. The pattern either encodes something or it does not, and a generator that produced a corrupt one would fail every time, everywhere. What usually happens instead is that the pattern is intact and the camera cannot resolve it — too small for the distance, too little contrast, cropped, curved, glossy, or covered.

That distinction matters because it tells you where to look. If a code scans from ten centimetres but not from two metres, nothing is wrong with the code; it is the wrong size for the job. If it scans on one phone and not another, you are near the edge of what a decoder tolerates and the fix is more margin, not a different generator.

The causes below are ordered by how often they turn out to be the answer. Work down the list rather than starting with the exotic ones, and check the first three before you reprint anything — those three account for most reports.

Start here: is it the code or the conditions?

Open the same code on a screen and scan it from twenty centimetres. If that works, the encoded data is fine and the problem is physical — size, print quality, lighting or surface. If it fails on screen too, the problem is in the design.

This single test splits the list below in half and takes ten seconds. Skipping it is how people end up regenerating a code that was never the issue.

The quiet zone: the most common fix nobody expects

The blank border around the pattern is part of the specification, not styling. A decoder uses it to find where the code ends, and without it the surrounding artwork bleeds into the search. Four modules wide is the standard; less than two is where failures begin.

This is the fix that surprises people, because the code looks complete. It is also the one most often introduced by someone else — a designer fitting the square into a tight layout, a printer trimming to the edge, a label die-cut close to the artwork.

  • Leave a margin at least four modules wide on all four sides
  • Nothing in that margin: no border, no text, no background pattern
  • Watch for it when a code is placed inside a coloured shape or badge

Contrast and inversion

Cameras read light against dark, and they need a real difference. Dark blue on black, mid-grey on white or two similar pastels all measure as insufficient even though a person sees two distinct colours. A ratio of about 3:1 is the working minimum, and more is better outdoors.

Inversion is the version of this that fails silently on older equipment. A light pattern on a dark background is readable by most modern phone cameras and by fewer dedicated scanners; if the audience might use a handheld reader, keep the pattern dark on a light ground.

Size against scanning distance

The working rule is a ratio of roughly ten to one: the printed side should be about a tenth of the distance it will be read from. Two metres away means a twenty-centimetre square, and a code across a car park is far larger than people expect.

Undersizing is the usual failure on vehicle livery, building signage and trade-show banners, because those are designed to be looked at from a distance but the code was sized to look proportionate in the layout.

Surface, curve and glare

A code on a bottle, a cup or a cable curves away from the lens, and past roughly fifteen degrees of curvature the modules distort enough to defeat the decoder. Flat placement is worth more than a larger code on a curve.

Gloss and lamination create a highlight exactly where the camera is looking. Matte finish reads far more reliably under shop lighting, and the difference is visible immediately if you compare the two on the same shelf.

Logos and damage

A logo in the centre is fine if the error correction was raised to match and the logo stays under about a fifth of the width. Larger than that and it eats data the pattern needs. Never cover the three large corner squares — those are how the camera finds and orients the code, and no amount of error correction compensates.

Physical damage behaves the same way: a scratch, a fold or a sticker over part of the pattern is recoverable up to whatever redundancy the code was made with, and not one module further.

When the scan works but goes to the wrong place

That is not a scanning problem at all. Either the destination changed and the code is static, so it points where it always pointed, or the code is dynamic and its destination was edited. A dynamic code's history shows exactly when and to what.

This is the failure that costs the most, because it looks like the code still works. A static code cannot be re-pointed — if the destination is likely to move, that is the argument for a dynamic one.

Questions people ask

Why does it scan on my phone but not on my colleague's?

You are at the edge of what a decoder tolerates rather than safely inside it. Cameras differ in resolution, focus distance and how aggressively they correct for angle. A code that works on one device and not another usually needs more margin somewhere — larger, higher contrast, or a wider quiet zone.

Can I fix a code that is already printed?

If it is dynamic, yes — change the destination and every printed copy follows, because the printed square holds an unchanging short link. If it is static, the content is fixed in the pattern and the only fix is a reprint.

Does adding more error correction make a code easier to scan?

Not by itself, and often the opposite. Higher redundancy adds modules, so in the same printed square each module is smaller and needs a closer or better camera. It helps against damage and logo coverage, not against being too small or too low contrast.

Is a coloured QR code less reliable?

Only if the contrast is insufficient. A dark colour on a light background scans as well as black on white. What fails is low contrast, inverted patterns on older readers, and gradients that fade the pattern into the background at one corner.

How do I test a code before printing hundreds of them?

Print one at the final size, on the final material, and scan it from the real distance in the real lighting. Screen tests miss glare, surface and print gain. The generator on this page also decodes each design as you build it, which catches the design-stage failures before you get that far.

Related generators

Need to change it after printing?

That is a dynamic code — and ours keeps redirecting even if you cancel.