Qraft

QR Code Error Correction Levels - How to Choose L, M, Q, or H

What Is Error Correction

QR code error correction is a mechanism that allows the original data to be recovered even when part of the code is dirty or damaged. It uses Reed-Solomon error correction, a mathematical algorithm that adds redundancy to the encoded data.

Thanks to this feature, QR codes remain scannable despite print fading, surface scratches, or partial stains. However, the redundant data reduces the amount of information that can be stored, making the choice of error correction level a trade-off with data capacity.

Differences Between the Four Levels

QR codes offer four error correction levels, each with different recovery capabilities:

LevelRecoveryCapacity ImpactTypical Use
L (Low)~7%MinimalScreen display, short-term
M (Medium)~15%SmallGeneral print materials
Q (Quartile)~25%ModerateFactories, warehouses
H (High)~30%LargeLogo overlay, outdoor signs

Level L maximizes data capacity but risks becoming unreadable with even minor damage. Level H is the most robust but requires a larger QR code version to store the same data.

Choosing by Use Case

Select the error correction level based on where and how the QR code will be used:

  • Digital screens: No physical damage occurs, so Level L is sufficient and keeps the code compact.
  • Business cards and flyers: Level M handles normal wear from everyday handling.
  • Factory and warehouse labels: Choose Level Q or higher for environments with oil, dust, or abrasion.
  • Logo-embedded QR codes: The logo covers part of the data area, making Level H essential.
  • Outdoor posters: Rain, wind, and UV exposure call for Level Q or H.

Data Capacity and Version Size

Raising the error correction level increases the QR code version (module count) needed for the same data. For example, 100 alphanumeric characters fit in Version 3 (29 x 29 modules) at Level L, but require Version 5 (37 x 37 modules) at Level H.

A larger version means smaller individual modules, which affects print resolution and scanning distance. Shortening URLs to reduce data length is an effective way to maintain a high error correction level while keeping the version manageable.

Related: See also our guide on how QR codes work.

You may also find <% if (typeof amazonTag !== 'undefined' && amazonTag) { %>QR code books<% } else { %>QR code books<% } %> helpful.

A Practical Decision Flowchart

When in doubt, follow this decision order:

  1. Will you overlay a logo or illustration? Yes - Level H
  2. Will it be used outdoors or in harsh conditions? Yes - Level Q or higher
  3. Will it be printed and distributed? Yes - Level M
  4. Screen display only? Yes - Level L

If you are still unsure, Level M is a safe default. It offers the best balance between recovery capability and data capacity, and most QR code generators use it as their default setting.