Utilities10 min read

QR Code Not Scanning? 9 Reasons It Fails and How to Fix Each One

A QR code that will not scan is almost always one of nine specific problems, and most of them take seconds to fix. Here is how to tell whether the fault is your camera, the lighting, the code itself or the link behind it.

You hold your phone over the code on a menu, a parcel label or a poster, and nothing happens. No banner, no notification, just the camera looking at a square of black and white. Ten seconds later you feel slightly ridiculous and start moving the phone around at random.

Almost every one of these failures comes down to nine causes, and you can work through the whole list faster than you can find someone to ask. The first job is to find out whether the fault is on your side of the camera or the other one.

The 30-Second Triage

Before you troubleshoot anything, run one test. Open a QR code you know works, on a laptop screen or another phone, and point your camera at it.

ResultWhat it meansWhere to look
Known code scans, target code does notThe code is at faultPrint quality, size, contrast, quiet zone
Nothing scans at allYour phone or its settingsCamera settings, lens, focus, case
Code scans but the page failsNeither, the link is deadExpired dynamic code, moved page, no signal

That single test saves you from cleaning a lens for two minutes when the real problem is a poster that was printed at 40 percent scale.

Causes 1 to 5: Your Phone

1. QR scanning is switched off

The iPhone camera reads QR codes through a setting that can be turned off, and plenty of people turn it off years ago and forget. Go to Settings, Camera, and check that Scan QR Codes is on. On Android the equivalent lives in the camera app settings, sometimes labelled Google Lens suggestions or Scan QR codes.

If the setting is on and still nothing appears, force close the camera app and reopen it. A camera session that has been running in the background for a long time occasionally stops offering the scan banner until it restarts.

2. You are too close, or too far

This is the single most common technique error. Phone cameras need a minimum focus distance, and holding the phone right against a small code puts it inside that distance, so the image never sharpens enough to decode.

Start at about 20 to 30 centimetres and move slowly. For a large code on a wall or a window, step back rather than forward: a big code read from half a metre works, the same code read from 5 centimetres does not. Keep the phone still for a full second so autofocus can settle. Constant hand movement is why the code that eventually scans always seems to scan when you give up and hold still.

3. The whole code is not in frame

A QR code needs all three big corner squares, the finder patterns, plus the quiet zone around the edges. Crop off a corner or zoom in so tightly that the white margin disappears and decoding fails even though the picture looks fine to you.

Frame the entire square with a visible margin of background around it. If the code is on a curved surface such as a bottle or a coffee cup, rotate the object so the code is as flat as possible before you try again.

4. Light, glare and reflections

Two opposite problems produce the same result. In dim light the camera raises exposure, the image gets noisy and the small modules smear together. Under a bright light or behind glass, a specular reflection wipes out part of the pattern entirely.

For dark places, turn on the flashlight from Control Centre before you open the camera. For glare, do not add light. Change the angle instead. Tilt the phone 15 to 20 degrees so the reflection moves off the code, or move your own shadow over it. QR decoding tolerates a surprising amount of perspective distortion, so an angled shot is usually fine.

5. A dirty lens or a case in the way

Pocket lint, a fingerprint or a smear of sunscreen turns every close subject into a soft blur, and a QR code is a close subject with fine detail. Wipe the rear lens on a cloth, not on your shirt.

Thick cases cause a subtler version of the same problem. A raised camera bezel can vignette the corner of the frame, and a stick on lens protector that has scratched will scatter light at exactly the wrong scale. If your camera struggles with close detail generally, the case is a fair suspect.

Causes 6 to 9: The Code

6. Printed too small for the reading distance

The practical rule for printed codes is that the code should be roughly one tenth of the distance it will be read from. A code you scan at arm's length, around 30 centimetres, wants to be about 3 centimetres square. A code on a shop window read from 3 metres needs to be about 30 centimetres across.

Most print guidance treats 2 by 2 centimetres as the smallest usable size for a phone camera, and codes below that fail regularly even in good light. If you are looking at a code the size of a postage stamp on a receipt, it is not you.

7. No quiet zone

The quiet zone is the blank margin around the code, and the specification asks for four modules of clear space on all four sides. A module is one of the small squares that make up the pattern, so on a dense code that margin is small in absolute terms and very easy for a designer to delete.

Codes butted straight up against text, a photo edge or a coloured background block often fail on the first try and scan only from an unusual angle. There is nothing you can do about it as a scanner except try to isolate the code, for example by covering the busy area next to it with a piece of paper.

8. Low contrast, inverted or over-designed

QR decoding needs dark modules on a light background. Three design decisions break it:

  • Inverted colours. Light modules on a dark background fail on many scanners, because most decoders assume dark on light.
  • Weak contrast. Mid grey on light grey, or a dark blue on black, may look elegant and still leave too little separation to threshold reliably.
  • Heavy customisation. A logo dropped in the middle is fine within limits, because error correction can rebuild lost data. Push past that limit, round every module, or run a gradient across the pattern, and you have spent the entire error correction budget on decoration.

Error correction levels are the reason some decorated codes still work. Level L recovers about 7 percent of the data, M about 15, Q about 25, and H about 30. A code printed at level H survives a logo and a coffee stain. A code at level L survives neither.

9. Damage, wear and screen problems

Physical codes wear out. Parcel labels get scuffed, restaurant table stickers get scrubbed with cleaner every night, and outdoor posters fade in sun and rain. Fading hurts contrast, and scratches through the finder patterns are usually fatal, since those three corner squares are how the decoder locates and orients the code in the first place.

Codes displayed on a screen have their own failure mode. Low brightness, an aggressive blue light filter or a matte screen protector can all push contrast below the threshold. Turn the brightness up before you show a boarding pass or a ticket to a scanner.

When the Code Scans but the Link Fails

If your phone shows a URL banner and the page then fails, the decoding worked perfectly. What you have is a dead destination, and it is worth knowing which kind.

TypeHow it stores the linkWhy it dies
StaticThe URL is encoded in the pattern itselfOnly if the page moves or goes offline
DynamicEncodes a short redirect the provider controlsExpired plan, deleted campaign, provider shut down

Dynamic codes are convenient because you can change the destination after printing, and that convenience is exactly what makes thousands of printed codes stop working when a subscription lapses. For anything printed to last, on packaging, signage or equipment labels, a static code pointing at a URL you control is the durable choice. Our guide to making a QR code for free walks through both types and when each one is worth it.

One more possibility: the link resolves fine but you have no data connection. A code in a car park basement or on a plane will decode and go nowhere. That is not a QR problem either.

A Note on Codes You Should Not Force

If a code fails and something about the situation feels off, a sticker layered over the original on a parking meter, a code on an unexpected letter, a poster promising a refund, stop trying to make it work. Overlaid stickers on public codes are a standard scam technique, and persistence is precisely what the attacker is counting on. Our guide on spotting a quishing scam covers what to check before you tap any decoded link.

If You Are the One Printing the Code

Most unscannable codes in the world were broken by the person who published them. Five rules prevent nearly all of it:

1. **Size for the reading distance.** One tenth of the distance, and never below 2 centimetres square in print.

2. **Keep the quiet zone.** Four modules of clear space, all four sides, no exceptions for layout.

3. **Dark on light, high contrast.** Test any coloured version in greyscale. If it looks weak there, it will scan weakly.

4. **Use error correction level Q or H if you are adding a logo.** Then keep the logo under the recovery budget.

5. **Test the final printed piece.** Not the file on screen. Print it at the real size, on the real material, and scan it with an old phone in poor light. That is the worst case your customers actually have.

Shorten the URL before you encode it, too. Fewer characters means a lower module count, larger individual modules at the same physical size, and a code that reads faster from further away.

Where a Scanner App Fits

The stock camera is fine for a healthy code in good light. It is deliberately conservative, because it is a camera first, and it gives you a single banner with no history and no help when the code is marginal.

Smart QR & Barcode Reader helps in the cases the camera app handles poorly. You can scan from a photo, which is the fix when a code is on a screen you cannot hold still or on a label you photographed earlier. It keeps a scan history, so a code you scanned last week is still there when the printed copy is gone. It also reads the linear barcode formats the camera app largely ignores, and it can generate codes, which is useful when you want to test your own before printing a thousand copies. If you want the background on the formats themselves, our barcode versus QR code comparison explains what each one can carry.

The limits are worth being straight about. No app can decode a code that is physically damaged through its finder patterns, printed at half the size it needed, or missing its quiet zone. Software can improve thresholding and give you more attempts. It cannot invent data that was never printed. And no scanner makes a suspicious link safe: reading the destination before you tap is still your job. For the basics of the built in flow, see our guide to scanning QR codes on iPhone.

The Bottom Line

Work the list in order. Check the camera setting, back off to 20 or 30 centimetres, hold still for a second, frame the whole code with its margin, add light or change the angle, wipe the lens. If a known good code scans and this one does not, stop blaming your phone: the code is too small, too faint, too damaged or too decorated, and no amount of waving will fix that.

And if you print codes, print one, take it outside, and try to scan it with the oldest phone in the office. That five minute test prevents the most expensive version of this problem, which is discovering it after the run has shipped.

Frequently Asked Questions

Why is my iPhone not scanning a QR code?

The most common cause is that Scan QR Codes is switched off in Settings, Camera. After that it is distance and focus: hold the phone about 20 to 30 centimetres away, keep it steady for a second so autofocus locks, and make sure the whole code including the white border is inside the frame. Dirty lenses, a thick case edge and very low light account for most of the rest. If a second phone scans the same code instantly, the problem is your phone or your technique. If neither phone can read it, the code itself is the problem.

How do I know if a QR code is broken or if my camera is the problem?

Test with a code you know works, such as one you generate yourself on screen. If your camera reads that but not the one in front of you, the code is damaged, printed too small, too low in contrast, or missing its quiet zone. Then test the suspect code with a different phone. Two phones failing on the same code and succeeding on a known good one is conclusive: the code is at fault, not the scanner.

What size should a printed QR code be?

A widely used rule is that the code needs to be about one tenth of the scanning distance. Read from 30 centimetres, that means roughly a 3 centimetre square, and most print guidance treats 2 by 2 centimetres as the practical floor for a phone camera. Add a quiet zone of clear space around all four sides equal to four times the width of one module, and never print the code smaller because the layout is tight. A code nobody can scan wastes the whole space.

Why does my QR code scan but open the wrong page or an error?

That is not a scanning failure at all. The camera decoded the data correctly and the destination is broken. Dynamic QR codes point at a short redirect link that the provider controls, so an expired plan, a deleted campaign or a shut down service turns every printed copy into a dead link. Static codes contain the URL directly, so they only break if the page itself moves. If you are printing something that has to last for years, static is the safer choice.

Try Smart QR & Barcode Reader

Mentioned in this article. Download free from the App Store.

More Articles