In short
Take the distance people will scan it from and divide by ten: a code read from 30 cm wants to be about 3 cm across, one read from 2 m wants about 20 cm. Then add a white border the width of four of the code’s own squares, keep the pattern darker than its background, and scan a printed proof from that distance before the print run.
The rule: distance divided by ten
Phone cameras need the code’s smallest squares to land on enough pixels to tell apart. The working rule for that, and the one every figure below comes from, is that the printed pattern should be about a 10th of the distance it is scanned from. It is a rule of thumb rather than a standard: a newer phone in good light manages smaller, and a scratched camera lens in a dim pub manages less. Round up rather than down.
The number that matters is the printed pattern’s width, edge to edge of the squares, not the size of the sticker or the box it sits in. Measure the pattern.
A size for each job
Our own working figures, from the rule above. The distances are how far away people actually hold a phone, which for anything on a wall is further than you would guess.
| Where it goes | Scanned from | Pattern width | Worth knowing |
|---|---|---|---|
| Table tent or the corner of a menu | 20 to 30 cm | 3 cm | A seated guest brings the phone to the code, so this is as small as it needs to be. |
| Receipt, bill folder or loyalty card | 20 cm | 2 cm | On thermal receipt paper print it darker than you think: the contrast fades within weeks. |
| A5 flyer or a business card | 25 to 30 cm | 2.5 to 3 cm | Leave the pattern room to breathe; a code squeezed into a corner loses its white border. |
| A4 poster on a wall or a toilet door | 50 cm to 1 m | 5 to 10 cm | Hang it at eye level. A poster above a door frame is read by nobody. |
| Window sticker, read from the pavement | 1 to 2 m | 10 to 20 cm | Facing out, at eye level, and clear of reflections from the glass. |
| A-board or pavement sign | 1.5 to 2 m | 15 to 20 cm | People scan while walking past, so give them a code they can hit without stopping. |
| Shop-front banner or a wall sign | 3 to 5 m | 30 to 50 cm | At this size the short link inside matters: fewer characters means larger squares. |
The white border is part of the code
A QR code needs a clear margin around the pattern — its quiet zone — or the camera cannot find where the pattern ends. Four modules wide is the usual figure, a module being one of the code’s own smallest squares, so on a 3 cm code printed as a 25-module pattern that is about 5 mm of clear space on every side.
What eats the quiet zone in practice: a border or a box drawn tight around the code, a photograph the code sits on top of, the fold of a table tent, the bleed edge of a flyer, and a sticker cut to the pattern’s own edge. Leave the margin empty and the same colour as the code’s background.
Dark pattern, light background, and no clever colours
Cameras read the pattern as dark squares on a light background, so the pattern must be the darker of the two. That rules out the inversions people like the look of: white or pale codes on a dark background fail on a lot of phones, and so do codes printed in a light colour on white.
- Keep a strong difference in lightness, and not in colour alone. A mid-red code on a mid-green background is two different colours and the same brightness, which a camera reads as grey on grey.
- Print the background, do not rely on the paper. Brown kraft card and recycled board are darker than they look, and a black code on brown card can be too close to read.
- Mind the finish. A gloss laminate under a pub’s downlights reflects straight back into the camera; matt does not. Same for a window sticker in afternoon sun.
- A logo in the middle is a hole in the data. Codes carry enough error correction to survive a small one, so keep it under about a fifth of the pattern’s width and test it.
A shorter link makes bigger squares
The more characters the code holds, the more squares it needs, and the smaller each square gets at the same printed size. A long tracking URL with campaign parameters can double the number of squares against a short link, which is why the same 3 cm print can be easy to scan or hopeless depending on what is inside it.
This is the practical argument for a short link rather than the full address: a go.qrvane.com link is a handful of characters, so at any given print size its squares are as large as they can be. It is also what lets you change where the code goes afterwards, which is a separate guide: how to change where a QR code points.
The one test worth running
Print one proof at the real size, on the real material, and scan it where it will live. Not on screen, not scaled on A4: the material and the light are half the problem.
- Scan it with an iPhone and with an Android phone, from the distance in the table.
- Scan it in the light it will be in — the dim corner table, the window at 4 pm, the pavement at dusk.
- Scan it at an angle, about 30 degrees off square, which is how people actually hold a phone.
- Read the address the camera offers before you open it, and check it is the one you meant.
- Then scale up. If the proof needs two attempts, go up a size: it will not get better once it is laminated to 200 table tents.
If a code that used to work has stopped, why a QR code stops working goes through the causes in order, from wear on the print to the service behind a short link. And if you are printing a menu, putting a menu behind a QR code covers what goes on the page and the allergen line that has to go with it.