Why Your QR Code Won't Scan: 9 Real Fixes
A QR code that looks right on screen can be unreadable on a poster. Here are the nine reasons a code refuses to scan, from low contrast to a dead destination, with the fix for each, plus what to check when the problem turns out to be the phone.
Michael Page · Published Oct 5, 2026 · 10 min read

The code looked right in the design file. It looked right on the proof. Now there are 500 flyers in a box, a phone held up to one of them, and nothing happening.
A QR code that will not scan has almost always failed for one of a short list of reasons, and most of them are visible once you know what to look at. Here are the nine that actually cause it.
Start with a 10-second test
Before changing anything, open the code on a screen and scan it from there. That one test splits the problem in half.
- It scans on screen but not on paper. The problem is size, print quality, or placement.
- It will not scan on screen either. The problem is inside the code: contrast, a logo, or too much data.
- It scans, but what opens is broken. The code is fine. The destination is not.
1. There is not enough contrast
This is the most common cause by a distance. A scanner is not reading color, it is reading light against dark. Pale grey on white, navy on black, or two mid-tone brand colors next to each other give it almost nothing to separate.
Use a dark code on a light background with a real gap between the two. If you are matching a brand palette, take the darkest color in it.
There is a check for this that needs no scanner. Turn the image to greyscale, or look at it on a phone with the brightness right down. If the pattern stops being obvious to you, it has stopped being obvious to the camera.
Worth saying plainly about our own tool: the QR code generator lets you set both colors and will not stop you picking two that sit too close together. That check is still yours to make.
2. It is too small for the distance
A QR code has a working range, and it is shorter than people expect. The usual rule of thumb is that the printed code needs to be about a tenth of the distance it will be read from. A code scanned from 2 meters away wants to be roughly 20 cm across.
Posters fail this constantly, as do codes tucked into the corner of a pull-up banner and codes on the back of a vehicle. On a table tent or a business card, where the phone comes within 20 cm to 30 cm, 2 cm to 3 cm is enough.
Bigger is not automatically safer. A code so large that a phone cannot fit all of it in frame at arm's length is just as unreadable as one that is too small.
3. The quiet zone has been cropped
A QR code needs a clear margin around it. The specification asks for four modules' worth, where a module is one of the small squares in the pattern. Without that margin a scanner cannot tell where the code ends and the artwork begins.
This gets lost at layout time: a designer crops to the edge of the pattern, drops the code onto a photograph, or tucks it against a line of text to save space.
Keep a clear band around the code about as wide as four of its small squares, in the background color of the code rather than the background of the page. Codes downloaded from our generator already have that margin drawn into the file, which means the crop that removes it happens afterwards, in whatever the code gets pasted into.
4. The logo has grown
QR codes carry error correction, which is the only reason a logo in the middle works at all. A share of the pattern can be missing and the rest still rebuilds the data. At the highest level that share is about 30%.
That is a budget, not a free pass. A logo at 40% of the width, plus a white ring around it, plus a crop that shaved the quiet zone, spends the same budget three times over.
If you added a logo and the code stopped working, shrink the logo before changing anything else. Our codes are built at the highest error-correction level and the logo size is capped so it cannot grow past what that can absorb. Every size in the allowed range is tested the only way that counts: render the code, read the pixels back, and confirm they return the exact link that went in.
5. The code is carrying too much data
The more characters you encode, the more squares the code needs to hold them. A short link produces a sparse, chunky pattern. A 200-character URL with five campaign parameters produces a dense grid of hair-thin squares that a phone camera struggles to resolve, and that print then blurs further.
Shorten the link before generating the code. A redirect costs nothing and buys back a large amount of readability. The same applies to a WiFi code with a 30-character password, and to a contact code with every optional field filled in.
6. It was printed from the wrong file
A code that scans on screen and fails on paper has usually been through something lossy on the way there.
- Scaled up from a small image, so the squares have soft, blurry edges.
- Saved as a heavily compressed JPG, which puts grey fuzz around every hard edge. Those edges are exactly what the scanner reads.
- Printed on a low-resolution office printer, or on absorbent stock where the ink spreads and the small squares close up.
Generate the code at the size you will print it or larger, and never scale a small one up. Ours downloads as a PNG at up to 1024 pixels across, which is about 8.5 cm at full print resolution and comfortably more on signage, where nobody inspects it from 20 cm away. For anything larger than a poster, get a proof printed and scan that before the run.
7. The code is fine and the destination is dead
Plenty of codes that supposedly do not scan are scanning perfectly. The phone reads them, opens the link, and lands on a 404, a login wall, or a page that never finishes loading on mobile data.
A static QR code holds its destination inside the pattern. Change the page, delete it, or let the domain lapse, and the code goes with it. Nothing about the printed square can be repaired afterwards.
Before a print run, open the link on a phone using mobile data rather than the office WiFi, and watch what a stranger would see. Check it again the week it goes out. If the destination is likely to move, point the code at a link you control and can redirect later, not at the final page.
8. The colors are inverted
Light squares on a dark background is a real design trend and a real source of failures. Most scanners now cope with it. Enough of them still do not, and the ones that do not tend to be older phones and scanners built into other apps rather than the native camera.
If the code has to sit on a dark background, put it on its own light panel instead of inverting it. The look survives and the risk does not.
9. Glare, curves, and where you put it
The last group has nothing to do with the file. These codes are perfect and still unscannable.
- Gloss and lamination. A spotlight or a window turns the code into a white rectangle from exactly the angle people stand at.
- Curved surfaces. A code wrapped around a bottle or a cup distorts past the point a scanner can square it up.
- Height and reach. A code at ankle level, behind a counter, or above head height is one nobody can hold a phone to comfortably.
- Distance and movement. A code on the side of a bus, on a screen that rotates every 8 seconds, or across a train platform has no chance.
Test it where it will live, in the light it will live in, at the distance people will stand.
When it is the phone, not the code
Sometimes every code fails, including ones that worked yesterday. Then it is the phone, and none of the nine fixes above will help.
On an iPhone
The camera reads QR codes without an app, but the setting can be switched off. Open Settings, then Camera, and check that Scan QR Codes is on. Scanning also needs the main rear camera, so back out to 1x if you are zoomed in or on the ultra-wide lens. Hold still for a second as well: the camera will not lock onto a code while it is still hunting for focus.
On Android and Samsung
Recent Android versions scan from the camera app and from the Google Lens button inside it. On Samsung phones the switch lives in the camera app under Settings, then Scan QR codes. If nothing happens, open Lens directly or use the QR scanner tile in Quick Settings.
On any phone, clean the lens first. A fingerprint over the camera is the single most common reason a code refuses to scan for one person and reads instantly for the person standing next to them.
Test it properly before you print
Five minutes here is worth more than every fix above, because it catches the ones you did not think to check.
- Scan it from at least three phones, including one old one and one Android.
- Scan the printed proof, not the file on your screen.
- Scan it at the distance and angle people will really use.
- Scan it in the light it will live in, including a dim restaurant or direct sun.
- Open the destination on mobile data rather than WiFi.
If it is quicker to start again from a clean code, the QR code generator handles the quiet zone and the error correction for you, and a plain code downloads without an account.
For a code that carries contact details rather than a link, how to create a QR code for a business card covers what to put in it and what to leave out.
Quick answers
Why is my QR code not scanning on my iPhone?
Check three things in order. Open Settings, then Camera, and confirm Scan QR Codes is on. Back the camera out to 1x, because scanning uses the main rear lens and not the ultra-wide. Then clean the lens and hold the phone still for a second, since the camera cannot read a code while it is still focusing. If other codes scan and only one does not, the problem is that code rather than the phone.
Why is my QR code not working on my Samsung phone?
Open the camera app, go to its Settings, and turn on Scan QR codes. Samsung ships this switched off on some models. If it is already on, try the QR scanner tile in Quick Settings or open Google Lens directly, which reads codes the camera app sometimes skips. A dirty lens and a zoomed-in camera cause the rest.
Can a QR code expire?
The pattern does not. The link inside it can. A static code holds its destination permanently, so it keeps working for as long as that page exists, and it dies the moment the page is deleted, moved, or its domain lapses. Codes sold as expiring are redirects that the provider switched off, which is a different thing from the code itself going bad.
Why does my QR code scan on screen but not when printed?
Almost always size, resolution, or the quiet zone. The code was printed smaller than its scanning distance allows, scaled up from a small image so the edges went soft, or cropped tight at layout so the clear margin around the pattern disappeared. Print a proof and scan that before committing to a run.
Does adding a logo stop a QR code from scanning?
Not if it stays small. Error correction lets a QR code lose about 30% of its pattern at the highest level and still rebuild the data, which is what makes a center logo possible. Push past that, or combine a large logo with a cropped margin and a low-contrast color, and the code stops reading. If a code broke right after you added a logo, make the logo smaller first.

