QR Code Error Correction Levels Explained (L, M, Q, H)

What QR code error correction is, how levels L, M, Q and H differ (7%, 15%, 25%, 30%), and which level to use when you add a logo or print on rough surfaces.

By the QR Vibe teamUpdated 5 min read

What error correction does

Every QR code contains extra recovery data calculated with Reed-Solomon error correction, the same family of maths used on CDs and in deep-space communication. If part of the code is dirty, scratched, poorly printed or covered by a logo, the scanner uses that recovery data to rebuild the missing pieces.

The QR standard defines four levels. Higher levels can recover more damage, but they need more modules, so the code becomes denser for the same content.

The four levels

Approximate share of the code that can be damaged and still be read:

  • Level L (Low): about 7%. Smallest, simplest code. Good for clean digital screens.
  • Level M (Medium): about 15%. A sensible default for most printed codes.
  • Level Q (Quartile): about 25%. Good for industrial labels and outdoor signage.
  • Level H (High): about 30%. Needed when a logo covers the centre of the code.

Why logos need Level H

A logo placed in the middle of a QR code physically hides modules. The scanner treats those hidden modules as damage. If the logo covers 15% of the code and you used Level M, there is no recovery margin left for anything else, such as a slightly blurry photo or glare. With Level H, the same logo leaves comfortable headroom.

As a guideline, keep the logo below about 20 to 25% of the code area even at Level H, and never cover the three large square finder patterns in the corners.

The trade-off: density

Higher error correction adds modules. For a short URL the difference is small, but for long content it can push the code to a much higher version with tiny modules. If you need Level H and have a lot of data, print the code larger or shorten the content.

Which level should you choose?

A practical summary:

  • Plain code on a screen or website: L or M.
  • Printed flyers, menus, business cards without a logo: M.
  • Outdoor signs, packaging, labels that may get scuffed: Q.
  • Any code with a logo or heavy styling: H.

How QR Vibe handles it

QR Vibe switches to Level H automatically as soon as you upload a logo, then runs a real decoder (jsQR) on your design in the browser to confirm it scans before you download. You do not need to choose the level by hand.

Free, no sign-up, never expires.

Try a logo QR code (auto Level H)

Frequently asked questions

What error correction level is best for a QR code with a logo?

Level H, which can recover roughly 30% of the code. Keep the logo small and away from the three corner squares.

Does higher error correction make a QR code harder to scan?

Not by itself, but it makes the code denser. For long content, a denser code needs to be printed larger to scan easily.

What error correction level do most QR generators use?

Many default to Level M (about 15%). QR Vibe uses M for plain codes and switches to H automatically when you add a logo.