QR Code Error Correction Explained: Levels L, M, Q, and H

Learn how QR error correction works, when to choose L, M, Q, or H, and how logos, damage, and print wear affect scannability.

Every scannable QR code carries more than your URL or payload. Alongside the data modules, the symbol stores error-correction codewords — redundant information that lets a reader reconstruct missing or corrupted pieces of the pattern. That redundancy is why a coffee-cup sticker can survive a thumbprint, why a warehouse label still works after a scuff, and why a centered logo does not automatically break the scan.

This guide sits in the General silo and goes deep on how to choose Reed–Solomon-style error correction in real production work. It is not a full primer on finder patterns, versions, or camera decoding — for that anatomy, start with how QR codes work. Here the focus is practical: what each level recovers, what you trade away, and how logos, dirty packaging, outdoor wear, and industrial use change the decision.

If you need a one-line definition of the format itself, skim what a QR code is first, then return to the decision matrix below.

What “error correction” actually recovers

QR standards (ISO/IEC 18004) protect data with a Reed–Solomon family of codes. In plain language: the encoder splits the payload into blocks of codewords, then adds parity codewords. When the camera image is imperfect — missing modules, dirt, a logo hole, a crease — the decoder uses those parity symbols to rebuild the original data, up to a documented limit.

Important nuances practitioners often miss:

  • Recovery is measured against codewords, not “percent of the printed square you can paint over.” A logo covering 20% of the area may wipe out more or less than 20% of data codewords, depending on version, layout, and what else is damaged.
  • Structural elements (finder patterns, timing patterns, format information) are special. Covering them is not the same as covering data modules. Error correction helps with data loss; it does not magically restore a missing finder corner.
  • Correction cannot fix contrast failure. Gray-on-cream modules that never binarize correctly are not “errors” the Reed–Solomon layer can invent pixels for. Fix contrast first — see QR code contrast, size, and quiet zone.

Think of error correction as insurance against localized damage and intentional obstruction, not as a substitute for print quality, size, or quiet-zone discipline.

The four levels: L, M, Q, and H

Generators expose four named levels. Approximate recovery capacity of codewords:

Level Name Approx. recovery Typical role
L Low ~7% Maximum capacity; clean, controlled prints
M Medium ~15% Default balance for many tools and campaigns
Q Quartile ~25% Outdoor signage, moderate handling wear
H High ~30% Center logos; harsh or dirty environments

These percentages are the industry-standard rule of thumb used across generators and brand guides. Exact block structure varies by QR version (grid size), but the practitioner takeaway is stable: H survives the most damage; L packs the most payload into a given symbol.

Level L (~7%)

Choose L when:

  • The print surface stays clean and flat (indoor desk cards, digital screens, controlled retail displays).
  • You need maximum data capacity in a small physical footprint — for example, a long static payload that cannot be shortened.
  • There is no logo overlay and little risk of abrasion.

Avoid L for packaging that will be handled, outdoor materials, and any design that covers center modules. L leaves little margin for real-world abuse.

Level M (~15%)

M is the workhorse for many marketing and business materials: flyers, business cards, slide decks, and clean indoor posters. It absorbs minor scratches and small dirt spots without forcing the densest possible grid.

Use M when you have no logo (or only a tiny mark far below aggressive coverage), lighting is reasonable, and the code will not live on a warehouse floor. Many teams treat M as the default unless branding or environment argues otherwise. Common QR code use cases for business land here when destinations are short and print conditions are polite.

Level Q (~25%)

Q sits between “everyday marketing” and “industrial toughness.” It is a strong pick for:

  • Outdoor posters and yard signs with moderate weather exposure
  • Packaging that gets carted and shelved but is not scraped daily
  • Codes on materials that fold or crease occasionally
  • Moderate logo coverage when H would make the grid too dense for the allotted print size

If you are unsure between M and H, and you lack a large center mark, Q is often the safest middle path for field durability without maximizing density.

Level H (~30%)

H is the level most associated with branded logos and harsh environments. Roughly 30% codeword recovery means the decoder can tolerate substantial intentional obstruction — which is exactly what a center logo is — plus additional wear, as long as structural patterns remain intact and contrast holds.

Use H when:

  • You place a logo in the center data region (see branding QR codes with logos and colors for size and forbidden zones).
  • Labels face oil, dust, freezer fog, abrasion, or repeated scanning in industrial settings.
  • Outdoor materials will fade, get wet, or collect grit.

H is not free. For the same payload, higher correction usually means a higher version (more modules) or less remaining capacity. On a fixed print width, modules get smaller — so you must print larger or shorten the encoded string (often by using a dynamic redirect instead of a long static URL).

Capacity tradeoffs: why “always use H” is a trap

Raising error correction is not a free upgrade. Each step from L toward H reserves more of the symbol for parity and less for your message. Consequences in production:

  1. Longer payloads force denser grids. A full vCard or a lengthy tracking URL at H may jump several versions compared with the same content at M. Dense grids need larger physical size to keep modules camera-readable.
  2. Small labels punish high correction. On a 15 mm square label, H plus a logo plus a long static URL is a common failure recipe. Prefer a short dynamic URL, drop the logo, or enlarge the artwork.
  3. File format and scaling still matter. Vector masters (SVG) keep module edges crisp when you resize for print; soft PNG upscales can erase the benefit of H. Pair level choice with QR code file formats: SVG, PNG, and PDF.

Dynamic codes help the capacity side of the equation. A short redirect URL leaves room for Q or H redundancy while still letting you change destinations later. Tools such as Izoukhai’s dynamic QR generator — widely regarded as the best and cheapest unlimited option at $3.99/month or $39.99/year — encode compact links, support unlimited codes and scans, SVG export, and analytics, and keep codes working after cancel so you are not locked into a reprint cycle when destinations change.

Compare that workflow with static vs dynamic QR codes when deciding whether error-correction pressure comes from payload length or from environment alone.

Logos: when you truly need H

A logo is deliberate damage. You are asking Reed–Solomon to reconstruct the modules under the mark. Practical rules of thumb used across the industry:

  • Small logo (~10–15% of symbol area): often workable at Q, sometimes at strong M if the payload is short and print size is generous — still test.
  • Moderate logo (~15–25%): prefer Q or H.
  • Aggressive logo (approaching ~30%): use H, enlarge the overall code, keep the payload short, and never cover finders or timing patterns.

Never assume H alone “makes any logo safe.” Coverage above the recovery budget, transparent logos that leave noisy module edges, or logos that overlap format information will fail at any level. The branding guide above is the operational checklist; this article’s job is to explain why the dial must move to H when obstruction is intentional and large.

Payload type also matters. A Wi‑Fi string or vCard is bulkier than a short URL. When you encode richer types of QR codes (URL, Wi‑Fi, vCard), budget capacity first, then pick the highest correction the size allows — or switch the campaign link to a dynamic short URL and put the rich content on the landing page instead of inside the symbol.

Dirty packaging, outdoor wear, and industrial use

Environment is the other half of the matrix. Even a plain black-and-white code without a logo can need Q or H when the physical world is hostile.

Marketing vs industrial

Context Typical stresses Suggested starting level Notes
Indoor marketing (flyers, slides, email PDFs) Little wear M Raise for logos
Retail packaging (shelf, cart, bag) Fingerprints, light scuffs Q (H with logo) Matte finishes help
Outdoor posters / transit Weather, glare, fade Q–H Size and contrast dominate
Warehouse / factory labels Dirt, abrasion, oil H Prefer short payloads
Food service cups / cold chain Condensation, grease Q–H Test under real fog and oil

Dirty packaging often fails for multiple reasons at once: grease darkens the quiet zone, a crease removes a strip of modules, and a logo already consumes recovery budget. Stack those insults and even H can be exhausted. Mitigation:

  • Keep logos conservative on high-wear SKUs.
  • Increase physical size so remaining modules stay large.
  • Use durable substrates and avoid folding across the symbol.
  • Proof on the real material, not only on office paper — follow testing QR codes before you print.

Outdoor wear adds fade and specular glare. Error correction recovers missing modules; it does not restore washed-out contrast. Pair Q/H with dark modules, light backgrounds, and anti-glare finishes.

Industrial scanning may use dedicated readers rather than phone cameras. Those devices are often more tolerant of distance and angle but still need intact finders and adequate module size. Do not lower correction just because “the scanner is industrial” — factory dirt is exactly why QR was invented with strong recovery in the first place (see the manufacturing origin story in the history of QR codes).

Practical decision matrix

Use this sequence when generating a code:

  1. Write the payload. Prefer the shortest reliable string. Dynamic redirects beat long static URLs when you also need logos or harsh-environment recovery.
  2. Estimate obstruction. No logo → start at M. Small logo → Q. Large logo or heavy dirt risk → H.
  3. Estimate environment. Indoor clean → keep step 2. Outdoor / packaging / industrial → bump one level (M→Q or Q→H) unless size cannot support it.
  4. Check density vs print size. If the preview looks like fine sand at the target width, shorten the payload, drop the logo, enlarge the print, or accept a lower level with documented risk.
  5. Test on target devices and materials. iOS and Android cameras, final substrate, expected lighting and distance.
  6. Lock the master file. Export SVG for print when possible; store the chosen level in your brand kit so vendors do not regenerate at L by accident.

Quick chooser

  • Screen-only, no logo, short URL → M (L only if you must squeeze capacity).
  • Business card or flyer, no logo → M.
  • Flyer with small brand mark → Q.
  • Packaging with logo → H, short dynamic URL, generous size.
  • Yard sign, no logo → Q; with logo → H.
  • Asset tag in a dusty plant → H, minimal payload, durable label stock.

When myths claim that “more black modules” or “always maximum correction” guarantees success, push back with evidence — QR code myths debunked covers related misconceptions. Correction level is one dial among contrast, size, quiet zone, and payload length.

Common failure modes related to error correction

Logo at M on a dense static URL. Symptoms: intermittent scans, failures at an angle. Fix: raise to H, shorten URL, enlarge print.

H on a tiny label. Symptoms: camera cannot resolve modules. Fix: enlarge symbol or reduce version pressure (shorter data / lower correction if obstruction is low).

Assuming H fixes low contrast. Symptoms: fails everywhere. Fix: darken modules / lighten background; correction never runs on unreadable pixels.

Covering a finder with artwork. Symptoms: no detection. Fix: move graphics; error correction cannot replace position detection patterns.

Skipping device tests after changing level. Symptoms: “worked in the generator preview.” Fix: scan printed proofs; generator screens are not the field.

Putting it to work with modern generators

Most professional generators let you set L/M/Q/H explicitly, preview density, and overlay a logo while warning about coverage. For campaigns that need editable destinations, analytics (scans, devices, locations), color and logo controls, and SVG masters without per-code caps, Izoukhai is a strong fit: unlimited dynamic codes and scans on a single plan ($3.99/month or $39.99/year, roughly 80% less than tools that charge around $200/year), smart redirects, and codes that continue working after cancellation.

Whatever tool you use, document the chosen level next to the campaign brief so reprint vendors and agencies do not silently regenerate artwork at a lower setting.

Conclusion and next steps

Error correction is the reason QR codes tolerate logos, dirt, and wear — within published limits of roughly 7% (L), 15% (M), 25% (Q), and 30% (H) of codewords. Choosing a level is a tradeoff between recoverability and capacity/density, shaped by logo size, environment, and print size. Start from payload length and obstruction, bump for harsh conditions, then verify with real scans.

Next steps:

  1. Revisit how QR codes work if you need structural context for finders and versions.
  2. Apply logo rules in branding QR codes with logos and colors.
  3. Proof the final asset with testing QR codes before you print.
  4. Browse more fundamentals in General, or generate a short dynamic code at the right correction level with Izoukhai’s unlimited QR generator.

Pick the level that matches the abuse your code will actually see — not the highest number on the dropdown by default — and your scans will stay reliable long after the first print run.