QR Code Error Correction Levels Explained

Error correction is what makes QR codes resilient. Even if part of the code is damaged, obscured, or covered by a logo, it can still be scanned successfully.

The Four Levels

LevelRecovery CapacityBest For
L (Low)~7% damage recoveryClean digital displays, maximum data capacity
M (Medium)~15% damage recoveryGeneral purpose — default for most use cases
Q (Quartile)~25% damage recoveryPrint materials that may get dirty or worn
H (High)~30% damage recoveryLogo embedding, harsh environments, outdoor signage

How It Works

QR codes use Reed-Solomon error correction, the same algorithm used in CDs, DVDs, and satellite communications. The encoder adds redundant data patterns so the decoder can reconstruct missing information.

Higher error correction = more redundant data = larger QR code for the same content. It's a tradeoff between resilience and density.

When to Use Each Level

Level L — Maximum Density

Use when the QR code will be displayed on clean screens (websites, apps, digital signage) and you need to encode long URLs or large amounts of text.

Level M — Default Choice

Good balance for most applications. Works well on printed materials in normal conditions — flyers, business cards, packaging.

Level Q — Durability

Choose for materials that may be handled roughly, get wet, or accumulate dirt. Warehouse labels, construction site signs, outdoor temporary signage.

Level H — Logo Embedding

Required when placing a logo in the center of the QR code. The logo physically covers ~10-15% of the code, so you need H-level correction to maintain scannability. Our generator automatically switches to H when you upload a logo.

Impact on Size

For the same content, a QR code with H correction will have more modules (dots) than one with L correction. Example for a 50-character URL:

  • Level L: Version 3 (29×29 modules)
  • Level H: Version 5 (37×37 modules)

This means H-level codes need to be printed slightly larger for reliable scanning at the same distance.

Try It

Our free QR code generator uses Level M by default and automatically upgrades to Level H when you add a logo — the optimal setup for most users.