Why is my QR code not scanning?
Nine causes, ordered by how often they are actually the problem, each with the fix.
Almost every failed QR code comes down to one of nine things. They are listed here roughly in the order they turn out to be the cause, so working top to bottom is the fastest route to a fix.
Before starting: confirm the code is fine on screen. Scan it directly from your monitor. If it works there and fails in print, the problem is in the printing — causes 1 to 5. If it fails on screen too, skip to cause 6.
1. It is printed too small
The most common cause by a wide margin.
The rule of thumb is a 10:1 ratio: the scanning distance divided by ten gives the minimum width of the code. A code scanned from 2 metres needs to be about 20 cm across. One on a table tent scanned at arm’s length needs roughly 5 cm.
Below about 2 cm, most codes struggle regardless of distance, because printer dot size and camera resolution stop resolving individual modules.
More detail in QR code size for print.
2. The quiet zone was cropped
The white border around a QR code is part of the symbol. The spec calls for four modules’ width — roughly the width of one of the corner squares.
Designers crop it constantly, because it looks like wasted space. It is not: scanners use it to find the code’s edge. A code butted up against a coloured background, a photo, or the edge of a card frequently fails for this reason alone and no other.
3. Not enough contrast
Scanners need dark modules on a light background. Three things break this:
- Light-on-dark (inverted) codes. Some scanners handle them, many do not. Not worth the risk in print.
- Low-contrast colour schemes. A pastel code on a cream background may look right on screen and be unreadable to a camera. If it fails a greyscale test, it will fail scanning.
- Printing on a coloured or patterned surface without a solid light panel behind the code.
Black on white scans. Everything else is a gamble you are taking on your customers’ behalf.
4. The surface or finish is fighting the camera
Glossy laminate, foil, and glass all throw specular reflections that blind the camera at exactly the angle people naturally hold a phone. Matte finishes scan far more reliably.
Curved surfaces — bottles, cups, cans — distort the grid. Smaller codes tolerate curvature better, and higher error correction helps.
Fabric and textured paper blur module edges. Print larger than the 10:1 rule suggests.
5. The image was stretched or resampled
A QR code must stay square. Non-uniform scaling in a layout program turns modules into rectangles and the grid stops resolving.
Resizing a small PNG up produces soft, blurred edges. Always scale down from something large, or better, use the SVG — it is vector, so it stays sharp at any size. Our generator exports both.
Watch for compression too: a QR code saved as a low-quality JPEG picks up ringing artefacts around every edge. Use PNG or SVG, never JPEG.
6. Too much data in the code
The more you encode, the more modules the code needs, and the finer each module becomes at a given printed size.
A 300-character URL with tracking parameters produces a visibly dense code that needs to be printed much larger than a short one. If yours looks like static, this is why.
Shorten the URL before generating. Dropping utm_ parameters or using a short link often takes a code from unscannable to comfortable at the same print size.
7. Error correction is too low for the conditions
Level L leaves almost no margin. On anything that will be handled, folded, or exposed to weather, use Q or H.
If you have put a logo over the centre, this is very likely your problem. The logo destroys modules and error correction rebuilds them — but only up to its limit. Level H tolerates around 30% loss. A logo covering much more than that, or one placed over a corner finder pattern instead of the centre, produces a code that fails permanently.
Never cover a finder pattern. The scanner cannot locate the code without all three.
8. The content is right but the action fails
Sometimes the code scans perfectly and nothing useful happens. That is not a scanning problem.
- Wi-Fi codes: wrong security type, a stray space in the password, or “hidden network” ticked for a visible network. See how to create a Wi-Fi QR code.
- URLs: a missing
https://prefix, or a link that 404s. - Special characters in structured formats like Wi-Fi or vCard that were not escaped when the code was built.
Decode the code with a plain QR reader that shows raw text — that tells you immediately whether the data is wrong or the destination is.
9. The scanning app, not the code
Before reprinting anything, try a second phone. Older Android devices without Google Lens, some in-app scanners, and a few camera apps are simply worse at this than others.
If it works on three phones and fails on a fourth, the code is fine.
A test worth doing every time
Before any print run: put the final artwork on a phone screen at the size it will be printed, and scan it with a different phone. It takes under a minute and catches most of causes 1 through 7 before they become a reprint bill.
If you need to rebuild the code, the QR code generator exports SVG for print and lets you raise the error correction level directly.