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 check all eight in about two minutes.
7 min read · Updated
Work through this list in order. It is sorted by how often each cause turns out to be the problem, and the first three account for most broken codes.
1. The QR code is printed too small
This is by far the most common cause. A scanner needs several camera pixels per module, and a dense code printed small gives it less than one. The rule is scanning distance ÷ 10: a code read from 3 m should be about 30 cm wide. The print-size guide has the details and a table of sizes for common media.
2. The quiet zone was cropped
A QR code needs a clear margin of at least four modules on all four sides. Designers often crop to the black edge or drop the code into a tight coloured box, and then the scanner cannot find where the grid ends. Add white space around it. The 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 bright, even light. Make the foreground much darker than the background, with at least the contrast you would expect from body text. Metallic and neon inks perform worse than they look on screen, because they reflect the light in the room.
4. The code is inverted
Light modules on a dark background break the assumption most decoders start from. Some phones cope, many do not, and older scanners almost never do. If the design has to be dark, place a normal dark-on-light code on a light panel instead of inverting the modules.
5. The logo is too big
A logo wider than about a quarter of the code covers more than error correction can rebuild, especially once real print defects use up part of that budget. 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 puts a bright patch straight across the modules. A code wrapped around a bottle, printed on fabric or on heavily textured stock distorts the grid. A matte finish, a flat surface and smooth stock all noticeably improve read rates. On a curved surface, keep the code small enough that the bend across it stays gentle.
7. The image is blurry or badly resized
A PNG exported at 200 px and stretched onto a poster turns crisp module edges into grey blur. Export SVG or PDF for anything printed, since vector files stay sharp at any size. If you have to supply a raster image, export it at the final print size at 300 DPI, and never scale a small PNG up.
Check the resampling setting too, because some layout tools smooth images by default. Resize a QR code with nearest-neighbour, or better, keep it as vector all the way to the printer.
8. The content itself is wrong
Sometimes the code scans fine 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 contains.
How to test a QR code properly
- Test the printed item at its final size, not the file on your monitor.
- Use at least two phones, including an older one, because cameras vary a lot.
- Test in the lighting where it will be used. A dim restaurant is not your desk.
- Scan from where a real person will stand, and from a little further away.
- Ask someone who did not design it to try, without telling them where to point.
The generator also decodes its own preview as you design and shows a pass or warning badge, so most problems show up 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, add your design back one change at a time; the change that breaks it is the cause. If even the plain version fails, the problem lies with the camera or the surface rather than the code.