Skip to content
QRBeam
5 min read

QR error correction levels explained: L, M, Q and H

Error correction is why a scratched QR code still works — and why a higher level is not automatically better.


Every QR code carries redundant data so it can be decoded even when part of the symbol is unreadable. The amount of redundancy is set by the error correction level, and it is the one setting people change without understanding what it costs.

The four levels

  • L — recovers from about 7% damage. Maximum data capacity.
  • M — about 15%. The default, and the right answer most of the time.
  • Q — about 25%. For rough environments and curved surfaces.
  • H — about 30%. Required when a logo covers the centre.

The redundancy uses Reed–Solomon coding, the same family of error correction used on CDs and in deep-space telemetry. It is why a code with a coffee ring across one corner still scans.

What a higher level costs

Redundancy is stored in the symbol, so it takes up space. At a fixed data length, moving from L to H roughly doubles the number of modules needed. Those extra modules do not make the printed code bigger — they make each module smaller.

Choosing

  1. Screen or PDF, no logo: L or M. The image is pristine, so redundancy buys nothing. L keeps the symbol coarse and fast to read.
  2. Ordinary print — flyers, menus, business cards: M. This is the default for good reason.
  3. Outdoors, on packaging, on curved surfaces, or anywhere it will be handled: Q.
  4. Any code with a logo in the middle: H, and keep the logo under 20% of the width.
  5. Very long payload at a small physical size: drop to L or M and shorten the content instead. Density is the bigger risk.

The logo interaction

A centre logo is deliberate damage. At level H you have a 30% budget, but that budget has to cover the logo plus real-world wear plus print imperfection. Spending 25% of it on branding leaves almost nothing for the coffee ring.

A logo at 15–20% of the width, on a clear background patch, with level H, is the combination that reliably works. Our generator raises the level to H automatically when you add a logo, but the size is still yours to keep sensible.

Rule of thumb

Leave it at M unless you have a specific reason not to. Go to H only when there is a logo. Go to Q when the code will live somewhere physically hostile. And whichever you pick, test the printed result — the level is a probability, not a guarantee.

Ready to make one?

The generator is free, needs no account, and runs entirely in your browser.

Open the QR generator

Keep reading