Spec & internals
QR code error correction levels explained
L, M, Q and H tolerate roughly 7%, 15%, 25% and 30% damage. Higher levels cost capacity, so the same payload needs a bigger version — which means smaller modules at the same printed size. Raising the level to make a code more robust can make it harder to scan.
The four levels
| Level | Damage tolerated | Capacity vs L | Use for |
|---|---|---|---|
| L | ~7% | 100% | Screens, maximum data in minimum size |
| M | ~15% | ~79% | The default; most print work |
| Q | ~25% | ~56% | Codes with a logo, moderately dirty environments |
| H | ~30% | ~43% | Heavy logos, industrial labels, outdoor signage |
The trade that catches people out
Higher error correction does not add robustness for free. It spends capacity on redundancy, so the same payload needs a higher version — more modules, each smaller at the same printed size.
A 200-character URL:
| Level | Version | Modules | Module size at 3 cm |
|---|---|---|---|
| L | 7 | 45 | 0.67 mm |
| M | 8 | 49 | 0.61 mm |
| Q | 10 | 57 | 0.53 mm |
| H | 12 | 65 | 0.46 mm |
If the code is already near the limit of what your printed size supports, moving M → H makes it worse. This is the most common mistake in QR troubleshooting: the instinct is to raise error correction, and for a dense code that is backwards.
The correct order
- Shorten the payload. Biggest effect, no cost.
- Choose the error-correction level the environment actually needs.
- Size the code for the distance and the module floor.
- Verify by decoding the rendered output.
What error correction does not protect
Reed–Solomon protects the data region. It does not protect:
- Finder patterns — cover one and the code cannot be located.
- The quiet zone.
- Format information beside the finders — though this has its own BCH protection and is stored twice.
- Timing patterns.
This is why a centre logo is safe at Q or H and a corner logo is not at any level.
Erasures versus errors
Reed–Solomon corrects erasures — damage in a known location — at twice the rate of errors, where the decoder does not know which symbols are wrong. A clean logo covering a region reads as an erasure; scattered print noise reads as errors. That is why a solid, obviously-covered patch is more survivable than the same area of speckle.
FAQ
Which error correction level should I use?
M for most printed work. Q or H only when adding a logo or printing on something that will be scuffed, wet or faded. L for screens where you want the smallest possible code.
Does higher error correction make a QR code easier to scan?
Not necessarily. It increases the version, making every module smaller at the same printed size. For a dense code that makes scanning harder, not easier.
How much of a QR code can be damaged?
Roughly 7% at level L, 15% at M, 25% at Q and 30% at H — but only in the data region. Damage to the corner finder patterns or the quiet zone is not recoverable at any level.
Why is a logo safer than random damage?
A logo covers a known contiguous region, which Reed–Solomon treats as erasures and corrects at twice the rate of scattered errors.