Back to Blog
Guides
June 29, 2026 3 min readBy CQRG Team

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.

PlacementTypical distanceMinimum width
Business card10 to 15 cm1.5 to 2 cm
Product packaging20 to 30 cm2 to 3 cm
Table tent / menu40 to 50 cm4 to 5 cm
Poster at eye level1 to 2 m10 to 20 cm
Billboard10 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.

Rule of thumb

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.

best practicesprintingerror correction

Ready to make a URL QR code?

Put these tips into practice in seconds, no sign-up required.

URL QR Code Generator

Read next

More from Guides.