Nine out of ten QR codes that fail in the wild are too small for where they were put. The maths is simple, and the test is cheap.
The rule
About right for a table-top menu or a business card held at arm's length.
Divide the scan distance by ten. That is the minimum width of the code including its white border. Round up.
| Where it will live | Typical distance | Minimum size |
|---|---|---|
| Business card, product label | 15 to 25 cm | 2 cm |
| Menu, leaflet, receipt | 30 to 60 cm | 3 to 6 cm |
| Poster at eye level | 1 to 2 m | 10 to 20 cm |
| Shop window from the pavement | 2 to 4 m | 20 to 40 cm |
| Vehicle, banner | 5 to 10 m | 50 cm to 1 m |
| Billboard | 20 m and more | 2 m and more |
The second rule: module size
A code is made of small squares called modules. A version 2 code is 25 modules wide; version 10 is 57. At the same printed size the version 10 modules are less than half the width, and below about 0.5 mm printers start to smear them together.
Do this
A 3 cm code holding a 30-character link (version 2, 25 modules). Each module is about 0.9 mm. Prints cleanly on anything.
Not this
A 3 cm code holding a 120-character tracking URL (version 7, 45 modules). Each module is 0.57 mm. Fuzzy on an office printer, unreadable on a receipt printer.
The fix is always the same: make the content shorter. Use a short link, drop tracking parameters (a dynamic code tracks scans without them), or print larger.
Try it in QR Studio
QR Studio shows the version and module size as you type, and warns when the export size would put modules under 0.5 mm.
Pixels, DPI and vectors
If the print shop wants a bitmap, give them at least 300 pixels per inch at the final printed size. A 5 cm code is about 2 inches, so 600 px is the floor and 1200 px is comfortable. Better: export SVG or PDF, which have no pixels at all. The export formats guide explains what each format is for.
Surfaces and materials
- Glossy paper and laminate reflect light and lower contrast. Go one size up.
- Curved surfaces (cups, bottles) need alignment patterns to work; keep the code small relative to the curve so it stays nearly flat.
- Fabric blurs edges; use level H and large modules.
- Screens are easy, but the code should be at least 150 px wide on the viewer’s screen.
Checklist
- Measured the real scan distance, from the furthest plausible reader
- Size is at least distance ÷ 10, then rounded up
- Content shortened so the version is as low as practical
- Module size above 0.5 mm (1 mm preferred)
- Quiet zone of 4 modules kept, not cropped
- Exported as SVG or PDF, or a bitmap at 300 DPI or better
- Printed a test sheet on the final stock and scanned from the real distance
Try it yourself
Enter your distance and version and get the minimum size, the module size and the pixel count in one go. Then print the test sheet.