Why your QR code is not scanning
Codes almost never fail for exotic reasons. In practice it is nearly always one of these nine things, roughly in this order.
It is printed too small
Under two centimetres square, phone cameras struggle to resolve individual modules. Measure your printed code before blaming the software.
The quiet zone has been eaten
Text or artwork pushed right up against the edge of a code confuses the scanner about where the pattern starts. Give it four modules of clear space.
Contrast is too low
Pale grey dots on white, or dark dots on a dark background, both fail. Aim for a strong difference in lightness, not just in hue.
It has been inverted
Light dots on a dark background break older scanners. Keep dark on light.
The logo is too big
Past roughly thirty percent coverage, even the highest error correction cannot recover the data. Shrink the logo.
It was scaled from a small PNG
Enlarging a low-resolution image gives you soft, blurred edges. Use an SVG for anything printed larger than a business card.
The surface is curved or reflective
Bottles, cans and glossy laminate all distort the pattern. Print larger and choose a matte finish where you can.
The destination is broken
The code scans fine and the page 404s. Test the actual link, not just the code.
The code was damaged in production
Cheap printing bleeds ink between modules. Ask for a proof and scan the proof.
The generator is free and needs no account to preview.
Questions
My code works on Android but not iPhone. Why?
This usually points to an inverted code or a rounded dot style pushed too far. Both cameras follow the same standard, but Apple's scanner is stricter about contrast and module shape.
Does laminating a menu stop codes scanning?
Gloss lamination can, because of reflections under overhead lighting. Matte lamination is safer for anything with a code on it.