Field notes

QR code troubleshooting, start to finish

Won't scan, scans sometimes, or scans to nowhere? Find your failure in the table, follow its fix, and test again — most codes are fixed without reprinting.

November 3, 2026 · 15 min read

A QR code that will not scan is rarely a mystery. Most failures come down to one of eleven causes, and they split into three questions: is the pattern unreadable, is the phone struggling, or did the code scan fine and the destination let you down? Answer those first, and you will not reprint a sound code — or fix a pattern when the link is dead.

Check these three first

  1. Try a second phone. If another phone reads the code, the pattern is fine. Skip to the phone checks below.
  2. Look at the code, not the screen. Is it small, pale, crowded by nearby text, covered by a logo, scratched, or faded? Any one of those can make a pattern unreadable. Also try a fresh copy of the original file: if the fresh copy scans, the original print failed, not the data.
  3. Read what the scan returns. If the phone recognises the code but the page never loads or lands somewhere unexpected, the pattern did its job. The destination is the problem: a deleted page, a mistyped link, or a switched-off dynamic code.

One distinction matters throughout: a code that never scans has a pattern or camera problem, while a code that scans sometimes — in bright light but not dim light, up close but not at arm's length — is a borderline code. Borderline codes pass at your desk and fail in a customer's hands: treat a sometimes-code as broken.

The cause table: every common failure at a glance

CauseSymptomQuick testFixDeep dive
Too smallOnly scans from very closeScans closer up? Size is the faultPrint largerSize guide
Blurry / low resolutionSoft edges, smudged squaresSoft in the file? Bad exportRe-export as PNG or SVGBlur fixes
Low contrastScans in bright light, fails in dim lightWould it read in black and white?Dark code on a light backgroundDiagnosis
Quiet zone crowdedScans cropped, fails in designCover nearby text: scans now?Restore a clear margin, 4 modules wideDiagnosis
Logo too bigScanned before the logo, fails afterRegenerate without the logoSmaller logo, higher error correctionLogo codes
Damage or dirtWorked when new, fails after handlingCompare with a fresh printClean, protect, or reprintDiagnosis
Dead linkScans, but page missing or wrongOpen the link on a computerRestore or repoint the destinationDo codes expire?
Light and glareScans at one angle, fails at anotherTilt away from the lightMove the light, use matte finishDiagnosis
Camera permission / focusFails on one phone onlySecond-phone test, plus a lens wipeAllow access, clean lens, hold steadyHow to scan
Dynamic code switched offScans to an error pageCheck the code in its DashboardReactivate or replace itDo codes expire?
Code on its own screenCamera cannot face its own displayExpected, not a faultDecode the image file insteadFrom an image

The pattern itself: six ways a code becomes unreadable

1. Too small for the scanning distance

Small codes fail because cameras cannot resolve the individual modules — the little squares — when they are tiny in the frame. As a rule of thumb, keep printed codes at least 2 × 2 cm, and scale up with distance: the code's width should be at least one-tenth of the expected scanning distance. A table card scanned from 50 cm needs a code around 5 cm wide; a poster scanned from 5 metres needs one around 50 cm wide. Dense codes holding long links need more room than short links. The full sizing tables are in the print size guide.

2. Blurry or low resolution

Blur means too few pixels stretched across too much space, so module edges smear together. The usual culprits are a low-resolution export, a JPEG save that softens sharp edges, a screenshot of a screenshot, or a file stretched out of proportion so squares become rectangles. Fix it at the source file: re-export as high-resolution PNG, or as SVG, which scales without blur, resizing only proportionally. An already-blurry print cannot be sharpened back — reprint from the clean file. The five causes and their fixes are in why your QR code is blurry.

3. Low contrast

Scanners look for dark modules on a light background. Light grey on white, pastel brand colours, a code over a photograph, or dark modules on a dark background all remove the difference the camera needs. This is the most common design-driven failure, and the most avoidable: black on white always works, and any colour pair should still read in black and white. Watch out for inverted codes and codes over busy images, where the background competes with the pattern. If a code scans in bright light but not in a dim room, contrast is the first suspect.

4. Quiet zone crowded or cropped

The blank margin around a code is not decoration. Scanners use it to find the edges of the pattern, and the standard specifies a quiet zone at least 4 modules wide — four of the code's own little squares — on all four sides, as defined in ISO/IEC 18004. Text or patterns crowding into that margin confuse detection, so the phone never reads the data. This failure is easy to miss because the code itself looks perfect. Test it by covering everything around the code: if it scans clean, restore the margin and keep it empty.

5. A logo covering too much of the pattern

A centre logo works only because error correction rebuilds the covered data. ISO/IEC 18004 defines four error-correction levels — L, M, Q, and H — with approximate codeword recovery of 7%, 15%, 25%, and 30% respectively. Those percentages describe recovery of codewords, not a guaranteed share of visible area you may cover. As a rule of thumb, keep the logo small — the print size guide suggests under about 30% of the code's area — use the highest error-correction level, print larger than for a plain code, and never cover the three large corner squares, which the scanner needs to orient the pattern. Test-scan on two phones first. See how to add a logo to a QR code and the logo code generator.

6. Damage, dirt, and fading

Creases, scratches, spills, fading, and worn stickers all eat into the pattern, and error correction can only rebuild so much. Damage to the corner squares is especially fatal: without them, the scanner cannot locate the code at all. For real-world codes — menus, labels, outdoor signs — prevention beats repair: laminate the surface, choose a higher error-correction level, print a spare, and inspect the oldest copies first. If the pattern itself is worn away, reprint from the original file rather than patching the damaged copy.

The destination: when the code scans but nothing good happens

A scan that returns an error page, a missing page, or a landing page you did not expect is a successful scan of a broken destination. Open the link on a computer and read it character by character: a moved or deleted page, a mistyped address, a site that is down, or a short link whose owner changed its destination are the usual causes.

One structural version decides whether a fix is even possible. A static code holds the destination directly in its pattern, so it works as long as the link works — and if the link dies, only the page behind it can be restored or the code reprinted. A dynamic code holds a short redirect instead, so its owner can change the destination without reprinting — but the code then depends on that account and service staying active. If that account lapses or the service switches the redirect off, the printed code stops leading anywhere useful, even though the pattern is flawless. That is the mechanism behind most "my code expired" stories, explained in do QR codes expire?. Check first whether the destination can be restored or repointed before reprinting.

The phone and the moment: permission, focus, light, and screens

  • Camera permission. A scanner never granted camera access cannot see anything at all. Allow camera access, then try again. FreeQrly's scanner decodes in your browser on your own device — see the scanner page — but the browser still needs permission to open the camera.
  • A dirty lens. Wipe the lens with a soft cloth. A smeared lens blurs exactly the fine detail a QR code is made of.
  • Focus and distance. Hold the phone steady, keep the whole code and its quiet zone in frame, and move slowly until focus locks. Very close is not always better: most cameras cannot focus a few centimetres away.
  • Light and glare. Glossy lamination, a screen, or a spotlight can reflect light back into the camera and wash out the modules. Tilt the code or phone, move out of direct light, or switch to matte finish. Glare that moves when you tilt is glare, not damage.
  • Curved or angled surfaces. A code wrapped around a bottle or shot at a steep angle is distorted, and scanners tolerate only so much of that. Flatten what you can and shoot as straight-on as possible.
  • A code on the phone's own screen. You cannot point a phone's camera at its own display. For a code in a photo, screenshot, or message on the same phone, decode the image file instead: on iPhone, long-press the code in Photos; on Android, use Lens in Photos; on a computer, upload it to a decoder such as FreeQrly's scanner. The full steps are in how to scan a QR code from an image, and the phone-by-phone camera steps are in how to scan a QR code on your phone.

Apple's own guide confirms the baseline: on iPhone, open the Camera app or the Code Scanner in Control Center, hold the phone so the code appears in frame, and tap the link that appears. If that path does nothing on a code other phones read, suspect permission, focus, and light — not a missing scanner app. The general steps for both iPhone and Android are in how to scan a QR code.

By scene: print, screen, and outdoors

Printed codes: flyers, cards, menus, packaging

Print failures are usually size, resolution, contrast, or wear — in that order. Test at final size, not on screen: print one copy, step back to the real viewing distance, and scan it with two phones. Check the quiet zone in the finished layout, not just the preview, because layout tools crop margins. Laminate handled codes and keep the original export.

Codes on screens: slides, TV, video calls, websites

Screen codes fail on glare, refresh flicker, and size relative to the viewer's distance. Make the code large on the slide, hold it on screen for several seconds rather than flashing it past, and avoid placing it over a moving background. For phone-to-phone display, raise brightness and tilt away from overhead lights.

Outdoor codes: posters, signs, vehicles, shop windows

Outdoor codes face every failure at once: distance, sunlight, glare, weather, and fading. Size up generously on the one-tenth rule, print high-contrast on matte stock, weatherproof it, and test at real passers-by distance and angle. Shop-window codes need a special check: scan from outside the glass, in daylight, because reflections invisible from inside can wash the code out.

An honest comparison: free codes, paid codes, and "expired" codes

A static code from any honest generator has the same property: the destination is baked into the pattern, so there is nothing to expire, nothing to renew, and no account that can lapse and take the code with it. FreeQrly's static codes are free, need no registration, carry no watermark, and never expire. Paying for a static code buys you nothing about its lifespan: a subscription for a code that never needed a server is not keeping it alive.

A dynamic code is a different product, and the honest trade is this: you gain editing after printing and scan statistics, and you accept a dependency on an account and a service. FreeQrly's dynamic codes are free to start — sign in, and you get 20 free dynamic codes, currently unlimited during the limited-time promotion — with editing, statistics, and unlimited scans. The dependency is real even at zero price: delete the account and the codes go with it, so a dynamic code should never be the only copy of a destination that must outlive its owner. For anything that must last with no maintenance — a WiFi password, a business card, a plaque — static is structurally safer.

The same logic applies to paid dynamic codes elsewhere: when one stops working, the pattern is almost never the problem — the subscription, account, or redirect is. Before reprinting, check the vendor's Dashboard, the account status, and the destination the redirect points to. For a print run that cannot be reprinted cheaply, ask first: if I stop paying, does the printed code keep working? The answer tells you whether you are buying a code or renting one.

Remake, reprint, or fix the destination?

  • Fix the destination when the code scans but the page is wrong or missing, and you control the page or redirect. No reprint needed.
  • Reprint from the original file when the fresh copy scans but the installed copy does not: the print, surface, or placement failed.
  • Remake the code when the fresh copy also fails, the data is wrong, or the design — size, contrast, logo, margin — is at fault. Generate a clean code, test it on two phones, and only then print.
  • Switch code type for recurring structural failures: a changing destination belongs in a dynamic code; one that must never depend on an account belongs in a static one.

If a code still fails on two phones from a fresh, large, black-on-white print with a clear margin, suspect the data itself — an over-long link, or a mistyped address. Shorten the link and regenerate.

Make a clean replacement

When the verdict is "remake it," start from a clean export rather than patching the old file. Generate the replacement in the free generator — all 17 content types are available as static codes with no registration, and dynamic codes with editing and statistics are free after sign-in. If the code needs a logo, use the logo generator and keep the logo small with a high error-correction level; if you need many codes at once, batch generation makes one per link. Before printing, test it with the scanner and on a second phone. The deep dives linked above — the step-by-step diagnosis, the blur fixes, and the print size guide — each take one cause further.

Sources

  • ISO/IEC 18004:2024 - Edition 4, published 2024-08; standard identity, edition, and publication date verified on the ISO page 2026-11-03, whose abstract confirms the standard specifies error-correction rules. Supports the error-correction levels L 7%, M 15%, Q 25%, H 30% (approximate codeword recovery) and the quiet zone of at least 4 modules on all sides, as defined in that standard.
  • Apple Support: Scan a QR code with your iPhone or iPad - Published September 14, 2026, as shown on the page and verified 2026-11-03. Supports the built-in scanning steps cited in the post: open the Camera app or the Code Scanner in Control Center, hold the phone so the code appears in frame, and tap the link that appears. No numerical claim is taken from this page.
  • FreeQrly: QR Code Print Size Guide - Site-internal source, not an external standard. Supports the figures the hub page explicitly labels as rules of thumb: minimum print size 2 x 2 cm, the 1:10 distance rule (code width at least one-tenth of scanning distance), and a logo under about 30% of the code's area.

Try it yourself — free

Everything in this article works in the FreeQrly studio right now. Static codes, all 17 content types, PNG and SVG export.

Open the studio

Good to know

Why does my QR code scan on one phone but not another?

Then the code and the link are both fine — the failing phone is the problem. Wipe its lens, allow camera access, hold steady with the whole code in frame, and try in better light. If it still fails on that phone alone, use the built-in camera path rather than a third-party scanner app.

My QR code scans sometimes but not always — is it fine?

No. A sometimes-code is a borderline code: it passes at your desk and fails in a customer's hands. Treat it as broken and fix the underlying cause — usually size, contrast, glare, or a crowded quiet zone — rather than hoping for good light.

How big should a printed QR code be?

As a rule of thumb, at least 2 x 2 cm, and at least one-tenth of the expected scanning distance: a table card scanned from 50 cm needs a code around 5 cm wide, and a poster scanned from 5 metres needs one around 50 cm wide. Dense codes holding long links need more room than short links.

How much of a QR code can a logo cover?

Keep it small. Use the highest error-correction level, print larger than for a plain code, and never cover the three large corner squares, which the scanner needs to orient the pattern. As a rule of thumb, the print size guide suggests under about 30% of the code's area — and always test-scan the finished code on two phones before printing.

My code scans but the page is gone — is the code broken?

No. The pattern decoded perfectly; the destination failed. A page that was moved or deleted, a mistyped address, or a dynamic code whose account or redirect was switched off all look like this. If you control the page or the dynamic redirect, restore or repoint it — no reprint is needed. A static code cannot be repointed; only the page behind it can be restored.

Do I need a scanner app to test my code?

No. On iPhone, use the Camera app or the Code Scanner in Control Center; on Android, use the built-in camera or Lens. For a code that is already on the phone's own screen — in a photo or screenshot — decode the image file instead of pointing the camera at its own display.