Design problems (the most common)
- Low contrast. Light-gray on white, gold on cream, pastel anything — the camera needs dark modules on a light background. Fix: darken the code, lighten the background.
- Inverted colors. White code on a dark background fails in many camera apps. Keep the modules darker than the background — always.
- Missing quiet zone. The white margin (≥4 modules wide) around the code is required. Cropping the code flush against artwork breaks the finder patterns' detection.
- Logo too big. A center logo over ~20% of the area burns through the error-correction budget. Shrink it — details in QR with logo done right.
- Too much data. A 500-character URL makes a dense, fragile grid. Shorten the URL (or use a dynamic code — its short redirect keeps the pattern sparse).
- Over-styling. Extreme module shapes, gradients with light stops, or artistic blending pushed too far. Style, then test on two phones before shipping.
- Error correction too low for the design. Logos and busy backgrounds need level H (30%). QRolling sets this automatically when you add a logo.
- Distorted proportions. The code was stretched non-uniformly in a design tool. A QR must stay perfectly square.
Print problems
- Printed too small. Minimum 2×2 cm for arm's-length scans. Posters need more: rule of thumb — code width ≥ scan distance ÷ 10. Full table in the QR size guide.
- Low-resolution export. A 200px PNG blown up to poster size = mush. Export SVG (vector) for anything printed.
- Glossy surface glare. Lamination and glossy paper bounce light straight into the lens. Use matte finishes.
- Ink bleed. On absorbent paper, heavy ink fattens modules until they merge. Ask the print shop for a test run.
- Curved or creased surface. Cups, sleeves, and folded flyers distort the grid. Keep codes on the flattest area, sized generously.
- Faded by sun or wear. Outdoor codes bleach out in months. Reprint, or laminate matte.
- Printed mirror-flipped. It happens (transfer printing, window decals applied backwards). A mirrored QR never scans.
- Dark protective sleeve or tinted glass between code and camera kills contrast.
Phone-side problems
- QR scanning disabled in the camera settings (some Android brands ship it off). Enable "Scan QR codes."
- Dirty lens. The silent #1. Wipe it.
- Too close or too far — frame the whole code with margin; let autofocus settle a second.
- Poor light. Shadows over the code, or a dim room. Add light, or use the flash.
- Old OS. iPhones before iOS 11 and Androids before ~9 don't scan natively. Use Google Lens or update.
- Scanning a screen with the same phone. You can't camera-scan your own screen — screenshot it and use scan-from-picture methods or our online scanner.
- Moiré/flicker from a display. Scanning off a monitor sometimes fights refresh patterns — raise screen brightness, hold farther back.
Destination problems (the code scans, but…)
- Typo in the URL. The scan works and lands on a 404. Always test the destination, not just the scan.
- Expired dynamic code. The subscription behind the redirect lapsed — on any provider, the redirect dies. (A code with the destination inside the pattern cannot expire at all.)
- Link shortener domain blocked or dead. Some shorteners get flagged by corporate networks; if the shortener shuts down, every code through it dies.
- HTTP instead of HTTPS, or a missing
https://prefix — some phones refuse or mangle it. - The destination blocks phones. A desktop-only intranet page or region-locked content fails exactly where QRs are scanned: on phones.
- WiFi QR with a typo'd password or wrong security type — the scan "works" but the join fails. Regenerate carefully with the WiFi QR generator.
- Someone stickered over your code. Public codes get maliciously replaced. Check the physical code matches what you printed.
The 60-second diagnostic
- Scan with two phones (one iPhone, one Android). Both fail → the code/print. One fails → that phone.
- Scan the digital original on screen. Screen works, print fails → print problem (size, glare, ink).
- Code scans but the page is wrong → destination problem: fix the URL, or swap it live if it's dynamic.
How to fix a QR code that won't scan — 4 steps
Test the original file
Scan the digital version on your screen with two different phones. If it fails there, regenerate: more contrast, less data, smaller logo.
Check the print
Compare size (≥2×2 cm), matte vs glossy, quiet-zone margin, and sharpness against the original. Reprint from SVG if in doubt.
Check the phone
Clean the lens, add light, enable QR scanning in camera settings, and hold steady at 20-30 cm.
Check the destination
Open the underlying link manually. Fix typos, restore expired redirects, and make sure the page works on mobile.
Frequently asked
Why does my QR code scan on iPhone but not Android (or vice versa)?
Usually a marginal design — low contrast or dense data — that one decoder tolerates and the other doesn't. Fix the margin of safety: raise contrast, shorten data, enlarge the print.
Why did my QR code stop working after months of working fine?
Either the print degraded (sun-fade, wear) or the destination died — an expired dynamic subscription, a moved page, or a dead link shortener. Scan it and watch what actually happens.
Can a QR code itself expire?
Static codes never expire. Dynamic codes stop when the redirect service behind them lapses. See our full 'do QR codes expire' guide.
My WiFi QR scans but won't connect — why?
The scan and the join are separate steps. A wrong password, wrong security type (WPA vs WPA3), or a hidden SSID typo makes the join fail after a successful scan. Regenerate with exact credentials.
How do I test a QR code before printing 10,000 copies?
Print one at final size on the final material. Scan with iPhone + Android, in bright and dim light, straight-on and at an angle. Then check the destination link on cellular data, not just WiFi.
Read next
Need a different QR type? Browse all 48 QR types on the home page.