A practical starting point is about one centimetre of code width for every ten centimetres of scanning distance, and never smaller than 2 cm across for anything handheld. A code on a table card read from 30 cm away works at 3 cm; one on a poster read from 3 metres needs to be about 30 cm wide. Those numbers assume a short link. The more you put in a code, the finer its squares become, and the larger you must print it to keep each square readable.
This guide explains the anatomy that sets those limits, gives a table of real square sizes for different content lengths, and covers the quiet zone, error correction and colour rules that decide whether a printed code scans at the first try.
The 10:1 rule and where it comes from
A phone camera needs each small square, called a module, to cover several sensor pixels before it can decode reliably. As distance doubles, each module covers half as many pixels in each direction, so the code must double in width to compensate. That linear relationship is what the 10:1 rule of thumb captures: scanning distance divided by ten gives a comfortable minimum width.
| Where it is scanned | Typical distance | Width at 10:1 |
|---|---|---|
| Business card, label | 15–20 cm | 2 cm (use 2 cm minimum) |
| Table card, flyer, menu | 30 cm | 3 cm |
| Wall notice at eye level | 1 m | 10 cm |
| Shop window, door | 2 m | 20 cm |
| Poster across a room | 5 m | 50 cm |
Treat the rule as a floor for short, simple codes. It gets you close for the web-address rows in the next table; for dense codes, size up using module size instead.
Versions: why longer content means smaller squares
QR codes come in 40 sizes called versions, defined in the international standard ISO/IEC 18004. Version 1 is a grid of 21 × 21 modules, and each version adds four modules per side, up to 177 × 177 at version 40. An encoder picks the smallest version that can hold your content at the error correction level you choose. More characters means a higher version, more modules, and so smaller modules at any given print size.
The table shows the version needed for byte-mode content (ordinary text and web addresses) at each error correction level, and how wide each module is (the last three columns) when the symbol is printed 2, 3 or 5 cm across at the common default level M. We generated the versions with an open-source encoder that implements the standard's capacity tables, then divided the print width by the module count.
| Content (characters) | Version L / M / Q / H | Grid at M | At 2 cm | At 3 cm | At 5 cm |
|---|---|---|---|---|---|
| Short web address (24) | 2 / 2 / 3 / 3 | 25 × 25 | 0.80 mm | 1.20 mm | 2.00 mm |
| Wi-Fi login (52) | 3 / 4 / 5 / 6 | 33 × 33 | 0.61 mm | 0.91 mm | 1.52 mm |
| Address with tracking tags (99) | 5 / 6 / 8 / 10 | 41 × 41 | 0.49 mm | 0.73 mm | 1.22 mm |
| Short message (150) | 7 / 8 / 10 / 12 | 49 × 49 | 0.41 mm | 0.61 mm | 1.02 mm |
| Contact card (300) | 11 / 13 / 16 / 18 | 69 × 69 | 0.29 mm | 0.43 mm | 0.72 mm |
| Paragraph of text (500) | 15 / 17 / 21 / 24 | 85 × 85 | 0.24 mm | 0.35 mm | 0.59 mm |
A short web address at 3 cm gives modules of 1.20 mm, which almost any phone reads easily. A 300-character contact card squeezed into the same 3 cm leaves modules of 0.43 mm, small enough that older cameras, poor light or a slightly smudged print will cause trouble. If you have to print dense content, make the code bigger, or shorten the content: a link to a page with the details is often better than the details themselves.
The quiet zone
The standard requires an empty margin, the quiet zone, at least four modules wide on every side of the symbol. Scanners use it to find where the code starts. Text, borders or a busy background pushed right up to the pattern are one of the most common reasons a code that works on screen fails on paper.
Remember to add it when you plan the space. A version-2 code has 25 modules plus 8 for the quiet zone, so a 3 cm symbol needs a clear area about 4.0 cm square. The module sizes in the table above are for the symbol itself, not including the margin.
Error correction levels
Every QR code carries Reed–Solomon error correction data, so it can still be read when part of it is dirty, torn or covered. ISO/IEC 18004 defines four levels, each able to restore roughly this share of the code's data:
| Level | Recovers about | Good for |
|---|---|---|
| L | 7% | Clean screens and indoor prints where the smallest pattern matters |
| M | 15% | The usual default for print and packaging |
| Q | 25% | Outdoor or industrial use where wear is likely |
| H | 30% | Codes with a logo placed over the centre |
The cost is size. The paragraph of text in our table needs version 15 at level L but version 24 at level H, which is 77 versus 113 modules per side. Raise the level only when there is a reason, and if you add a logo in the middle, keep it well inside the 30% budget, since the finder squares and timing lines cannot be covered at all.
Colour and contrast
Scanners look for dark modules on a light background. Coloured codes work if the contrast is strong: a deep navy or dark green on white is fine, while a mid-grey, pastel or bright yellow pattern often is not. As a quick check, convert the design to greyscale; if the modules do not look clearly dark against a clearly light background, some phones will struggle.
- Avoid inverted codes (light modules on a dark background). The standard treats reading them as an optional feature for scanners, and in practice some camera apps still fail on them.
- Avoid gradients and photos behind the code. They reduce contrast unevenly and confuse the quiet zone.
- Watch glossy finishes and curved surfaces. Glare on laminate and distortion on bottles both lower the effective contrast; size up by a quarter or so and test on the real object.
A printing checklist
- Shorten the content first; fewer characters means bigger modules at the same size.
- Choose the width from the scanning distance, at least 2 cm, and check the module size in the table.
- Leave a four-module quiet zone on all four sides.
- Use dark modules on a light background with strong contrast.
- Print a proof at actual size and scan it with more than one phone, in the light where it will hang.
If you are still deciding whether to encode your address directly or to go through a redirect service, read our comparison of static and dynamic QR codes first, since the choice changes how long the encoded text is.
More guides
- Static vs Dynamic QR Codes: Expiry, Tracking and When Each Makes SenseA static QR code stores your content directly; a dynamic one stores a redirect link. Why dynamic codes expire or get paywalled, and when each type is right.
- JPEG, PNG, WebP or AVIF: Which Image Format to UseMeasured file sizes for JPEG, PNG and WebP at four quality settings on six test images, and plain rules for choosing a format for photos, screenshots and logos.