Design & print

QR code best practices: design, print and placement

Twelve rules for QR codes people actually scan: contrast, quiet zone, error correction, logos, calls to action, print, placement and testing.

Updated 4 min readBy the QR-10 team

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

QR code error correction levels
LevelCan recover fromUse it for
L~7% damageClean digital use; the smallest codes
M~15% damageThe best default for most print
Q~25% damageOutdoor signs, packaging that gets scuffed
H~30% damageCodes 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

QR-10 Pro adds logos, gradients and custom shapes, and its designer warns you when a style makes a code harder to scan.

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

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

Codes on billboards beside fast roads, in emails meant to be read on phones, or at the bottom of a printed page that’s already in someone’s hand at a weird angle are scanned rarely. Think about the moment of scanning.

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

Frequently asked questions

Yes. Any color works as long as the code is clearly darker than its background — dark navy, deep green or burgundy on white are all fine. Avoid light colors, low-contrast pairs and light codes on dark backgrounds.

Keep it in the center and small — a good target is no more than about a fifth of the code’s area — and use error correction H, which lets the code recover from the covered modules. Always test with several phones.

Use a dynamic code for anything you print in quantity or keep for a long time. It stores a short link, so it is smaller and simpler, you can change the destination without reprinting, and you can see how many people scan it.

A short call to action that says what people will get, such as “Scan for today’s menu” or “Scan to book a table”. Add the web address in small print for people who can’t scan.

Your next print run deserves a smarter QR code.

Start free with 3 dynamic QR codes and full scan analytics. Upgrade to Pro for unlimited dynamic codes, branding and landing pages whenever you are ready.