How Big Should a QR Code Be for Print?
· DexURL Guides · 6 min read
Print a QR code at 20mm minimum and 25mm when you can, but size it to scan distance: divide the distance a person will stand from the code by ten to get the minimum side length, and remember that a longer encoded URL needs more physical size than a short one at the same distance.
20mm on a side is the floor for a QR code that has to scan reliably in print. Below that, phone cameras start to struggle at normal reading distance, especially in low light or on uncoated stock. 25mm is the safer default whenever the layout has room for it.
Size it to scan distance, not to the layout
The rule most print shops use is one-tenth of scan distance: divide how far away a person will stand when they scan by ten, and that is the minimum side length. A code scanned up close needs far less size than one scanned across a room, and sizing for the layout instead of the distance is how posters end up with codes nobody can hit from the sidewalk.
Business card, 25cm
20–25mm. Held at arm’s length, this is the tightest distance most codes are ever scanned at, which is why 20mm is a floor rather than a comfortable target here.
Flyer or menu, 40cm
30–40mm. Table tents and handheld flyers sit a bit further from the eye than a business card, and the extra size gives more room for error correction and a logo.
Poster, 1m
10cm or more. A poster is read from a stride away, not pressed against the nose, and the code needs to hold up at that distance.
Billboard, well past 1m
Scale linearly with distance. A billboard scanned from several meters away needs a code sized in the same proportion as the poster rule, just carried further out.
Module size matters more than overall size
A QR code is a grid of modules, and what actually has to resolve on a camera sensor is each individual module, not the code as a whole. More encoded text means a higher version, and a higher version packs more modules into the same printed area — so two codes at the identical 25mm size can behave completely differently depending on what they encode.
Treat 0.5mm as the practical floor for a single module on typical print stock; smaller than that and ink spread starts merging modules together. A long URL with tracking parameters can land at version 20 or higher, which needs roughly 45mm or more to keep modules above that floor. A short link pointing at the same destination can sit at version 2 or 3 and scan cleanly at 20mm. The density readout on the free QR code generator shows the version and the smallest size it will still print clearly at, so you are sizing against the actual payload instead of guessing.
A short, editable link keeps the encoded payload short too, which keeps the module count low and the code sparse — and unlike a long destination baked straight into the code, it can still be changed after the print run. See Static vs dynamic QR codes.
Quiet zone and error correction
- Leave a quiet zone of at least 4 modules of empty space on every side. It is part of how a scanner finds the code at all, and crowding it with a border, caption, or logo is the single most common cause of a code that will not scan.
- Higher error correction lets a code keep decoding even when part of it is damaged, dirty, or covered by a small logo, but each step up trades away density: more of the code becomes redundancy data rather than payload, so the same text produces a denser pattern at a higher level.
- Pick the error correction level for the job — plain print with no logo can stay low, anything with a logo or that lives somewhere it might get scuffed should go higher — rather than defaulting to the highest setting everywhere.
- Always test the actual print on the actual stock before committing to a run. Matte paper, glossy laminate, fabric, and metal all reflect light differently, and a code that scans perfectly on a screen or a laser proof can still fail on the material it ships on.