QR Code Not Working? Here Is Why
Your QR code will not scan. Work through the twelve real causes in order — expired dynamic codes, missing quiet zone, low contrast, wrong size, damaged pattern, camera settings — with the fix for each. Includes a free generator for codes that never expire.
Quick Answer
If a QR code will not scan, check these in order: the code has expired because it was a dynamic code on an unpaid plan; there is no white quiet zone around it; it is printed too small for the scanning distance; the contrast is too low or the colours are inverted; the pattern is damaged, folded, or covered; or QR scanning is disabled in the phone's camera settings. Expiry is the single most common cause, and it only affects dynamic codes — static codes like the ones generated above cannot expire.
How to diagnose a QR code that will not scan
- 1
Step 1: Test the code with a second phone. If it scans on one device and not another, the problem is the scanner, not the code.
- 2
Step 2: Upload a photo of the code to our scanner. If it decodes there, the pattern is fine and the problem is your camera, lighting, or distance.
- 3
Step 3: Check whether it was a dynamic code from a paid service. If the trial ended or the subscription lapsed, the redirect is dead and no amount of scanning will fix it.
- 4
Step 4: Look at the white margin. A QR code needs a quiet zone of at least four modules on all four sides — cropping to the pattern edge breaks it.
- 5
Step 5: Measure the code. It should be at least one tenth of the distance it will be scanned from, and never smaller than 2 cm for handheld scanning.
- 6
Step 6: Check the contrast and polarity. Dark pattern on a light background is what scanners expect; inverted or low-contrast codes fail on many phones.
- 7
Step 7: Inspect the three large corner squares. If any is damaged, folded through, or covered, the code cannot be located at all and error correction cannot help.
- 8
Step 8: If none of that applies, regenerate the code from the original link. It costs nothing and eliminates every file-level problem at once.
Start here: is it expired?
The most common reason a QR code that used to work now does not is that it was a dynamic code. Dynamic codes do not encode your link — they encode a short URL owned by the generator, which redirects to your destination. That indirection is useful, because it lets you change the target after printing. It also means the code is only alive while that company keeps the redirect running.
Free trials end. Subscriptions lapse. Companies shut down. When any of that happens, every printed code pointing at that redirect dies simultaneously — on business cards, menus, packaging, and signage you have already paid to produce. If your code worked last month and does not today, and you did not change anything, this is almost certainly what happened.
A static code has no such failure mode. The link is encoded directly in the pattern with nothing in between, so there is no server that can go away. The generator above produces static codes only, which is why they cannot expire.
The twelve real causes, in the order worth checking
- 1The code expired. A dynamic code whose subscription lapsed. Regenerate as a static code and reprint.
- 2No quiet zone. QR codes need at least four modules of white margin on all four sides. Designers crop this off constantly because it looks like wasted space; it is not.
- 3Printed too small. Below roughly 2 cm, many phone cameras cannot resolve individual modules. For distance scanning, size the code at one tenth of the scanning distance.
- 4Low contrast or inverted colours. Dark-on-light is what decoders expect. Pale grey on white, or light-on-dark, fails on many phones even when it looks fine to the eye.
- 5Damaged position squares. The three large corner squares tell the scanner where the code is. Error correction cannot recover them — if one is torn, folded, or covered, the code is unreadable.
- 6Too much data crammed in. A very long URL produces a dense, high-version code with tiny modules. Shorten the destination URL and the pattern becomes far easier to read.
- 7A logo that is too large. Covering more than about 30 percent of the code exhausts the error correction budget. Keep logos small and central.
- 8Blur, from a low-resolution image scaled up or a bad photo. Regenerate, or export as SVG for print.
- 9Reflective surfaces. Glossy lamination, glass, and screens create glare that blinds the camera. Change angle, or use a matte finish.
- 10QR scanning disabled on the phone. On iPhone, Settings > Camera > Scan QR Codes. On Samsung, the camera's gear icon has its own toggle.
- 11Curved or wrapped surfaces. A code around a bottle or a cup distorts the geometry beyond what decoders tolerate. Keep codes on flat panels.
- 12It is not a QR code. Data Matrix, Aztec, PDF417, and ordinary barcodes look broadly similar and are decoded by different readers.
Narrowing it down in thirty seconds
Two quick tests separate a broken code from a broken scan. First, try a second phone. If a different device reads it, the pattern is fine and your problem is the camera, the lighting, or the distance.
Second, photograph the code and upload it to our scanner. It decodes in the browser and retries at several scales, so it is more forgiving than a live camera. If it decodes there, the data is intact — you are dealing with a scanning condition, not a damaged code. If it fails there too, the pattern itself is compromised and the code needs regenerating.
Codes that work on your desk and fail in the wild
A test that succeeds under office lighting, at 20 cm, on a flagship phone, tells you very little about a code on a wall. Real scans happen in dim restaurants, in direct sunlight that washes out contrast, at awkward angles, from two metres away, on four-year-old handsets with scratched lenses.
Before a print run, test at final size, at the real distance, in the actual lighting, on the oldest phone you can find. Every one of those conditions eats into the same error correction budget, and a code that only just works in ideal conditions has nothing left when they stack up.
Free, private, and permanent
WebsitesQR runs entirely in your browser. Codes you create are static and never expire; images you scan are never uploaded. Learn about QR code safety →
Frequently Asked Questions
Why did my QR code stop working?
If it worked before and nothing about the printed code changed, it was almost certainly a dynamic code whose subscription or free trial ended. Dynamic codes route through the generator's server, so when that redirect stops, every printed copy dies at once. Static codes, like the ones generated above, encode your link directly and cannot expire.
Do QR codes expire?
Static QR codes never expire — the link is encoded in the pattern itself with no server in between. Dynamic QR codes expire whenever the company hosting the redirect stops serving it, which happens when a trial ends, a subscription lapses, or the company shuts down.
Why won't my printed QR code scan when the digital one works?
Usually size, quiet zone, or contrast. Check that the printed code is at least 2 cm across, that the white margin around all four sides survived the crop, and that it was not printed pale or on a busy background. Glossy lamination causing glare is another frequent culprit.
Can a damaged QR code still be read?
Partly. Reed-Solomon error correction can recover roughly 30 percent of a code at the highest level, so scratches, small tears, and a central logo are usually survivable. Damage to the three large corner squares is not — those are how the scanner locates the code in the first place.
Why does my QR code work on one phone but not another?
Camera quality and settings vary a lot. Older cameras resolve fewer modules, and both iPhone and Samsung have a QR scanning toggle that can be switched off. If a second phone reads the code, the pattern is fine — the issue is the scanning device or conditions.
My QR code says 'no usable data'. What does that mean?
The scanner found a code and decoded it, but the content is not something it can act on — often an empty string, malformed text, or a format that app does not handle. Decode it with our scanner, which shows you the raw text and tells you what kind of payload it is.
How do I make a QR code that will never stop working?
Use a static code, which is what the generator above produces. Your link is encoded directly into the pattern with no redirect, no account, and no server that can go away. Print it at the right size with a clear quiet zone and it will keep working for as long as the destination URL exists.