Printing QR codesA 2D matrix barcode that encodes data in a square grid of black and white modulesA single black or white square in the QR grid. The number of modules per side scales with the QR versionThe size of a QR code, numbered 1 (21×21 modules) through 40 (177×177). Higher versions store more data but require more printed space. Read more →, from 21×21 modules for version 1 up to 177×177 for version 40. Read more →. Read more → is where small mistakes turn into expensive ones. A poster with a code that doesn’t scan, multiplied by a 5,000-unit print run, is a campaign you can’t fix without a reprint. The good news: most failures are predictable, and a short pre-press review catches almost all of them before the file goes to the printer.
This is the checklist we’d run before sending a real production file. Work through it in order. If anything fails, fix it before moving on.
Validate the destination first
Before you touch design details, confirm the page the QR code points to:
- Loads in under 2 seconds on a mid-tier mobile network.
- Has a clear next action above the fold (book, buy, view menu, register).
- Is not blocked behind a login or paywall, unless that’s expected.
- Renders correctly on a small phone screen without horizontal scrolling.
- Returns a 200, not a 301-chain or a 404.
A perfectly designed QR code can’t fix a weak destination. If the page makes a customer wait, scroll, or guess what to do next, scan rates won’t matter. Test the destination on a real phone with mobile data turned on, not on a desktop with a fast wired connection.
If you’re using a tracked URL or redirect, scan it end-to-end and confirm the user lands where you expect, with the parameters you expect. Broken redirects are surprisingly common when staging environments get mixed up with production.
Protect contrast and quiet zone
Reliable scanning depends on strong visual separation between the code and everything around it.
Dark modules on a light background are safest. Black on white is the default for a reason. If brand color matters, apply it to the modules (foreground), not the background, and verify contrast above 4:1 with a contrast checker.
Keep a clean quiet zone of at least 4 modules on every side. That’s roughly 3-5 mm at typical print sizes. No borders, drop shadows, frame elements, or text inside the quiet zoneThe unprinted margin of at least four modules' width that must surround every QR code. Read more →. Designers underestimate how often a “tight” frame eats into this margin and breaks scanning.
Avoid placing the code over busy photography or textured backgrounds. The scanner needs a clean threshold between dark and light. A photo background gives it noise.
If your brand system demands color flexibility, run scan tests before committing to the styling. Visual consistency matters, but a code that takes 4 seconds to scan instead of 1 will silently lose conversions every day it’s in the field. The design best practices guide covers brand-color customization in more depth.
Set physical size by viewing distance
A code that scans on a desk can fail on a poster viewed from across a room. Use the expected scan distance to set print size, then verify from real positions.
Quick reference:
- Table-distance scan (~30 cm): minimum 3 cm.
- Arm’s-length flyer (~50 cm): minimum 5 cm.
- Counter sign (~1 metre): minimum 10 cm.
- Wall poster (~2 metres): minimum 20 cm.
- Banner or window display (~5 metres): 50 cm or larger.
Add 20-30% to those minimums if the code will be on glossy stock, in dim lighting, or on a textured substrate. The size and print guidelines cover the full sizing math.
Validate substrate, finish, and placement
Material decisions change scan quality more than most teams expect. Before approving a final print quantity:
- Test matte vs glossy finish on a physical proof. Gloss varnish reflects overhead light and can wash out modules.
- Test under both direct and indirect lighting. A code that scans fine in your office may fail under retail spot lighting.
- Avoid placing codes near folds, seams, or curved edges on packaging. A code that crosses a fold is one open-and-close away from being unscannable.
- For packaging on cans or bottles, keep the QR on the flattest available surface, never on the steepest curve.
- For laminated menus, scan after lamination, not before. The film changes everything.
Strong QR performance on the screen often fails in production because finish decisions were made after scanning tests, not before.
Test from the final exported file
Don’t approve from a Figma preview, an InDesign artboard, or a PDF on screen. Export the exact final file format you’ll send to the printer, print a proof at production size on the production substrate, and scan it.
A few specifics:
- If the printer is asking for SVG, export an SVG and confirm it opens cleanly in their tool.
- If the printer is asking for PNG, export at full resolution for the target DPI (300 DPI for posters, 600 DPI for premium menus and packaging).
- Don’t email the QR file to yourself, screenshot it, then send the screenshot to the printer. Every re-encoding step risks introducing artifacts.
Check destination and campaign alignment
A technically scannable code can still underperform if the destination doesn’t match what the print piece promised. Before final approval, verify:
- Headline continuity between the print asset and the landing page. If the poster says “Summer menu,” the page shouldn’t be the homepage.
- One clear primary action above the fold on mobile.
- Mobile readability without zoom, with tap targets sized for thumbs.
- Any campaign parameters (UTMs, source codes, location IDs) are firing correctly into your analytics.
Walk through the full scan-to-action flow on a phone. If anything feels slower or more confusing than it should, the print run isn’t the time to find out.
Add a fallback for critical campaigns
For high-stakes placements (storefront windows, packaging, signage you can’t easily reprint), include a short fallback URL near the QR code. Something like example.com/menu or exmp.co/sp1.
This costs almost nothing and saves you when:
- A customer’s camera is damaged or restricted.
- Their scanner app has trouble with your specific code.
- The lighting is genuinely impossible (back-lit window, deep shadow, glare-bright sun).
- Someone wants to type the URL on a desktop later.
The fallback URL should be short enough to type by hand, which usually means a custom short domain or a clean path.
Build a repeatable sign-off
The best way to keep print QR performance consistent across teams and campaigns is to make the review repeatable. A fixed sign-off list:
- Destination approved by the team that owns the landing page.
- Contrast and quiet zone approved by design.
- Size and substrate approved by production.
- Device tests passed on iOS and Android, including one older device.
- Final proof scanned from the actual printed substrate, under realistic lighting.
- Fallback URL or instructions confirmed for high-stakes placements.
Each sign-off should be initialed by a real person, not auto-checked. The whole point is to force a human to physically scan a physical proof before the run goes ahead.
Plan post-launch monitoring
After distribution, monitor real scans by asset type and location. If one placement underperforms, that’s a signal to update layout rules before the next run.
What to watch:
- Total scans per placement (against expected volume).
- Scan-to-action conversion (does the destination work as planned?).
- Time-of-day or location patterns that suggest lighting or visibility issues.
- Drop-offs after specific campaign updates (a redirect change, a destination redesign).
If you’re working without a dynamic redirect platform, you can still attribute by giving each placement its own clean path or UTM combination. The static vs dynamic QR codes guide covers attribution strategies that don’t require subscription tooling.
Production playbooks for common use cases
Pre-press quality is one input. The other is matching the QR to the use case. For production-specific decisions on layout, fallback messaging, and destination structure:
- Retail packaging covers substrate, curvature, and shelf-lighting realities.
- Restaurant menu covers lamination, table-distance sizing, and offline fallbacks.
- Real estate flyers covers walk-by distances and listing-specific destinations.
- Payment links covers trust signals and fallback URL formats.
Use this checklist for the technical review, then layer the use-case playbook on top for layout and copy decisions specific to your channel.
Sources
- ISO/IEC 18004:2015 — Print-quality requirements, quiet-zone specification, and reading-condition guidance for QR symbols.
- Denso Wave — QR Code version — Module count and capacity per version, the basis of the size-by-distance math used in the checklist.
- GS1 — Barcode verification — Industry standards for verifying barcode print quality before deployment to packaging or signage.
- Wikipedia — QR code — Background on QR structure relevant to print sizing and error-correction trade-offs.