QR Code Error Correction Levels Explained: L, M, Q and H (and Which One to Use)

Every QR code carries a little insurance policy. Even if part of the code is scratched, smudged, folded or covered by a logo, a phone can often still read it. That insurance is called error correction, and QR codes come with four levels of it: L, M, Q and H. Picking the right level is a trade-off between how much damage the code can survive and how dense, and therefore how hard to scan at small sizes, the pattern becomes. Here is how it works in plain English.

What error correction does

A QR code stores your data, such as a web address, as a series of bytes called codewords. When the code is created, extra recovery codewords are calculated from your data using a method called Reed–Solomon error correction, the same family of techniques used on CDs and in many digital storage systems. Those extra codewords are spread through the pattern alongside your data.

When a scanner reads the code, it uses the recovery codewords to rebuild any data codewords it could not read. The higher the level, the more recovery codewords there are, and the more damage the code can tolerate.

The four levels

The QR code standard defines four levels. The percentages are the approximate share of codewords that can be restored:

LevelCan recover aboutTypical use
L (Low)7%Clean screens and controlled conditions
M (Medium)15%Everyday print: flyers, menus, business cards
Q (Quartile)25%Surfaces that may get scuffed, dirty or worn
H (High)30%Codes with a logo in the center, or harsh conditions

An important detail: those percentages refer to codewords, not to a neat share of the visible area. Damage in the wrong place can break a code even when the area covered is small, as explained below.

The trade-off: robustness versus density

Recovery codewords take up space. For the same data, a higher level needs more codewords, so the generator has to pick a bigger grid of modules (the small black and white squares). A bigger grid printed at the same size means smaller modules, and smaller modules are harder for a camera to resolve from a distance or in poor light.

Worked example: one URL at four levels

We encoded the 36-character address https://example.com/spring-menu-2026 with the same open-source QR library QR Studio uses, letting it pick the smallest grid for each level:

LevelGrid (modules per side)Module size at 3 cm wide
L29 × 29about 1.03 mm
M29 × 29about 1.03 mm
Q33 × 33about 0.91 mm
H37 × 37about 0.81 mm

The module size is simply 30 mm divided by the number of modules per side, not counting the quiet zone. Moving from M to H made every module about 20% smaller on the same printed size. On a large poster that hardly matters. On a tiny label or a business card, it can be the difference between an instant scan and a frustrating one. Our guide to the minimum QR code size shows how to turn module counts into a safe print size.

The same effect limits capacity: at the largest QR size, a code at level H holds well under half as much data as one at level L.

Make a free QR code for a link, WiFi or contact card — generated in your browser.

Open the free QR code generator →

How to choose a level

If you are unsure, the honest answer is to print a test and scan it on a few different phones at the real distance and lighting.

How QR Studio handles error correction

QR Studio picks the level for you so you do not have to think about it:

If a code with a logo looks dense or will not scan at a small size, the easiest fix is to remove the logo. That drops the code back to M and gives you a simpler grid.

What error correction cannot fix

Error correction is powerful, but it only repairs data. Several problems sit outside what it can recover:

For a full troubleshooting list, see why a QR code is not scanning.

Logos and the "30% rule" myth

You may read that level H lets you cover 30% of a code with a logo. That is a risky way to plan. The 30% is a maximum share of codewords, the logo may land on areas that matter more than others, and any extra wear or blur uses up the same recovery budget. A safer approach is to keep the logo well below the maximum, centered, with a clean margin around it and clear of the corner squares, then test. Our QR code size guide has more on logos and print resolution.

Frequently asked questions

What are QR code error correction levels?

They are four settings, L, M, Q and H, that control how much recovery data a QR code contains. They can restore roughly 7%, 15%, 25% and 30% of the code's data codewords, respectively.

Which error correction level is best?

M suits most uses. Choose L for clean screens or very small codes, Q for rough or outdoor conditions and H when you add a logo.

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

It can at small sizes. Higher levels need more modules for the same data, so each module is smaller when printed at the same size.

Can error correction fix a QR code with no quiet zone?

No. The quiet zone is not part of the data, so error correction cannot replace it. Leave a clear margin around the code.

Make a free QR code for a link, WiFi or contact card — generated in your browser.

Open the free QR code generator →

Keep reading