Skip to content
SmallQRCode

QR Code Best Practices: Design, Content and Testing

5 min read · updated 2026-09-07

Most QR code advice is a list of don'ts. This one is organized by outcome: the practices that make codes people actually scan, in the order they matter.

1. Give people a reason to scan

The unfixable failure mode is a code with no promise attached. A naked QR code on a poster answers "why?" with "because it's there".

  • Label it: "Scan for the menu", "Scan to save our contact", "Scan for 10% off"
  • Make the promise specific: "See the full collection" beats "Follow us"
  • Deliver instantly: the destination should pay off the promise in one screen, on mobile, over cellular

Everything below assumes someone wanted to scan. This step decides whether they try.

2. Keep the content short

Fewer encoded characters → fewer modules → larger modules → faster scans from farther away. The size guide quantifies it; the habits that produce it:

  • Short, clean URLs (yoursite.com/menu, not yoursite.com/index.php?page=menu&ref=qr&session=...)
  • Lean vCards: name, one phone, one email, org — skip the postal address and photo
  • Plain, brief text in text codes
  • A working budget: under ~300 characters for anything printed

3. Contrast: dark on light, and mean it

The camera needs a luminance difference, not a color palette. Practical rules:

  • Near-black on near-white is the ceiling of scannability — and looks fine
  • Brand colors work while contrast stays strong (deep navy on white: yes; brand teal on brand cream: measure it)
  • Inverted codes (light on dark) scan unreliably — if the design is dark, put the code in a light box
  • The generator computes your contrast and warns before it becomes a problem; treat warnings on print projects as blocking

4. If you customize, protect the machinery

Styled codes — rounded modules, dot patterns, colored eyes, a center logo — scan fine when the underlying structure survives:

  • Never restyle the finder patterns (the three corner squares) beyond light rounding; they're how cameras find the code at all
  • Logos: under ~20% of the code area, error correction at H, and the covered modules removed cleanly (the generator does both automatically)
  • Leave the quiet zone alone — four modules of blank margin, no design elements inside it
  • Test every styled code on at least one older phone; modern flagships read things mid-range cameras won't

5. Size for the scanning distance

The rule: printed size ≥ distance ÷ 10, floor of 2 × 2 cm. A table code is scanned from 50 cm (needs ~5 cm); a window decal from across the street (needs 20 cm+). Full tables and the calculator: QR code size guide.

6. Point somewhere mobile-friendly and fast

The code did its job; the destination can still waste it:

  • The page must work on a phone — not a desktop page shrunk to fit
  • It should load fast on cellular; every second of spinner is a lost visitor
  • Deep-link properly: scanning a "menu" code should land on the menu, not the homepage
  • No PDFs unless that's genuinely the content (and then say so on the label)

7. Choose static unless you truly need dynamic

Static codes — the kind this generator makes — contain their content and work forever (do QR codes expire?: static ones don't). Dynamic codes buy editability and scan counts at the cost of a service dependency and usually a subscription.

The middle path covers most marketing needs: a static code pointing at a URL you control. You can change the page (editability, one level down) and measure visits with normal analytics — no redirect service between your print and your audience. The full comparison: static vs dynamic QR codes.

8. Always provide a fallback

Every QR code on print earns a small, human-readable alternative next to it:

  • A short URL (yoursite.com/menu) for the camera-less, the suspicious, and the low-light
  • Or an SMS keyword / phone number where that fits the medium

The fallback costs nothing, rescues real people, and doubles as your accessibility story — screen readers don't read QR codes; they read the printed URL.

9. Test the way people will actually scan

The pre-flight sequence, in escalating fidelity:

  1. Scan the screen with your own phone — content correct?
  2. Scan from the realistic distance — held card? Across the table? From the sidewalk?
  3. Scan the real print — the proof from the printer, at final size, in real lighting
  4. Borrow a second phone — ideally one older Android; the newest iPhone in the room is the most forgiving scanner you'll ever test with

Step 3 catches ink spread and glare; step 4 catches the gap between "works on flagship" and "works on what people have". Details in the printing guide.

10. Think about where codes live over time

  • Print long-life, static only: packaging, signage, books — anything that must outlive a vendor's pricing page
  • Check the destination periodically — the code is permanent; the page is not. Set a calendar reminder for anything printed in bulk
  • Watch for sticker-over-sticker tampering on public codes (parking meters, posters, restaurant tables — the classic quishing move). If you own public codes, make tampering visually obvious: a branded frame, your logo inside, a printed URL to compare

The compact version

Give a reason → keep it short → dark on light → respect the quiet zone and finder patterns → size for distance → mobile-fast destination → static when possible → print a fallback URL → test on two phones, one of them old.

Do those and you're ahead of most QR codes currently printed. Now make one: the free generator covers URLs, Wi-Fi, contacts, locations and every other type — with the scanability checks built in.