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.
Print it at the real, final size
Try it on an old phone and a new one
Scan it in the light it will actually live in
See how this applies to Static QR Codes.
Quick answers
Keep reading
Where to put a QR code so people actually scan it
Placement decides scan rates more than design does. A brilliant code in the wrong spot gets ignored, and a plain one in the right spot gets used all day.
BasicsStatic or dynamic: which QR code should you actually use?
One is permanent and works offline. The other can be edited and counted. The right answer depends on one question about your printing.
AnalyticsWhat QR scan analytics actually tell you (and what they don't)
Scan data is genuinely useful and routinely over-read. Here is what the numbers mean, and the conclusions people jump to that the data does not support.
Try it yourself
Everything described here takes about a minute to set up.