7 min readTutorials

QR Code Not Scanning? Four Causes and How to Fix Them

A QR code that will not scan almost always fails on size, quiet zone, contrast, or a payload that is too long. Test them in that order and fix the right one.

Marius Voß
DevRel · edge infra

A QR code that will not scan is almost never a scanner problem. It is one of four physical causes: the code is printed too small for the distance people read it from, the white margin around it has been cropped, the contrast is too low, or the URL inside it is long enough to make the grid too fine to resolve.

Those four account for nearly every failure, and they are worth testing in that order because the first two are the most common and the cheapest to fix. This is the print-side companion to how to create a QR code; if your problem is that scans are not being counted rather than that the code will not read, how to track QR code scans is the one you want.

Four reasons a QR code fails to scan with the cause and fix for each: printed below scan size, a cropped quiet zone, glare on lamination, and low or inverted contrast

Quick Diagnosis: Match the Symptom to the Cause

What you seeMost likely causeFirst fix
Scans on screen, fails on paperCropped quiet zoneAdd a margin of at least four modules
Scans up close, fails from a normal distancePrinted too smallDivide the distance by ten
Works at your desk, fails in the shopGlare or low contrastMatte finish, dark modules on a light field
Takes several seconds, then worksDense grid from a long URLEncode a short link
Scans, then the page errorsNot a QR problemCheck the destination

Cause One: It Is Printed Too Small

The rule of thumb is distance divided by ten. A code read from two metres needs to be about 20 cm across. A code on a table tent read from 40 cm can be 4 cm. A code on a billboard is a different exercise entirely, because the readable distance is set by how close a phone camera can focus and still resolve individual modules.

Designers shrink codes because they look like a blemish on the layout. The scan rate falls off a cliff below about 2 cm on older phones, and the people with older phones are exactly the ones least likely to try twice.

How big should a QR code be has the full sizing table, including the awkward cases like curved packaging and vehicle livery.

Cause Two: The Quiet Zone Was Cropped

The blank margin around a code is part of the code. Scanners use it to work out where the grid starts, so removing it can stop a technically perfect code from being found at all.

Four modules is the specified minimum, which on a typical printed code is a border a little over half the width of one corner square (those squares are seven modules wide). Design software will happily let you crop it, place the code flush against a coloured block, or run text right up to the edge, and every one of those is the same defect.

This one is worth checking first when a code scans on screen but fails in print, because the on-screen version usually has the browser's white page acting as an accidental quiet zone.

Cause Three: Contrast and Glare

Scanners need to tell dark modules from a light field. Three things break that.

Low contrast is the obvious one: a mid-grey code on a pale grey background looks tasteful and reads badly. Inverted codes, light modules on a dark field, are decodable by many scanners and not all of them, so an inverted design needs testing on real phones rather than one.

Glare is the sneaky one. A glossy laminate or a code printed behind glass throws the shop's ceiling lights straight back into the camera, and the code that scanned perfectly on the proof fails on the shelf. Matte finish, or moving the code away from the reflection, fixes it.

Cause Four: The Payload Is Too Long

This is the cause people never suspect, because the code looks fine on screen.

The amount of data decides the version of the code, and the version decides how many modules it contains. Denso Wave, which invented the format, publishes the version and capacity table. A 30-character short link produces a sparse grid with chunky modules. A 180-character URL with five UTM parameters produces a dense one, and at the same printed size those modules are physically smaller and harder to resolve.

So the cheapest fix available is upstream of the print: encode a short link rather than the full tagged destination. The campaign tags live on the destination, the code stays sparse, and you get click data as a bonus. Bulk QR code generation covers doing that across a whole product catalogue.

Error correction pushes in the opposite direction. Level H sounds safer and adds redundancy that makes the code denser, so it is the wrong default: level M recovers from about 15 percent damage and keeps the grid readable. Elido's designer defaults to M for the same reason, and offers L, M, Q and H. Go higher only when a logo covers the middle; branded QR code design explains how much logo each level can absorb. The error correction levels explained walks through the module counts at each level for the same URL.

Want to test the theory quickly? Create a short link on the free plan, encode that instead of the long URL, and print both at the same size for comparison.

Design Choices That Quietly Break Scans

Styling is the fifth cause, and it hides inside the other four. Elido's QR designer lets you set foreground and background colours, pick module and eye styles (square, rounded, dot), add a logo and a frame. Each of those is safe when it keeps the dark-on-light contrast and the finder squares recognisable, and each can break a scan when pushed: pale brand colours cut contrast, very round dots shrink the dark area of every module, and a large logo spends the error-correction budget.

Elido QR designer with foreground and background colour fields, Square, Rounded and Dot module styles, eye style options, a logo upload button and PNG and SVG download buttons

When you export, the designer gives you PNG or SVG, nothing else. For print, take the SVG: it stays sharp at any size, so a code that blurs on a poster at PNG resolution is not a code problem. The designer has no PDF or EPS export, so if your printer wants one, place the SVG into your layout tool and export from there.

If you only need a plain code to rule the design out, the free QR generator tool makes URL, text, Wi-Fi, vCard, email and SMS codes. Generate the same URL there with no styling and compare it with your branded version on the same phone. If the plain one scans, the styling is the culprit. For the full list of styling limits see branded QR code design, and for how a scanner reads the grid in the first place see what is a QR code.

Testing It Properly Before the Print Run

Screen tests prove almost nothing. The failures above are all physical.

Print the code at final size, put it where it will actually live, and scan it from where a person will actually stand. Do that on at least two phones, one of them not new, and once under the lighting the code will live in. Ten minutes of that catches every cause on this page.

For a run of thousands, sample five. Codes are generated in a loop, so a defect is almost never in one code; it is in the template, and five samples will find it while the fix is still free.

Sometimes the scan works and nothing happens, or the phone opens a page that errors. That's no longer a QR problem. The code decoded correctly and handed a URL to the browser.

If the destination 404s, the certificate is not valid, or the link opens in one app and not another, the causes are entirely different and short link not working walks them. Know which side of the line you're on before reprinting anything. A reprint fixes nothing when the link is the broken part.

That is the strongest argument for a dynamic code on anything printed: when the destination turns out to be wrong, you repoint the link instead of pulping the run. A dynamic code also gets you a short payload for free, which helps the scan itself. One caveat: Elido counts a QR scan as a click and does not separate the two in its analytics, so a drop in clicks cannot tell you whether the code stopped scanning.

In my experience the fix is nearly always the cheapest one on this page, so resist reprinting before you have run the diagnosis table. Start with how to create a QR code, then how big should a QR code be for sizing.

Frequently asked questions

Why is my QR code not scanning?

Almost always one of four things: it is printed smaller than the scanning distance allows, the white margin around it was cropped, the contrast between the code and its background is too low, or the URL inside it is long enough to make the grid too dense for the camera. Test them in that order.

How big does a QR code need to be to scan?

Divide the scanning distance by ten. Someone standing two metres from a poster needs a code about 20 cm wide; a code on a business card read at 30 cm can be 3 cm. Anything below about 2 cm is unreliable on older phone cameras regardless of how good the print is.

What is the quiet zone and why does cropping it break the scan?

The quiet zone is the blank margin around the code, and it is part of the specification rather than decoration. Scanners use it to find where the code starts and ends, so a design that crops the border to save space can stop a technically perfect code from being recognised at all. Four modules is the minimum.

Can a QR code be light on a dark background?

It can, but many scanners expect dark modules on a light field and will fail on an inverted code. If the design needs an inverted look, test it on several phones before printing, and keep the contrast ratio high. A photo behind the code is the version that reliably fails.

Does a longer URL make a QR code harder to scan?

Yes. More characters means a higher version of the code, which means more and smaller modules at the same printed size. Encoding a short link instead of a long tagged URL is the cheapest single fix, because it cuts the module count before anything is printed.

My QR code scans on my phone but not on my customer's. What now?

That points at contrast, glare, or size rather than the code itself, because the data is either decodable or it is not. Test on an older phone, in the actual lighting, at the actual distance. Glossy lamination under shop lights is a common culprit that never shows up on a desk.

Try Elido

Paste a URL, get a working short link

No signup. Link lives for 30 days. Sign up to keep it forever.

No signup needed. Sign up free for 50 links a month.

Try Elido

EU-hosted URL shortener with custom domains, deep analytics, and an open API. Free tier - no credit card.

Tags
qr code not scanning
qr code won't scan
qr code too small
qr code quiet zone
fix qr code
qr code contrast

Continue reading