TL;DR: A QR code only works if a phone camera can lock onto it. Scannability comes down to four things: enough contrast, a big enough print size, a clear quiet zone around the edges, and the right error-correction level — especially once you add a logo. Get those right and test before you print, and the code will stay reliable.

QR codes fail silently. They look fine on screen, get printed on a flyer, and then nobody can scan them from across a room. Almost every failure traces back to one of a handful of avoidable causes.

Create QR Codes That Stay Easy to Scan
Create QR Codes That Stay Easy to Scan

Contrast and colour

A scanner reads QR codes as dark modules on a light background. High contrast — ideally dark-on-white — is what makes that possible. Inverting the colours (light modules on a dark background) or using a low-contrast pairing like grey-on-beige is the fastest way to make a code unreadable. If you brand a code with colour, keep the modules distinctly darker than the background.

Error correction and logos

QR codes have four error-correction levels — L, M, Q and H — that determine how much of the code can be damaged or covered while still scanning. Levels roughly restore up to 7%, 15%, 25% and 30% of the data respectively. Use Low or Medium for a plain code with short content. Switch to High (H) whenever you place a logo in the centre or print in demanding conditions: the extra redundancy is exactly what lets the code survive the covered area.

The quiet zone

A QR code needs an empty margin — the "quiet zone" — around all four sides so the scanner can find its boundaries. Cropping the code tight to other elements, or letting text bump against it, is a common reason a code that scanned in testing fails in the printed layout.

Size for the scan distance

Print size should match how far away people will scan from. A code on a business card can be small because it's held close; a code on a poster read from two metres needs to be much larger. When in doubt, print bigger — a code that is too small simply won't resolve.

PNG or SVG?

For print, export as SVG: it is a vector file that scales to any size without blurring, which matters on flyers, posters, and packaging. Use PNG for screens and the web. Exporting a small PNG and then enlarging it for print is a classic cause of fuzzy, hard-to-scan codes.

Static versus dynamic

A static QR code encodes its content directly, so it never expires and doesn't depend on any server — but the destination can't be changed later. Dynamic codes redirect through a short URL you can edit, at the cost of relying on that service staying online. For a fixed link that must keep working for years, static is the safer bet.

A workflow that scans first time

  1. Build the code in the QR Code Generator, choosing High error correction if you add a logo.
  2. Keep strong contrast and a clear quiet zone.
  3. Export as SVG for print, PNG for screens.
  4. Test with two or three real phones, at the actual scan distance, before the print run.

If the destination is a long link, shorten and tidy it with the URL Encoder / Decoder so the encoded code stays as simple as possible.

Common mistakes to avoid

  • Low contrast or inverted colours.
  • Adding a logo without raising error correction to High.
  • Cropping away the quiet zone.
  • Enlarging a small PNG instead of exporting SVG for print.