QR code not scanning
A symptom-by-symptom checklist for codes that will not read, or that read but go to the wrong place, with the fix for each.
Short answerMost QR codes that fail are too small for the scanning distance, too dense because the URL is long, low in contrast, inverted, or missing the white quiet zone around them. If the code scans but nothing useful opens, the problem is the link itself: a typo, a missing page, or a destination that has moved.
First, find out which kind of failure it is
There are two very different problems hiding behind “it doesn’t work”, and they have nothing in common. Spend ten seconds working out which one you have before changing anything.
- The camera never reacts. No link preview appears at all. The phone cannot read the pattern, so the cause is physical: size, density, contrast, margin, surface, or the way the code was printed or exported.
- The camera reads it, but the page is wrong. A preview appears and the browser opens, then shows an error, the wrong page, or nothing. The code is fine; the URL inside it is the problem.
To check the second case, scan the code and read the address in the preview before you tap it. If the address is what you meant to encode, the code itself is working and the fix belongs on the website, not on the print.
Symptom, likely cause, fix
| Symptom | Likely cause | Fix |
|---|---|---|
| Scans close up, not from where people stand | Code too small for the distance | Print it at about a tenth of the scanning distance |
| Scans on new phones only; looks like fine grain | Too dense: long URL, small modules | Shorten the URL, or print the code larger |
| Never scans, on any phone | Quiet zone cropped, or code sits on a busy background | Restore a clear white margin four modules wide |
| Light pattern on a dark background fails | Inverted colours | Dark modules on a light background |
| Pale or coloured code fails in dim light | Low contrast | Use black, or a very dark colour, on white |
| Fails from some angles only | Glare from gloss, lamination, or a curved surface | Matt finish; flat area; larger code on curves |
| Edges look soft or blocky | Small bitmap enlarged for print | Use the SVG, or the PNG at its natural size or smaller |
| Some phones read it, others give up | Damaged, scuffed, or poorly printed modules | Reprint; protect codes that will be handled |
| Scans, then shows a 404 or error page | Page deleted, moved, or behind a login | Restore the page or add a redirect on the site |
| Scans, then opens the wrong site | Typo in the URL when the code was made | Regenerate from the correct, tested URL |
Work down the table in order. Size, density, and the quiet zone account for most failures, and they are cheaper to check than anything else.
Fixing a code the camera cannot read
Size and density
A phone has to resolve each module — each small square — as a separate shape. A long URL produces more modules in the same area, so each one is smaller. The generator on this site shows the version and module count under every code; if the number is high, cut tracking parameters or use a shorter path before you enlarge anything. QR code size for printing has the distance and density tables, and how much data a QR code can hold explains why length matters.
Contrast and colour
Scanners look for dark modules on a light background. Inverted codes, pastel colours, and codes printed over a photograph or gradient all reduce the difference the camera relies on. The downloads from this site are black on white by default for that reason, and the custom generator refuses inverted or low-contrast colour pairs; if you recolour a code afterwards, read QR code colours first.
The quiet zone
Both downloads include a white margin four modules wide. It tells the scanner where the symbol ends. Designers often crop it or let a coloured panel run right up to the code, and that alone can stop it reading on every phone.
Surface and print quality
- Glossy finishes and laminates reflect light straight into the camera. A matt finish fixes it.
- Curved surfaces such as bottles and cups bend the pattern. Keep the code small relative to the curve, or place it on a flat label area.
- Enlarged bitmaps have soft or stepped edges. Use the vector SVG for print — see PNG vs SVG.
- Scuffs and tears remove modules. Error correction recovers some damage, not unlimited damage.
Fixing a code that scans but goes nowhere
A static code contains the URL itself, so it opens exactly what was typed when it was made — no more, no less. If that address is wrong or gone, the code cannot be edited, but the website usually can.
- Page moved or deleted. Put a permanent redirect on the old address pointing to the new one. Every printed code starts working again.
- Typo in the URL. If you control that wrong address, redirect it; otherwise regenerate the code and reprint.
- Page needs a login, or is a private document. Make it public, or share a link that does not require an account.
- Domain expired. Renew it. This is the one failure that turns old codes into links to someone else’s site.
Codes made on this site do not stop working on their own: there is no redirect service in between. If a code from elsewhere has stopped working, do QR codes expire? explains why dynamic codes sometimes do.
Catching it before it is printed
- Paste the exact URL into a browser and check it loads, while signed out.
- Generate the code and note the version shown under it.
- Print a proof at the final size, on the final material.
- Scan the proof from the real distance, in the real light, with at least two different phones.
- Read the address in the scan preview, then tap through to the page.
If you are scanning someone else’s code and your phone does not react at all, the problem may be on the phone side — see how to scan a QR code.
Make a fresh black-on-white code with the quiet zone included:Generate a QR code
Related questions
The usual causes are a code that is too small for the scanning distance, too dense because the URL is long, low in contrast, or missing its white margin. Glare, curved surfaces, and blurry enlarged images are the next most common.
The code is marginal: newer cameras resolve small or dense codes that older ones cannot. Make the code larger, shorten the URL to reduce density, or improve contrast until it reads reliably on older phones too.
The code is working; the address inside it is not. The page may have been moved, deleted, or put behind a login. Restore it or add a redirect from the old address, and the printed code will work again.
You cannot change the pattern, but if the problem is the destination you can usually fix it on the website with a redirect. If the problem is size, contrast, or a cropped margin, the code has to be reprinted.
Some phone cameras read inverted codes, but many scanners do not, so they fail unpredictably. Use dark modules on a light background for anything that has to work for everyone.