QR Code Error Correction Levels Explained
Understand L, M, Q and H error correction, how they affect QR code density, and when to use high error correction for logos or damaged surfaces.
What error correction does
Error correction allows a QR code to be read even when part of it is damaged, dirty or covered. The levels are usually called L, M, Q and H. Higher levels can recover more missing data, but they also make the pattern denser.
For clean digital use, Medium (M) is a sensible default. It gives a good balance between resilience and density. Low (L) fits more data into a smaller pattern but is less forgiving. Quartile (Q) and High (H) are useful when the code may be scratched, laminated, or partially covered.
- L: about 7% recovery.
- M: about 15% recovery.
- Q: about 25% recovery.
- H: about 30% recovery.
Why higher is not always better
A denser code needs more precise printing and a larger physical size. If you choose H for a very long URL, the code may become difficult to scan when printed small. Choose the lowest level that suits the environment, then test it.
Logo codes are the main exception. A logo covers real modules, so High (H) is usually appropriate. Even so, keep the logo modest and scan the final artwork at the final size.
Practical recommendations
Use M for most links, text, Wi-Fi and contact cards. Use H for logo codes, outdoor signage or surfaces that may be scratched. Use L only when space is tight and the code will be displayed cleanly on a screen.
If a code fails to scan, try a lower error correction level before increasing the size. A simpler pattern is often easier for older phone cameras.
Sources and methodology
This guide is based on QRKit's practical testing, public platform documentation, and common failure modes reported by users. Recommendations are conservative and should be tested on the exact devices, materials and print conditions you plan to use.
