Why your QR code won't scan

Last updated 16 September 2026

A QR code either scans or it does not, and when it does not, the cause is usually one of about six things. Here they are in the order I see them, easiest fix first.

1. It is too small for the distance

This is the big one. A code that fills your monitor looks generous. The same code printed on a business card is a thumbnail. Phones need the whole code in frame, in focus, and the modules need to be big enough to resolve.

The rough rule: the scan distance should be about ten times the width of the code. A 2cm code works at 20cm. If you want someone to scan it from two metres, you need a 20cm code. Nothing else on this list matters if the size is wrong.

2. Low contrast between code and background

Dark modules on a light background is what scanners expect. Invert it and many phone cameras still cope, but plenty of older or cheaper scanner apps will not. There is no upside to being clever here.

The same applies to colour. A mid-blue on mid-green can look fine to you and sit well under the scanner's threshold. If you want colour, keep the contrast ratio high and test it before you print a thousand of them.

3. Modules rendered unevenly

This happens when a code is scaled. The modules are supposed to be crisp squares at exact pixel boundaries. If the image is resized by a lazy algorithm, some modules end up a pixel wider than their neighbours. The grid stops being a grid.

Fix: download and use the PNG or SVG at its native size, or scale by whole numbers. Do not screenshot it. Do not let a word processor resize it by dragging a corner. A screenshot of a QR code is a resampled QR code, and it fails more often than people expect.

4. Damaged or covered

QR codes carry error correction, so a scratch or a sticker does not necessarily kill them. That tolerance is limited. Covering a corner is usually survivable. Covering the three big squares in the corners is not, because those are the position markers the scanner uses to find the code in the first place.

If you are putting a logo in the middle, use high error correction and keep the logo small. Under a quarter of the width is safe. Half the width is asking for trouble.

5. Glare, curve, or a bad angle

A code behind glass under a downlight is harder to scan than the same code on paper. A code wrapped around a bottle or a pillar is distorted from every angle except one. A code stuck on the inside of a window at night has no light behind it.

These are placement problems, not code problems. Test in the real location, at the real time of day, with a real phone. A code in a shop window that only scans in daylight is a bug you will not find at your desk.

6. The payload is wrong or too long

If the code scans but goes nowhere, the content is the issue. Common causes: a URL without the scheme so the phone does not know it is a link, a Wi-Fi password containing a character that needs escaping, or a vCard field with a stray comma.

If the code scans and shows nothing at all, the content is probably too long for the version, and the code was generated malformed. Shorten the payload and generate again.

Testing that actually tells you something

If you have been through all six and it still fails, generate a fresh code with a shorter payload. It costs nothing and rules out the whole category of generation problems.

Make a QR code


All guides