QR Code Error Correction Levels Explained
What L, M, Q, and H actually 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 an excellent free walkthrough of how the Reed–Solomon redundancy actually works, if you are interested.
| 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
Higher level means more recoverable, but also more data spent on redundancy and less spent on actual content. At a fixed QR version (the size of the underlying grid), going from L to H roughly halves how much you can encode. To fit the same content at a higher level, the code needs to grow: more modules, denser pattern, and essentially harder to scan from a distance.
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
M is a sensible default for most printed material. It's what Open QR Maker uses when you don't specify otherwise, because it survives the kind of wear QR codes typically encounter on packaging and posters without bloating the code unnecessarily.
- 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 default printed material (receipts, business cards, restaurant menus, pamphlets. Forgiving without being wasteful.)
- 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.