Skip to main content

QR error-correction levels explained: when to use L, M, Q or H

Transparent patches over a decorative mosaic proof card

The approximate L/M/Q/H recovery percentages refer to total codewords, not the physical area you can cover. Higher correction adds redundancy and may make a symbol denser at a fixed size. Keep logos small and functional patterns intact; inspect and decode the export, then test a sample on the intended material.

What error correction actually does

Reed–Solomon error correction adds redundant codewords that can help recover damaged data. Recovery depends on which parts are lost; logos can cover essential patterns. The correction level does not guarantee that any particular damaged or decorated code will decode.

The four levels, in plain numbers

These recovery percentages refer to total codewords; they are not percentages of visible area that a logo may safely cover.

  • L (Low) — ~7%. Least redundancy, smallest/coarsest code. Fine for clean digital codes scanned on screen.
  • M (Medium) — ~15%. The everyday default and a good balance for most printed codes.
  • Q (Quartile) — ~25%. Extra resilience for codes that might get scuffed, or that carry a small logo.
  • H (High) — about 30% of total codewords. More redundancy, with no guarantee that a particular logo, damaged pattern or print will decode.

The catch: higher level means a denser code

Here's what most 'always use H' advice skips: raising the level adds modules. At a fixed physical size, more modules means each square is smaller — and smaller modules are harder to scan, especially when printed small or read from a distance. So H is not a free upgrade. If you bump to H and print the code tiny and pack in a long URL, you can end up with a code that's harder to scan than a plain M code would have been.

When to raise it — and when not to

A simple decision guide:

  • Adding a logo? Higher correction may help, but it cannot guarantee recovery of a covered center. Keep the logo small, avoid functional patterns and check the actual export.
  • Printing on something that gets handled, scuffed or curved (packaging, equipment labels, wristbands)? Q or H buys a safety margin.
  • Plain code, clean print, scanned up close? Stay on M. Don't pay the density tax you don't need.
  • Long content printed small? Don't reach for H to compensate — shorten the URL or print larger instead. Redundancy can't fix modules that are simply too small to resolve.

Test the level you chose

After choosing a level and size, compare the exported image and its digital variants. These checks do not reproduce real lighting, camera distance or print material; confirm the decoded content and scan a physical sample.

Frequently asked questions

Which QR error-correction level should I use?

Use M for most codes. Raise to H when you add a center logo (it covers part of the code), and to Q or H for surfaces that may get scuffed or curved. Keep L for clean on-screen codes. Don't default to H for everything — it makes the code denser and can hurt scanning when printed small.

Does a higher error-correction level make a QR code more reliable?

Only up to a point. It tolerates more damage, but it also adds modules, so each square gets smaller at the same physical size — which can reduce reliability if you then print small or read from a distance. The right level balances damage tolerance against module size.

What error-correction level do I need for a QR code with a logo?

Consider a higher level such as H, but do not use its recovery percentage as a logo-area limit. Keep the logo small, preserve functional patterns and check the downloaded file plus a physical sample.

What do L, M, Q and H mean on a QR code?

L, M, Q and H are error-correction levels with approximate recovery rates of 7%, 15%, 25% and 30% of total codewords. They do not specify how much visible area a logo can safely cover. More redundancy can also produce a denser symbol.