Why is my QR code not scanning? Causes and fixes that actually work

When a QR code will not scan, the problem is almost never the phone. In most cases it is one of five things: the code is printed too small for the distance, the contrast is too weak, the blank border around it has been cropped or crowded, a logo or design element covers too much of the pattern, or the link inside it is wrong. Each of these can be checked in a few minutes, and most can be fixed without changing anything except the artwork.
Below is the order I work through when someone hands me a flyer, label or menu with a code that "just doesn't work". Start at the top; the early checks catch most failures.
First, work out what kind of failure you have
"Not scanning" covers three different situations, and each points to a different cause.
- The camera does not react at all. No frame around the code, no link preview. This is a physical problem: size, contrast, quiet zone, glare, damage, or a design that hides the corner squares.
- The camera reads the code but opens the wrong thing or an error page. The code itself is fine. The data inside it is wrong: a typo in the URL, a page that has since moved, or a page that needs a login.
- It works on one phone but not another. The code is borderline: dense, small or low in contrast. Newer phones with better cameras cope; older ones do not. Treat this as a design problem, not a phone problem.
Cause 1: The code is too small for the scanning distance
A widely used rule of thumb is that a QR code's width should be about one tenth of the scanning distance. Someone holding a flyer at 25 cm needs a code roughly 2.5 cm wide. A poster read from 2 metres away needs something closer to 20 cm. For anything held in the hand, treat 2 × 2 cm as the practical minimum, and go larger if the code contains a long link.
The quickest test: print the page at actual size, stand where a real person would stand, and scan. If you have to step closer, the code needs to grow.
Cause 2: Too much data packed into the pattern
Every character you put into a QR code adds modules, the small dark and light squares. A short homepage address produces a clean, open pattern. A 200-character link full of tracking parameters produces a dense grid of tiny squares that blurs when printed small. If your code looks like grey static from arm's length, shorten what it contains: remove unnecessary parameters, use a shorter page path on your own site, or link to a simple landing page instead of a deep URL.
Cause 3: Weak contrast or inverted colours
Scanners look for dark modules on a light background. Navy on white works. Light grey on white, red on dark green, or a code laid over a photograph often does not. Two specific traps:
- Inverted codes, with light modules on a dark background, are not read by every scanner app. If your brand style demands a dark background, put the code on a white panel.
- Gradients and textures inside the modules confuse the camera. A flat, single colour is safer.
Cause 4: The quiet zone has been cropped or crowded
The blank margin around a QR code is part of the code. The QR standard calls for a margin four modules wide on every side. Designers often trim it to save space, or place a border, text or another graphic right against the edge. Without that margin the scanner cannot tell where the code starts. The Online Toolsz QR Code Generator includes the margin in the downloaded PNG, so the simplest rule is: do not crop the image, and keep other elements outside that white border.
Cause 5: A logo covering too much of the pattern
QR codes include error correction, which lets a scanner rebuild missing data. That is what makes a centre logo possible, but there is a limit. If you add a logo, set error correction to H, the highest level, keep the logo small, and never let it touch the three large corner squares. In our generator the logo is drawn at a fixed pixel size, so on a small size setting it takes up a larger share of the code. Raise the size slider when you use a logo, and scan the preview before you download it.
Cause 6: Print and surface problems
- Glare. Gloss lamination and shiny stickers reflect light straight back at the camera. Matte finishes scan far more reliably, especially under shop or restaurant lighting.
- Curves and folds. A code wrapped around a cup or printed across a fold distorts the grid. Place it on a flat area, or keep it small relative to the curve.
- Stretching. If someone resized the image in a layout program without keeping the proportions, the squares become rectangles. Always scale with the aspect ratio locked.
- Blurry export. Re-saving the code as a low-quality JPEG or enlarging a tiny PNG produces soft edges. Generate it at a larger size instead of stretching a small file.
- Wear. Codes on tables, floors and doors get scratched. Replace them when the corners start to fade.
Cause 7: The code works, but the link does not
If the phone shows a preview but people land on an error, the code is doing its job. Check the destination:
- Open the exact link in a private browser window where you are not signed in. Drafts, admin previews and shared documents with restricted access often work for you and nobody else.
- Look for typos, such as a missing letter or a wrong domain ending.
- Check whether the page was moved or renamed after the code was printed.
A static code always points to exactly what you typed. If you expect the destination to change, read static vs dynamic QR codes for small business before reprinting.
Quick troubleshooting table
| Symptom | Most likely cause | Fix |
|---|---|---|
| No reaction at normal distance | Code too small or too dense | Enlarge it, or shorten the link |
| Scans only very close up | Size does not match distance | Use the one-tenth rule |
| Scans on new phones only | Low contrast or tiny modules | Darker colour, larger print |
| Fails after adding a logo | Logo too large or error correction too low | Level H, smaller logo, bigger code |
| Fails under lights | Glare from a gloss finish | Matte paper or lamination |
| Opens an error page | Wrong or restricted link | Test in a private window |
How to test properly before you print again
- Regenerate the code from a clean, checked link.
- Print one copy at the real size on the real paper or label stock.
- Scan with at least two phones, ideally including an older model, using the built-in camera app.
- Scan from the real distance and angle, under the lighting where the code will be used.
- Only then send the full batch to the printer.
For specific numbers on size, margin and error correction levels, see the QR code size and error correction guide.
FAQ
Can a QR code stop working over time?
A static QR code does not expire; the pattern contains the link directly. It stops working when the page it points to disappears, or when the printed copy is damaged or faded.
Why does my QR code scan on screen but not on paper?
Screens are bright and sharp, so they hide weaknesses. Paper adds blur, ink spread, glare and lower contrast. A code that is borderline on screen will often fail once it is printed small.
Does the colour of the QR code matter?
Contrast matters more than colour. Dark blue, dark green or deep purple on white can scan well. Pale colours, and light codes on dark backgrounds, are where trouble starts.
Can I fix a code that is already printed?
Sometimes. If the quiet zone is crowded, a white sticker border can help. If the code is too small or the link is wrong, the only reliable fix is a new code and a reprint, which is why testing a single proof first saves money. Design for the phone's built-in camera app rather than a dedicated reader, since that is what most people will use.