QRever
Guides

QR Code Best Practices: Size, Error Correction & Contrast

The practical rules for QR codes that always scan: how big to print them, which error-correction level to use, contrast and quiet zone, and the mistakes to avoid.

May 28, 20268 min read

A QR code only earns its place if it scans on the first try, in real conditions — bad lighting, a cheap phone camera, a code on a curved box. Most scan failures come down to four fixable things: the code is too small, the contrast is too low, the quiet zone is missing, or the error correction is wrong for the surface. Get these right and your codes just work.

Size: match the code to the scan distance

The single most common mistake is printing the code too small. A reliable rule of thumb is the 10:1 ratio — the minimum scan distance is about ten times the code’s width. So a 3 cm code scans comfortably from about 30 cm (a menu in the hand), while a code meant to be scanned from 3 metres away (a poster, a yard sign) needs to be roughly 30 cm wide.

  • Business cards, menus, packaging: 2.5–3 cm and up, scanned in the hand.
  • Posters and window displays: scale to the distance people will stand at.
  • Billboards and signage: large — and remember nobody scans a code on a fast road.

Contrast: dark on light, every time

Scanners detect the code by the contrast between dark modules and the light background. Keep it strong: a dark (ideally black or near-black) code on a light, plain background is the safe default. Avoid two traps: inverting to light-on-dark (many scanners struggle with it) and placing the code on a busy photo or low-contrast colour pair. If you must use brand colours, keep the modules much darker than the background and test on a few phones before committing to print.

Quiet zone: give it breathing room

The “quiet zone” is the empty margin around the code. Scanners need it to find where the code begins and ends. The standard is at least four modules of clear space on every side — a module is one of the small squares that make up the pattern. Don’t let text, a border, or the edge of a label crowd the code, and never crop into it to save space.

Error correction: the resilience dial

QR codes carry redundant data so they still scan when partly obscured or damaged. That redundancy is set by the error-correction level:

LevelRecovers up toUse it for
L (Low)~7%Clean digital display only
M (Medium)~15%General print, good conditions
Q (Quartile)~25%Logos, light wear, small sizes
H (High)~30%Logo in the centre, curves, rough surfaces

If you’re placing a logo in the middle of the code, use level H — the higher redundancy is what lets the code survive part of its area being covered. For packaging on curved or glossy surfaces, lean toward Q or H as well.

Export the right file

For print, always use a vector SVG if you can — it stays perfectly sharp at any size, from a business card to a banner. If you need a raster file, export a high-resolution PNG (QRever goes up to 4096px) and never scale a small PNG up, which produces fuzzy edges that break scanning. Test the final printed proof with two or three different phones before approving a run.

A quick pre-print checklist

  1. Code is large enough for its scan distance (10:1).
  2. Dark modules on a light, plain background.
  3. Clear quiet zone of at least four modules.
  4. Error-correction level matched to the surface and any logo.
  5. Exported as SVG (or high-res PNG) and tested on real phones.
  6. If it’s a code you might ever need to repoint, it’s dynamic, not static.

Nail the print and the code scans. Make it dynamic and it also stays useful — you can change where it points long after the ink dries.