Why won't my QR code scan? A checklist
Almost every QR code that will not scan fails for one of eight reasons — and you can rule out all eight in about two minutes.
7 min read · Updated
Work down this list in order. It is sorted by how often each cause is the real one, so the first three fix the large majority of broken codes.
1. It is printed too small
The most common cause by a distance. A scanner needs several camera pixels per module, and a dense code printed small gives it fractions of a pixel. The rule is scanning distance ÷ 10: a code read from 3 m needs to be about 30 cm wide. Details and a table of real sizes are in the print-size guide.
2. The quiet zone was cropped
A QR code needs a clear margin of at least four modules on all four sides. Designers routinely crop to the black edge, or drop the code into a tight coloured box, and the scanner then cannot find where the grid ends. Give it white space — this fix costs nothing and rescues a surprising number of codes.
3. Contrast is too low
Pale grey on white, navy on black, or two similar brand colours will fail in anything but perfect light. Keep the foreground much darker than the background — the same contrast you would demand of body text, and then some. Metallic and neon inks are worse than they look on screen because they reflect the room.
4. The code is inverted
Light modules on a dark background break the assumption most decoders start from. Some phones handle it, many do not, and older scanners almost never do. If a dark-mode design is non-negotiable, place a normal dark-on-light code inside a light panel rather than inverting the modules themselves.
5. The logo is too big
Covering more than about a quarter of the code's width overruns what error correction can rebuild, especially once real-world print noise takes its share. Shrink the logo, or raise error correction to H and shorten the content — see adding a logo safely.
6. Glare, curve or texture
Gloss lamination under a ceiling light produces a bright patch straight across the modules. A code wrapped around a bottle, printed on fabric, or on heavily textured stock distorts the grid. Matte finish, flat surfaces and smooth stock all measurably improve read rates — and on a curve, keep the code small enough that the bend across it stays gentle.
7. The image is blurry or resized badly
A PNG exported at 200 px and stretched onto a poster turns crisp edges into grey mush. Export SVG or PDF for anything printed — vector stays sharp at any size. If you must ship a raster, export at the final print size at 300 DPI, and never scale a small PNG up.
Also check the resampling: some layout tools smooth images by default. A QR code should be resized with nearest-neighbour or, better, kept as vector all the way to the printer.
8. The content itself is wrong
Sometimes the code scans perfectly and the payload is broken: a URL missing https://, a Wi-Fi password with an unescaped semicolon, a phone number without a country code, or a link to a staging site that no longer exists. Decode your own code and read the raw text — the scanner here runs on your device and shows exactly what the code carries.
How to test properly
- Test the printed artefact at final size, not the file on your monitor.
- Use at least two phones, including an older one — cameras differ enormously.
- Test in the actual lighting: a dim restaurant is not your desk.
- Scan from the distance a real person will stand at, and slightly further.
- Have someone who did not design it try, without being told where to point.
The generator also decodes its own preview live and shows a pass or warning badge as you design, so most problems are visible before you export anything.
If everything above checks out
Rebuild the code with the shortest possible content, error correction M, plain black on white, no logo and no frame, and scan that. If the plain version works, reintroduce your design one change at a time — the change that breaks it is your answer. If even the plain version fails, the problem is the camera or the surface, not the code.