Guide
QR code error correction levels
Four levels, one trade-off: resilience against density. Choosing well is the difference between a label that survives a warehouse and one that does not.
QR codes have four error correction levels. L recovers about 7% of a damaged code, M about 15%, Q about 25% and H about 30%. Higher levels add redundant data, which makes the grid denser and requires a larger print at the same module size.
What each one costs and buys
| Level | Recoverable | Size cost | Use for |
|---|---|---|---|
| L | ~7% | Smallest code | Screens, clean environments, very long payloads |
| M | ~15% | +10% modules | General print — the sensible default |
| Q | ~25% | +25% modules | Outdoor, industrial, packaging, badges |
| H | ~30% | +35% modules | Logo overlays, harsh environments, labels that get damaged |
The size cost is not linear and depends on the payload. A short URL at level H may still fit in the same version as level L; a long vCard will jump two or three versions. Watch the version indicator in the readout as you switch levels.
A decision table by context
| Context | Level | Reason |
|---|---|---|
| Website or email | L or M | No physical damage possible |
| Flyer, menu, brochure | M | Handled but not abused |
| Business card | M | Density matters more at small sizes |
| Outdoor board or sign | Q | Weather, fading, partial obstruction |
| Product packaging | Q | Handling, scuffing, transit damage |
| Code with a centre logo | H | Deliberate data loss needs headroom |
| Industrial or laboratory label | H | Chemicals, abrasion, extreme conditions |
| Event badge | Q | Creasing and wear on a lanyard |
| Very long payload at small size | L | Only if the environment is benign |
Three things the percentages do not mean
- It is not a damage budget you can spend fully. Level H survives about 30% loss under good conditions, but printing, lighting and angle have already consumed some of that before the first scratch. Leave margin.
- It does not protect the finder patterns. The three corner squares carry no error correction at all. Damage one and the code becomes unfindable regardless of level.
- Higher is not always better. A level H code has more modules, so at the same printed size each module is smaller — and small modules fail for their own reasons. On a business card, level M at 25 mm often outperforms level H at 25 mm.
How the redundancy is arranged
Error correction codewords are generated per block using Reed–Solomon arithmetic, then the blocks are interleaved across the whole grid rather than stored contiguously. That interleaving is what makes localised damage survivable: a stain covering 20% of the area damages roughly 20% of every block, rather than destroying one block outright.
It also explains a common observation — that codes often survive damage well beyond their rated percentage in one small area, but fail from scattered damage that looks less severe. Distribution matters as much as quantity.
Frequently asked
Which error correction level should I use?
Does higher error correction make the code bigger?
How much of a QR code can be damaged?
Why does my level H code with a logo still fail?
Last reviewed 24 August 2026 · Written and reviewed by the QR Code Builder team