On this page
Key takeaways
- Dark code, light background, a clear white border and enough size — those four rules prevent most failures.
- Tell people what they’ll get when they scan, and send them to a fast, mobile-friendly page.
- Use dynamic codes for print so you can fix links, change offers and measure results without reprinting.
- Test every printed code with at least one iPhone and one Android phone before the full run.
Design: make it scannable
1. Keep strong contrast — dark on light
Phone cameras read QR codes by the difference between dark and light modules. Black on white is the most reliable; dark brand colors on a light background work too. Avoid light-on-dark (“inverted”) codes — not every scanner supports them — and avoid placing codes over photos or patterns.
2. Respect the quiet zone
Leave a blank margin of 4 modules (the code’s small squares) on every side. Text, borders and images that touch the code make it much harder to detect. More on this in our QR code size guide.
3. Choose the right error correction
| Level | Can recover from | Use it for |
|---|---|---|
| L | ~7% damage | Clean digital use; the smallest codes |
| M | ~15% damage | The best default for most print |
| Q | ~25% damage | Outdoor signs, packaging that gets scuffed |
| H | ~30% damage | Codes with a logo in the middle |
4. Add a logo carefully
A logo makes a code recognisably yours, but it covers modules. Keep it centered and small — roughly a fifth of the code’s area at most — leave a little white space around it, and switch to error correction H. Never cover the three large squares in the corners: they are how scanners find the code.
Branded codes without the guesswork
Content: what the code opens
5. Keep the content short — or make it dynamic
Long addresses with tracking parameters create dense codes that need more space. A dynamic QR code stores a short link instead, so it stays simple at small sizes.
6. Add a call to action
People scan when they know what they’ll get. Put a short, specific line next to the code — “Scan for the menu”, “Scan to join our Wi-Fi”, “Scan for 10% off” — and print the web address in small type for people who can’t scan.
7. Send people to a fast, mobile-friendly page
Everyone who scans is on a phone, often on mobile data. Link to a page that loads quickly, reads well on a small screen and gets straight to the point — not a desktop homepage or a huge PDF.
8. Use the right type of code
- Sharing Wi-Fi? Use a WiFi QR code so phones join automatically.
- Sharing contact details? Use a vCard QR code so they save to contacts.
- Taking payments in India? Use a UPI QR code.
Print and placement
9. Print vector files on matte surfaces
Use SVG files for print so the code stays sharp at any size. Prefer matte paper and laminates; gloss reflects light into the camera. On curved surfaces such as bottles, keep the code on a flat area or keep it small relative to the curve.
10. Put it where people can scan it
- At a comfortable height and within reach — not on the floor, a ceiling or a moving vehicle.
- Where people pause: tables, counters, queues, waiting areas, doors and packaging.
- Where there’s signal — or offer Wi-Fi nearby — so the page actually loads.
- Large enough for the distance people will scan from.
Codes that can’t work
Measure and maintain
11. Track scans per placement
Give each flyer, poster or location its own dynamic code and compare their scans. You’ll quickly see which placements work — and when people scan — so you can spend more on what works.
12. Keep every printed code alive
Printed codes often outlive the page they point to. A dynamic code lets you redirect old print to a current page instead of a dead link. And choose a provider whose codes don’t stop working when a trial ends — QR-10 codes never expire, even on the Free plan.
Pre-print checklist
- Dark code on a light background, no image or pattern behind it
- 4-module white border on every side
- Sized for the scanning distance (use the size calculator)
- Error correction M — or H if there’s a logo
- Clear call to action and a fallback web address
- Destination loads fast and looks good on a phone
- SVG file for print, matte finish
- Tested on an iPhone and an Android phone from the real distance