What error correction does
QR codes add redundant data using Reed-Solomon error correction so a scanner can recover the message even if part of the code is dirty, scratched, or covered. The more redundancy, the more damage the code can tolerate — but the denser the grid.
There are four levels you can choose when generating a code: L, M, Q, and H. Each trades capacity for resilience.
The four levels
L recovers about 7% of the data — the smallest, densest codes, good for clean environments and maximum data. M recovers about 15% — the default and a good balance for most uses.
Q recovers about 25% — good for codes that might get scuffed. H recovers about 30% — the safest choice when you add a centered logo or print on rough surfaces.
Choosing a level
Adding a centered logo covers part of the data area, so use level H to keep the code scannable. For plain codes on screens or clean prints, M is fine and keeps the code simpler.
Remember higher levels mean a denser grid for the same data — so use shorter URLs when you pick H.
Frequently asked questions
Which error correction level should I use?
Use M by default. Use H if you add a logo or expect wear and tear; use L only if you need maximum capacity in a clean setting.
Does a higher level make a bigger QR code?
For the same data, yes — more error-correction data means more modules, so the grid is larger or denser.
Can I add a logo at level M?
You can, but it risks readability. H is recommended whenever a logo covers the data area.
Is H always the safest?
H tolerates the most damage but makes denser codes that are harder to scan very small. Balance resilience against size for your use case.