How-to
How big should a printed QR code be?
Sizing a code is one ratio and three constraints. This guide gives the distance rule, the minimum sizes that survive real printing, and the reason a code that looks fine in the design file fails on the press.
Updated
Sizing a printed code is not a matter of taste. There is one ratio that decides it, and three constraints that override the ratio when the material or the payload gets awkward. Get those four things right and the code works; ignore them and you find out after the run has been delivered.
The distance ratio
A code scans reliably from roughly ten times its own width. That is the number to plan with. It comes from how many pixels a phone camera puts across each module at a given distance, combined with the amount of blur a decoder tolerates before it can no longer decide whether a module is dark or light.
Work backwards from where the reader will stand:
- Held in the hand, 20–30 cm away — 2.5 to 3 cm code
- Table tent or menu, read while seated, 40 cm — 4 cm code
- Poster at eye level in a corridor, 1.5 m — 15 cm code
- Shop window read from the pavement, 2.5 m — 25 cm code
- Wall graphic across a room, 5 m — 50 cm code
Then halve the distance you designed for and check it still works. People do not stand where the plan says they will, and the ratio assumes conditions that a railway platform in February does not provide.
Constraint one: payload length changes the answer
The ratio is about the width of one module, not the width of the code. A denser grid puts more modules into the same square, so each one is smaller and the code must be physically larger to compensate.
A 30-character link might encode into a 29-module grid. A 300-character vCard can reach 73 modules. At the same 3 cm printed size, the first has modules just over a millimetre wide and the second has modules under half a millimetre — which is below what most phone cameras resolve at close focus. Same size on the page, completely different outcomes.
This is why shortening the payload is the highest-leverage thing you can do before printing. Strip campaign parameters from URLs. Drop the postal address from a contact card that already carries a website. Point at a hosted file rather than encoding its contents. Every character you remove buys module width back.
Error correction pushes in the same direction, since higher levels consume capacity and force the grid up a version. Choosing the level is worth doing before you size the code rather than after.
Constraint two: the quiet zone is part of the code
The specification requires four modules of clear space on every side. Not four millimetres — four modules, so the requirement scales with the code. On a 29-module code printed at 3 cm, that margin is about 4 mm on each side.
Designers lose this margin constantly, and almost always in the same three ways: the code is set flush against a coloured panel, it is placed too close to a trim edge and the margin is cut off, or body text is allowed to run right up to it to save space. All three produce a code that scans in the design file and fails on the sheet.
Treat the quiet zone as part of the artwork. Place the code inside a white box that already includes it, and lock that box.
Constraint three: the material fights you
Coated stock holds module edges crisply. Uncoated stock, newsprint and unbleached card all absorb ink, which spreads dark modules outward and narrows the light gaps. On absorbent material, add twenty to thirty percent to whatever size the ratio gave you.
Non-flat surfaces are worse. A code wrapped around a bottle compresses along the curve, so the decoder sees a grid that is no longer square; keeping the code under about a third of the circumference limits the distortion. Fabric introduces weave texture that breaks module edges at small sizes. Laser marking on metal gives inconsistent contrast depending on viewing angle. Each of these is a reason to go larger and to raise error correction, and each is a reason to test on the real substrate rather than on paper.
The file you send
Send vector. An SVG has no resolution, cannot be scaled wrong, and prints with mathematically exact module edges at any size. Most printers accept it directly or will place it into a PDF without rasterising.
When the workflow demands a raster file, calculate the pixels from the final printed size at 300 dpi rather than exporting whatever the tool offers. Multiply centimetres by 118 to get the pixel count. And export at that size — resampling a small file upward in a layout application softens exactly the edges the decoder relies on. The format trade-offs go into where each one belongs.
Proof before the run
Print one sheet on the real stock at the real size. Scan it with a cheap phone rather than yours, from the distance a reader will stand, under the light the code will live in — the fluorescent tube in a corridor, not the daylight by your desk. Do it five times. Five clean scans out of five is a pass. Anything that needs a second attempt is already marginal, and marginal codes degrade as ink fades and surfaces scuff.
If it fails, work through the causes in order of likelihood: quiet zone, physical size, payload length, contrast, error correction level. That ordering reflects how often each one is actually to blame, and it will resolve most failures before you reach the end of the list.