QR Code Error Correction Levels Explained — L, M, Q, H (2026 Guide)
QR codes have four error correction levels that determine how much damage they can sustain while still scanning. Here's what each level means and when to use it.
Every QR code includes error correction data — additional encoding that allows the code to recover from partial damage, dirt, or obscuration and still scan correctly. Understanding error correction levels helps you choose the right setting for your specific use case and explains why some QR codes look more complex than others.
What Is QR Code Error Correction?
The ISO/IEC 18004 standard (which defines how QR codes work) requires QR codes to include Reed-Solomon error correction codes — a mathematical redundancy system originally developed for CDs. This redundancy allows the QR code reader to reconstruct damaged or missing data.
In practical terms: a QR code with high error correction can have up to 30% of its modules destroyed, dirty, printed over, or otherwise unreadable — and still decode correctly. This is what makes QR codes robust enough for physical environments.
The Four Error Correction Levels
| Level | Label | Data Recovery | Effect on Code Size |
|---|---|---|---|
| L | Low | Up to 7% damage | Smallest, least dense |
| M | Medium | Up to 15% damage | Moderate — default for most generators |
| Q | Quartile | Up to 25% damage | Denser, larger |
| H | High | Up to 30% damage | Most dense, largest |
Each step up in error correction level adds more redundancy modules to the code — making the code denser (more small squares) at any given physical size. Denser codes are slightly more challenging to scan at very small sizes or very long distances, but at standard sizes the difference is minimal with modern phone cameras.
When to Use Each Level
L (Low) — When to Use It
- Digital screens and displays only — where the code will never be physically damaged
- When maximum compactness is critical — encoding the same data at a much smaller physical size
- Clean, controlled indoor environments where codes will not be touched, folded, or exposed to weather
Avoid L for: Print materials, outdoor use, high-touch environments, or any application where the code might sustain damage.
M (Medium) — The Default for Most Applications
- Standard print materials: flyers, business cards, posters, table tents
- Indoor signage in normal conditions
- Most retail and restaurant applications
- Event materials (programs, badges, tickets)
M-level is the right choice for the vast majority of QR code applications. UnlimitedQRCodes.com uses M-level by default, which is appropriate for nearly all common business uses.
Q (Quartile) — For Challenging Environments
- Outdoor environments with weather exposure, UV degradation, and physical contact
- Industrial environments where codes may be exposed to grease, moisture, or abrasion
- QR codes on fabric (t-shirts, bags) where slight distortion is expected
- Vehicle decals and window stickers exposed to weathering
- QR codes with small logo overlays (up to ~15% coverage)
H (High) — For Extreme Use Cases
- Highly challenging industrial or outdoor environments
- QR codes with prominent logo overlays (up to 20–30% coverage)
- Applications where reliable scanning is critical even if code quality degrades
- Codes that will be printed at very large sizes where higher density isn't a constraint
Error Correction and Logo Overlays
The most common reason to use Q or H error correction is to accommodate a logo in the center of the QR code. The logo physically covers modules that the scanner cannot read — and the error correction system must reconstruct that missing data.
The rule of thumb: your logo should not cover more than the error correction capacity:
- L-level: Logo covers no more than 7% of code area (very small)
- M-level: Logo covers up to 15% (small logo, tight margins)
- Q-level: Logo covers up to 25% (standard logo placement)
- H-level: Logo covers up to 30% (larger logo possible)
Even with H-level error correction, a logo covering more than 30% of the code will cause scan failures. Test rigorously with actual devices when using logos.
How Error Correction Affects Code Size
Higher error correction requires more modules to store the same data. For a short URL (e.g., "https://www.example.com"), the difference between L and H levels is:
- L: 21×21 modules (Version 1) — smallest possible code
- M: 25×25 modules (Version 2)
- Q: 29×29 modules (Version 3)
- H: 33×33 modules (Version 4)
At a printed size of 1 inch × 1 inch, these differences are imperceptible to modern phone cameras and will not affect scan reliability under normal conditions. The module count difference matters only at extremely small print sizes (below 0.5 inch) or very long scanning distances.
Frequently Asked Questions
What are QR code error correction levels?
Four levels (L, M, Q, H) that determine how much of the QR code can be damaged or obscured while it still scans. Higher levels = more redundancy = denser code. M (15% damage tolerance) is the recommended default for most applications.
Which level should I use for a QR code with a logo?
Q (25% capacity) for logos covering up to 15% of the code area. H (30% capacity) for larger logos up to 30% of the code area. Always test rigorously on multiple devices.
Does error correction level affect scan speed?
Minimally. Modern phone cameras and QR decoders handle all error correction levels nearly identically. The practical difference in scan speed between L and H is typically under 100 milliseconds — imperceptible to users.
Generate Your Free QR Code Now
No sign-up. No watermarks. No limits. Ready in 30 seconds.
Create Free QR Code →