QR Code Error Correction Explained
Every QR code carries spare copies of its own data. That is why a code with a coffee ring on it still scans — and why you can put a logo in the middle without breaking anything.
The four levels
| Level | Recoverable | Best for |
|---|---|---|
| L — Low | about 7% | Clean digital use, screens, the shortest possible code |
| M — Medium | about 15% | The sensible default for most printing |
| Q — Quartile | about 25% | Codes on labels, packaging, anything that gets handled |
| H — High | about 30% | Codes with a logo in the middle, or printed on rough or curved surfaces |
The percentages come from ISO/IEC 18004, the QR standard, and refer to how much of the code can be damaged or covered while still decoding correctly.
What it costs
Redundancy takes room. The same content at level H produces a noticeably denser grid than at level L, and a denser grid means smaller modules at the same printed size. Push the level up and you may have to print bigger to compensate — which is the opposite of what you wanted.
That is the whole trade-off: higher correction survives more damage, but makes every module smaller. Past a point you are making the code more fragile, not less.
When to raise it
- You are placing a logo or icon in the centre. The generator does this for you automatically.
- The code goes on something that will be scuffed, folded, wrapped or rained on.
- It is printed on a curved surface — a bottle, a tin, a cup.
- The print process is coarse: thermal labels, screen printing, embroidery, engraving.
When to leave it alone
For a flat printed code on decent paper with no logo, level M is right. It is the default here for exactly that reason.
Error correction protects against damage, not against a bad link. If the destination page disappears, no correction level saves you.