How Big Should a QR Code Be? A Print Size Guide
The 10:1 distance rule, minimum sizes for business cards, posters and billboards, why the quiet zone matters, and how to calculate the exact size you need.
Too small and it won't scan. Too big and you've wasted space on your design. There's a straightforward rule that gets you close, and a calculation that gets you exact.
The 10:1 rule
A QR code should be at least one tenth the distance it's scanned from.
| Scanned from | Minimum code size |
|---|---|
| 20 cm (business card in hand) | 2 cm |
| 50 cm (menu on a table) | 5 cm |
| 1.5 m (poster on a wall) | 15 cm |
| 5 m (shop window from pavement) | 50 cm |
| 20 m (billboard) | 2 m |
This is a widely used industry heuristic, and it's deliberately conservative — it assumes a mediocre phone camera in mediocre light held by someone who isn't trying very hard. That's the right assumption for anything printed.
Never go below 2 cm (0.8 inches), whatever the maths says. Below that, printing tolerances and camera focus limits start to dominate.
The rule's blind spot
The 10:1 rule assumes an average amount of data. It breaks when your payload is long, because what actually matters is module size, not overall size.
A module is one small square. Scanners need each module to be big enough to resolve — roughly 0.4 mm minimum for decent printing, and 0.6 mm is a safer target for anything that matters.
Three codes at 3 cm square, all measured:
- A short link (
https://moxu.dev/m) → v2, 25 × 25 modules → 0.91 mm per module. Comfortable. - A vCard with full contact details → v11, 61 × 61 modules → 0.43 mm per module. Borderline.
- That same vCard at error correction H → v16, 81 × 81 modules → 0.34 mm per module. Likely to fail on a phone in dim light.
Same printed square, wildly different reliability. Note the third case: raising error correction made the code less readable, because the modules shrank.
Calculating it properly
total modules = (version × 4 + 17) + (quiet zone × 2)
code size = total modules × module size
With the default 4-module quiet zone, targeting 0.6 mm modules:
| Version | Modules | + quiet zone | Size at 0.6 mm |
|---|---|---|---|
| v2 | 25 | 33 | 20 mm |
| v4 | 33 | 41 | 25 mm |
| v6 | 41 | 49 | 29 mm |
| v10 | 57 | 65 | 39 mm |
| v15 | 77 | 85 | 51 mm |
| v20 | 97 | 105 | 63 mm |
Our generator reports the version live, so you can read your number off this table directly.
The practical lesson: shorten the URL. Dropping a 75-character tracking link to a 22-character short link takes you from v5 to v2 — the same physical code, with modules 36% larger. That is the single highest-leverage thing you can do for scan reliability, and it costs nothing.
The quiet zone
The blank margin around a code isn't padding. It's a functional part of the spec: scanners use it to detect where the code ends. The standard requires 4 modules of clear space on all sides.
Designers remove it constantly, because it looks like wasted whitespace. It isn't. A code with text or a border crowding it will fail on phones that would otherwise read it fine.
The quiet zone must also be the same colour as the code's background — a white-background code needs white margin, not the poster's dark background bleeding in.
Our generator defaults to 4 and won't go below 1. If you're placing a code on a coloured background, generate it with a matching background colour rather than letting the design crowd the edge.
By medium
Business cards — 2 cm minimum. Space is tight, so keep the payload short. Prefer a short link over a full vCard; a vCard with address and notes pushes you past v10 and the modules get too small for a card-sized code.
Restaurant menus and table cards — 3–4 cm. Scanned from about half a metre, often in low light, sometimes by people who've had a drink. Be generous, and use error correction Q since these get handled constantly.
A4/Letter posters — 4–6 cm, scanned from 1–2 m. Place it at roughly eye height; a code at ankle level on a wall makes people crouch, and most won't.
Shop windows — 15 cm minimum, and mind the glass. Reflections destroy scans, so avoid placing it where the sun hits, and keep it clear of the display lighting.
Vehicle livery and billboards — apply 10:1 to realistic distance, then add margin for the fact that people are moving. On a vehicle, assume the reader is stationary at a traffic light, not driving alongside.
Product packaging — 2–3 cm, error correction Q or H. Curved surfaces are the hidden problem: a code wrapped around a bottle distorts and may not scan from any angle. Keep codes on flat panels.
Colour and contrast
Dark modules on a light background, always. Two rules people get wrong:
Never invert. Light modules on a dark background can look excellent and still be undecodable — most readers only recognise dark-on-light. Our generator rejects inverted colour pairs outright for this reason.
Keep contrast high. Aim for a contrast ratio of at least 3:1, and prefer much more for print. Ink spread on uncoated stock reduces effective contrast compared with what you see on screen.
Pure black on pure white is optimal. A dark brand colour on white is usually fine. Mid-grey on cream is asking for trouble.
Before you commit to a print run
- Export as SVG so it stays sharp at any size.
- Print one proof at final size, on the actual stock.
- Scan the proof with at least two phones — one older Android, one iPhone.
- Test in the lighting the code will actually live in. A restaurant at dinner service is far darker than your desk.
- Test at the real distance and at an angle, not straight-on from 15 cm.
A 20-minute proof test is cheaper than reprinting 5,000 menus.
The generator shows module count, version and final pixel dimensions as you type, so you can size a code precisely instead of estimating.