QR Code Printing Best Practices
A QR code that works perfectly on a phone screen can fail completely on a printed poster. Screens are backlit, high-contrast, and never reflect; paper is dimmer, can glare, and gets crumpled. The good news is that printed codes fail for a handful of predictable reasons — size, contrast, quiet zone, and material — and all of them are easy to fix before you spend money on a print run. This is the checklist I use for anything meant to be scanned off paper.
1. Size it for the scanning distance
The further away someone scans from, the bigger the code needs to be. A rough rule that works well: the code's width should be about one-tenth of the scanning distance. So:
- Table card or flyer (scanned from ~30–60 cm): at least 3–4 cm (about 1.5 in).
- Poster or window (scanned from ~1–2 m): at least 10–20 cm.
- Billboard or storefront (scanned from across the street): go large — codes this big are often a metre wide.
When in doubt, go bigger. A large code scans fine from close up; a small code can't be rescued from far away.
2. Use dark on light, always
Black modules on a white (or very light) background is the most reliable combination and the one scanners are calibrated for. Things that quietly break this:
- Light-on-dark codes. Some scanners handle inverted codes, many don't. Don't gamble a print run on it.
- Colour combinations like red-on-dark-grey that "match your brand". The scanner sees low contrast even when the design looks fine to your eye.
- Photos or gradients under the code. A busy background makes the scanner struggle to find the code's edges.
- Transparent backgrounds. The code needs a solid, uniform light area behind it.
If you want to add colour, keep the modules dark (near-black) and put them on a plain light panel. Brand the card around the code — don't brand the code itself.
3. Respect the quiet zone
Every QR code needs a clear white border at least four modules wide around the entire pattern. Scanners use it to tell where the code ends. The most common print failure I see is text like "SCAN ME" or a logo butting directly against the code's edge. SajiloQR's PNG download already includes the quiet zone — don't crop it off, and don't run design elements into it.
4. Choose the right size in the design, not on export
Export the PNG at full resolution and place it in your design at the target physical size — don't blow up a small image. The QR code's modules need to be sharp squares; upscaling a tiny file makes blurry, fuzzy-edged modules that fail to read. If your layout software asks, print the PNG at 100% or resize it down, never up.
5. Materials and lighting are part of the design
Paper behaves differently depending on where it lives:
- Glossy finishes cause glare. Under direct light, a glossy coating can wash out the code. Matte lamination is safer for codes.
- Textured stock can break modules. Heavily textured paper distorts the edges of the squares. Smooth paper, card, or vinyl prints most reliably.
- Outdoor codes need protection. Fading, rain, and scratches are the enemies. Use a durable, UV-resistant material, and remember that error correction only covers up to ~30% damage.
- Curved surfaces. A code wrapped around a bottle or cup distorts its grid. Keep the code flat, on a label panel, and size it to the flattest part of the surface.
6. Test in the real environment, not at your desk
This is non-negotiable, and it's cheap insurance:
- Print one proof first and place it where the real code will live — at the table, on the window, on the shelf.
- Scan at the worst hour. If it's a bar code, test it under bar lighting at night, not at midday in a bright office.
- Use the same phone your customers use. An old phone with a mediocre camera is the realistic test.
- Scan from the distance the design implies. If you can't make it work, enlarge the code.
7. Keep the destination under your control
Before you print thousands of a code, double-check what it opens — and that it will keep opening. Test the link on a phone, confirm the page isn't going to change, and prefer a URL you own. A static code never expires, but if the page behind it disappears, neither the code nor the print run is worth anything.
The pre-print checklist
- Code is at least one-tenth of the scanning distance in width.
- Dark modules on a plain light background — no inversion, no busy backdrop.
- Quiet zone intact — nothing touches the code's border.
- Full-resolution export placed at physical size, never upscaled.
- Matte finish, smooth material, flat surface.
- Proof printed and scanned in the real environment, at the real distance, at the worst lighting.
- Destination verified and stable.
Generate a code with the quiet zone already built in using the SajiloQR generator, and if you'd like to understand the error-correction safety net behind all of this, read how QR codes work.