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

Every QR code carries its own repair data, which is why a code can still scan even after part of it is torn, smudged, glared-out, or covered by a logo. How much damage it can survive is a choice you make up front — QR Mint calls it "Error correction" in the options panel, with four levels: L, M, Q, and H. Picking the right one is a real tradeoff, not a "more is always better" setting, so here's what each level actually buys you.

The four levels, in plain terms

Why not just always use the highest level?

Because error correction isn't free — it's extra data appended alongside your actual content, and QR codes have a fixed set of sizes (versions) to hold everything. Going from L to H roughly quadruples the amount of built-in redundancy, which pushes the encoder toward a larger version with more modules for the exact same content. A denser code means smaller individual modules at a given print size, and smaller modules are themselves harder for a camera to resolve cleanly, especially from a distance or on a cheap printer. In other words, cranking error correction all the way up to defend against damage can, past a point, make the code more fragile in a different way — by making each module tinier and more easily blurred together. The right level depends on the real risk your code faces, not the theoretical maximum.

A quick way to decide

Ask two questions: where will this code live, and will anything ever sit on top of it? A code that only ever appears on a screen — a slide, a website, a digital menu — has essentially zero physical risk, so L or M keeps it as simple (and fast to scan) as possible. A code headed for print, especially something small like a business card or a product label, benefits from M or Q simply because ink, paper texture, and handling introduce real-world imperfections a screen never sees. And any code with a logo, icon, or decorative element placed over the middle of it needs H — without enough error correction, that overlay is exactly the kind of "damage" the code can't recover from.

Seeing the size difference yourself

The clearest way to understand the tradeoff is to watch it happen: type the same content into QR Mint's generator and switch the error-correction level from L to H. The "modules" figure in the QR code's metadata line jumps as the level rises, and at a fixed pixel size, you'll see the individual squares visibly shrink. For short content like a URL the difference is often invisible in practice; for something longer, like a full vCard contact card, it becomes obvious fast — which is one more reason to keep contact-card and text QR codes reasonably concise.

Keep reading