QR Code Best Practices: Design, Print Size, and Why Yours Won't Scan
Practical rules for QR codes that actually scan — minimum size for print, contrast, quiet zone, error correction, and what kills scan rates in the real world.
A QR code costs nothing to add to a poster, business card, menu or product. A QR code that doesn't scan costs you every customer who walked away from it. The difference is almost always design — not the technology.
This is the practical rulebook for QR codes that work in the real world: minimum sizes for print and screen, the right contrast, what error correction actually does, and the five mistakes that quietly kill scan rates.
Make one in 10 seconds: the free QR Code Generator supports URLs, WiFi, vCard contacts, SMS, location and plain text. Customize colors, set error correction, download as PNG or SVG.
How big should your QR code be?
The single rule that matters: distance ÷ 10 = minimum QR size. If people will scan from 2 meters away, the printed code needs to be at least 20 cm wide. From 30 cm (handheld card): 3 cm minimum. From 5 meters (signage across a room): 50 cm minimum.
For common contexts:
- Business card: 2-3 cm. Smaller works if your card is held close.
- Restaurant menu / table tent: 4-6 cm. Diners scan at arm's length.
- Flyer / A5 poster: 5-8 cm.
- Window decal / A3 poster: 10-20 cm.
- Trade show banner (2 meters viewing): 20+ cm.
- Billboard / building wall: 50 cm+, ideally a meter.
On screen, 200 px minimum is safe for a phone camera. Anything smaller starts to fail in low light or at angles. For social media (Instagram story, Twitter image), 800-1080 px gives plenty of headroom.
Quiet zone — the white space rule everyone breaks
The QR specification requires a clear margin around the code equal to 4 modules (a module is one square of the pattern). Without it, scanners often refuse to read the code or take significantly longer to focus.
Practically: leave at least a finger-width of white space around the code on print. On screen, never place a QR right against a busy background or image — wrap it in a clean rectangle of solid color.
Contrast matters more than colors
You can use colored QR codes — but the rule is foreground must be dark, background must be light. Inverted (light foreground on dark background) sometimes fails on older scanners. A contrast ratio of at least 4.5:1 is the safe threshold.
Common failures:
- Red on black, blue on dark navy, yellow on white — all too low contrast.
- Photo backgrounds behind the code — busy patterns confuse the scanner.
- Gradient backgrounds — even subtle gradients hurt edge detection.
If you want a colored QR, pick a saturated dark color (deep blue, dark green, near-black brown) on plain white. Test with two different phones before committing to print.
Error correction levels — pick the right one
QR codes have built-in redundancy that lets them scan even if part of the code is damaged or covered. Four levels exist:
| Level | Recovery | Use for |
|---|---|---|
| L (Low) | ~7% | Pristine digital displays, small codes |
| M (Medium) | ~15% | Most general use — the default |
| Q (Quartile) | ~25% | Print on rough surfaces, partial obscuration |
| H (High) | ~30% | Logo embedded in center, harsh print environments |
Higher error correction means a denser code (more modules), which means it needs to be physically bigger to remain scannable. Don't reflexively pick H — only use it if you genuinely need it. M is the right default for 90% of cases.
Logos in the center — when it works
Embedding a logo in the middle of a QR is a popular branding move. It works when:
- Error correction is set to H (30%).
- The logo covers less than 25% of the code area.
- The logo has a solid background (transparent logo on the busy QR pattern reads as damaged).
A safer alternative: place the logo next to the QR rather than inside it. You keep the branding without bumping up error correction and risking scan failure.
Short URLs scan faster — and look cleaner
QR codes encode every character you give them. A 200-character URL produces a much denser, harder-to-scan code than a 30-character URL. Two things help:
- Use a URL shortener (Bitly, your own redirect). 20 vs 200 characters dramatically lowers density.
- Drop unnecessary parameters. UTM tracking is useful, but consider whether the QR campaign uses dynamic redirects to add UTM server-side rather than encoding them in the QR.
Static vs dynamic QR codes
The QR codes you generate with most free tools are static — the URL is baked into the pattern forever. You can't change where they point to after printing.
Dynamic QR codes (paid services like Bitly, QRCode Generator Pro) encode a redirect URL on the provider's domain, which routes to your real destination. You can:
- Change the destination after printing.
- Track scans (number, location, device, time).
- A/B test landing pages.
For marketing campaigns where you might want to update the target, dynamic is worth the small monthly fee. For business cards or one-off menus, static is fine — and free.
Test before you print
The five-minute test checklist:
- Scan with the native iOS camera app.
- Scan with an Android phone (Google Lens or camera).
- Scan from 20 cm away.
- Scan from 1 meter away (or your intended distance).
- Scan in low light (turn off room lights, use phone screen brightness only).
If all five succeed, you're ready to print. If any fails, increase size, simplify colors, or raise error correction. Don't skip this step — printing 1,000 unscannable QR codes is one of the more expensive marketing mistakes you can make.
Five mistakes that kill QR codes
- Tiny QR on a billboard. Distance/10 rule violated. Code looks scannable on the design proof but is unusable on the real billboard.
- No quiet zone. Code butted up against text or border. Scanner can't find the edges.
- Light foreground on dark background. Half of older phones will fail.
- Logo too big in center. Looks pretty, fails to scan. The logo eats more than the error correction can recover.
- Untested before print. The single most common cause of failed QR campaigns.
Make a QR you can trust: use the QR Code Generator with error correction set to M, foreground dark, background white, and download the SVG version for sharp printing at any size. SVG vector files scale without losing quality, unlike PNG.