Back to Blog
February 26, 20266 min readqr-codesprintingscanningbest-practices

QR code error correction levels (L, M, Q, H): what they mean and which one to use

Error correction makes QR codes more reliable, but it also makes them denser. Learn what L, M, Q, H mean, when to use each, and how to avoid scan failures in real-world printing.

QR code error correction levels (L, M, Q, H): what they mean and which one to use

If you have ever had a QR code that scans fine on your laptop screen but fails on a poster, the problem is usually not the URL.

It is the physical reality:

  • glare
  • low contrast
  • motion blur
  • cheap paper
  • a logo covering modules
  • someone printed it too small

This is where error correction helps.

It can make a QR code survive damage and still decode.

But it comes with a tradeoff: higher error correction usually means a denser code that can be harder to scan at a distance.

This guide explains the four QR code error correction levels (L, M, Q, H) and how to choose the right one.

TL;DR

  • Error correction is built-in redundancy that helps a QR code decode when parts are missing or distorted.
  • Levels are L, M, Q, H (from lowest to highest redundancy).
  • Use M for most normal use cases.
  • Use Q or H if you will add a logo, expect damage, or print on tricky surfaces.
  • Do not use H to "fix" a QR code that is too small. Fix size, contrast, and quiet zone first.

What is QR code error correction?

QR codes include extra data so the scanner can reconstruct the payload even if some modules are unreadable.

This is implemented using Reed-Solomon error correction.

You do not need to understand the math to use it well.

You only need to understand the outcome:

  • higher error correction = more tolerance to damage and dirt
  • higher error correction = more modules (denser pattern) for the same data

The four levels: L, M, Q, H

You will usually see the levels displayed as letters:

  • L (Low)
  • M (Medium)
  • Q (Quartile)
  • H (High)

Roughly speaking, they can recover from about:

  • L: ~7% damage
  • M: ~15% damage
  • Q: ~25% damage
  • H: ~30% damage

These percentages are rules of thumb, not guarantees.

Real-world scanning depends on print quality, lighting, camera, and distance.

Which error correction level should you use?

Here is the practical decision tree.

Use level M for most QR codes

If you are generating a normal QR code (link, WiFi, vCard) and you are not doing fancy design, M is a safe default.

Examples:

  • QR code on a website
  • QR code on a product insert
  • QR code on an invoice
  • QR code on a menu (printed cleanly)

Use level Q when you expect real-world mess

Choose Q if any of these are true:

  • you print on matte paper that might smudge
  • the code might get scratched
  • you want more tolerance for motion blur (people scanning quickly)
  • you are printing on packaging where curvature can distort the pattern

Q often gives you a better safety margin without making the code too dense.

Use level H when you add a logo or cut into the code

Choose H when you:

  • place a logo in the center
  • intentionally remove modules for a stylized design
  • print on surfaces that degrade (outdoor signage, stickers, shipping labels)

But be careful.

If you use H and your QR code becomes very dense, it can become harder to scan from far away.

That is why H works best when:

  • the payload is short
  • the code is printed large enough

When to use level L

Level L is useful when:

  • your payload is short
  • your print is clean
  • you want the code to be as simple as possible

Common scenarios:

  • a QR code displayed on a screen at close range
  • a quick internal workflow where scanning conditions are controlled

In marketing, L is rarely the best choice.

The real scan killers (and why error correction will not save you)

Error correction is not magic.

These are the issues that break QR codes even with high levels.

1) Too small for the scan distance

If you print a tiny QR code on a poster and expect it to scan from 2 meters away, no error correction level will fix that.

Fix the size.

If you want a rule of thumb: increase QR size as scan distance increases.

Related: QR code size and scanning distance: a practical guide

2) Missing quiet zone

The quiet zone is the empty border around the QR code.

If designers cram the code against text or a border, scanners struggle.

Related: QR quiet zone explained (with size examples)

3) Low contrast or inverted colors

QR codes scan best when dark modules sit on a light background.

If you want a custom look, do it carefully.

Related: QR code contrast: how to design it so it still scans

4) Long URLs and tracking bloat

A long URL creates a denser QR code.

A denser code is harder to scan, especially when printed small.

If you need tracking, consider:

  • a short redirect URL
  • a reusable QR code that points to a short link

Related: QR redirects: best practices

Error correction and logos: the safe way

If you plan to put a logo in the center:

  • start with H
  • keep the logo small
  • keep it centered
  • preserve the finder patterns (the three big squares)
  • test on multiple phones

Do not cover corners.

The corners are not decoration.

They are how scanners detect orientation.

A quick checklist before you print

Use this before you ship a campaign.

  • Payload is short (or you use a redirect)
  • Quiet zone is present and clean
  • Contrast is high
  • Error correction is M (default), Q (messy), or H (logo)
  • Printed size matches scan distance
  • Tested on at least 3 phones in realistic lighting

How QRShuffle helps

QRShuffle is built for QR codes that work in the real world.

You can:

  • create QR codes fast
  • keep your links clean (no tracking mess in the QR payload)
  • design codes that match your brand while staying scannable

If you want to stop guessing, create your next QR code in QRShuffle.

CTA: Create a QR code in minutes at https://qrshuffle.com

QRSHUFFLE • CREATE

Create a QR code with editable links.

Print once. Update the destination later. Track scans. No reprints.

Editable

Update links without reprinting

Trackable

Scan analytics + UTMs

Fast

Built for real-world scans