Design
How to test a QR code before you print it
By Sam Moreton · updated 30 June 2026
7 min read · Updated 30 June 2026
Why testing first is non-negotiable
A QR code on a screen is editable; a QR code on paper, a banner or a product label is not. If it fails after the print run, your only options are reprinting (expensive) or watching scans fail (worse). Testing costs a few minutes and a single proof print — it’s the cheapest insurance you’ll ever buy.
Most failures aren’t exotic. They’re a handful of predictable mistakes: testing the on-screen preview instead of the real file, printing too small, weak contrast, a missing margin, or a destination that’s broken on mobile. Every one of them is catchable beforehand. Work through the checks below in order.
Test the actual file you’ll print — not the preview
The single most common testing mistake is scanning the preview in your browser, declaring victory, then printing a different file. The on-screen preview can differ from the export in subtle but fatal ways: a logo that’s rendered larger, a colour that shifts, or a low-resolution render that looks fine on a Retina screen but turns to mush in print.
Always download the real export — the PNG, SVG or PDF you’re actually sending to print — and test that. Open the downloaded file and scan it from your screen first as a sanity check, then proof it on paper. For sharp edges at any size, an SVG or print-ready PDF is the safest format; see our guide to PNG, SVG and PDF for QR codes to pick the right one.
The preview is not the deliverable
If you tested the browser preview but printed the exported file, you didn’t really test your code. Scan the downloaded file itself — the bytes that go to the printer are the only ones that count.
Scan on both an iPhone and an Android
Your phone is not your audience’s phone. Cameras, default scanner apps and operating-system versions all vary, so a code that scans instantly on your handset can stumble on someone else’s. Cross-device testing takes two minutes and removes the biggest blind spot.
Cover the two platforms that matter:
- 1
iPhone — native Camera app
On iOS 11 and later, just open the stock Camera app and point it at the code; a notification banner appears with the link. No third-party app needed. This is how most iPhone users will scan, so it’s the test that counts.
- 2
Android — Camera or Google Lens
On Android 10 and later, the built-in Camera app (or Google Lens) detects QR codes natively on most devices. If your camera doesn’t, Lens is available on virtually every modern Android phone. Test whichever your audience is likeliest to reach for.
If you only have one phone to hand, borrow a second of the other platform — it’s worth it. New to scanning on either device? Our walkthrough on how to scan a QR code covers both step by step.
Check the destination actually loads — and loads well on a phone
A code that scans is only half the job. The moment of truth is what happens after the scan: the link has to open, fast, and land on the right page — viewed on a phone, because that’s where every scan happens.
- The URL is correct and live. Type it out and check it yourself. A single typo, a missing
https://, or a page you took down later all turn the scan into a dead end. - The page is mobile-friendly. It should be readable and tappable on a small screen without pinch-zooming. A desktop-only PDF or a cramped layout frustrates the very people you sent there.
- It loads quickly. Nobody waits ten seconds on a poster. Test on mobile data, not just fast office Wi-Fi.
- It’s the right page. Sounds obvious — but staging links, expired campaigns and old landing pages slip through constantly. Confirm it’s the exact destination you intend.
Check the quiet zone, contrast and finder patterns
Three structural details decide whether a scanner can even find and lock onto your code. Verify all three on the exported file before you go near a printer.
| Check | What to look for | Why it matters |
|---|---|---|
| Quiet zone | A clear margin of at least 4 modules (four squares’ width) all the way round, with nothing in it | Scanners use the blank border to detect where the code starts and ends; crowd it and the code can’t be isolated |
| Contrast | Dark code on a light background — ideally near-black on white | Cameras read the difference between dark and light modules; low contrast (or pale-on-pale) makes that impossible |
| Finder patterns | The three corner squares left fully intact and unobstructed | These are the alignment markers a scanner locks onto first — cover one and the whole code fails |
On colour: keep it dark-on-light and avoid inverting (a light code on a dark background) — most scanners expect dark modules and many won’t read an inverted code. If you’re using brand colours, our piece on whether QR code colours affect scanning covers what’s safe.
A centre logo means more error correction
If you’ve placed a logo in the middle, raise the error-correction level so the covered modules can be rebuilt — OpenQR jumps to level H automatically when you add one. Keep the logo to roughly 20–30% of the code and clear of the corner finder patterns. See QR codes with a logo and error correction explained.
Proof it at real size, distance and lighting
A code that scans perfectly on screen can fail on paper because print is a different medium: modules shrink, ink spreads, and you’re now scanning from a metre away under shop lighting, not 20cm from a monitor. So print a proof and scan the proof — at the final size, from the real distance, in realistic light.
Sizing follows a simple rule of thumb, the 10:1 rule: the printed code should be at least one tenth of the distance it’ll be scanned from. A poster read from 2 metres needs a code around 20cm wide; a code on a flyer held at 30cm can be about 3cm. Print smaller than that and the modules become too fine for a phone camera to resolve. Our print-size guide has the full table.
- Final size. Proof at the exact dimensions it’ll be printed — not enlarged to fill a page. Shrinking after a successful test invalidates the test.
- Real distance. Scan from where people actually will: across a café for a wall poster, arm’s length for a leaflet.
- Realistic lighting. Test in dim and bright conditions, not just a well-lit desk. Glare and shadow are where codes quietly fail.
- Matt vs gloss. If you can, proof on the real stock. Glossy laminate and screens reflect light and cause glare that can defeat a scanner; matt is more forgiving. Test the finish you’re actually printing on.
Dynamic codes: confirm the redirect resolves
If you’re using a dynamic code (a short link that forwards to your real destination, so you can change it later), test the redirect end to end: scan it, and confirm it lands on the correct final page — not just that the short link opens. The difference between static and dynamic codes, and when each makes sense, is covered in static vs dynamic QR codes.
Dynamic codes give you a safety net
Here’s the upside: if you ever spot a problem with a dynamic code after it’s printed — wrong page, a broken or moved link — you can repoint it to a new destination without reprinting a thing. The code on the wall stays the same; only where it sends people changes. Here’s how to edit a QR code. A static code, by contrast, has the link baked in and can’t be changed — which is exactly why testing it first matters even more.
Common failure modes and how to fix them
If a test scan fails, it’s almost always one of these. Work down the list:
| Symptom | Likely cause | Fix |
|---|---|---|
| Won’t scan at print size, fine on screen | Printed too small — modules below camera resolution | Enlarge to the 10:1 rule; print a fresh proof |
| Slow or unreliable lock-on | Weak contrast between code and background | Use dark (near-black) modules on a light background |
| Scanner can’t find the code at all | Missing or crowded quiet zone, or a covered finder pattern | Add a clear margin of ≥4 modules; keep the corner squares clear |
| Scans, but nothing happens | Broken, mistyped or non-mobile-friendly destination | Fix the URL; confirm the page loads well on a phone |
| No phone will read it | Inverted colours (light code on dark) | Switch to dark-on-light |
| Fails under shop/window lighting | Glare from glossy stock or lamination | Proof on matt stock, or reposition to cut reflections |
Still stuck after the checklist? Our deep-dive on why your QR code isn’t scanning walks through every cause in detail.
Make a code you can test for free
OpenQR lets you generate a code, export it as PNG, SVG or PDF, and test the real file — with no watermark and no sign-up. Add a logo and error correction jumps to level H automatically, so it stays scannable. Make your code, run it through the checklist above, then print with confidence.
Generate a QR code below, download the real file, and run it through the test checklist before you print.