Design

How to test a QR code before you print it

By Sam Moreton · updated 30 June 2026

Ink is permanent. Once ten thousand flyers come back from the printer, a QR code that won’t scan is ten thousand wasted flyers — and there’s no patching it. The good news: a few minutes of testing catches almost every failure before it costs you anything. This guide is the checklist we’d run on any code headed for print — scan the actual exported file on both an iPhone and an Android, proof it at the size and distance people will really use, and confirm the destination loads well on a phone. Do this once, properly, and you never have to think about it again.

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. 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. 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.

CheckWhat to look forWhy it matters
Quiet zoneA clear margin of at least 4 modules (four squares’ width) all the way round, with nothing in itScanners use the blank border to detect where the code starts and ends; crowd it and the code can’t be isolated
ContrastDark code on a light background — ideally near-black on whiteCameras read the difference between dark and light modules; low contrast (or pale-on-pale) makes that impossible
Finder patternsThe three corner squares left fully intact and unobstructedThese 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:

SymptomLikely causeFix
Won’t scan at print size, fine on screenPrinted too small — modules below camera resolutionEnlarge to the 10:1 rule; print a fresh proof
Slow or unreliable lock-onWeak contrast between code and backgroundUse dark (near-black) modules on a light background
Scanner can’t find the code at allMissing or crowded quiet zone, or a covered finder patternAdd a clear margin of ≥4 modules; keep the corner squares clear
Scans, but nothing happensBroken, mistyped or non-mobile-friendly destinationFix the URL; confirm the page loads well on a phone
No phone will read itInverted colours (light code on dark)Switch to dark-on-light
Fails under shop/window lightingGlare from glossy stock or laminationProof 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.

Frequently asked questions

Download the actual file you’ll print (PNG, SVG or PDF) and scan that — not the on-screen preview. Test it on both an iPhone and an Android, confirm the destination loads well on a phone, then print a proof at the final size and scan it from the real distance in realistic lighting.

Related reading