QR code not scanning? Causes and fixes
Almost every scan failure comes down to the scanner not seeing clean, high-contrast modules with a clear margin. Work through the checks below — first the phone, then the printed code, then the data inside it.
1. Check the phone
- QR scanning is switched off. On iPhone, go to Settings → Camera and make sure Scan QR Codes is on. On Android the option lives in the camera app's settings (often called Google Lens suggestions or Scan QR codes) and varies by manufacturer.
- Dirty lens or poor light. Wipe the lens and add light; avoid backlighting.
- Too close or too far. The code should fill a good part of the frame. Move back if the camera can't focus, closer if the code is tiny.
- The code is on your own screen. You can't point the camera at its own display — scan it from the image instead.
Still nothing? Try Google Lens or the browser-based QR reader — if another decoder reads it, the problem is the phone, not the code.
2. Check the design
- Low contrast. Dots must be clearly darker than the background in brightness, not just a different hue. Mid-grey on light grey, yellow on white or navy on black all fail.
- Inverted colours. Light dots on a dark background are not read by many scanners. Use dark on light.
- No quiet zone. The code needs a clear margin — ideally 4 modules — on every side. Text, borders or a busy background touching the code is a classic failure.
- Logo too big. A centre logo only works because of error correction; keep it to roughly 10–15% of the area, use level H, and never cover the three corner squares.
- Over-styled modules. Heavily rounded, tiny or decorative dots, or a gradient that fades toward the background, lower the contrast scanners rely on.
More in design best practices.
3. Check the print
- Printed too small. Use the 10:1 rule — the code's width should be at least a tenth of the scanning distance — and avoid going below about 2 cm. See sizes and print resolution.
- Blurry image. An upscaled low-resolution PNG has soft module edges. Export at the final size or use SVG — see PNG vs SVG.
- Glare. Glossy lamination, screens and shop windows reflect light across the code. Use matte finishes where you can.
- Curved or creased surface. Bottles, cups and folds distort the grid. Print larger, keep the code away from folds and raise error correction.
- Damage and wear. Scratches and dirt accumulate outdoors. Error correction helps, but replace worn codes.
4. Check the content
- Too much data. Long URLs and full contact cards make a dense, fine grid. Shorten the link or point to a web page. See QR code capacity.
- It scans but "doesn't work". The code is fine; the content is wrong — a typo in the URL, a page that was moved, or a Wi-Fi password that changed. Read the raw content with the reader to see exactly what is encoded.
- A dynamic code expired. If the code was made with a subscription service, it may redirect through their server and stop when the plan ends. See can QR codes expire.
- Wi-Fi joins but fails. Usually unescaped special characters or the wrong security type — see the Wi-Fi QR format.
Test before you print
Scan the final artwork — at real size, on the real material — with at least one iPhone and one Android phone, from the distance people will actually stand. Checking a proof costs minutes; reprinting a batch costs much more.
Rebuild it so it scans
Dark on light, a 4-module margin and the right error-correction level are the defaults in the generator.
Open the generatorFrequently asked questions
Why is my QR code not scanning?
The most common causes are low contrast, a missing quiet zone (margin), a code printed too small for the distance, too much data, glare, or a logo that covers too much. On iPhone, also check Settings → Camera → Scan QR Codes.
Why does my iPhone camera not scan QR codes?
Make sure Scan QR Codes is enabled in Settings → Camera, the lens is clean and the code fills enough of the frame. If it still fails, try the Code Scanner in Control Center or a browser-based reader to rule out the code itself.
Can a QR code stop working?
A static code can't expire, but it can be damaged or point to a page that no longer exists. A dynamic code stops working if the service that redirects it is switched off.
Do inverted (white on black) QR codes work?
Some scanners read them, many do not. For reliable scanning use dark modules on a light background.