When a printed QR code refuses to scan, teams often panic and blame the printing press, the phone manufacturer, or the QR code specification itself. In reality, the QR standard (ISO/IEC 18004) is remarkably resilient and fault-tolerant.
Almost every scan failure in the field traces back to five preventable mistakes: inadequate colour contrast, a cropped quiet zone, microscopic module size, reflective laminate glare, or an expired dynamic redirect. Here is how to identify your exact failure mode and fix the artwork.
Symptom diagnosis table
Match the behaviour of your test smartphones with the table below to find the root cause immediately:
| What the phone does | Most likely root cause | The practical fix |
|---|---|---|
| Camera ignores code completely (no yellow box) | Missing quiet zone or poor contrast | Add 4 modules of clear white space around all edges; darken dots. |
| Camera focuses and hunts, but never triggers link | Modules are smaller than 0.4 mm or damaged finder square | Enlarge physical print or shorten URL to reduce grid density. |
| Scans instantly on iPhone, but fails on older Android | Low sensor resolution or low contrast | Use pure black on pure white; increase physical size by 15%. |
| Works fine under desk lamp, fails in shop/bar | Specular glare from gloss finish or low ambient light | Switch to matte laminate; avoid placing behind reflective glass. |
| Code scans successfully, but displays '404' or subscription error | Expired third-party dynamic redirect | Regenerate as a static code on your own domain that never expires. |
| Scans on flat desk, fails once folded or curved | Curvature distortion on bottle or cylinder | Keep code to flat face or restrict width to < 25% of circumference. |
Contrast and colour failures
Optical scanners in mobile cameras do not see colour in full spectrum—they convert the incoming visual field into binary greyscale luminance. If the difference in brightness between your modules and the background card is too narrow, the camera cannot resolve the matrix.
- Never invert colours: White dots on a dark background (inverted QR codes) are not supported by all Android camera apps. Always use dark dots on a white or light background.
- Beware pastel tones: Light blue, soft grey, sage green, and pastel pink look stylish on brand mood boards, but camera sensors register them as off-white.
- Metallic inks and foils: Gold foil on white or black card scatters light irregularly. Avoid foils over the scannable area.
Always maintain at least a 70% difference in reflective luminance between foreground dots and the substrate background. Pure carbon black (#000000) on bright white paper (#FFFFFF) provides 100% contrast and scans effortlessly under all lighting.
The cropped quiet zone
The quiet zone is the clear, unprinted border surrounding the outer edge of the QR code. By specification, it must be at least 4 modules wide on every side.
Graphic designers frequently crop this margin because they want the QR code to align flush with body text or sit inside a tight circular badge. When you remove this margin, the smartphone camera cannot detect where surrounding graphics end and the QR matrix begins. Keep the margin completely clear of background patterns, borders, textures, and typography.
Data density and module size
The more characters you encode into a QR code, the higher the version number and the denser the grid becomes. A short 20-character URL creates a Version 2 symbol (25 × 25 modules). A 180-character URL laden with tracking UTM parameters creates a Version 9 symbol (53 × 53 modules).
If both codes are printed at 25 mm wide, each module in the long URL version is less than half the size of the short one. When individual printed modules fall below 0.38 mm, standard smartphone camera lenses cannot resolve them from a comfortable hand-held distance.
To fix dense codes: shorten the URL using a direct path on your domain (e.g. https://brand.co.uk/m) rather than stuffing multiple tracking strings directly into the printed matrix.
Surface, glare, and material
Sometimes the artwork is perfect, but the physical material destroys readability:
- Glossy lamination: Under bright ceiling spotlights, gloss laminate creates hot specular highlights that obliterate several rows of modules with pure white glare. Always specify matte or soft-touch lamination.
- Uncoated kraft paper & corrugated board: Brown cardboard absorbs ink heavily (dot gain) and lacks a clean white background. Print a solid white ink base under the QR code first.
- Windows and glass: Mounting a code behind a shop window creates double reflections. Mount codes on the outside or use anti-glare window vinyl.
- Curved surfaces: Wrapping a code around a narrow bottle or tin causes perspective distortion. Finder patterns appear trapezoidal rather than square, confusing decoding algorithms.
Smartphone camera differences
Never sign off a print run after testing on a single brand-new flagship iPhone. Modern flagship phones possess optical image stabilisation and macro lenses that can read compromised codes that 70% of the public's devices will fail on.
Always test proofs on:
- A standard modern iPhone running the native Camera app.
- A mid-range or 3-year-old Android device (e.g. Samsung Galaxy A-series) using standard camera or Google Lens.
- Dim indoor lighting that simulates evening restaurant or retail conditions.
Diagnostic checklist
- Foreground modules are solid dark ink on a crisp light background.
- Quiet zone margin of 4 module widths is untouched on all four sides.
- Individual module size measures at least 0.40 mm on the physical proof.
- Stock finish is matte, non-glossy, and free of metallic reflection.
- Destination link is static and tested in an incognito browser window.
- Physical proof scans successfully on both iOS and Android handsets.
Questions before you print
Why does my QR code scan on my laptop screen but not when printed?
Computer screens emit light with razor-sharp pixel contrast. Paper reflects ambient light, suffers from printer dot gain (ink spreading), and is affected by paper texture and surface glare.
Can I fix an unreadable QR code by increasing error correction to H?
Usually not! Increasing error correction from M (15%) to H (30%) makes the code denser by adding more error recovery modules. If your code is failing due to tiny module size, bumping to H makes the squares even smaller and worsens the problem.
What is the best way to shorten a long URL for a QR code?
Set up a short 302 redirect on your own domain, like yoursite.co.uk/promo. It keeps the QR code simple, coarse, and easy to scan, while letting you change the destination link whenever you want.
Will a damaged or torn QR code still work?
Yes, if error correction was enabled. Level M tolerates up to 15% physical damage or obscured area, and Level H tolerates up to 30%. However, if one of the three large corner finder patterns is damaged, the code will fail completely.
Why does my Android camera not detect the QR code?
Some older Android devices require enabling 'Scan QR codes' in the camera settings menu, or require using the Google Lens shortcut. Ensure contrast is high and test with Google Lens to verify.
Related: Check our print size guide and distance calculator, export vector files with the SVG QR code generator, read the essential design rules that survive print, and learn how short redirects keep QR codes scannable.
Generate a guaranteed scannable QR code.
Our browser-based generator builds ISO-compliant static vector files with standard quiet zones and reliable error correction.
Create a scannable QR code