QR Code Best Practices: Size, Contrast & Error Correction
Most QR scanning failures come down to three fixable things: size, contrast, and error correction level. Here is what actually matters.
Every QR code encodes the same kind of data, but not every QR code scans the same. When a code fails, the cause is almost always one of three things: it is too small, the contrast is too low, or the error correction level does not match how the code is being used. Get these three right and scanning problems mostly disappear.
Size: match it to scanning distance
A QR code needs to be large enough, relative to the distance someone will stand from it, for a phone camera to resolve the individual modules. The working rule is that the code's width should be at least one tenth of the expected scanning distance.
| Placement | Typical distance | Minimum width |
|---|---|---|
| Business card | 10 to 15 cm | 1.5 to 2 cm |
| Product packaging | 20 to 30 cm | 2 to 3 cm |
| Table tent / menu | 40 to 50 cm | 4 to 5 cm |
| Poster at eye level | 1 to 2 m | 10 to 20 cm |
| Billboard | 10 m+ | 1 m+ |
When in doubt, size up. An oversized code that scans instantly is better than a compact one that makes people fumble with their camera, and nobody has ever complained that a QR code was too easy to scan.
Contrast: dark on light, always
Scanners work off contrast between modules and background, not off specific colours. Low-contrast combinations (light grey on white, or two mid-tone brand colours) fail far more often than they should, especially under poor lighting or on a glossy surface that throws glare.
Two rules cover almost every case. Keep the foreground darker than the background, never the reverse: inverted codes work on some scanners and fail on others. And never place a code directly over a photograph without putting a solid-colour panel behind it first.
Error correction: pick the right level for the job
QR codes support four error correction levels, each able to survive a different amount of damage:
- L: about 7% recoverable. Clean digital use only.
- M: about 15%. A sensible default for screens.
- Q: about 25%. Print that may get handled or scuffed.
- H: about 30%. Logos, outdoor signage, anything that gets wet or dirty.
Higher levels add redundancy, which makes the code more robust but also denser for the same data. Use L or M for a clean on-screen code with no logo. Use Q or H whenever you add a logo, print on a surface that will be handled, or expect the code to be photographed from an angle rather than scanned head-on.
Keep the quiet zone intact
The blank margin around a code, the quiet zone, is not wasted space. Scanners use it to separate the code from its surroundings, and cropping it too tightly is one of the most common causes of failure in printed material. Leave at least four modules' worth of clear space on all sides, and do not let text, borders, or images bleed into it.
Test before you print at scale
Before committing to a print run of thousands, print one test copy at final size, on the final material, and scan it with two or three different phones in the lighting the code will actually live in. Include at least one older device; camera quality varies more than people expect. This five-minute check catches nearly every real-world failure before it becomes an expensive reprint.
If you remember one thing, make it size: a code should be at least a tenth as wide as the distance it will be scanned from. Most scan failures are simply a code printed too small for where it ended up.
None of this requires special tools. Our generator lets you set the error correction level and preview colours and logos before you download, so most of these issues can be caught before the code ever leaves your screen.
Ready to make a URL QR code?
Put these tips into practice in seconds, no sign-up required.
URL QR Code GeneratorRead next
More from Guides.
QR Code Security: How Quishing Works and How to Stay Safe
Malicious QR codes are a real and growing problem. What the attacks look like, and what both scanners and publishers should do.
Static vs Dynamic QR Codes: Which One Do You Need?
Static codes encode the destination directly; dynamic codes point at a redirect you control. The difference matters most after printing.
QR Code Analytics: The Metrics That Actually Matter
Scan counts alone tell you very little. Here is how to read QR analytics in a way that changes decisions.