capyQR
← All posts

QR code error correction explained (and why it matters for design)

L, M, Q, H — what they actually do and why H lets you stick a logo on top.

·6 min read

Every QR code includes built-in redundancy — error correction — that lets it still scan correctly even if part of it is damaged, dirty, or covered. Four levels control how much: here's what each one does and why it matters for design.

The four levels

LevelRecoveryBest for
L (Low)~7%Clean digital display, no logo, max data capacity
M (Medium)~15%General-purpose default for most codes
Q (Quartile)~25%Codes exposed to some wear or minor damage
H (High)~30%A logo or design element covering part of the code

Higher levels recover more damage but use more of the code's data capacity for redundancy rather than your actual content — which is why very high error correction on a code encoding a lot of data can require a physically larger code.

Why this matters for design, specifically

Error correction is the entire reason you can put a logo in the center of a QR code without breaking it. At High (H), the code can recover roughly 30% of its data — a centered logo covering part of the code is functionally similar to that much damage, and the scanner reconstructs the missing information from the redundancy. See adding a logo to your QR code for exactly how big that logo can safely be.

How to choose in practice

  1. No logo, digital-only, max data: Low (L) is fine — nothing covering the code, no physical damage risk.
  2. General-purpose default: Medium (M) — a solid balance for most real-world use.
  3. Print exposed to wear: Quartile (Q) — packaging or signage that might get scuffed or dirty over time.
  4. Adding a logo or design element: High (H) — required for anything covering part of the code.

Build yours in the editor → capyqr.com

A logo-ready, high-error-correction code

Here's a Capy QR styled with high error correction, ready for a logo:

A Sunset-preset Capy QR — high error correction applied, ready for a logo upload.

Frequently asked questions

What is QR code error correction?
Built-in redundancy that lets a QR code still scan correctly even if part of it is damaged, dirty, or obscured. Four levels — L, M, Q, H — trade off how much damage the code can tolerate against how much data it can hold at a given size.
What do L, M, Q, and H actually mean?
They're error correction levels, each recovering a different percentage of the code if damaged: L recovers about 7%, M about 15%, Q about 25%, and H about 30% — the highest level, using the most redundancy.
Which error correction level should I use?
Medium (M) is a solid general default. Use High (H) specifically when adding a logo or design element that covers part of the code — it's the level that makes that possible without breaking the scan.
Does higher error correction make a QR code bigger?
Yes — more redundancy means more data encoded for the same information, which can require a larger module grid at a given size, or a physically bigger code to keep each module easily scannable.
Why does high error correction let me add a logo?
Because the code can recover a large percentage of missing or obscured data at that level, a logo covering the center effectively 'damages' the code in a way the error correction can recover from — as long as the logo stays within the recoverable percentage.

Bottom line: error correction is what makes a QR code forgiving — use High whenever you're adding a logo, and Medium as a solid default otherwise. Ready to try it? Open the editor or browse more QR guides.