Print & scan quality

The minimum QR code size, and the scan-distance rule behind it

Most "it won’t scan" problems are a size problem. Two numbers and one table settle it.

By Kiril Urbonas5 min read

Make a QR code roughly one tenth as wide as the distance it will be scanned from, and never smaller than about 2 × 2 cm for short content. Neither figure is in a standard — ISO/IEC 18004 leaves module size to the application — but both are conservative. Longer content means smaller modules, so it needs a bigger code.

Key takeaways

  • Size the code at roughly one tenth of the intended scan distance. A code read from 2 m should be about 20 cm across.
  • Treat 2 × 2 cm (0.8 in) as a practical floor for short content, and larger for anything longer.
  • Neither number comes from a standard. ISO/IEC 18004 explicitly leaves module width to the application.
  • What actually matters is module size — the width of one small square. Below roughly 0.4 mm, printing and camera focus both start to fail.
  • Doubling your content does not double the code: it adds grid rows, which shrinks every module at the same physical size.

How small can a QR code be?

About 2 × 2 cm (0.8 × 0.8 in) for short content read at arm’s length. Below that, the individual squares approach the limits of both printer resolution and phone camera focus, and reliability falls away quickly.

That is a practical floor, not a specified one — and it only holds for short content. This is a spoke off the print guide, which covers the other five things that decide whether a printed code scans.

The one-tenth scan-distance rule

Size the code at roughly one tenth of the distance it will be scanned from. Read from one metre, make it ten centimetres; read from ten metres, make it a metre.

The rule is conservative by design. It assumes a mid-range phone camera rather than a good one, imperfect lighting, and a person who will not hold still — all of which are the normal case in a shop, a lobby or a car park.

A printable distance-to-size table

Applying the rule to the distances that actually come up:

Where it livesScan distanceMinimum sizeComfortable size
Business card, product label20–30 cm2 cm2.5–3 cm
Table tent, menu, flyer30–50 cm3 cm4–5 cm
Shelf talker, counter sign50 cm–1 m5 cm8–10 cm
Poster1–2 m10 cm15–20 cm
Window display, wall graphic3–5 m30 cm40–50 cm
Trade show banner5–8 m50 cm70–80 cm
Billboard20 m+2 m2.5 m+
Minimum applies the one-tenth rule; comfortable adds margin for poor light and long content

Two adjustments. Scan distance is not viewing distance — a billboard is seen from 200 m and scanned from perhaps 20, often from a moving vehicle, so size up. And every figure above assumes short content; the next two sections explain why that matters more than anything else in the table.

The number that actually matters: module size

Everything above is a proxy for one real variable: the width of a single module — one small square in the grid. A scanner has to resolve individual modules, so module width is what decides whether a code works.

Below roughly 0.4 mm per module, two independent things start to fail: ink spread on press begins to close the gaps between modules, and many phone cameras cannot focus close enough to resolve them. A 2 cm code with a 25 × 25 grid gives you 0.8 mm modules, which is comfortable. The same 2 cm code with a 49 × 49 grid gives you 0.41 mm, which is on the edge.

0.254 mm

The module size in Denso Wave’s own worked print example — a 400 dpi printer at four dots per module. It is the only module-size figure the inventor of the format publishes, and it assumes a printing process considerably better than an office laser.

Source: Denso Wave, How to create a QR Code

Why content length changes the answer

A QR code is a fixed grid, and the grid grows in steps as you add data. At medium error correction:

Content lengthGridModule size in a 3 cm code
25 characters25 × 251.2 mm — comfortable
100 characters41 × 410.73 mm — fine
150 characters49 × 490.61 mm — getting tight
300 characters65 × 650.46 mm — risky at this size
The same printed code gets harder to scan purely because of what you encoded

So the cheapest way to make a code scannable is almost never to enlarge it. It is to shorten what you put in it:

  • Drop https:// and www., and use a short path — example.com/menu rather than a full parameterised URL.
  • Move UTM parameters to a redirect on your own domain.
  • For contact details, consider MECARD instead of a full vCard — see the vCard guide.

Raising error correction has the same effect in reverse: it adds redundant data, growing the grid and shrinking the modules. The error correction guide covers that trade-off properly.

How to test before you commit

Print at final size, on the real stock, and scan it from the real distance with at least two phones — one iPhone, one Android, and ideally one that is a few years old. A code that only scans on a current flagship is not finished.

Test in the lighting the code will actually live in, not at your desk. Specifically:

  • A restaurant table in the evening is far darker than a design studio.
  • A shop window gets glare across it for half the day.
  • A warehouse label gets scanned at an angle, by someone holding a box.

Frequently asked

What is the smallest a QR code can be?
About 2 × 2 cm (0.8 × 0.8 in) in practice, for short content scanned at arm’s length. There is no specified minimum — ISO/IEC 18004 leaves module width to the application — but below roughly 2 cm the modules of even a short code approach the limits of printer resolution and phone minimum focus distance.
How big should a QR code be for a business card?
Between 2 and 3 cm (0.8–1.2 in). That matches the one-tenth rule for a 20–30 cm reading distance and stays above the practical floor. Keep the content short — a clean URL rather than a parameterised one — so the modules stay as large as possible.
How big should a QR code be on a poster or billboard?
Apply the one-tenth rule to the real scan distance, not the viewing distance. A poster read from 2 m needs about 20 cm; a billboard read from 20 m needs about 2 m. Billboards also have to account for people scanning from a moving vehicle, so size up rather than down.
Does adding more data make the QR code bigger?
It makes the grid bigger, which makes each module smaller at the same printed dimensions. A 25-character URL is a 25 × 25 grid at medium error correction; 150 characters pushes it to 49 × 49. If you cannot shorten the content, you have to enlarge the print.