ShibaQR

How Small Can a QR Code Be? The 10:1 Rule, With Numbers

Work out the smallest size your QR code can be printed at and still scan, using the distance it will be read from and the size of a single module.

4 min read

Most QR codes that fail in the wild are not broken. They are simply too small for the distance people stand at. The fix is arithmetic, not design.

The 10:1 rule

A QR code can be read from roughly ten times its own width. Turn that around and you get the only formula you need:

minimum code width = scan distance ÷ 10

A code 5 cm across is readable from about 50 cm — arm's length, a menu on a table. The same code on a poster read from 3 m away is unreadable, and no amount of error correction changes that.

Where it is read Typical distance Minimum code width
Business card, held in hand 20–30 cm 2–3 cm
Table tent, menu, product label 40–60 cm 4–6 cm
Shop window, from the pavement 1.5–2 m 15–20 cm
Wall poster in a corridor 3 m 30 cm
Trade-show banner 5 m 50 cm
Billboard 20 m+ 2 m+

The rule is a floor, not a target. Add 20–30% if the code will be read in poor light, at an angle, or by people who will not walk closer.

The second limit: module size

The 10:1 rule assumes the individual squares — the modules — stay big enough for a camera to resolve. Below about 0.4 mm per module on paper, ordinary phone cameras start to miss edges, and below 0.25 mm almost nothing reads reliably.

This is where the amount of data you encode comes back to bite you. A QR code grows in fixed steps called versions:

Version Grid Holds (a URL, at level L)
1 21 × 21 17 characters
2 25 × 25 32 characters
4 33 × 33 78 characters
10 57 × 57 271 characters
20 97 × 97 858 characters

Those are byte-mode figures, which is what a web address uses. Plain uppercase text encodes more densely — a version 1 code holds 25 uppercase characters rather than 17 — but no URL you will ever print qualifies.

At 2 cm wide, a version 1 code gives you modules of about 0.95 mm — generous. The same 2 cm holding a version 10 code gives 0.35 mm modules, and it will fail on half the phones that try.

So the real minimum size is whichever is larger: the distance figure, or 0.4 mm × the number of modules across.

Shorten the data before you enlarge the code

Given a long link, the instinct is to print the code bigger. Usually you cannot — the space on a business card is fixed. Shorten the payload instead:

  • Drop https://www. where the scanner will add it back; example.com/offer encodes fine.
  • Strip tracking parameters. A utm_source, utm_medium, utm_campaign and utm_content chain easily adds 80 characters, which pushes a 78-character link from a 33 × 33 grid to a 49 × 49 one — four versions, for text nobody scanning will ever see.
  • Use a dynamic QR code. The image encodes a short redirect instead of the full destination, so the code stays sparse no matter how long the real URL gets.
  • For a vCard, include the four fields people actually use. Adding a postal address, a fax number and a photo turns a sparse code into a dense one.

Do not forget the quiet zone

The specification requires a clear margin of four modules on all four sides. It is part of the code, not padding around it. Designers crop it constantly, and a cropped quiet zone is the single most common reason a correctly generated code will not scan.

If your code is 4 cm wide with 25 modules across, each module is 1.6 mm, so the quiet zone is 6.4 mm — and it must stay white. Do not run a background image, a border or a fold through it.

Test it the way it will be used

Print a proof at the exact final size, on the exact stock. Tape it where it will live. Then stand where your reader will stand and scan it with two or three different phones — an older Android and a current iPhone is a reasonable spread. A code that works on your desk at 15 cm tells you nothing about a code on a wall at 3 m.

Tools used in this guide

Read next

All guides →