How big to print a QR code

There is a rule of thumb: a code reads from about ten times its own width. It is a good rule and it is a summary of something more useful, which is that the only dimension a scanner cares about is the size of one module.

Updated 8 September 2026

The rule of thumb

Take the distance the code will be read from and divide by ten. That is the width to print. A code read at arm's length, call it 300mm, wants to be about 30mm across. A code on a wall read from three meters wants to be about 300mm.

Printed widthComfortable distanceTypical placement
20 mmAbout 200 mmBusiness card, product label
30 mmAbout 300 mmTable card, receipt, packaging
50 mmAbout 500 mmMenu, leaflet, shelf edge
100 mmAbout 1 mPoster at eye level, window sticker
300 mmAbout 3 mWall graphic, exhibition stand
600 mmAbout 6 mBanner, hoarding, vehicle livery
Width against comfortable reading distance

Err upward. The cost of a code that is slightly too large is that it looks slightly too large. The cost of one slightly too small is that some people cannot use it and you will never hear from them.

What the rule is really about

A scanner does not measure your code in millimeters. It samples the camera image and tries to decide, for each module, whether it is dark or light. To do that reliably it needs each module to land on a comfortable number of camera pixels. Two is the theoretical floor and is not enough in practice; three or four is where reliability starts.

So the real quantity is module size, and it follows from two numbers you already have: the printed width, and how many modules the code is across.

This is why the same 25mm square can be comfortable or marginal depending on nothing but the length of the content. A short link that fits a 29-module grid gives you 0.86mm modules. The same square holding a long tracking URL might be 57 modules across, and each module is then 0.44mm, half the size, from a code that looks identical in the layout.

A worked example

Say you are printing a code on a table card. It holds a 40-character link, and at error correction level M that fits a version 3 symbol, which is 29 modules across.

  1. Decide the distance. Someone seated reads a table card from roughly 400mm.
  2. Apply the rule: 400 divided by 10 gives a 40mm code.
  3. Check the module size: 40mm across 29 modules is about 1.4mm per module. That is generous, and generous is the right answer for something a stranger scans once.
  4. Add the quiet zone. Four modules of clear space on every side, so 4 x 1.4mm, about 5.5mm of margin all round. The code needs a 51mm footprint in the layout, not 40mm.

That last step is the one people miss, because the quiet zone is invisible and gets treated as whitespace that can be trimmed to make the design work. It cannot. It is part of the code.

Four places the rule quietly fails

The 10:1 figure assumes a still camera, a flat code, decent light and a reader who is trying. Remove any of those and you need more size than it suggests.

  • Movement. A code on the side of a van or above an escalator is read by someone moving relative to it, and motion blur costs you effective resolution. Size up substantially, and prefer very short content so the grid stays coarse.
  • Angle. Codes read from below, like a poster above head height, are seen as trapezoids. The decoder corrects for that, but the far edge of the symbol is compressed and its modules are effectively smaller than you designed.
  • Screens. A code shown on a phone screen and read by another phone is at the mercy of brightness, and a dimmed screen loses contrast before it loses size. This is why ticket apps ask you to turn brightness up.
  • Low light. Dim conditions push a phone camera to higher gain and longer exposure, which means more noise and more blur. A restaurant at night is a harder scanning environment than the same room at lunchtime, with the same card on the same table.

How small can you go

Below roughly half a millimeter per module you are leaving consumer phones behind. Industrial scanners with fixed optics and controlled lighting read far finer codes than that, which is how direct part marking works on components a few millimeters across, but they are purpose-built for it and the code is verified on a machine rather than tested with a handset.

If the public is doing the scanning, treat 0.5mm per module as the floor and design above it. Shortening the content is almost always a better lever than shrinking the modules, because it attacks the divisor rather than the numerator.