Guides

How Big Should a QR Code Be? Print Size, Scan Distance and Contrast

5 min read

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 scannedTypical distanceWidth at 10:1
Business card, label15–20 cm2 cm (use 2 cm minimum)
Table card, flyer, menu30 cm3 cm
Wall notice at eye level1 m10 cm
Shop window, door2 m20 cm
Poster across a room5 m50 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 / HGrid at MAt 2 cmAt 3 cmAt 5 cm
Short web address (24)2 / 2 / 3 / 325 × 250.80 mm1.20 mm2.00 mm
Wi-Fi login (52)3 / 4 / 5 / 633 × 330.61 mm0.91 mm1.52 mm
Address with tracking tags (99)5 / 6 / 8 / 1041 × 410.49 mm0.73 mm1.22 mm
Short message (150)7 / 8 / 10 / 1249 × 490.41 mm0.61 mm1.02 mm
Contact card (300)11 / 13 / 16 / 1869 × 690.29 mm0.43 mm0.72 mm
Paragraph of text (500)15 / 17 / 21 / 2485 × 850.24 mm0.35 mm0.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:

LevelRecovers aboutGood for
L7%Clean screens and indoor prints where the smallest pattern matters
M15%The usual default for print and packaging
Q25%Outdoor or industrial use where wear is likely
H30%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.
Export codes as SVG or as a large PNG and scale down, never up. A small raster code enlarged for print gets blurry module edges, which some scanners read as noise.

A printing checklist

  1. Shorten the content first; fewer characters means bigger modules at the same size.
  2. Choose the width from the scanning distance, at least 2 cm, and check the module size in the table.
  3. Leave a four-module quiet zone on all four sides.
  4. Use dark modules on a light background with strong contrast.
  5. 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