All posts
Design11 August 20266 min read

Why a QR code fails to scan, and how to stop it happening

A QR code that does not scan is worse than no code at all. People try once, maybe twice, then walk off thinking your business does not have its act together.

The frustrating part is that almost every failure comes down to a handful of things, and every one of them is decided before the file goes to print.

It is printed too small

This is the most common one by a distance. A code looks fine at full size on a screen and then gets dropped into a corner of a leaflet at half the size it needs.

As a rough floor, keep it at two centimetres square for something held in the hand. For a poster read from across a room, scale up with the distance. A useful rule of thumb is that the code wants to be about a tenth of the distance people will scan it from.

There is not enough contrast

A camera has to tell the dark modules apart from the light background. Two mid tone colours that look pleasant in a design tool can be nearly identical to a phone in a dim room.

Dark on light is what scanners are built for. Light dots on a dark background do work on many phones, but not all of them, and a light background is the safer bet every time.

  • Keep the code darker than its background
  • Avoid pale colours for the dots
  • Never place a code over a busy photo
  • Test in poor light, not just on your monitor

The quiet zone got cropped

A code needs an empty margin around it, usually described as four modules wide. That blank border is not decoration. It is how a scanner works out where the pattern begins and ends.

Designers squeeze it constantly, because empty space looks like wasted space. It is the single easiest way to make a perfectly good code unreadable.

The logo is too big

A logo in the middle works because QR codes carry error correction, meaning some of the pattern can be obscured and the data still recovers. There is a limit though, and covering much more than a third of the code pushes past it.

Keep the logo central. The three big squares in the corners and the timing lines between them are the parts a scanner locks onto first, so anything covering those breaks it outright.

The content is too long

For static codes, everything you encode lives inside the pattern. A long web address with tracking parameters attached makes a dense, fragile code full of tiny modules that smudge in print.

Shorten the address before you encode it, or use a dynamic code, where the pattern only ever holds one short link no matter how long the real destination is.

Test it properly before you print

Testing on your own phone, on screen, at full brightness is not a test. That is the easiest possible conditions and it will pass almost anything.

1

Print it at the real, final size

2

Try it on an old phone and a new one

3

Scan it in the light it will actually live in

See how this applies to Static QR Codes.

Quick answers

Yes, as long as the code stays clearly darker than its background. Colour is not the problem, low contrast is.