A QR code looks fine on screen. You print 200 stickers. Half don't scan. It's one of the most common — and most preventable — small disasters in the QR world.
Eight things actually cause this in the wild. Run them in order before you commit to a print run.
1 · Insufficient contrast between dot and background
QR scanners read in greyscale. They need a clear difference between the "module" colour (the dots) and the background. If you've gone with a soft pastel on cream, the scanner sees nothing.
Fix: aim for a luminance contrast ratio of at least 3:1 between dot and background. As a quick sanity check, if you squint at the QR and the dots blur into the background, your phone will do the same thing.
2 · Background image too dense or busy
A photo behind the QR can look gorgeous — until the photo is the same colour as the dots in some areas. Half the QR reads, half doesn't, and the scanner gives up.
Fix: drop the background image's opacity to 30–40% and pick photos with a uniform colour palette that doesn't compete with the dot colour. Or skip the background image entirely for a small printed QR (under 4 cm).
3 · Logo in the centre is too big
The logo blocks part of the QR's data. Error correction can recover up to 30% of the data, which sounds like a lot — but those 30% need to be uniformly distributed errors, not one big black circle in the middle.
Fix: keep the logo to under 25% of the QR's area, and make sure your generator is using error correction level H. Capy QR auto-bumps to H whenever a logo is uploaded.
4 · Quiet zone missing
Every QR code needs a quiet zone — a margin of empty space around it. The spec says four modules wide. Most pre-made templates and flyers have you butt the QR right against text or a coloured edge. Scanners can't find the corner markers and bail.
Fix: leave a clear margin around your QR. As a rule of thumb: at least 20% of the QR's own width on every side, kept the same colour as the QR's background.
5 · Resolution too low for the print size
A 200 × 200 pixel PNG enlarged to a poster looks like a stained-glass window. The scanner sees fuzzy edges and gives up.
Fix: for printed QR codes, export SVG when possible — it's vector and stays sharp at any size. If you must export PNG, pick a resolution at least 6× the printed pixel density: for a 4 cm × 4 cm sticker at 300 DPI, that's a 472 × 472 PNG. For anything larger, just use SVG.
6 · Damage or printing artefacts
Cheap inkjet printing on absorbent paper bleeds. Stickers get scratched. The classic failure mode: the printed QR looks fine to your eyes but has fine ink fuzz that the scanner reads as garbage.
Fix: always print one test sticker first, scan it yourself with at least two phones (iOS and Android), and only then commit to the print run. If you're going to be printing on a difficult substrate (fabric, glossy plastic), bump the QR size 25% bigger than you think you need.
7 · Wrong error correction level
Most generators default to L (lowest correction). For a small, plain QR that's fine. For one with a logo, gradient, or background image, that's a fail waiting to happen.
Fix: if your QR has any decoration, use level H. The QR will be slightly denser (more dots in the same space) but it'll survive much more abuse.
8 · Artistic patterns the scanner doesn't recognise
Highly stylised QR codes — the AI-generated "artistic" ones, hand-drawn ones, ones that incorporate the QR pattern into a larger illustration — often fail on older scanners or specific phone models even when they work on the latest iPhone.
Fix: always test on a range of phones before committing. The Camera apps on iOS 16+, Android 12+, and recent Samsung/Pixel handle artistic QRs decently. Older Android Camera apps and most third-party scanners (banking apps' built-in scanners especially) don't.
Build yours in the editor → capyqr.com
Quick checklist before you print
- Contrast: dots clearly darker than background, no pastels-on-cream
- Quiet zone: ~20% of the QR's width on every side, same colour as the background
- Logo: ≤ 25% of the QR's area, error correction set to H
- Background image (if any): ≤ 40% opacity
- Export: SVG if you can, otherwise PNG at 6× printed pixel density
- Test on two phones before the print run
A QR that follows all the rules
Built with conservative defaults so it scans on basically any phone:
If you'd rather not think about any of this, Capy QR's defaults already cover most of the rules above (auto-H when there's a logo, default margins, contrast warnings). Try it at capyqr.com.