# Error correction level

> Error correction level sets how much of a QR code can be damaged and still decode: L tolerates about 7%, M 15%, Q 25% and H 30%. Higher levels cost capacity, so the same data needs a bigger code.

Source: https://useqr.app/glossary/error-correction-level · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The four levels

| Level | Recoverable | Typical use |
|---|---|---|
| **L** | ~7% | Clean screens, maximum data in minimum size |
| **M** | ~15% | The default; most print work |
| **Q** | ~25% | Codes with a logo, or moderately dirty environments |
| **H** | ~30% | Logo-heavy designs, industrial labels, outdoor signage |

## The capacity trade

At version 10, byte-mode capacity drops from 271 characters at L to 174 at M, 132 at Q and
98 at H. Choosing H rather than M for the same payload typically pushes you up two or three
versions — a denser code, which is *harder* to scan. That is the trap: raising error
correction to make a code more robust can make it less scannable if you do not also
increase the printed size.

## The right choice

Use **M** by default. Use **Q or H** only when you are covering part of the code with a
logo, or printing on something that will be scuffed, wet or faded. Never use H "just to be
safe" on an already-large payload.
