2026-08-09
A QR code that will not scan is almost always failing for a physical reason, not a technical one. Work through these in order. The first four cost nothing to check and account for most of it.
Cameras look for dark modules on a light background. Light code on a dark background works on some phones and fails on others, and it fails more as the light gets worse. If you have inverted your code for a design reason, that is the first thing to undo when testing.
Low contrast pairs cause the same trouble without looking wrong to a person. Dark grey on light grey reads fine to your eye and poorly to a camera at an angle. Keep it near black on near white and add colour somewhere else in the design.
A QR code needs blank margin around it, roughly four modules wide, which in practice is about 10 percent of the code's width on each side. Designers delete this constantly because the code looks like it has awkward padding. Without it the scanner cannot find the edges. If your code sits tight against a border, a photo, or a fold, that is very likely your bug.
The working rule is that the code should be about one tenth of the distance it is scanned from. Scanned at 30 cm, from a table or a business card, it needs about 3 cm. On a poster read from 3 metres, about 30 cm. People routinely put a 2 cm code on a wall sign and wonder why nobody scans it.
Denser codes need to be bigger. Every extra character in the URL adds modules, and more modules in the same square means smaller ones. A short redirect link is easier to print small than a long tracked URL with parameters hanging off it.
Glossy lamination reflects a bright stripe across the code under overhead light and the camera never locks on. Matte solves it. Curved surfaces, bottles and cups especially, distort the grid; keep the code on the flattest area you have and smaller than you think. Fabric and textured card let ink spread, which closes the gaps between modules.
Ink spread is why a code that scans on your monitor fails on paper. Cheap printers and absorbent stock both thicken every dark module slightly, and at small sizes that eats the white gaps. Always test the actual printed proof on the actual stock, not the PDF on a screen.
Use vector output where you can. An SVG or EPS stays sharp at any size, while a small PNG scaled up in a layout tool arrives at the printer soft and blurred at the edges.
If the phone shows a URL and the page fails, the code is fine. Check that the link is https, that it does not redirect more times than necessary, and that the destination is actually up. A printed code pointing at a dead page is the most expensive kind of broken link, because you cannot patch it the way you would patch a website.
That last failure is the one worth automating. EverQR checks where your codes point and emails you when a destination goes down, then again when it recovers, so you hear it from us rather than from a customer. You can create a free dynamic code and change its destination at any time without reprinting.
Free, no account, editable after printing, and it will never expire on you.
Create a free QR codeMore guides: Restaurant menu QR codes that actually get scanned · How to see QR code scans in Google Analytics · Print-safe QR codes: sizes, quiet zones, and testing before the big run