How to print QR codes that actually work
Screen previews lie. Here are the numbers that decide whether a printed QR code works: size, distance, margin and ink.
A QR code that scans perfectly on your monitor can fail completely on a printed flyer. Screens are backlit, high contrast and perfectly flat. Paper is none of those things. These are the specifications that survive contact with a real printer.
Size and scan distance
The governing rule is the 10:1 ratio — a code can be read from roughly ten times its own width. Work backwards from where the reader will stand.
- Business card or product label, read at arm's length: 2 cm minimum.
- Table tent or menu, read at 40–50 cm: 3–4 cm.
- A4 flyer or window sticker, read at 1 m: 10 cm.
- Poster read across a room at 3 m: 30 cm.
- Billboard at 20 m: 2 m, and consider whether a QR code is the right medium at all.
Those are minimums for a short payload. If you are encoding a long URL or a vCard, add 30–50% because each module is proportionally smaller.
Always export vector for print
Export SVG and hand that to your printer. A QR code is pure geometry, so a vector file has no resolution to run out of — it prints at the press's native resolution whether it is 2 cm or 2 m wide. A PNG scaled up in a layout program produces soft module edges, and soft edges are exactly what pushes a marginal scan into a failed one.
If the workflow demands a raster file, export at least 300 DPI at the final printed size. For a 3 cm code that means roughly 350 px; for a 30 cm poster code, 3500 px. Never let a layout tool enlarge a small PNG.
The quiet zone is not optional
Four modules of empty margin on every side. On a 3 cm code with a version 3 symbol, that is a little over 4 mm of clear space. Nothing may intrude — no border rule, no background photo, no fold.
Colour and ink
Dark modules on a light background, with a luminance contrast of at least 4.5:1. Beyond that, a few things specific to print:
- Build dark modules from a rich black or a single dark spot colour. A four-colour black can misregister slightly and fuzz the module edges.
- Avoid printing the code over a photograph or a gradient, even a subtle one. The decoder's threshold is global, and a varying background defeats it.
- Uncoated and recycled stock absorbs ink and thickens modules — dot gain. Increase the code size by around 20% on those materials.
- On glossy or laminated surfaces, think about glare. A matte varnish patch over the code costs almost nothing and saves scans.
Curved and flexible surfaces
Bottles, cups and cans bend the symbol, and a decoder tolerates only mild distortion. Keep the code on the flattest available panel, orient it so the curve runs vertically through the symbol rather than horizontally, and raise error correction to Q or H. Test on the actual object — a mock-up on flat paper proves nothing.
Proof before you commit
- Print one copy at final size on the actual stock, from the actual press if you can.
- Scan it with at least three phones, including the oldest one you can find.
- Test in the lighting where it will live — dim restaurant light and harsh shop-window sun are both harder than your desk.
- Test at the real distance, and at an angle, because nobody stands square on.
- Only then approve the full run.
That proofing loop takes twenty minutes and is the difference between a code that quietly works for years and a print run you cannot use. The failure mode of a bad QR code is silent: nobody complains, they just stop scanning.
Ready to make one?
The generator is free, needs no account, and runs entirely in your browser.
Open the QR generator