# QR code error correction levels explained (L, M, Q, H)

> Error correction lets a scanner rebuild a damaged or covered part of a code: level L recovers about 7%, M 15%, Q 25% and H 30%. Higher levels make the code denser, so use M by default and H when you add a logo or print for rough environments.

Canonical page: https://kizmo.io/guides/qr-code-error-correction

Updated 2026-09-27.

QR codes use Reed-Solomon error correction, the same family of maths used on CDs and in space communication. Part of every code is redundant data that lets a scanner reconstruct missing pieces.

| Level | Recovers | Use it for |
|---|---|---|
| L | ~7% | Clean digital screens, very small prints where density matters |
| M | ~15% | The sensible default for print |
| Q | ~25% | Outdoor signs, industrial labels |
| H | ~30% | Codes with a logo in the centre |

A logo does not "sit on top" of a working code. It destroys the modules underneath, and error correction rebuilds them. That is why Kizmo switches to H automatically when you add a logo and warns you if the logo covers more than the level can safely recover.


---

Kizmo: QR codes you own. https://kizmo.io/
