By the VixQR team · published on · 9 min read
What Size Should a QR Code Be? The Scan Distance Formula and Print Chart
Business card, shop window, roadside sign: find the right QR code size for any scan distance with one simple rule, plus a ready-to-use print chart.
A beautifully designed QR code, printed large on a poster, that nobody can scan. It happens constantly, and the cause is almost never the design. It's a mismatch between how big the code is and how far away people stand when they try to read it.
Here's how to get it right the first time.
The rule of ten
The print industry works to one straightforward ratio: a QR code should be at least one tenth of the distance from which it will be scanned.
Scanning from 1 metre? The code needs to be at least 10 cm across. From 3 metres? 30 cm. It's a floor, not a precision calculation, but it prevents the single most common failure — undersizing a code meant to be read from a distance.
The ratio holds because of how phone cameras work. A QR code is a grid of modules (the individual black and white squares), and a camera has to resolve each one distinctly to decode the pattern. Below roughly a tenth of the viewing distance, the modules blur into each other and the camera has to move closer to focus — which defeats the point of a poster meant to be scanned from across a room.
The chart
| Medium | Typical scan distance | Minimum recommended size |
|---|---|---|
| Business card | 10–15 cm | 2 cm |
| Product label / packaging | 15–30 cm | 2.5–3 cm |
| Restaurant table card | 30–50 cm | 3–4 cm |
| A5 flyer or leaflet | 30–50 cm | 3–4 cm |
| A3 poster in a window | 1–1.5 m | 10–15 cm |
| Large format (bus shelter) | 2–3 m | 20–30 cm |
| Building sign / roadside | 5–10 m | 50 cm–1 m |
| Roll-up banner, trade show | 1.5–2 m | 15–20 cm |
These are conservative minimums. When in doubt, go bigger: an oversized QR code still scans perfectly from close range, while an undersized one fails from distance. The asymmetry is entirely in one direction.
Two things that shift the numbers
How much you encode. A QR code holds its data in a grid whose size grows with content — the standard defines 40 "versions", from version 1 at 21×21 modules up to version 40 at 177×177. A short URL produces a sparse, simple pattern. A full vCard with name, phone, email, company, and address produces a dense one, where each individual module is far smaller at the same printed dimensions. Dense codes need more margin above the rule of ten.
The fix is usually upstream: shorten what you encode rather than compensating with print size. Strip tracking parameters from URLs, use a short link, and trim vCards to the fields that matter. A simpler pattern is easier to scan at every size.
Real-world reading conditions. Outdoors in direct sun, behind glass with reflections, on a glossy surface — all of these need more margin than a code read indoors under even light. So does audience behaviour: someone walking past a street poster gives your code about two seconds of patience, while a seated restaurant customer will persist. Print larger for impatient audiences in difficult light.
The mistake that ruins print runs: resizing on screen
Plenty of unreadable QR codes were sized correctly and then broken afterwards, when the file was dropped into a layout tool and scaled to fit. A code that looks "big enough" on a 27-inch monitor can end up at 8 mm on the finished leaflet.
Two habits prevent this:
Export vector, not raster. An SVG stores geometry rather than pixels, so it stays razor-sharp at any print size. A PNG has a fixed pixel count; enlarging it past its native resolution forces the software to invent intermediate pixels, which softens the module edges and degrades the contrast the scanner depends on. If you must supply a raster file, work to 300 DPI at the final printed dimensions — a 20 cm code needs roughly 2,400 × 2,400 pixels.
Check the size in centimetres on the layout, not on screen. Measure it in the artwork at final scale. Screen appearance tells you nothing about printed reality.
Don't crop the quiet zone
Every QR code needs a margin of clear space around it — the "quiet zone" — so the scanner can tell where the pattern begins and ends. The specification calls for at least four modules' width on all sides.
Most generators include it automatically. Designers then remove it, because it looks like wasted white space in a tight layout. Don't. A code butted directly against text, a border, or a photograph becomes unreliable, particularly on older phones and in poor light.
Test on paper before you commit
No formula survives contact with a real print job. Before running 500 flyers or committing to a 4×3 metre billboard, print one copy at final size, put it where it will actually live, and scan it under the conditions it will actually face — same distance, same lighting, same likely angle. Try two or three different phones, including an older Android rather than only the newest iPhone; entry-level camera sensors are the ones that fail first.
Five minutes of testing is the difference between a print run that works and one you pay for twice.
Why the rule works: the module underneath it
The rule of ten is a shortcut for something more precise, and knowing the underlying figure helps when the shortcut feels too crude.
What a camera actually has to resolve is a single module — one of the small squares. The working threshold used across the print industry is that a module needs to be roughly 1 mm to be read comfortably at typical phone distances, and it must occupy enough of the sensor's field of view to be distinguished from its neighbours.
So the real formula is:
Code width = module count × module size
A sparse code (version 2, 25 modules) at 1 mm per module is 2.5 cm. A dense one (version 10, 57 modules) at the same module size is 5.7 cm — more than double, for exactly the same physical readability.
This is why two codes printed at identical size can behave completely differently, and why "how big should my QR code be?" has no single answer without knowing how much you encoded. The rule of ten works because most people encode short URLs. Push past that and you need the module maths.
The practical takeaway is unchanged but better grounded: shortening the content is the same as making the code bigger, and it's free.
The angle nobody accounts for
The rule of ten assumes someone standing square to your code. In reality almost nobody does.
A code read at an angle is, from the camera's point of view, compressed. Photograph a square from 45 degrees off-axis and it becomes a rectangle roughly 70% as wide in one dimension. Every module shrinks accordingly, and your carefully calculated size loses about a third of its margin.
QR codes handle this better than most formats — the three finder patterns let a decoder work out the perspective and correct for it, and larger versions carry alignment patterns that help further. But correction has limits, and they arrive sooner in poor light.
Where this bites in practice:
- Wall-mounted codes above eye level. Everyone reads them from below, at an angle, often with overhead lighting glaring off the surface.
- Codes on counters and tables. Read from a standing position looking down, at 40–60 degrees.
- Shop windows. Read from wherever the pavement allows, which is rarely straight on.
- Restaurant table tents. Read by whoever is sitting at the far side of the table, not the near one.
The adjustment: if a code will predictably be read off-axis, add 25–30% to the size the rule of ten gives you. It costs a little layout space and removes an entire class of intermittent failure — the kind where the code "works sometimes", which is the hardest kind to diagnose because your own test scan passed.
Curved and cylindrical surfaces
Bottles, cans, tubes, jars, cups, pipes. The grid bends out of plane, and modules near the edges of the curve compress toward invisibility.
Three rules:
Keep the code within a shallow arc. As a working limit, the code should span no more than about 30 degrees of the cylinder's circumference. On a standard drinks can, that's a code of roughly 2 cm — beyond which the outer columns distort badly.
Orient it deliberately. A code wraps better when the narrow dimension follows the curve. Since QR codes are square you can't change the aspect ratio, but you can choose which way the pattern sits relative to the curve, and on a tall container placing the code vertically on a flatter panel usually beats centring it on the widest part.
Raise error correction and size together. Level H, and add 30–50% over the flat-surface recommendation. Then test on the actual filled container — an empty bottle and a full one reflect light completely differently.
For small-diameter items — pens, cables, thin tubes — a QR code is often the wrong tool. Print the URL, or use a code on a hangtag rather than on the object.
Codes displayed on screens
Different medium, different failure modes, and increasingly common: codes on TVs, digital signage, presentation slides, and one phone shown to another.
Screens are easier in one way. A backlit display has contrast no paper can match, so the code is legible at sizes that would fail in print.
And harder in three others:
- Glare and reflection. A glossy display under room lighting can wash out an entire region of the pattern.
- Refresh and capture artefacts. Photographing a screen can produce moiré banding across the code. Usually harmless, occasionally fatal.
- Nobody controls the display size. A code that occupies a quarter of your slide is enormous on a projector and tiny on a laptop screen being shared over video.
For presentation slides, the practical rule is to make the code at least 15% of the slide height, and never place it in a corner where a video-call layout might crop it. For digital signage, apply the rule of ten as if it were print, using the real viewing distance — a screen across a lobby needs the same size a poster would.
On a phone shown to another phone, turn brightness to maximum. Auto-brightness in a dim room is the most common reason phone-to-phone scanning fails.
Codes people read while moving
A special case worth its own note, because the rule of ten badly under-sizes it.
A code on a bus shelter passed by pedestrians, on a vehicle, on a station platform — the reader has a short window and cannot stop to line up a shot. Two adjustments: double the size the distance rule gives, and shorten the payload aggressively so the pattern is as sparse as possible. A sparse pattern at large size can be captured in a fraction of a second; a dense one needs the reader to hold still.
For codes on moving vehicles, be realistic: they mostly don't work. If it matters, put a short typed URL instead — a person can remember vixqr.com/x for the twenty seconds it takes to reach a stop.
Quick reference
- Rule of ten: minimum size = scan distance ÷ 10
- Encode less to keep the pattern simple, rather than printing bigger to compensate
- Export SVG or PDF for anything above roughly 20 cm; 300 DPI minimum if raster is unavoidable
- Keep the quiet zone — at least four modules of clear space on every side
- Maintain strong contrast — dark code on a light background, never two similar tones
- Print one and scan it before the full run
You can generate a QR code and export it as PNG, SVG, or PDF with VixQR — free, with no account, and with the code produced entirely in your browser. The SVG export is the one to use for anything headed to a printer.