QR Code Not Scanning? 12 Fixes That Actually Work
QR code not scanning? Fix it fast: size, contrast, quiet zone, damaged print, dead redirect, and 8 more causes. Step-by-step guide, no account needed.

This article was written by the QR Nova team. We build QR code software, which may inform our perspective.
Most "why is my QR code not scanning" guides give you the same five tips in whatever order fills a page best, then send you to buy a premium plan. That's not what this is. There are exactly twelve failure modes for a QR code that won't scan, some are design errors you can fix before printing, some require a reprint, and one has nothing to do with the code at all. A QR code not scanning is almost always one of three root causes: the camera can't read the pattern (size, contrast, or damage), the destination is dead (expired subscription or broken URL), or the scanning environment is unsuitable (lighting, motion, distance). Here's how to diagnose which one and what to do about it.
TL;DR
- If the camera won't find the code: check size (10:1 distance rule), contrast, and quiet zone.
- If the code scans but opens nothing: check that the destination URL is live and the redirect hasn't been deactivated.
- If the code used to work but stopped: check whether a subscription or trial lapsed on a dynamic code platform.
- Test any QR code on two different phones (iOS + Android) before printing, always.
Diagnosis first: what exactly is happening?
Try it now — no sign-up needed
Get startedBefore jumping to fixes, narrow down where in the scan process the failure is occurring. There are three distinct failure stages, and each has different causes.
Failure type a: the camera won't recognize the code at all
The camera app opens, you point it at the code, nothing happens, no focus indicator, no link pop-up, no response. The scanner cannot locate or decode the pattern. This is a physical/visual problem: size, contrast, damage, or scanning conditions.
Failure type b: the code scans but nothing loads
The camera successfully decodes the code (you may see a URL appear briefly), but the destination fails to open, blank page, error page, or the app shows a broken-link indicator. The code itself is valid; the destination is the problem.
Failure type c: the code works on some devices but not others
Android scans fine, iPhone fails (or vice versa). Or it works with a dedicated QR scanner app but not the native camera. This points to decoder-specific issues: inverted color, unusual color combinations, or specific iOS/Android camera API differences.
Identify your failure type before working through the fixes below, it eliminates 8 of the 12 causes immediately.
Fix 1: the code is too small (most common cause)
The single most common reason a QR code won't scan in print materials is insufficient size relative to the scanning distance.
The 10:1 rule: minimum code width equals expected scanning distance divided by 10.
- Business card, scanned at 20cm: minimum 2cm × 2cm
- Table card or leaflet, scanned at 30cm: minimum 3cm × 3cm
- Poster, scanned at 1 meter: minimum 10cm × 10cm
- Signage, scanned at 2 meters: minimum 20cm × 20cm
- Window display, scanned at 3 meters: minimum 30cm × 30cm
Most business card QR codes are printed at 1.5-2cm, technically meeting the threshold at 20cm but leaving zero margin. If your code looks pixelated rather than just small, our blurry QR code fix guide addresses that specific issue. In normal lighting, with minor print quality variation, codes at the minimum often fail. Print at 150% of the calculated minimum for reliability.
If you're already printed and the code is too small: you can't fix the existing print. Reprint at the correct size. Our QR code print size guide has the exact dimensions for every common format. When generating a new code, always export at SVG format or high-resolution PNG (minimum 1000 × 1000px) to avoid pixelation when scaling up.
Fix 2: low contrast between modules and background
QR code scanners work by detecting the contrast between dark modules (the square dots) and the light background. The contrast ratio requirement depends on the scanner, modern smartphone cameras are more tolerant than basic readers, but there's a floor.
For a detailed guide on which color combinations work and which don't, see our QR code color contrast guide. High-risk contrast combinations:
- Dark gray code on medium gray background
- Dark blue code on mid-blue background
- Dark brown code on warm beige background
- Any combination where the lightness values are within 40% of each other
The safest option remains black modules on white background. If brand colors require deviation, test the specific combination on at least five different scanning apps before committing to print. ISO/IEC 18004 specifies minimum contrast ratios, if you're using a custom color combination, verify against the standard before printing at scale.
Fix 3: inverted code (light on dark)
A QR code where light modules appear on a dark background is called an inverted code. The QR standard specifies dark modules on a light background. Most modern smartphone cameras handle inverted codes correctly. But some older camera apps, enterprise scanning hardware, and basic QR readers don't, they expect the standard orientation and fail on inversions.
If your code scans on some devices but not others, and the code uses light modules on a dark background, this is almost certainly the cause. The fix: generate a standard (dark on light) version for maximum compatibility, even if the design requires compromise.
Fix 4: quiet zone violated
The quiet zone is the white margin surrounding the QR code pattern. The ISO/IEC 18004 standard requires a minimum 4-module-wide quiet zone on all four sides. Scanners use this margin to locate the code boundaries, without adequate quiet zone, the decoder cannot determine where the code starts and the surrounding design begins.
This is a common graphic design error. Designers reduce or eliminate the quiet zone to fit the code into a tight space or to allow design elements (logos, borders, illustrations) to extend into the margin area. The result is inconsistent scanning, some decoders are more tolerant of quiet zone violations, others fail immediately.
Fix: when placing QR codes in designed materials, maintain at minimum the 4-module quiet zone. In practice, adding a white box behind the code slightly larger than the code itself ensures the quiet zone is preserved regardless of the surrounding design.
Fix 5: physical print damage or degradation
QR codes are resilient by design. The ISO/IEC 18004 standard includes four error correction levels:
- Level L: 7% error correction capacity (lowest redundancy)
- Level M: 15% error correction capacity
- Level Q: 25% error correction capacity
- Level H: 30% error correction capacity (highest redundancy)
A Level H code can sustain up to 30% physical damage and still decode correctly. This is why QR codes with logos (where the logo covers part of the pattern) can still scan, the logo is essentially planned damage, and Level H error correction restores the obscured data.
If your code was generated at Level L and has minor physical damage (scratches, water damage, ink fade), the damage may exceed the error correction capacity. Generate a new code at Level H, which produces a slightly more complex pattern but dramatically better durability. For outdoor installations, restaurant environments, or any code exposed to handling, Level H is the default choice.
Fix 6: poor lighting at scan point
QR codes require adequate ambient light for camera autofocus to function and for contrast detection to work reliably. Indoor spaces with poor lighting, dimly lit restaurant corners, retail areas with spotlighting that leaves other areas dark, outdoor locations at night, reduce scan success rates measurably.
The threshold: approximately 100 lux is the practical minimum for reliable QR scanning in most indoor environments. For reference, a typical office is 300-500 lux; a dimly lit restaurant might be 30-80 lux.
If your QR code placement is in a low-light environment and redesign isn't possible, consider: adding a small light fixture above or near the code display, using a higher-contrast code design (pure black on pure white with maximum quiet zone), or including a fallback URL printed below the code for environments where scanning fails.
Fix 7: camera lens is dirty or damaged
This sounds trivial, but it's a genuine scan failure cause that users overlook because it affects all scanning attempts, not just this specific code. A smudged camera lens (oil from fingerprints, moisture, fine scratches) reduces contrast detection and prevents reliable autofocus.
Before troubleshooting a code, wipe the camera lens with a clean cloth and confirm autofocus works on other objects. If scanning improves on other codes after cleaning, the original problem was the lens, not your code.
Fix 8: the destination URL is dead
This is a Failure Type B issue, the code scans successfully, but the destination is unreachable. The QR code is working correctly; the problem is where it points.
Diagnose: extract the URL from the QR code by scanning it with an app that shows the decoded URL without auto-navigating. Then paste that URL into a browser to test the destination directly. Common destination failures:
- 404 Not Found: the page at that URL was deleted or moved. For static codes, this requires generating a new code pointing to the correct URL and reprinting. For dynamic codes, update the destination URL in the platform dashboard.
- Domain expired: the domain the URL points to expired and was not renewed. The domain may now be parked by a registrar or purchased by someone else.
- Server error (500): the destination website has a technical problem. Usually temporary, check again in 24 hours.
- Redirect loop: the destination URL redirects to itself or creates a loop. Diagnose with a redirect checker tool.
Fix 9: the dynamic QR code redirect was deactivated
This is the most frustrating failure mode, and the one that affects people who did everything right technically. Dynamic QR codes route through a platform's redirect server. When a subscription lapses, a trial expires, or an account is deactivated, the redirect stops. The code encodes a short URL that now returns an error from the platform's server instead of forwarding to your destination.
Diagnose: scan the code and check whether the resulting error page is from the QR code platform (e.g., "This code has been deactivated" on QR Tiger's domain, or a blank Flowcode page). That error page appearing tells you the scan worked, it's the redirect that's broken.
Fix: log into the platform and check your account status. If the subscription lapsed, reactivate it to restore the redirect. If the trial expired, upgrade to a paid plan. If the account was closed, you may not be able to restore without creating new codes and reprinting.
Prevention: if you have codes on permanent physical materials, use static codes. A static code cannot be deactivated by any platform, there's no server involved. Generate static QR codes free at QR Nova, they work indefinitely with no account or subscription.
Fix 10: the code was generated at too low a data density
QR codes that encode long URLs (especially those with UTM parameters, tracking IDs, or URL-encoded characters) produce more complex, denser patterns. More modules means each module must be smaller at a given code size, and smaller modules are harder for cameras to resolve.
If your QR code was generated at a standard size but encodes a very long URL (250+ characters), the module density may be too high for reliable scanning at that size. The fix: either shorten the destination URL (use a URL shortener before encoding, or remove unnecessary UTM parameters), or increase the code's printed size to compensate for the higher density.
Fix 11: app-specific decoder limitations
Not all QR scanners are created equal. The iOS Camera app (Apple's decoder), Google's QR scanner (used in Android Camera and Google Lens), and third-party scanner apps have different levels of tolerance for non-standard patterns, unusual color combinations, inverted codes, and damaged patterns.
If a code scans on one device type but not another, and the code appears physically sound, app-specific limitations are likely the cause. Test with Google Lens (Android and iOS), Apple Camera (iOS), and at least one dedicated QR scanner app. If one succeeds and others fail, the code is valid but uses a pattern variation the failing decoders don't handle.
The most common trigger for iOS Camera failures: slightly-inverted color schemes (very dark blue on black-adjacent background), custom module shapes that deviate significantly from the standard square pattern, and logos that obscure finder patterns (the three large corner squares).
Fix 12: the code encodes the wrong content
This sounds obvious but accounts for a non-trivial percentage of "QR code not working" reports: the code was generated correctly, but it encodes the wrong information, a typo in the URL, the development environment URL instead of the production URL, or a URL without "https://" that results in a malformed link.
Diagnosis: scan the code with an app that shows the decoded content before navigating (many dedicated QR apps do this). Read the decoded string character by character against the intended content. Common errors: missing protocol prefix, extra space at the beginning or end of the URL, wrong subdomain, development versus production URL.
Fix: regenerate the code with the correct content. If materials are already printed, check whether a redirect can be set up at the incorrectly-encoded URL to forward to the correct destination, this works if the URL is valid (just wrong), not if it's malformed.
Testing protocol before any print run
Every QR code destined for printed materials should pass this test before approving the print run. For a comprehensive checklist of design and deployment rules, see our QR code best practices.
- Device test: Scan on at least one iPhone and one Android device. Use native camera apps, not dedicated QR scanners, most end users will use their native camera.
- Distance test: Scan from the actual distance users will stand when encountering the code in its printed context. Not from 10cm with the phone held right up to the screen.
- Lighting test: Scan in the lighting conditions where the code will be displayed. If it's a restaurant table card, test in a dimly lit environment. If it's outdoor signage, test in direct sunlight.
- Destination test: Confirm the destination URL loads correctly after a successful scan. Don't just confirm the code scans, confirm what it delivers.
- Print proof test: If possible, test from an actual printed sample rather than a screen. Screen glare, resolution differences, and color rendering between screen and print can affect real-world scan reliability.
When to regenerate vs. when to reprint
Regenerating a code (creating a new image) is only useful if the problem is in the code's data or generation settings, wrong URL, wrong error correction level, or missing quiet zone baked into the image. Reprinting is required when the physical material has the problem: wrong size, bad contrast, or print damage.
If the code was a dynamic QR code that was deactivated, regenerating is not the solution, you need to reactivate the platform account. If the destination URL changed and the code is static, regenerating with the new URL and reprinting is the only path.
For any code destined for permanent materials, generate a static code that encodes the destination URL directly. These codes cannot be deactivated and don't depend on any platform staying operational. Create one free at QR Nova, download immediately, no account required.
Frequently asked questions
Why is my QR code not scanning?
The most common reasons a QR code won't scan are: the code is too small for the scanning distance, the contrast between modules and background is insufficient, the quiet zone (white border) has been cropped or violated by design elements, the physical print is damaged or smudged, or, for dynamic codes, the redirect has been deactivated by a subscription cancellation or trial expiration.
Why won't my QR code scan on iPhone?
iPhone's native QR scanner (built into the Camera app since iOS 11) requires adequate lighting and a minimum code size relative to scanning distance. Common iPhone-specific issues: (1) the QR scanning mode may not be enabled in Camera settings, (2) the code has low contrast that confuses Apple's specific decoder, (3) the code is inverted (dark background, light modules), iOS handles this inconsistently compared to dedicated scanner apps. Try a third-party QR scanner like QR Reader if the native Camera app fails.
Why does my QR code scan but not open anything?
Three scenarios: (1) the destination URL the code points to is dead (404, domain expired, server error), the code decoded correctly but there's nothing there; (2) for dynamic codes, the redirect server has been deactivated (subscription lapsed, trial expired); (3) the device has no internet connection, the code decoded correctly but couldn't load the destination.
My QR code worked before but doesn't scan now, what changed?
If it was a dynamic QR code, the most likely cause is that the platform's redirect service was deactivated, either from subscription cancellation, account issues, or plan downgrade. If it was a static QR code, the code itself hasn't changed, but the destination URL may have moved, been deleted, or the domain may have expired. Test the URL from the code directly in a browser to diagnose.
How do I fix a QR code that is too small to scan?
You cannot fix a printed code that is too small, it must be reprinted at the correct size. The minimum size calculation: divide the expected scanning distance by 10 to get the minimum code width. For a business card scanned at 20cm: minimum 2cm × 2cm. For a poster scanned at 1 meter: minimum 10cm. When generating a new code, export at SVG or high-resolution PNG to ensure no pixelation when scaling up for print.
Can a damaged QR code be fixed?
Partially. QR codes have built-in error correction (levels L, M, Q, H). A Level H code can sustain up to 30% physical damage and still decode. A Level L code fails with as little as 7% damage. If the code was generated with high error correction, minor scratches or smudges may not prevent scanning. Significant physical damage (more than 30% of the pattern obscured) requires reprinting.
What is the quiet zone in a QR code and why does it matter?
The quiet zone is the white margin surrounding the QR code pattern. ISO/IEC 18004 specifies a minimum 4-module quiet zone on all four sides. Scanners use this margin to locate the code boundaries before decoding. If the quiet zone is too small or overlapped by other design elements, some scanners cannot properly locate the code, causing scan failure.
Does QR code color affect scanning?
Yes, but primarily through contrast. Standard scanners expect dark modules on a light background. Insufficient contrast, dark gray on medium gray, dark blue on dark background, reduces scan reliability. Inverted codes (light modules on dark background) work on most modern scanners but fail on some older or less capable apps. For maximum compatibility: black or very dark modules on white or very light background.
Related articles
QR Code Not Working? 7 Real Causes (and Exact Fixes)
QR code not working? There are 7 distinct failure modes, not 25. Diagnose which one you have in 60 seconds and fix it. No account required.
How to Test a QR Code Before Printing: 5-Step Checklist
5-step checklist: multi-device scanning, distance testing, URL verification, contrast ratio, and structural validation. Catch QR failures before ink hits paper.
Can You Edit a QR Code After Printing?
Can I edit a QR code after printing it? Static codes can't, but dynamic codes let you change the destination anytime. Here's exactly how it works.
Try it now — no sign-up needed
Get started