QR Error Correction Levels: When to Use L, M, Q or H — featured illustration
Technology

QR Error Correction Levels: When to Use L, M, Q or H

6 min read
Create a QR code

A parking sign spends a winter under road salt. A menu card picks up a thumbprint of olive oil. A shipping label goes through a sorter that scuffs one corner. All three codes still scan, and the reason is a block of redundant data sitting inside every QR symbol.

That redundancy comes in four sizes. Choosing between them is a trade against capacity, and the trade does not always run in the direction people assume.

What the percentages actually measure

A QR symbol stores everything as codewords: 8-bit units holding either your payload or Reed-Solomon check data. The four error correction levels set how much of the symbol is check data rather than payload.

  • L (Low) recovers approximately 7% of the codewords
  • M (Medium) recovers approximately 15%
  • Q (Quartile) recovers approximately 25%
  • H (High) recovers approximately 30%

The unit is the part people get wrong. "About 30% at level H" is not permission to obliterate 30% of the picture. It means roughly 30% of the symbol's codewords can arrive damaged or unreadable and the decoder will still rebuild the original message. Codewords sit in compact groups of eight modules, mostly 2x4 rectangles, threaded through the data region in a zigzag. A small blot ruins a couple of codewords. A stripe across the full width ruins a great many.

Two further details change the arithmetic. Reed-Solomon treats a codeword known to be missing as cheaper to repair than a codeword that is simply wrong at an unknown position, and the wrong-value case costs roughly twice as much of the budget. A QR decoder usually cannot tell which codewords were damaged, so plan for the expensive case. Separately, larger symbols split their codewords into blocks and interleave them, which spreads one physical smudge across several blocks rather than destroying a single block outright. Interleaving is why real damage often behaves better than a flat reading of the percentage suggests. The full read sequence sits behind all of this.

What the protection costs you

Version 1, the smallest 21x21 symbol, holds 26 codewords in total. The split by level:

  • L: 7 codewords of correction, 19 left for data
  • M: 10 of correction, 16 for data
  • Q: 13 of correction, 13 for data
  • H: 17 of correction, 9 for data

Same grid, same printed size, nothing visibly different, and level H carries under half the payload of level L. That ratio holds roughly as symbols grow. Capacity figures by version and encoding mode are set out in how much data a QR code can hold.

L and M: screens, long URLs, and the everyday default

Level L earns its place in two situations. First, a code that only ever lives on a screen: a slide, an email, a PDF someone scans off a monitor. No wear, no ink spread, no folding. Second, a long payload you need to keep sparse. A URL carrying a full set of campaign parameters can push a symbol up several versions, and dropping to L is one way to claw a version back.

Level M is the answer when nothing about the job argues for anything else. It absorbs ordinary print variation, a little ink spread, a fingerprint, an imperfect camera angle, and it costs little capacity. If you have no particular damage story in mind, pick M and stop thinking about it.

Q and H: handling, logos and weather

Level Q suits print that gets touched. Loyalty cards that ride in a wallet. Table tents that get wiped down twice a day. Ticket stubs, packaging that rubs against other packaging in transit, anything handled by hundreds of people over months. The capacity cost is real, but a short redirect URL absorbs it without forcing a version bump.

Level H belongs to two cases. One is artwork over the code, usually a logo in the center. The other is a surface that takes abuse: outdoor signage, machinery labels, concrete, anything in sun and rain, anything curved or laminated where a fold or a patch of glare will take out part of the symbol.

A logo is damage, not a special case

Nothing in the format knows what a logo is. A decoder reads the modules under your artwork as whatever color they happen to be, gets values that disagree with the check data, and spends correction budget fixing them. Those are wrong-value errors at unknown positions, the expensive kind, which is why a logo covering some fraction of the area eats more than that fraction of the budget.

Two rules follow. Keep artwork in the center, where the modules belong to the data region. And keep it off the structural parts, because Reed-Solomon repairs the data region only. It does not rebuild finder patterns, timing patterns or the quiet zone. Format information carries its own separate protection and a duplicate copy, but the safe habit is to leave every structural element untouched. Our logo generator holds artwork inside the safe area by default; if you are compositing by hand, test at the smallest size you intend to print.

The trap: a higher level can make scanning worse

Raising the level does one of two things. Either your data still fits, and you have spent spare room on redundancy. Or it no longer fits, and the encoder moves to a higher version, which means more modules across the same printed width, which means every module is physically smaller.

That second path is how a well-meant upgrade backfires. A 30mm code at level M might have modules a little under a millimeter across. The same content at H, two versions higher, lands noticeably below that. Once modules drop past what your camera, printer and substrate can hold, the decoder starts losing modules faster than the extra correction can repair them. You bought damage tolerance and paid for it in legibility. The size guide covers the module-size floor, and the blurry code checklist covers what crossing it looks like in the wild.

The order that avoids the trap: fix the physical size first, work out the module size that gives you, then take the highest error correction level that keeps modules above the minimum your printing process can reliably hold.

Picking a level in practice

  • On-screen only, long URL, no artwork: L
  • No strong reason either way: M
  • Handled print, short URL, months of service: Q
  • Logo over the center, or outdoor and industrial surfaces: H
  • Shortening the destination first often buys back the version you were about to spend

Then test the proof rather than the file. Print at final size, put it on the substrate it will actually live on, and scan from the distance, angle and light a real person will use. If it reads first try at Q, you do not need H.

Share this article