QR code not scanning? Here’s how to fix it

Guides · Updated June 2026 · 6 min read

When a QR code won’t scan, the cause is almost always one of three things: too little contrast between the code and its background, the code printed too small for the scanning distance, or no clear margin (quiet zone) around it. Work through the checks below in order — sequenced from most to least common — and you’ll find the fault in a few minutes.

First, rule out the phone

Before blaming the code, test the scanner. Point the camera at a known-good QR code (any product box or another website’s code). If that fails too, the problem is the device: clean the camera lens, make sure the native camera app is being used (both iPhone and Android scan QR codes from the standard camera — no separate app needed on anything made since about 2017), and check that QR scanning hasn’t been disabled in camera settings, which happens occasionally on Android.

If other codes scan fine, the fault is in your code. Continue.

Check 1 — Contrast

This is the single most common failure, and it’s usually a design decision that looked good on screen. A scanner needs the dark modules to be clearly darker than the background. Problems arise with:

  • Light foreground colours: yellow, pastel pink, light grey, pale brand colours.
  • Dark backgrounds with darker foregrounds: navy on black, dark grey on dark blue.
  • Low-contrast brand pairings that pass a vibe check but not a scanner.

The safe rule: the foreground should be visibly dark and the background visibly light, with the kind of contrast you’d want for body text. Black on white always works. If you’re customising colours in our generator, do a test scan from your phone screen and from a printout before committing to print — screens are backlit and more forgiving than paper.

Check 2 — Inverted colours

Related but distinct: scanners expect dark code on a light background. A white QR code on a black background — popular with designers — fails on many readers, because the decoder finds the pattern reversed. Some modern phones cope; many older devices and dedicated scanners don’t. If your design demands a dark background, place the QR code inside a white rounded rectangle rather than inverting it.

Check 3 — The quiet zone

Every QR code needs an empty margin on all four sides — the quiet zone — so the scanner can find the code’s edges. The standard requires a margin of at least four modules wide (a module is one of the small squares). In practice: leave white space around the code at least as wide as one of the three large corner squares.

This fails constantly in real-world design: codes crammed against a border, overlaid on a busy photo, or butted up to text. If your code sits inside a coloured box with no breathing room, that’s likely your fault right there.

Check 4 — Size versus scanning distance

A code that scans beautifully from your hand can be unreadable on a poster across a room. The working rule is scan distance ÷ 10: a code scanned from 50cm away should be at least 5cm wide; from 2 metres, at least 20cm. The absolute floor for close-range scanning (business cards, leaflets) is 2cm × 2cm — below that, even good phones struggle.

If in doubt, go bigger. Nobody has ever failed to scan a QR code because it was too large. Our print size guide has a full table by use case.

Check 5 — Too much data packed in

The more characters a QR code holds, the denser its grid becomes, and dense grids need to be printed larger to stay readable. A vCard with a full name, two phone numbers, an email, company and address produces a far busier code than a short URL — print both at 2cm and the URL scans while the vCard doesn’t.

Fixes: shorten what you encode (trim vCard fields to the essentials; link to a contact page instead), or print the dense code larger. If you’re encoding a long URL with tracking parameters, consider whether the ?utm_source=... tail is worth the density it adds.

Check 6 — Print quality and damage

Inkjet bleed, low-resolution printing, fading, scratches and creases all eat into the code’s pattern. QR codes carry built-in error correction — at the highest level (H), up to roughly 30% of the code can be damaged or obscured and still decode — but that budget gets spent fast by poor printing. Print at 300 DPI or better, from the PNG at its generated size or larger (never upscale a small export), and laminate anything living outdoors. Our error correction guide explains how much damage each level tolerates.

Check 7 — Surface problems

Glossy lamination and curved surfaces cause glare and distortion. A code wrapped around a bottle or cup can curve beyond what the scanner tolerates — keep codes on the flattest part of any curved object, and prefer matt finishes where there’s strong overhead lighting.

Check 8 — The code scans, but to the wrong place or an error

If the camera reads the code but the result is a 404 page or an unexpected site, the code itself is healthy — the destination is the problem. Typo’d URLs are common (a missing letter in the domain still produces a perfectly valid, perfectly wrong QR code), and pages get deleted. If the code redirects through an unfamiliar short domain to an error or an upsell page, you have an expired dynamic code — see our guide on why QR codes expire, because that one can’t be fixed without a reprint.

Check 9 — WiFi codes specifically

WiFi QR codes have their own failure modes. The encoded format is strict (WIFI:T:WPA;S:NetworkName;P:password;;), and special characters in the network name or password — semicolons, colons, backslashes, quotes — must be escaped or the string breaks. A wrong encryption type (selecting WEP for a WPA2 network) also produces a code that scans but won’t join. If your WiFi code scans but the network never connects, regenerate it on our WiFi QR code page, double-checking the SSID, password and security type — the escaping is handled automatically.

Generate a clean, high-contrast QR code in seconds — free, no sign-up, never expires.

Generate a QR code

Frequently asked questions

Almost always contrast or resolution. Screens are backlit, which flatters low-contrast colour schemes, and screen rendering is sharper than a small inkjet print. Reprint larger, at higher quality, or with stronger contrast.

Black on white. Any dark-on-light pairing with strong contrast is fine, but black on white has the largest margin for poor printing and bad lighting.

Yes, if the code uses high error correction (level H tolerates around 30% obstruction) and the logo covers well under that. Keep the logo small, central, and never covering the three corner squares — those are how scanners locate the code.

2cm × 2cm is the practical minimum for close-range scanning of a simple code. Dense codes (vCards, long URLs) need more. There’s no upper limit.

If the print is undamaged, the destination changed: either the linked page was removed, or a dynamic-code subscription lapsed. Scan it and read the address that appears — that tells you which.

Related