A QR code that will not scan is almost always failing for one of a short list of reasons. Work through them in order and you will find the culprit quickly. Each section below explains the cause, how to recognize it, the fix, and how to prevent it from happening again. We also cover device compatibility differences and testing tools you can use before committing to a print run.
First checks
Before diagnosing anything complex, rule out the basics in under two minutes:
- Clean the phone camera lens; fingerprints and smudges reduce autofocus quality.
- Check the lighting: glare, deep shadow, and dim conditions all defeat scanners.
- Confirm the phone’s camera is pointed squarely at the code, not at a steep angle.
- Hold the phone steady for two full seconds to allow autofocus to lock.
- Try a second phone to determine whether the problem is the code or the specific device.
- If using an older phone, open a dedicated QR scanner app instead of the built-in camera.
If the code fails on every phone in good light, the issue is in the code itself or the destination. Continue through the sections below.
Low contrast
Scanners read the difference between dark and light modules. Light grey on white, dark blue on black, dark green on dark teal, or a busy photographic background behind the code all reduce that contrast until the reader cannot reliably distinguish the pattern.
How to recognize it: The code looks visually “muddy” or the colors are close in brightness when viewed in greyscale.
Fix: Use a genuinely dark foreground on a plain light background. Classic black on white is the most reliable pairing. If you must use brand colors, ensure the dark modules are still very dark (aim for a contrast ratio of at least 3:1; 4.5:1 or higher is safer). Add a white container box behind the code if it sits on a colored or photographic background.
Code too small
A code printed smaller than the scanning distance allows is the single most common failure point in deployed QR codes. The 10-to-1 rule gives a starting estimate: the code width should be about one tenth of the maximum scanning distance.
How to recognize it: The code scans fine on a phone held very close but fails at any normal reading distance. Different phones give inconsistent results.
Fix: Reprint at a larger size. See the QR code size guide for specific figures by use case. As a starting rule of thumb, keep printed codes at least 2 × 2 cm, and scale up for any placement further than arm’s length.
Oversized logo
A logo in the center covers modules. Error correction can recover some loss, but a logo that occupies more than roughly 25 percent of the code area pushes it beyond the recoverable limit, especially on devices with average cameras.
How to recognize it: The code scanned before the logo was added but fails afterward. Or it works on a high-end phone but not a budget device.
Fix: Shrink the logo to under 20 percent of the code area, raise the error-correction level to H (the maximum), and regenerate the code. After regenerating, test on at least three phones before reprinting.
Rebuild a branded code with the QR code with logo tool.
Insufficient whitespace
The quiet zone is the empty margin around the code. Scanners need it to identify where the pattern begins and ends. If text, a border, a colored box, or a background image crowds the edges, the decoder cannot reliably locate the finder patterns.
How to recognize it: The code looks like it goes right to the edge of the printed area, or a design element overlaps the corner squares.
Fix: Leave a clear white margin at least four modules wide on all sides. If the design is tight, shrink the surrounding element rather than the margin. The quiet zone is non-negotiable.
Inverted colors
Many scanners are tuned to expect dark modules on a light background. A light or white code on a dark background (inverted) fails on a significant share of devices, including many older Android models and some scanner apps.
How to recognize it: The code has light squares on a dark background instead of the standard dark on light.
Fix: Switch to a dark code on a light background. If inversion is required for brand reasons, test exhaustively on at least ten different phone models before printing.
Blurry printing
Enlarging a small raster image, printing at low DPI, saving as JPEG, or using a low-quality printer all soften the module edges. Blurry edges cause dark and light areas to merge, so the scanner cannot cleanly separate the binary data.
How to recognize it: Module edges look fuzzy or grey in the print. You can see this under magnification or by looking closely at a printed proof.
Fix: Generate the code at or above the final print size. Export as PNG (not JPEG). Print at 300 DPI minimum, and 600 DPI for small or high-detail codes. For large-format output, use SVG or PDF vector format so the image stays sharp at any size.
Physical damage
Scuffs, folds, peeling stickers, spills, UV fading, and surface wear all destroy modules and reduce contrast over time. Error correction tolerates minor damage (up to about 7% at Level L and 30% at Level H), but significant physical degradation pushes the code past recovery.
How to recognize it: The code was working before and now fails. There is visible physical damage to the printed surface.
Fix: Reprint on more durable stock. Use laminate for outdoor or high-traffic codes. For table codes in restaurants, self-adhesive vinyl with a laminate overlay is far more durable than paper table tents. Replace codes proactively in high-wear locations every few months.
Broken destination link
Sometimes the code scans perfectly but the page fails to open. The pattern is fine; the target is the problem. Common causes include a deleted or renamed page, a URL that requires login, a typo in the original URL, a domain that has lapsed, or a server error on the destination.
How to recognize it: The phone shows a URL or a “code detected” notification but then displays a 404 error, a redirect loop, or a “site can’t be reached” message.
Fix: Copy the URL from the code notification and open it directly in a browser to confirm it loads. If the page is broken, fix the destination. For static QR codes, a changed URL means generating a new code and reprinting, because the destination is fixed in the pattern. This is explained in detail in static vs dynamic QR codes.
Wrong scanning distance
A code sized for a table will not scan from across a room. Conversely, very large codes held right up to the camera lens can fall outside the phone’s autofocus range, particularly on devices with close-focus limitations.
Fix: Match the code size to the realistic scanning distance using the 10-to-1 rule and test at both the nearest and farthest points people will actually stand.
Device compatibility issues
Not all phones are equal when it comes to QR code scanning. Here is what to know:
iPhone
iPhones running iOS 11 and later (2017 and newer) have native QR code scanning in the Camera app. No additional app is needed. Older iPhones require a third-party scanner app.
Android
Android QR scanning varies by manufacturer and version. Google Camera and many OEM camera apps on Android 8 and later support native QR scanning. Older or budget Android devices often need an explicit scanner app such as Google Lens (built into most modern Android devices via the Google app) or a third-party scanner.
When a code works on one phone but not another
This is almost always a sign that the code is “borderline”: it works on a phone with a superior camera or autofocus but fails on a weaker one. The right fix is to improve the code quality (larger, better contrast, smaller logo) rather than asking users to try another phone.
Scanner apps worth knowing
- Google Lens — available on most Android devices; reliable and privacy-respecting.
- iOS Camera app — built-in on iPhone; no additional setup.
- QR & Barcode Scanner by Gamma Play — widely used third-party option for older devices.
Testing tools and methods
Testing a code before committing to a print run takes minutes and can save significant cost. Here are the methods:
Print a proof at the exact final size
Print a single copy on the same paper stock you plan to use at the exact dimensions of the final version. Scan it with at least two phones in the real environment (lighting, distance, angle). This is the only reliable test.
Display on screen as a proxy test
Display the code at roughly the intended size on a monitor screen. Scan it with a phone. This tests whether the code itself is valid but does not test print quality or outdoor conditions. Use it as a quick sanity check, not a final verification.
Use multiple scanner apps
Test with the built-in camera, Google Lens, and a dedicated scanner app. If a code fails on one but works on others, it is borderline quality. Fix it before printing rather than hoping users will switch apps.
Test in real conditions
Restaurant codes should be tested in the actual restaurant lighting, not at a desk. Outdoor signs should be tested in sunlight and shade. Event codes should be tested in the venue’s actual lighting conditions.
Prevention checklist
Follow these steps before every print run and you will rarely need to troubleshoot a failed code:
- Verify the destination URL loads correctly in a browser before generating the code.
- Generate at or above the final print size; never upscale a small image.
- Export as PNG, not JPEG.
- Ensure the foreground is genuinely dark and the background is genuinely light.
- Leave a clear quiet zone margin on all four sides.
- Keep any logo under 20% of the code area; use error-correction level H with a logo.
- Print a proof at the exact final size before ordering a large run.
- Test with at least two different phones in the real environment.
- Plan for periodic replacement in high-wear or outdoor locations.
For sizing specifics, see the QR code size guide. For best practices in marketing campaigns, read QR code best practices for marketing.
Frequently asked questions
My QR code scans on one phone but not another. Why?
This usually points to a borderline code: slightly too small, low contrast, or a large logo. It works on a phone with a better camera or in good light but fails on a weaker one. Improve the underlying quality rather than accepting a marginal scan.
The camera detects the code but nothing opens.
The pattern is fine but the destination is the problem. The linked page may be deleted, private, or misspelled. Open the URL directly in a browser to confirm it loads, then regenerate the code with a working link.
Can a printed QR code stop working over time?
The pattern does not change, but ink can fade, labels can peel, and surfaces can scuff. Faded or damaged printing reduces contrast and breaks modules. Reprint on durable material for high-traffic or outdoor placements.
I edited my code in an image editor and now it fails.
Cropping, recoloring, compressing, or resizing a finished code can corrupt the modules or remove the quiet zone. Always regenerate the code at the size and colors you need instead of editing the final image.
Why does my QR code work indoors but not outside?
Direct sunlight, glare on glossy surfaces, and low-contrast printing all reduce outdoor scan performance. Move to a shaded spot, tilt the sign away from direct light, or increase code size and contrast for outdoor use.
Is there a way to test a QR code without printing it?
Yes. Display the code at the intended size on a monitor, then scan it with a phone. This tests the code logic but not print quality. For a proper test, print a proof at the exact final size and test in the real environment, including the actual lighting conditions.
Generate a fresh code with the URL QR code generator. Related reading: QR code size guide, what is a QR code, static vs dynamic QR codes, and QR code best practices for marketing.
Leave a Reply