16 Sep 2026
Why you should test a QR code before printing, not after
A print run is the one place where a QR code mistake cannot be patched. On a website you fix the link and nobody notices. On 5,000 folded leaflets you either live with a dead code or pay twice. The checks below are ordered so that the ones most likely to trigger a reprint come first, and each one names what actually goes wrong when it is skipped. Budget twenty minutes, one printed proof and three phones.
Checks 1 to 3: phones, real size, real material
1. Scan with an iPhone camera, an Android camera and an older phone
Modern camera apps decode a QR code without any extra software, but they do not all decode the same way. Apple and Android use different decoders, and a three-year-old budget phone has a weaker camera and slower autofocus than the one in your pocket. A code that opens instantly on the marketing team's phones and fails on a customer's older device is the most common complaint we hear. Borrow the oldest phone in the office and treat it as your reference device.
2. Test at the real print size
On a monitor a code is bright, backlit and as large as you like. On paper it is exactly as large as the designer made it, which for a business card or a product label can be under two centimetres. Print the proof at 100 percent, never fit to page, and scan it from the distance a customer will hold the item. If it only scans when you bring the phone closer than feels natural, the code is too small for its data or its placement.
3. Test on the real material
Glossy paper reflects the shop light straight back into the camera. Foil and laminate produce glare bands across the code. Textured stock breaks the edges of the modules. Fabric stretches. A proof on plain office paper tells you the file is fine; only a proof on the final stock tells you the product is fine. If the printer cannot supply one, ask for a sample of the material and print a code on it with a laser printer.
Checks 4 and 5: light, angle and distance
4. Test in poor light and at an angle
Customers scan menus in dim restaurants, posters at bus stops after dark and stickers on the side of a van in the rain. Test the proof under a desk lamp with the room lights off, then at a 30 degree angle to the surface. If the code needs perfect lighting and a perfectly square view, it will fail for a meaningful share of real scans.
5. Test at the rule-of-thumb distance
A practical rule used by many printers is that the scanning distance is roughly ten times the width of the code: a 3 centimetre code for a phone held 30 centimetres away, a 10 centimetre code for a poster read from a metre. That is a rule of thumb, not a standard, and it varies with phone and light. Measure the real distance your placement demands, such as a customer standing on the other side of a counter, and scan from there.
Checks 6 to 8: quiet zone, contrast and logo
6. Check the quiet zone
The quiet zone is the empty margin around the code that tells the decoder where the symbol ends. Denso Wave, the company that developed the QR code, states on its page about determining the code area that a QR code requires a four-module wide margin on all sides. Designers crop it constantly because it looks like wasted space. If a frame, a border or body text touches the edge of the code, push it out until four modules of clear background remain.
7. Check the contrast
Decoders expect dark modules on a light background. A dark blue code on white is fine; a yellow code on white is not, and neither is a light code on a dark background, which some phones read poorly or not at all. Photographs or gradients behind a code break the contrast unpredictably. Keep the background flat and light, the foreground dark, and if the brand colour is pale, use it around the code rather than in it.
8. Check the logo against the error correction level
A logo in the middle works because the QR code carries redundant data. According to Denso Wave's page on the error correction feature, the four levels L, M, Q and H restore increasing shares of the data, and raising the level improves error correction but increases the size of the code; Denso Wave suggests Q or H where codes get dirty and notes that M is the most common choice. A logo that covers more area than the level can recover kills the scan. If the code has a logo, set the level to H, keep the logo small and centred, and re-run checks 1 to 5 after placing it, because the logo changes everything upstream.
Checks 9 and 10: the destination and who owns the link
9. Check that the destination loads on a phone, over https, without a login wall
The scan is only half the journey. Open the destination on mobile data, not on the office wifi, and confirm four things: the page uses https so no phone shows a warning, it loads in a few seconds, it is not gated behind a login or an app install, and it is in the language of the audience holding the leaflet. A German leaflet leading to an English page loses most readers at the first screen. If the destination is a PDF, make sure it opens in the browser rather than forcing a download.
10. Check who owns the domain and the link
Ask who controls the domain the code points at and who controls the account the code lives in. If the answer is a freelancer's personal account or a free tool nobody has the password for, the code will outlive that arrangement and die. Our article on quishing and QR code phishing explains why the domain also matters for the customer's trust: a recognisable, branded short domain is easier to trust than a random one. Record the owner, the account and the renewal date in the campaign register before the files leave the building.
One last question when you test a QR code before printing: is it dynamic?
Everything above assumes you can fix what you find. With a static code you cannot: the destination is baked into the pattern, so a wrong URL or a page that moves next year means a reprint. A dynamic QR code encodes a short redirect on qreu.eu, and the destination behind it can be changed at any time. It also prints smaller, because a short redirect needs fewer modules than a long URL, which makes checks 2 and 5 easier to pass.
The trade-off is that a dynamic code depends on the provider staying in business and on your subscription. That risk is real and it is the subject of our article on whether QR codes expire. With EUQR, a cancelled dynamic code shows your own Recovery Page for 90 days before falling back to a generic page, and every plan counts unlimited scans; Starter costs €0.99 per month and Pro €9 per month, as listed on the pricing page. Download the code as SVG for the printer, which every plan includes, and keep the PNG for screens.
The checklist on one page
- Scan with an iPhone camera, an Android camera and an older phone.
- Print the proof at 100 percent and scan at real size.
- Scan on the final material, not on office paper.
- Scan in poor light and at an angle.
- Scan from the real distance, using ten times the code width as a starting point.
- Keep a four-module quiet zone free on all sides.
- Dark modules on a flat, light background; no gradients or photos behind the code.
- Logo only with error correction level H, small and centred; retest after adding it.
- Destination loads on mobile data over https, without a login, in the right language.
- Domain and account ownership documented, and the code is dynamic so it can be fixed later.
Twenty minutes, one proof, three phones. Hand the list to whoever signs off the print file and ask them to tick every line. It is the cheapest insurance in marketing.
Frequently asked questions
How many phones should I use to test a QR code before printing?
What is the minimum size for a printed QR code?
How big must the quiet zone around a QR code be?
Can I add a logo to a QR code and still print it safely?
What if I find a mistake after the code is printed?
Make a code you can still fix after printing
Create a dynamic QR code, download it as SVG for the printer, run the checklist, and edit the destination whenever you need to. Unlimited scans, hosted in Amsterdam, from €0.99 per month.
Create a dynamic QR code