QR Code Error Correction Levels Explained

Error correction lets a QR code still scan when part of it is dirty, damaged or covered by a logo. Choosing the right level is a trade-off between toughness and size.

The short answer

Every QR code includes extra data that lets a scanner rebuild missing parts. There are four levels: L recovers about 7% of the code, M about 15%, Q about 25% and H about 30%. Higher levels make the code tougher but denser. Use M for most codes and H when you place a logo in the middle or print outdoors.

The four levels

LevelRecovers aboutBest for
L (low)7%Screens and clean, protected prints with lots of data
M (medium)15%Most printed codes: flyers, cards, menus
Q (quartile)25%Industrial labels, packaging that gets handled
H (high)30%Codes with a logo, outdoor signs, stickers that may scratch

The percentage is of the code's data blocks (codewords), not of its visible area, so treat it as a guide rather than an exact amount you can cover.

How it works

QR codes use Reed–Solomon error correction, the same mathematics used on CDs, DVDs and in deep-space communication. Your data is split into blocks, and extra check blocks are calculated from it. When a scanner reads the code, it uses the check blocks to detect and repair wrong or missing modules. The more check blocks, the more damage the code can survive.

The trade-off: toughness vs size

Check blocks take space. With the same content, a higher level needs more modules, so each module is smaller when printed at the same size. Smaller modules are harder for cameras to resolve from a distance.

Take the link https://yourcafe.com/menu (25 characters):

LevelGrid sizeModules per side
LVersion 225 × 25
MVersion 225 × 25
QVersion 329 × 29
HVersion 433 × 33

At 2 cm wide, each module of the H code is about 25% smaller than in the L code. That is why short content matters: a shorter link leaves room for a higher level without making the code hard to scan. Our size calculator accounts for this.

Logos and error correction

A logo in the middle hides modules, and the scanner has to rebuild them with error correction. That is why you should use level H whenever you add a logo. Our generator uses level M by default and switches to H automatically when you add a logo, and the scan test warns you if a design is too risky.

Rules that keep logo codes readable:

  • Keep the logo to about 20–25% of the code's width or less, even at level H. Error correction also has to cope with blur, glare and printing flaws.
  • Never cover the three corner squares (finder patterns) or the quiet zone. Error correction cannot repair those.
  • Give the logo a small white padding so it doesn't merge with nearby modules.
  • Test with real phones, not just one. Our QR code with logo tool checks every design with a real decoder before download.

Choosing a level

  1. Plain code on paper or screen: M.
  2. Long content (vCard, long text) on a small print: L or M, to keep modules large.
  3. Logo in the center: H.
  4. Outdoors, on vehicles, floors or equipment: Q or H, and print larger to compensate.
  5. Engraving, embroidery or low-resolution printing: H, with short content.

What error correction can't fix

  • Poor contrast: light dots on a light background, or inverted colors that some phones can't read.
  • A missing quiet zone: text or graphics touching the code.
  • Damaged finder patterns: a torn or covered corner square.
  • Printed too small for the scanning distance.
  • A broken link: the code scans fine, but the page behind it is gone.

Our scannability checker scores a code out of 100 and points out each of these problems.

Test how tough your code really is

Before you print a large run, try to break the code on purpose:

  1. Print it at its final size on the real material, not just on office paper.
  2. Cover part of it with a sticky note, starting at one edge and moving inwards, and scan after each step. A level H code should still read with a noticeable corner of the data area covered (not the finder squares).
  3. Scan from an angle and from the expected distance, in the light where it will hang: a dim restaurant, a sunny window, a shop under tube lights.
  4. Try several phones, including an older Android phone. New iPhones are very forgiving and can hide problems.
  5. Rub, fold or wet a sample if the code goes on packaging, outdoor signs or vehicles.

If the code fails early, shorten the content, increase the print size, raise the level or make the logo smaller, in that order.

Error correction in other 2D codes

QR codes are not the only codes with error correction. Data Matrix uses a fixed Reed–Solomon scheme (ECC 200) that recovers a similar amount of damage, which is why it is used on tiny electronic parts and medicine packs. PDF417 offers nine security levels, and Aztec lets you choose a percentage. Ordinary 1D barcodes such as EAN-13 have only a check digit, which detects a misread but can't repair it. See QR code vs barcode for when to use each.

Frequently asked questions

What is the best QR code error correction level?

M for most printed codes, H for codes with a logo or for outdoor use. L suits clean screens and dense content.

How much of a QR code can be damaged?

Up to about 30% of the data at level H. Damage to the three corner squares or the quiet zone usually can't be repaired.

Does higher error correction make a QR code bigger?

It adds modules, so the pattern is denser. At the same print size, each module gets smaller.

Which level should I use with a logo?

H. Our generator selects it automatically when you add a logo.

Can I change the error correction level?

Yes, in the generator's More tab. The scan test confirms the result still reads.

Does error correction affect scanning speed?

Not noticeably. Modern phones decode any level in a fraction of a second if the code is printed large and sharp.