Every QR code has a built-in safety net called error correction. It is the reason a QR code can still be scanned even when part of it is smudged, scratched, or covered by a logo. Understanding the four error correction levels -- L, M, Q, and H -- helps you choose the right one for your specific use case, balancing durability against code density.

What Is Error Correction?

QR codes use Reed-Solomon error correction, the same algorithm used in CDs, DVDs, and deep-space communications. The idea is straightforward: redundant data is added to the code so that the original information can be reconstructed even if some of the modules (the small black and white squares) are unreadable.

Think of it like writing every sentence twice. If someone spills coffee on the first copy, you can still read the second. QR codes do this more efficiently, using mathematical algorithms rather than simple duplication, but the principle is the same.

The trade-off is that more error correction means more data modules, which makes the QR code denser (more and smaller squares) for the same amount of information.

The Four Error Correction Levels

The QR code standard (ISO/IEC 18004) defines four levels, each recovering a different percentage of damaged codewords:

Level Name Data Recovery Code Density Best For
L Low ~7% of codewords Lowest (smallest code) Digital screens, short URLs, clean environments
M Medium ~15% of codewords Moderate General-purpose use, default for most applications
Q Quartile ~25% of codewords Higher Printed materials, outdoor signage, rough handling
H High ~30% of codewords Highest (largest code) Logo overlays, harsh environments, critical applications

Each Level in Detail

Level L -- Low (7%)

Level L provides the minimum amount of error correction. It produces the smallest, cleanest-looking QR code for a given amount of data. The modules are larger and the overall code is less dense, making it ideal for digital displays where the code is rendered perfectly and there is zero risk of physical damage.

Use Level L when:

Level M -- Medium (15%)

Level M is the default in QR Forge and most other generators. It provides a solid balance between error correction and code size. For the vast majority of use cases, M is the right choice.

Use Level M when:

Level Q -- Quartile (25%)

Level Q is named because it can recover roughly a quarter of the data. This is the sweet spot for printed materials that may face moderate wear and tear -- menus, product packaging, and event materials.

Use Level Q when:

Level H -- High (30%)

Level H is the maximum error correction the QR standard supports. It can recover nearly a third of the data, which is enough to survive significant damage -- or to allow a logo overlay that deliberately obscures part of the code.

Use Level H when:

Logo Overlays

If you want to place a logo in the center of your QR code, always use Level H. The logo effectively "damages" the code by covering modules, and you need the maximum 30% recovery to compensate. Keep the logo to no more than 20-25% of the total code area to stay within safe margins.

How Error Correction Affects QR Code Size

To understand the trade-off, consider a practical example. Encoding the URL https://example.com at each error correction level produces the following results:

For short data like a simple URL, the difference is minimal. But for longer data -- such as a full vCard contact with multiple phone numbers and addresses -- the difference becomes dramatic. A vCard at Level H might require a Version 10 code (57 x 57 modules), while the same data at Level L fits in a Version 6 code (41 x 41 modules).

More modules means smaller individual squares at any given print size, which can make the code harder to scan, especially at small sizes or with lower-quality cameras.

Choosing the Right Level: Quick Reference

L Digital Only

Websites, email signatures, social media, app screens. The code is rendered perfectly and never physically handled.

M Standard Print

Business cards, flyers, brochures, product labels. Normal handling in clean, indoor environments.

Q Rough Conditions

Restaurant menus, outdoor signs, warehouse labels, event wristbands. Frequent handling or exposure to elements.

H Logo Overlay or Critical

Branded QR codes with center logos, industrial applications, medical labels, or any code that absolutely must scan.

Visual Comparison Tips

If you are trying to decide between levels for a specific project, here is a practical approach:

  1. Generate the same data at all four levels using QR Forge. Toggle between L, M, Q, and H in the error correction dropdown and note how the code changes.
  2. Print test copies at your intended size. Hold each printout at arm's length. Can you clearly distinguish individual modules in each version? The denser the code, the harder this becomes.
  3. Scan test with multiple phones. Use an older phone, a mid-range Android, and a newer iPhone. If all three scan the code reliably at your intended distance, the error correction level is appropriate.
  4. Simulate damage. Cover a corner of the printed code with your thumb. If the code still scans, your error correction level has enough margin. If it fails, step up one level.

Frequently Asked Questions

Does higher error correction make my QR code slower to scan?

Not in any meaningful way. Modern phone cameras process QR codes in milliseconds regardless of the error correction level. The density difference can affect scannability at very small sizes or poor lighting, but it does not affect processing speed.

Can I change the error correction level after printing?

No. Error correction is baked into the QR code structure. Changing the level produces a completely different code. You would need to generate a new code and reprint.

Why not always use Level H?

Because the increased density can cause problems. At small print sizes, the modules may be too small for some cameras to resolve. For data-heavy codes (long URLs, full vCards, WiFi credentials), Level H can push the QR code into a higher version with significantly more modules, making it harder to scan. Use the lowest level that gives you adequate protection for your specific use case.

What happens if damage exceeds the error correction capacity?

The QR code simply will not scan. There is no partial recovery -- either the full data is reconstructed or the scan fails entirely. This is by design; a partial read could produce incorrect data, which would be worse than no read at all.

Try Different Error Correction Levels

Generate QR codes at all four levels and compare them side by side. Free, instant, no signup.

Open QR Code Generator