GoCreateQR Logo GoCreateQR
TECHNICAL GUIDE

QR Code Error Correction Explained: Choosing the Right Level

• 12 min read

QR code error correction is one of the most powerful yet misunderstood features of QR code technology. It's what allows QR codes to work even when they're partially damaged, dirty, or obscured by logos. This comprehensive guide explains how error correction works, the differences between L, M, Q, and H levels, and how to choose the right level for your specific use case.

What is QR Code Error Correction?

Error correction, also called ECC (Error Correction Code), is a built-in feature that allows QR codes to remain readable even when portions of the code are damaged, obscured, or dirty. This redundancy is achieved through the Reed-Solomon error correction algorithm, which adds extra data to the QR code that can be used to reconstruct missing or corrupted information.

Think of error correction like backup copies of a document. If the original gets damaged, you can still recover the information from the backup. QR codes work similarly - they store redundant data that enables scanners to decode the content even when parts of the code are unreadable.

How It Works:

When you create a QR code, the error correction algorithm adds redundant data patterns throughout the code. When scanning, if some modules (the black and white squares) are damaged or missing, the scanner uses the redundant data to mathematically reconstruct the original information. This happens instantly and invisibly to the user.

The Four Error Correction Levels

QR codes offer four standardized error correction levels, each providing different levels of damage tolerance at the cost of data density:

Level L (Low)

7% Damage Tolerance

The lowest error correction level, tolerating up to 7% data damage or loss.

Best for: High data density needs, perfect printing conditions, short-term indoor use

Use when: Maximum data capacity is priority and printing/display quality is guaranteed

Avoid when: Outdoor use, adding logos, harsh environments, or long-term durability needed

Level M (Medium)

15% Damage Tolerance

Moderate error correction, handling up to 15% damage while maintaining good data capacity.

Best for: General purpose QR codes, standard business applications, reasonable data capacity needs

Use when: Balance between data capacity and reliability is important

Avoid when: Logos will be added or harsh outdoor conditions expected

Level Q (Quartile)

25% Damage Tolerance

High error correction, tolerating up to 25% damage. The recommended default for most use cases.

Best for: Most common applications, outdoor signage, printed materials, professional use

Use when: You want reliable scanning without sacrificing too much data capacity

Recommended as: Default choice for the majority of QR code applications

Level H (High)

30% Damage Tolerance

Maximum error correction, withstanding up to 30% damage. Essential for QR codes with logos.

Best for: QR codes with logos, harsh outdoor environments, industrial applications, maximum durability

Use when: Adding company logo, expecting wear and tear, or critical scanning reliability needed

Trade-off: Reduced data capacity - QR code may be larger for same amount of data

How Error Correction Affects QR Code Size

Higher error correction levels add more redundant data to your QR code. This means that for the same content, a QR code with higher error correction will have more modules (be visually larger or denser) than one with lower error correction.

Example: Encoding "https://www.gocreateqr.com"

Level L (7%): 25x25 modules - smallest size, most data capacity

Level M (15%): 25x25 modules - slightly more redundancy

Level Q (25%): 29x29 modules - increased redundancy

Level H (30%): 29x29 modules - maximum redundancy, largest size

For short content, the difference is minimal. But as content length increases, higher error correction levels will push your QR code to larger versions (QR codes come in 40 "versions" ranging from 21x21 to 177x177 modules).

Choosing the Right Error Correction Level

Use Level L (7%) When:

Level L Warning:

Never use Level L if you plan to add a logo or expect any kind of physical damage. Even minor smudges or printing imperfections can make Level L codes unscannable. Reserve this level for controlled, pristine environments only.

Use Level M (15%) When:

Use Level Q (25%) When:

Recommended Default:

Level Q (25%) is the sweet spot for most applications. It provides excellent damage tolerance without significantly impacting data capacity, making it ideal when you're not sure which level to choose or when reliability is important.

Use Level H (30%) When:

Error Correction and Logo Placement

One of the most common uses of high error correction is enabling logo placement on QR codes. When you add a logo to the center of a QR code, you're effectively "damaging" the code by obscuring parts of the data.

Logo Size Guidelines by Error Correction Level

Level L (7%): Do not add logos

Insufficient error correction. Even small logos will prevent scanning.

Level M (15%): 5-10% coverage maximum

Only tiny logos recommended. High risk of scan failures with standard logo sizes.

Level Q (25%): 15-20% coverage

Can accommodate small to medium logos. Test thoroughly before mass production.

Level H (30%): 20-26% coverage recommended

Ideal for logos. Can handle standard logo sizes reliably with proper implementation.

Important: These percentages refer to the total QR code area, not just the logo size. Always leave white space (a "quiet zone") around the logo for better scannability. Professional QR generators place logos strategically to avoid critical data areas.

Best Practices for Logos on QR Codes

Real-World Error Correction Scenarios

Scenario 1: Restaurant Menu QR Codes on Tables

Environment: Table tents in dining area, subject to spills, grease, condensation from drinks

Recommended Level: Q (25%) or H (30%)

Reasoning: QR codes will get dirty, wet, and worn from handling. Need high reliability. If restaurant logo is added, must use Level H.

Additional tip: Laminate or use waterproof materials to extend life, but high error correction is still essential.

Scenario 2: Business Card Contact Information

Environment: Professional business cards, high-quality printing, carried in wallets

Recommended Level: M (15%) without logo, H (30%) with logo

Reasoning: Business cards are usually well-printed and protected, but wallet wear can cause edge damage. Company logos are common on business cards, requiring Level H.

Data consideration: vCard contact info is typically short enough that Level H doesn't significantly increase size.

Scenario 3: Billboard Advertisement

Environment: Large outdoor billboard, exposed to weather, sun, rain, visible from distance

Recommended Level: H (30%)

Reasoning: UV exposure fades colors, rain and pollution cause degradation, needs maximum durability. Brand logo is essential for billboard advertising.

Special consideration: Size is not a constraint on billboards, so the slight increase in QR code density from Level H is negligible.

Scenario 4: Digital Display (Website, Email, App)

Environment: Perfect digital reproduction, no physical damage possible

Recommended Level: L (7%) or M (15%)

Reasoning: Digital displays have perfect clarity with no physical degradation. Lower error correction maximizes data capacity without risk.

Exception: If users are expected to screenshot and share (where compression artifacts may occur), use Level M or Q instead.

Scenario 5: Product Packaging

Environment: Varies - retail boxes, labels, shrink wrap, bottles

Recommended Level: Q (25%) for most packaging, H (30%) for rough handling

Reasoning: Packaging gets handled, stacked, potentially scuffed during shipping and retail display. Curved surfaces (bottles) may distort QR codes slightly.

Surface consideration: Corrugated cardboard and textured materials reduce effective scan quality, favoring higher error correction.

Testing Your Error Correction Choice

Before committing to mass production or permanent installation, thoroughly test your QR code under realistic conditions:

Pre-Production Testing Checklist

Pro Testing Tip:

Create the same QR code at different error correction levels and test them side-by-side. You may find that Level M works perfectly for your use case, saving you from unnecessary size increases from Level H. Or you might discover that your specific environment requires Level H to achieve reliable scanning.

Common Error Correction Mistakes

Mistake #1: Using Level L for Everything

Some users choose Level L by default to minimize QR code size. This is dangerous for physical QR codes that will face any kind of damage, printing imperfections, or environmental exposure.

Solution: Only use Level L for perfect digital displays or when data capacity is absolutely critical and conditions are guaranteed pristine.

Mistake #2: Adding Logos Without Level H

The most common error correction mistake is adding a logo to a QR code generated with Level M or Q. This often works in testing but fails in real-world conditions with lighting variations or camera quality differences.

Solution: Always regenerate QR codes at Level H before adding any logo, no exceptions. The logo effectively "uses up" the error correction capacity.

Mistake #3: Assuming "More is Always Better"

While Level H provides maximum protection, it's not always necessary. For very long URLs or data, Level H might push you to a larger QR code version, making it visually bigger and potentially harder to fit in your design.

Solution: Match error correction level to actual environmental needs. Indoor, pristine conditions don't need Level H. Outdoor, harsh conditions do.

Mistake #4: Not Testing Error Correction Tolerance

Many people generate QR codes and never verify that the error correction actually works by intentionally damaging test codes.

Solution: Print test QR codes and intentionally obscure portions (with tape, marker, etc.) to verify the error correction performs as expected before mass production.

Technical Deep Dive: How Reed-Solomon Error Correction Works

For those interested in the mathematics behind QR code error correction, here's a simplified explanation:

Reed-Solomon error correction treats the QR code data as a polynomial equation. When generating the code, it adds extra "error correction codewords" calculated from the original data. These error correction codewords are like mathematical checksums that can reconstruct missing data.

The Process:

  1. Encoding: Original data is converted to polynomial form
  2. Error correction generation: Reed-Solomon algorithm calculates error correction codewords
  3. Combination: Original data + error correction codewords = complete QR code
  4. Scanning: Scanner reads all available modules (black/white squares)
  5. Error detection: Algorithm identifies corrupted or missing codewords
  6. Error correction: Uses error correction codewords to mathematically reconstruct damaged data
  7. Output: Original data is recovered even if portions were unreadable

The number of error correction codewords increases with each level (L < M < Q < H), providing greater reconstruction capability but requiring more space in the QR code.

Error Correction Level Quick Reference Chart

Level Damage Tolerance Best Use Cases Logo Support
L (Low) 7% Digital displays, perfect printing, maximum data No
M (Medium) 15% General purpose, indoor use, good printing Tiny only
Q (Quartile) 25% Outdoor signage, printed materials, default choice Small
H (High) 30% With logos, harsh environments, critical reliability Yes (20-26%)

Conclusion

Understanding QR code error correction levels empowers you to create more reliable, professional QR codes optimized for your specific use case. The right error correction level balances data capacity against damage tolerance, ensuring your QR codes work reliably in their intended environment.

As a general rule: use Level Q (25%) as your default for most applications, upgrade to Level H (30%) when adding logos or expecting harsh conditions, and only drop to Level M (15%) or L (7%) when you have specific reasons to prioritize data capacity over reliability.

By choosing the appropriate error correction level, thoroughly testing before deployment, and following best practices for logo placement and environmental considerations, you'll create QR codes that scan reliably every time - even when conditions aren't perfect.

Create QR Codes with Customizable Error Correction

GoCreateQR lets you choose your error correction level (L, M, Q, or H) for perfect optimization of your QR codes.

Create Free QR Code →