Skip to content

Error Correction

What is Error Correction Level?

By CodexEngr, QR Systems Engineer · Last reviewed: 2026-10-19

One of four Reed-Solomon redundancy levels (L, M, Q, H) that determines how much of a QR code can be damaged while remaining decodable.

Error correction level is the single most consequential quality decision a QR code designer makes. Choosing incorrectly leads to either unnecessarily dense symbols (from over-engineering) or catastrophic scan failures in real-world conditions (from under-engineering).

The Four Levels

ISO/IEC 18004 defines four error correction levels identified by single-letter codes:

Level L (Low) — ~7% recovery: Approximately 7% of total codewords can be recovered. Level L produces the smallest, least dense QR symbols because fewer parity codewords need to be added. It is appropriate for clean, controlled display environments — digital screens, PDF documents, and freshly printed paper in office settings. Never use Level L for any code that will be physically printed and handled.

Level M (Medium) — ~15% recovery: The de facto standard for commercial marketing materials. Recovers approximately 15% of damaged codewords. Suitable for business cards, brochures, posters, and most general-purpose applications. Produces symbols approximately 25% larger than Level L for equivalent data.

Level Q (Quartile) — ~25% recovery: Used in industrial environments where labels are subject to abrasion, chemical exposure, and mechanical handling. Logistics carton labels, pharmaceutical packaging, and outdoor signage benefit from Level Q's extended recovery margin.

Level H (High) — ~30% recovery: The maximum error correction level. Required whenever a brand logo or graphic is embedded in the center of the QR symbol — the logo deliberately destroys data modules, which must be reconstructed by parity codewords. Level H symbols are approximately 65% larger than Level L symbols for identical data payloads.

The Size-vs-Resilience Trade-off

The trade-off is direct and linear: higher error correction = more parity codewords = larger QR version = denser symbol = more modules = larger print area. For a URL of 50 characters:

  • Version 3-L: 29×29 modules
  • Version 3-M: 29×29 modules (same version, different partition)
  • Version 4-Q: 33×33 modules
  • Version 5-H: 37×37 modules

Practical Decision Guide

Use this hierarchy:

  1. Logo embedded? → Always Level H, no exceptions
  2. Outdoor, industrial, or logistics? → Level Q minimum
  3. General retail and marketing? → Level M (default)
  4. High-density digital display, maximum data? → Level L only if no physical print is involved

Diagram description: Four-panel comparison of the same URL at L, M, Q, H levels showing increasing module density, with recovery percentage and minimum print size noted beneath each.

Frequently asked questions

Can I increase error correction on an already-printed QR code?

No. Error correction level is encoded into the format information bits of the QR code during generation. To change it, you must regenerate and reprint the code.

Does a higher error correction level make the QR code scan more slowly?

Slightly. A higher EC level produces a larger symbol with more modules, requiring the scanner to process more pixels. In practice, modern smartphone cameras decode all four levels in under 200ms — the difference is imperceptible to users.

Which error correction level should I use for a QR code with a logo?

Always Level H. The logo deliberately destroys data modules, and only the ~30% recovery of Level H leaves enough parity to reconstruct them plus handle normal print wear. Lower levels make logo codes fragile.

Sources

Related terms

Related tools