The ten-to-one rule
The most useful rule of thumb in printing QR codes:the code should be about one tenth of the distance it is scanned from.
| Scanned from | Minimum size | Typical use |
|---|---|---|
| 20 cm | 2 cm | Business card, receipt |
| 30 cm | 3 cm | Table tent, menu, packaging |
| 1 m | 10 cm | Counter sign, poster at close range |
| 3 m | 30 cm | Wall poster, shop window |
| 10 m | 1 m | Billboard, building signage |
It is deliberately conservative. Phone cameras vary enormously, lighting is rarely ideal, and people hold devices at odd angles. Building in margin costs nothing; discovering the code is too small costs a reprint.
Work out your minimum size
Nothing is sent anywhere — this runs in your browser, and it uses the same figures the generator does.
17 bytes
Higher levels survive more damage but hold less, so the code grows. FigQR uses H.
Set by the reading distance. The content would fit at 1.5 cm, but a code read from 25 cm away needs to be about a tenth of that across.
- Version
- 3
- Modules
- 29 × 29
- Each module
- 0.86 mm
- With quiet zone
- 3.2 cm
A floor, not a promise. Ink spread on uncoated paper, glare behind glass and a phone held at an angle all cost you margin that no calculation can see — print a test at the real size on the real material before you commit to a run.
Data changes everything
The rule above assumes a short link. Content length changes the picture, because a QR code is a grid of modules — the individual squares — and more data means more of them.
- Version 2 (25×25 modules) — a short link like
figqr.com - Version 6 (41×41) — a typical URL with a few parameters
- Version 10 (57×57) — a WiFi network or a short vCard
- Version 15 (77×77) — a full contact card
At a fixed physical size, a version 15 code has modules roughly a third the width of a version 2 code. The practical floor is about 0.5 mm per module in print — below that, ordinary cameras start failing.
So a dense code needs to be physically larger, not just technically valid. Our generator shows the version and a suggested minimum size as you type, which is the number to trust over any general rule.
The quiet zone is part of the code
Every QR code needs a clear margin around it — at least four modules wide on all sides. This is in the specification, not a design preference. Scanners use the blank area to work out where the pattern begins.
Cropping it is one of the most common causes of a code that "sometimes works":
- Text or a border running right up to the edge.
- The code placed tight into a corner of a design.
- A background image showing through the margin.
Contrast, and why inverted codes fail
Scanners look for dark modules on a light background. That expectation is baked into a lot of decoding software.
- Dark on light — always works.
- Light on dark — many scanners handle it, plenty do not. Avoid on anything printed at volume.
- On a photo or pattern — unreliable. If the design demands it, put the code in a solid light panel.
- Low contrast pairs — mid-grey on beige may look elegant and scan badly. Aim for a strong difference in lightness, not just in colour.
Print medium matters more than people expect
- Thermal receipt paper — low contrast to begin with and it fades. Print larger than the rule suggests, at least 2.5 cm.
- Matte and textured stock — scatters light. Add 20% to the size.
- Glossy surfaces — reflections can wipe out part of the code under overhead lighting. Matte laminate is safer than gloss.
- Fabric and curved surfaces — distort the grid. Go significantly larger and test on the real object.
Use SVG for anything printed
A PNG is a fixed grid of pixels. Scale it up and edges soften; soft edges on small modules are exactly what makes a scanner give up. An SVG is a mathematical description, so it prints sharp at any size, from a business card to a billboard.
PNG is for screens — emails, slides, web pages — where the size is already known.
Test on the real thing
The only test that counts:
- Print it at the actual final size, on the actual material.
- Scan it from the actual distance people will stand at.
- Try an older phone, not just a current one.
- Try it in the real lighting — dim restaurants and bright sun both cause failures.
- Have somebody else try it, without telling them where to aim.
Checking on screen proves almost nothing. Nearly every failed QR code in the wild scanned perfectly on the designer's monitor.
Short of printing one, the QR code checker will read the minimum width straight off an image — along with its contrast, its quiet zone, and whether it still decodes once it has been shrunk and softened the way a phone camera sees a small print.