There is a well-known answer to "how large should I print a QR code": one tenth of the scanning distance. Decide on that rule alone, though, and codes carrying a lot of data will fail to scan. This article sets out how to work the required millimetres back from the module count.
Why one tenth of the distance is not enough
One tenth of the scanning distance is a widely used guideline. Read from 50 cm, about 50 mm; on a poster read from 2 m, about 200 mm. It is convenient because it depends only on where the reader stands.
But the formula contains nothing about the contents of the code. Printed at the same 25 mm square, version 2 (25 modules per side) gives a module of about 0.85 mm, while version 10 (57 modules per side) drops to about 0.38 mm. What the camera has to resolve as black or white is a single module, so the latter stops scanning.
Print size therefore has to satisfy both the distance condition and the module condition. Neither one settles it alone.
The formula for working backwards
Start with the module count per side, which maps one to one onto the version:
modules per side = 17 + 4 × version
Then add the margin. The QR standards (ISO/IEC 18004 and JIS X 0510) require a quiet zone of four modules around the code. Four on each side means eight added to the side length:
side with margin = modules per side + 8
Multiply by the size of one module and you have the printed size you need:
required print size = side with margin × module size
With real numbers: a version 7 code has 17 + 4 × 7 = 45 modules per side, or 53 with the margin. At 0.4 mm per module that is 53 × 0.4 = 21.2 mm; at 0.5 mm it is 26.5 mm.
Try the calculation
There is a tool that measures the version from the string you actually encode, then reports the millimetres needed, the module size, and the pixel count at a given dpi.
The 0.4 mm module guideline
0.4 mm is the figure most often used as a lower bound for a single module. It is not defined by the standards; it comes from printing practice. It sits roughly where two conditions meet: consumer and commercial printers can reproduce it, and phone cameras read it reliably.
It is not an absolute threshold. Scanner quality, ink spread, paper stock and lighting all move it. So clearing 0.4 mm by a small margin is not by itself reassuring; confirm with a test print on the printer and scanner you will actually use. Falling well below it, on the other hand, tells you the design needs revisiting without any need to test.
What to try when you cannot make it bigger
On a business card or a label the printable area is fixed, so growing the code is not available. Work through these in order:
- Put less data in. This has the largest effect. Dropping tracking parameters from a URL or shortening the path can take the version down one or two steps. Each step removes four modules from the side, so the module grows at the same printed size.
- Lower the error correction level. Going from H to M can drop the version for the same data. The trade is tolerance for dirt and damage, so this is unavailable for outdoor signage or shipping labels where soiling is expected.
- Cut the quiet zone. Do not do this. Scanners use the margin to find where the code ends, so removing it lowers the read rate. It is the first thing sacrificed when space runs short, and it produces the same outcome as shrinking the code.
The order matters. Exhaust the first two and the millimetres you need shrink before the print-size argument even starts.
Resolution when exporting an image
If you produce print data as an image, check how many pixels each module occupies. When a module is not a whole number of pixels, resampling blurs the boundaries and the black-white decision becomes unstable.
As a guide, allow at least three pixels per module and preferably four or more. At 300 dpi, a 25 mm square is 25 ÷ 25.4 × 300 = about 295 pixels. With 53 modules including the margin that is about 5.6 pixels per module, which is comfortable. The same 25 mm at version 20 (105 modules with the margin) gives about 2.8 pixels, which is already short.
Summary
- Print size must satisfy both the distance condition and the module condition
- The side including the margin is
17 + 4 × version + 8modules; the quiet zone is four modules by standard - 0.4 mm per module is a practice guideline, not a standard value. Confirm with a test print
- When you cannot go bigger, cut the data to lower the version first. Never cut the margin
- For image exports, keep at least three to four pixels per module
Related reading and tools: Identifying the QR version / QR error correction / When a QR code will not scan / Print size calculator / Capacity checker