QRSync qrsync
Dashboard

QR Code Design Best Practices (That Actually Affect Scan Rates)

A QR code that doesn’t scan on the first attempt is a QR code that doesn’t get scanned at all. Users don’t troubleshoot — they walk away. That’s the expensive truth behind QR design: a code that looks beautiful but takes three tries is worse than a plain black-and-white one that works instantly.

This post is about the design choices that actually affect scan reliability, ranked by how often they cause problems in the field. Skip the trends; these are the fundamentals.

1. Contrast is the only color rule that matters

Phone cameras read QR codes by detecting the boundary between dark modules (the “ink”) and light modules (the “background”). That detection depends on contrast — not on the specific colors you choose.

The safe rule: your foreground color must be significantly darker than your background. Light foreground on dark background (inverted) works too, but is less reliable on older phones and some scanner apps.

What “significantly darker” means in practice:

  • Safe: dark navy, deep maroon, forest green, charcoal, or true black on white, cream, or pale yellow.
  • Risky: medium gray on white, pastel blue on pale yellow, brown on tan — anything where the contrast ratio drops below ~4:1.
  • Broken: gradients that approach the same brightness as the background. Stunning to look at, impossible to scan in low light.

A practical test: convert your design to grayscale and squint at it from arm’s length. If you can still see the QR pattern crisply, you’re fine. If it starts to look like a blurry texture, contrast is too low.

You don’t need a contrast checker — but if you want one, WCAG’s 4.5:1 ratio (used for body text accessibility) is also a reliable QR floor.

2. The quiet zone is non-negotiable

Every QR code needs a margin of empty space around it — the “quiet zone” — equal to at least 4 modules wide. (A module is one of the small squares that make up the pattern.) Without it, the scanner can’t tell where the code ends and the background begins.

This goes wrong most often when designers:

  • Crop too tight in print layouts.
  • Place text or graphics directly against the code’s edge.
  • Drop the code onto a busy background with no padding.

The fix is mechanical: leave at least four-module-widths of solid background color around every edge. If you exported from QRSync at default settings, the quiet zone is already baked in — just don’t crop it away.

QR codes have a built-in error correction system (Reed-Solomon coding) that lets a scanner recover the original data even when part of the code is damaged or obscured. There are four levels:

Level Recovers from Typical use
L (Low) ~7% damage Clean, controlled environments — flat printed pages, no logo
M (Medium) ~15% damage Default for most QR codes; small logo overlay possible
Q (Quartile) ~25% damage Logos covering ~15–20% of the code; rougher print surfaces
H (High) ~30% damage Large logos, fabric, curved surfaces, partial obstruction

Higher error correction makes the QR pattern denser (more modules) for the same data. So increasing it has a real cost: the resulting code is harder to scan at small sizes, and the pattern starts looking busier.

The right approach: decide where the code will live first, then pick the lowest error correction that supports your design. Don’t reflexively crank it to H — that often reduces scan reliability by making the code too dense.

QRSync’s generator picks a sensible level (usually M or Q) based on your logo size automatically. If you upload a larger logo, it bumps the error correction up. If you remove the logo, it drops back down. You shouldn’t normally need to touch this.

4. Logos: under 25% of the code, centered, with a quiet border

A logo overlay can make a QR code feel branded rather than generic. It can also wreck scan reliability if you push it too far.

The guidelines that hold up in practice:

  • Cover no more than 25% of the QR code’s total area. Most QRSync designs end up around 15–18% by default.
  • Center the logo. The corner finder patterns (the three large squares) must remain fully visible. Off-center logos that even touch a finder pattern will break scanning.
  • Give the logo a small white background. A flat white square or circle 2–4 modules wider than the logo itself prevents the scanner from confusing logo pixels with module boundaries.
  • Avoid transparent or partially-transparent logos. The scanner needs clear contrast in every region, including the logo footprint.

A surprisingly common mistake: gradients in the logo that wash out the surrounding modules. If your logo edges blur into the QR pattern, the code won’t scan reliably.

5. Size your code for the scan distance

The bigger the print, the farther away it can be scanned. A useful rule:

Minimum width = scan distance ÷ 10

So:

  • A QR code on a menu, business card, or product label — scanned from 20–30 cm away — should be at least 2 cm wide.
  • A QR code on a poster at eye level, scanned from 1.5 m — should be at least 15 cm wide.
  • A QR code on a billboard seen from 10 m away — should be at least 1 m wide.

Smaller is possible with very clean designs and modern phones, but the margins for error shrink fast. When in doubt, go a size up.

Density matters here too. A static QR encoding a 60-character URL needs more area than a dynamic QR encoding a 7-character short code. If you’re targeting a small print size, switching to dynamic is the single biggest scan-rate improvement you can make.

6. Don’t trust on-screen previews

A QR code that scans perfectly on your monitor can fail when printed. Common reasons:

  • Resolution loss — exporting at 200×200 px and scaling up in a print app introduces blur.
  • Color profile shifts — RGB exported, CMYK printed; saturated colors can drift into low-contrast territory.
  • Substrate effects — matte vs glossy paper changes how light bounces back to the scanner.
  • Compression artifacts — JPEG compression of a QR is especially destructive. Use PNG or SVG.

Always print a proof and scan it with multiple phones (iPhone and Android, ideally one older device) before committing to a print run. Five minutes of testing prevents thousands of wasted impressions.

7. Export the right format for the medium

QRSync exports in five formats. The choice matters:

  • PNG — best for digital use (websites, apps, email signatures). Crisp, supports transparency.
  • SVG — best for print. Vector format, scales infinitely without quality loss. Use this for posters, packaging, anything large.
  • PDF — best for sending to a printer or designer. Bundles vector data in a standard print format.
  • JPEG — only when something specifically requires it (rare). Compression artifacts hurt scan reliability.
  • WebP — small file size for web use; only if you control browser compatibility.

For most paid-tier customers printing menus, signs, or packaging, SVG is the right answer. For most social-media or web placements, PNG. Avoid JPEG unless forced.

What doesn’t actually matter

A few things designers worry about that have minimal real-world impact:

  • Rounded module corners — QRSync supports four module styles (square, rounded, dots, classy). All scan equally well at reasonable sizes. Pick whichever looks best for your brand.
  • Corner-square (finder pattern) styling — same story. Make them dots, rounded, or square. The pattern is what matters; the corners’ shape is decorative.
  • Single-color gradients — fine, as long as contrast holds from start to finish. Don’t gradient across the finder patterns.
  • Subtle texture in the background — fine if the texture is much lower-contrast than the QR foreground. A busy background, however, kills scan reliability.

The shortest checklist that prevents 90% of problems

Before you print or publish a QR code:

  1. ✓ Foreground is significantly darker than background (squint test passes).
  2. ✓ At least 4 modules of quiet zone on every side.
  3. ✓ Logo (if any) is under 25% of total area, centered, with a clear background.
  4. ✓ Print size is at least (scan distance ÷ 10).
  5. ✓ Exported as PNG or SVG, not JPEG.
  6. ✓ Scanned successfully with two different phones from a real printed proof.

That’s it. Beyond these, design choices are mostly aesthetic — the QR will scan reliably either way.

Ready to design one? Try the generator, upload your logo, and play with the color and style settings. The defaults are tuned for scan reliability, so it’s hard to make a code that won’t scan unless you go out of your way to break the rules above.