Why Your QR Code Is Not Scanning: Fixes in Order
A QR code that refuses to scan is rarely mysterious. In almost every case it comes down to one of eight causes, and there is an order worth checking them in: cheapest and most common first, reprinting last. Work through the list below and you will usually find the problem in under ten minutes.
Start with two minutes of triage
Before you blame the design, find out how broadly it fails. That single piece of information cuts the list of suspects in half.
- Scan the printed piece yourself, at the distance a real customer would use, in normal room light.
- Open the original digital file on a screen and scan that.
- Ask two other people to try — one on an iPhone, one on an Android.
If the on-screen file scans but the print does not, the problem is size, contrast, quiet zone or production. If neither scans, the problem is the code itself or its destination. If it works for you and fails for a customer, it is a phone, app or connectivity issue — not your artwork.
1. It is too small for the distance
This is the single most common cause. The working rule is 10:1: the scanning distance divided by ten gives you the minimum width of the code.
- Handheld pieces — business cards, resumes, church bulletins, menus, packaging inserts: 2 x 2 cm (0.8 in) minimum. Below 1.5 cm, stop; even a clean print will frustrate people.
- Flyer or poster on a wall, read from 1–2 m: 10–20 cm.
- Window sticker read from the pavement, roughly 2 m away: 20 cm.
- Trade show banner read from 3 m: 30 cm.
- Shipping label, scanned at arm's length: 2.5–3 cm.
Designers routinely shrink a code to fit a layout. If you are putting one on a resume or a bulletin, protect the size before you protect the white space.
2. The contrast is wrong
Scanners need a dark pattern on a light background. Two failure modes dominate:
- Inverted codes (light modules on a dark background). Modern iPhone and Google Lens usually cope; plenty of older Android camera apps and in-app scanners do not. Roughly one scanner in five will fail.
- Brand colours that are too light. Yellow, orange, lime, neon pink and pastels have almost no tonal difference from white. Red on black is equally bad — both read as dark.
A quick test: convert the artwork to greyscale. If the two tones look like similar greys, it will fail. Keep the foreground genuinely dark, keep the background genuinely light, and never place a code over a photo, gradient or textured pattern.
3. There is no quiet zone
Every QR code needs a blank margin around all four sides — four modules wide, which is roughly 4–5 mm on a 3 cm code, or about 10% of the code's width. The scanner uses that empty band to find where the code ends.
Common ways it gets destroyed: the designer crops tight to the pattern; the code sits flush against a coloured block or photo edge; text or a logo creeps into the margin; the code lands across a fold, a perforation or a die-cut. On packaging and shipping labels, keep the code at least 5 mm from the label edge so it does not curl over a box corner.
4. Too much data is crammed in
The more characters you encode, the more modules the code needs, and the smaller each module gets at the same printed size. A long URL with campaign parameters attached can double the density of the pattern.
- Encode the shortest URL that works. Drop tracking parameters from print codes, or shorten them.
- Avoid encoding a full vCard or a long Wi-Fi password directly — the resulting code is dense and fragile at small sizes.
- Error correction: level M (15%) is the right default for print. Level H (30%) survives more damage but adds modules. Only go to H if you are placing a logo in the centre, and keep that logo under about 20% of the code's area.
A dynamic code helps here for a structural reason, not a marketing one: it encodes a short redirect URL, so the pattern stays simple no matter how long the real destination is.
5. The surface or placement is fighting you
The artwork can be perfect and still fail in the room:
- Glare from gloss lamination, varnish or a display case under spotlights. Use a matte finish for any code people scan up close.
- Curved surfaces — bottles, cups, cylindrical packaging. Keep the code under about a third of the circumference so it stays flat enough.
- Height. Wall codes belong at 1.2–1.5 m — chest to eye level. Codes near the floor or above head height get ignored.
- Light. Dim restaurants, cellars and evening events kill scans; so does a code on a screen shown for under five seconds.
- Signal. A code in a basement venue scans fine and then loads nothing. If you run a donation code at an indoor event, check mobile coverage where people will actually stand.
6. The code scans — the destination is broken
If the phone shows a URL preview, the code is fine. The failure is downstream: a page that has moved, an http link that now forces https, a redirect loop, a page behind a login, a 15 MB PDF that times out on mobile data, or an app store link that is not available in the visitor's country.
Test the destination in a private browser window, on mobile data rather than office Wi-Fi, on a phone rather than a laptop.
7. Something went wrong in production
- Low-resolution export. A 200-pixel PNG scaled up to 8 cm gives soft, blurred module edges. Use SVG, PDF or EPS for print, or a PNG at least 1000 px wide.
- Ink spread. Uncoated stock, kraft paper and newsprint bleed. Scale the code up about 20% for those materials.
- Thermal label printers at 203 dpi place modules on half-dots and produce ragged edges. Keep thermal codes at 2.5 cm or larger.
- Rich black in CMYK causes registration fuzz. Print the code in 100% K only.
- Engraving, embroidery and etching lose fine detail — go one size larger and use error correction Q.
When it cannot be fixed
Be clear about the two hard limits. A static QR code has the destination baked into the pattern itself. If the URL is wrong or the page is gone, no dashboard can repair it — the printed run has to be reprinted. That is the real cost of a typo on 5,000 flyers.
A dynamic QR code can be repointed after printing, which turns a reprint into a two-minute edit. The trade-off is honest: it depends on a redirect service and an active plan. If the subscription lapses, the redirect stops working and the printed code goes dead. For anything permanent — a plaque, a vehicle wrap, a product run — decide up front whether you are committing to that.
Check this before you print
- Scan the final artwork from the exported print file, not from the design tool preview.
- Print one page on the actual stock and scan it at the real distance.
- Test on at least one iPhone and one Android.
- Test on mobile data with Wi-Fi turned off.
- Confirm the quiet zone survived the layout and the trim.
- Confirm the code is not sitting on a fold, seam or label edge.
- Add a short line of text under it saying what happens when someone scans — scan rates rise when people know what they are getting.
Make yours
You can generate a free static QR code on the homepage — no account needed, and it is the right choice when the destination will never change. If you need to edit the destination after printing, or want to see how many scans a campaign actually got, dynamic codes are on the pricing page.
Ready to make your own QR code?
Create a free QR code