QRWisp
Troubleshooting8 min read

Why is my QR code not scanning? 11 causes, in order

A diagnostic checklist ordered by how often each cause actually happens — from logo coverage and low contrast to inverted colours and damp cardboard.

A QR code either decodes or it does not — there is no partial credit. Work through these in order, because the list is sorted by how often each one is actually the culprit.

1. The logo is too big

The most common cause by a wide margin.

Error correction can rebuild damaged modules, but only up to a budget. Even at the highest level (H) that budget is about 30% of the code — and that allowance is meant for scratches and smudges, not for a logo eating the centre.

Fix: keep the logo at or under 25% of the code area, and set error correction to H whenever a logo is present. Our generator raises it to H automatically and tells you the exact percentage your logo covers.

2. Contrast is too low

Pale grey on white, beige on cream, pastel on pastel. It looks tasteful in the mockup and fails under real lighting.

Fix: aim for a contrast ratio of at least 4.5:1 between modules and background. If in doubt, near-black on white always works.

3. It is printed too small

The rule is that a code should be at least one tenth of its scanning distance. A 2 cm code read from 3 metres is not going to work no matter what else you fix.

Fix: 2 cm minimum for handheld scanning; scale up linearly with distance. See our size chart.

4. The quiet zone is missing

QR codes need 4 modules of empty margin on every side. Scanners use that blank border to locate the code.

Fix: leave the margin genuinely empty — no text, no frame, no background image creeping in.

5. The colours are inverted

Light modules on a dark background break the assumption most decoders start from.

Fix: dark modules on a light background. Always. If the design demands a dark panel, put the code in a light box inside it.

6. Too much data is packed in

Every extra character adds modules. A long vCard produces a dense grid whose individual squares become tiny at the same printed size.

Fix: shorten aggressively. Drop tracking parameters from URLs. Cut optional vCard fields. Or print the code larger.

7. It was scaled up from a small raster file

Taking a 300 px PNG and stretching it to fill a poster produces blurred, uneven module edges.

Fix: use SVG, PDF or EPS for print. They are vector and stay sharp at any size. If you need PNG, export at 300 DPI for the final printed dimensions.

8. Ink spread on absorbent material

Newsprint, kraft, cotton and uncoated card all absorb ink, thickening dark modules until the white gaps close.

Fix: print 10–15% larger than the calculated minimum on absorbent stock, and test physically.

9. Glare, curvature or damage

Glossy lamination reflects shop lighting straight into the camera. Bottles and cans bend the grid. Damp cardboard warps it.

Fix: prefer matte finishes. On curved surfaces keep the code under about a third of the circumference and enlarge it. Position away from folds and handling wear.

10. The destination is broken, not the code

Easy to misdiagnose: the code scans perfectly and the browser shows an error. That is not a QR problem.

Fix: read the decoded text with a reader like ours and test that URL directly in a browser. Typical culprits are a missing https://, a typo, an expired link, or a Google Drive file that is not shared publicly.

11. The scanning app is the problem

Some older Android builds need a dedicated app rather than the camera. Some corporate devices block camera-based scanning entirely.

Fix: test on at least two phones, one of them older. If it works on a modern iPhone but not a five-year-old Android, the code is marginal — enlarge it and raise the contrast rather than declaring it fine.

A 60-second diagnostic

  1. Open the code on a screen at large size. Does it scan? If not, the problem is in the code itself — logo, contrast, or data volume.
  2. If it scans on screen but not in print, the problem is size, resolution or material.
  3. Read the decoded text. If the text is right but the page fails, the problem is the destination.
  4. Try a second, older phone before concluding anything.

Prevention beats diagnosis

Everything above is avoidable at generation time. QRWisp decodes every code it produces — the same way a phone camera would — and compares the result against what you typed, then checks contrast and logo coverage. If a code would fail in the real world, you are told before you download it, with the specific change that fixes it.

You can also test codes made anywhere else with our QR code tester.

Need a QR code right now?

Free, no signup, no watermark. Every code is tested before you download it.

Open the generator

Keep reading