Generators

Why Your QR Code Won't Scan — 8 Causes and Fixes

Diagnose unscannable QR codes: contrast, size, density, inverted colors, oversized logos and print mistakes — plus a testing routine before you go to print.

Why a QR code won't scan

The most common reasons a QR code fails to scan are weak contrast between the code and its background, printing it too small for the scanning distance, packing in so much data that the modules become tiny, inverting the colours (light code on dark background), or covering too much of the pattern with a logo. Each has a quick fix — and all are cheaper to catch before the flyers come back from the printer.

1. Not enough contrast

Phone cameras find a QR code by hunting for its three corner squares, and they need clear separation between dark and light to do it. A pastel code on a cream background, or a photo used as the background, can drop below the threshold. Custom brand colours are fine — as long as the code is clearly darker than what's behind it. When in doubt, test the exact colour pair on a real phone before committing to print.

2. Inverted colours

A white code on a black poster looks striking, but many scanner apps expect dark-on-light and simply refuse the negative. If your design demands a dark background, place the code inside a light-coloured tile rather than inverting it.

3. Printed too small for the distance

A code that scans perfectly from a business card in the hand will fail on a poster read from across a room. A widely used rule of thumb: make the code at least one-tenth of the intended scanning distance — so a code meant to be scanned from 1 metre away should be at least 10 cm wide. Table tents and packaging can go small; banners and shop windows cannot.

4. Too much data packed in

The more characters you encode, the more modules the pattern needs, and the smaller each module gets at a given print size — until cheap cameras can no longer resolve them. Long tracking URLs are the usual offender. Encode a short URL instead, and let the destination page carry the complexity. For vCards, include the essentials rather than every field.

5. The logo is eating the code

Centre logos work because QR codes carry error correction — redundant data that lets a scanner reconstruct damaged regions. But that budget is finite. If you overlay a logo, generate the code at error-correction level H (the highest), keep the logo modest, and always test. A code that "mostly scans" in perfect light will fail in a dim restaurant.

6–8. Print and placement mistakes

  • Blurry raster exports — a small PNG stretched onto a poster turns crisp modules into mush. Export SVG for anything print-sized, and PNG only at final resolution or larger.
  • No quiet zone — the empty margin around the code is part of the spec. Cropping tight to the pattern or butting it against busy artwork breaks detection. Leave a clean border of at least four module-widths.
  • Hostile surfaces — glossy lamination glares, curved bottles distort the grid, and windows add reflections. Matte finishes and flat placements scan best.

A pre-print testing routine

  1. Generate the final design in the ToolCrix QR Code Generator and print one copy at actual size on a normal office printer.
  2. Scan it with at least two phones — ideally one older model — from the realistic distance.
  3. Test in poor light and at an angle, not just head-on.
  4. Open the destination on the phone itself: is the page mobile-friendly? A scannable code pointing at a desktop-only page still fails the user.

Frequently Asked Questions

What error correction level should I use?

M is a sensible default. Move up to Q or H if the code carries a logo or will live somewhere it can get scuffed — higher levels survive more damage at the cost of a denser pattern.

How small can a QR code be printed?

For close-range scanning, around 2 cm square is a practical floor for a short URL. Denser codes and greater distances need proportionally more.

Can a QR code just stop working one day?

A static code can't expire — but the URL behind it can die. If a previously working printed code fails, check whether the destination page moved or the short-link service shut down.

Why does my code scan on one phone but not another?

Older or budget cameras resolve less detail. Treat the weakest phone you can find as your acceptance test.

Testing a design? Generate print-ready SVGs in the QR Code Generator, or browse more guides.

Open the tool →