First, check the destination
Before blaming the image, confirm where the code points. A perfectly scannable QR code is useless if the link is broken, points to a staging URL, or needs a login the visitor does not have. Decode your own code and open the result on a phone to be sure.
If you generated the code from a long or temporary link, switch to a short, stable URL you control. That also lets you fix the destination later without reprinting the code.
Fix contrast and the quiet zone
Scanners need clear contrast and a margin. The safest combination is a dark code on a light background, with a quiet zone (empty border) of at least a few modules around the code. Busy backgrounds, gradients, and pale foreground colours are the most common reasons a code fails.
If you have inverted the colours (light code on dark) or placed the code over a photo, revert to dark-on-light and keep the surrounding area clean.
- Use a dark code on a light background
- Keep a clear margin around the code
- Avoid placing it over busy images
Make it big enough for the scanning distance
A code that scans fine on screen can fail in print because it is simply too small for the distance people scan from. A common rule of thumb is a 10:1 ratio of scanning distance to code size — a code scanned from one metre wants to be around ten centimetres wide.
For printed codes, also raise the error-correction level. Higher correction adds redundancy so the code still reads with minor damage, smudging, or a logo overlaid, at the cost of a denser pattern — so increase the size to match.
- Size the code for the scanning distance
- Raise error correction for print
- Check the print resolution is sharp
Test before you commit
Scan the final version with more than one phone and camera app before printing at scale or publishing. Phones vary, and a code that one device reads instantly can stump another.
Crucially, test the actual output — the printed sheet or the exported image at its final size — not just the preview on your screen. Most real-world failures appear only after printing or resizing.