Print-ready QR codes: contrast, size, and the logo question
Practical rules for QR codes that actually scan from a poster, a business card, or a sticker — and what to do about the embedded logo trend.
- guide
- design
QR codes are forgiving up to a point, and then they suddenly aren’t. The difference between a code that scans from across the room and one that nobody can read is usually a few millimeters of size, a contrast choice, or one too many design liberties around the logo. Here’s a short, practical rulebook.
Size: the 10:1 rule
The rule of thumb scanner manufacturers actually use:
Distance from scanner to code ÷ 10 = minimum code size.
If your QR will be scanned from 1 meter away (a poster on a wall behind a counter), it needs to be at least 10 cm on a side. From across a coffee shop (3 m), 30 cm. From a billboard at 30 m, 3 m.
For small formats:
- Business card: 2 cm minimum on a side, 2.5 cm comfortable.
- Flyer / postcard: 3 cm minimum, 4 cm comfortable.
- Product packaging: 2 cm minimum, depending on phone-to-code distance.
Going smaller than these makes the modules (the dots) physically too small for camera autofocus to resolve cleanly. It “works” until it doesn’t.
30 cm
Business card
≥ 2 cm
1 m
Flyer / counter sign
≥ 10 cm
3 m
Poster across a room
≥ 30 cm
10 m
Storefront window
≥ 1 m
Dark dots, light background
Cameras expect this. Anything else loses scan reliability.
Quiet zone ≥ 4 modules
Empty space around the code. Don't bleed it into other graphics.
Don't put a logo on a finder square
The three big corner squares are how the scanner orients. They're sacred.
Quiet zone: don’t crowd it
Every QR code spec calls for a quiet zone — empty space around the code, at least 4 modules wide. In practice that’s roughly the width of one of the three big square “finder” marks in the corners. If you’re tempted to bleed the code into another graphic, leave more whitespace around the QR itself than you think you need. Scanners use that whitespace to find the code.
Contrast: dark on light, almost always
Camera-based QR readers expect dark modules on a light background. They have decades of training data telling them this. You can violate this rule — light dots on dark, colored dots, gradients — but every violation eats some of your error correction budget and some of your scan reliability.
If you’re going to deviate:
- Keep the contrast ratio above about 3:1 between the dots and the background.
- Do not invert (light on dark) for production codes. Some scanners support it, many don’t, and the failures look exactly like a broken code.
- If you use color for the dots, keep them dark enough that a black-and-white photocopy of your design would still scan.
The logo question
You can put a logo in the middle of a QR code. The reason it works is error correction — the QR spec encodes the data redundantly, so a chunk of damaged or obscured pixels can be reconstructed from the rest. Standard error correction levels:
- L (low): ~7% of the code can be obscured.
- M (medium): ~15%.
- Q (quartile): ~25%.
- H (high): ~30%.
If you embed a logo, use level H and keep the logo small — no more than the central 20% of the code area. Anything larger and you start eating real data, and the scanner will fail in low-light or low-resolution conditions.
A few rules I’ve found from doing this a lot:
- Round logos read better than square ones. They leave more of the surrounding finder pattern intact.
- Keep some padding (a small white square) behind the logo. Scanners get confused when a logo blends into the dots.
- Don’t put the logo in any of the three corner finder squares. Those are the parts the scanner uses to orient the code, and damaging them is fatal.
Format: PNG or SVG?
- PNG: Use when you’re handing artwork to a non-design tool (a print-on-demand uploader, a slide deck, a social post). Export at the actual print resolution — at 300 DPI, a 3 cm code is ~354 px wide, so export at 600 px for headroom.
- SVG: Use when the code goes into a vector workflow (Illustrator, InDesign, a printer who wants vector art). It scales to any size with no loss.
AFQR exports both for free. SVG is preferred whenever your downstream tools support it — it’s smaller, sharper at any size, and survives being scaled in print layouts.
Test before you print
Always — always — print a one-off proof and scan it from the actual distance you expect users to scan from, with a normal phone camera, in normal indoor lighting. The number of times an “obviously fine” QR turns out to be unscannable at the actual size on the actual paper is humbling.
If you want to skip the math, the AFQR generator’s default settings (high contrast, level Q error correction, generous quiet zone) produce codes that scan reliably at the sizes above. Most of the design choices that break QR codes are choices a default-safe generator never lets you make in the first place.
Need a QR code that won't expire?
Make one in your browser, free, no signup. Or sign in with Google to manage dynamic codes with scan stats.