QR Code Not Working? Every Cause and the Fix
A QR code that will not scan and a code that scans but leads nowhere are two different failures, with two different families of fixes. Point your camera at the code. If a link comes up but tapping it goes somewhere broken, the pattern is fine and the destination is the problem — start with the next section. If nothing comes up at all, the pattern itself is unreadable — skip to "The code will not scan."
It scans, but the destination is broken
The dynamic redirect is gone
If your code worked for months and then quit, this is the likeliest story. Dynamic codes do not contain your destination — they contain a short link on the generator's server, which forwards to your page for as long as the vendor keeps forwarding. Trial ended, plan lapsed, product shut down: the code now lands on an error page or an upgrade pitch. The pattern did not break; the service behind it did.
Scan the code and look at the URL that comes up. A domain you do not own means a dynamic code — or a link shortener, which fails the same way. The fix is to make a static code that encodes your destination directly, and reprint. Do QR codes expire? walks through the whole static-versus-dynamic question.
The URL itself is dead
A static URL code faithfully loads whatever it points at — including a 404. If the page moved or the site went away, the code follows it into the void, forever. Fix the destination, or point a fresh URL code at an address you control.
The WiFi password changed
A WiFi code carries the network name and password inside the pattern. Change either one and every printed copy goes stale at that moment. Print a new code — the WiFi how-to covers it end to end.
The code will not scan
It is printed too small
The working rule of thumb: a code should be at least one tenth as wide as the distance it will be scanned from. A one-inch code across a shop counter works; the same code on a wall poster does not. And the more data a code holds, the denser its grid, the bigger it needs to be printed to stay readable.
The contrast is too low, or the colors are flipped
Scanners expect dark modules on a light background. Inverted codes — light modules on dark — fail on many readers, and low-contrast pairs fail on all of them. Our generator warns when a color pair drops below safe contrast; heed the warning before anything goes to print.
The print is damaged or the surface is glossy
Error correction lets a scanner reconstruct a scuffed code — at the highest level, around a third of the pattern can be lost — but the three large corner squares are how a scanner finds the code in the first place, and no error correction recovers those. Glare is the quieter killer: glossy lamination under a light can white out part of the pattern. Matte prints scan better.
It holds too much data
Every extra character makes the grid finer, and a finer grid magnifies every other problem on this list. Encode a short URL, not a paragraph.
The logo covers too much
A center logo works by spending the code's error-correction budget. Keep the logo modest at the highest error-correction level; oversize it and there is no budget left for real-world damage. Our generator raises error correction automatically when you add one.
Quick answers
Why is my QR code not working?
First check which failure you have: if scanning shows a link that leads somewhere broken, the destination died — most often a dynamic code whose redirect was switched off. If nothing comes up at all, the pattern is unreadable: too small, too low-contrast, damaged, or overstuffed with data.
Do QR codes stop working?
Static codes do not — the destination is encoded in the pattern and there is nothing to switch off. Dynamic codes stop working when the vendor stops redirecting, which happens when a trial or subscription ends or the service shuts down.
Why does my QR code scan but nothing happens?
The code is readable but whatever it points at is not responding: a dead URL, a lapsed dynamic redirect, or a WiFi network whose password has changed since the code was printed. Scan it, read the URL that appears, and check where it actually leads.
Every code from our generator is static: the destination lives in the pattern, nothing depends on a server, and there is no subscription to lapse. Whatever else goes wrong, the code itself will never be the thing that expired.