QR Code Error Correction Levels Explained
What L, M, Q, and H mean, and which one to pick.
Last updated
Four Levels Of Redundancy
The four levels correspond to how much damage the code can tolerate before the scanner gives up. The percentages here come from the QR ISO/IEC standard and describe approximate codeword restoration capacity, not a literal percentage of visible area you can safely cover with a logo.
Nayuki's step-by-step QR tutorial is a free walkthrough of how Reed–Solomon redundancy works.
| Level | Recovery | Use case |
|---|---|---|
| L (Low) | ~7% | Clean digital displays where the code will be screenshot or scanned from a screen. |
| M (Medium) | ~15% | Default for most printed material. Survives mild wear and small smudges. |
| Q (Quartile) | ~25% | Outdoor signage, packaging that gets handled, codes printed on rough surfaces. |
| H (High) | ~30% | Codes with a logo overlay or codes that need to survive serious damage. |
The Redundancy Cost
A higher level allocates more data to redundancy and less to content. At a fixed QR version, moving from L to H roughly halves the alphanumeric capacity. Encoding the same content at a higher level can require a larger grid with smaller modules at the same physical size.
The numbers below are alphanumeric capacity at QR version 10 (about 57×57 modules). The QR Code Wikipedia article has the full capacity table for every version and mode.
| Level | Characters | Drop vs L |
|---|---|---|
| L | 395 | |
| M | 311 | −21% |
| Q | 221 | −44% |
| H | 174 | −56% |
When to Choose Which Level
Open QR Maker defaults to M. It balances capacity with protection against limited wear or damage on printed material.
- Pick L if your content is long and the code will only ever be scanned from a screen. The shorter the redundancy, the smaller the code.
- Pick M for printed material such as receipts, business cards, menus, and pamphlets.
- Pick Q if the code will be outdoors, or packaging that gets handled, or printed on a rough surface where individual modules might smudge.
- Pick H only if you need to survive significant damage, or if you want to overlay a logo. The logo physically covers part of the code, and H gives the scanner enough redundancy to read around it.