QR Code Error Correction, Explained

Every QR code you've ever scanned has a hidden layer built in: error correction data that lets the code still work even if part of it is damaged, dirty, or covered. Here's how it works and why the four levels matter more than most people realize.

What error correction actually does

A portion of every QR code's grid isn't your data at all — it's redundant information calculated from your data, using a method called Reed-Solomon error correction (the same family of math used in CDs and satellite communication). If part of the code becomes unreadable, a scanner can use that redundant data to reconstruct what was lost, the same way a spare tire gets you home even though it isn't your original tire.

The four levels

QR codes support four error correction levels, each trading data capacity for resilience:

Why logos require level H

When you place a logo in the center of a QR code, you're physically covering part of the grid — potentially a meaningful chunk of it. The scanner has to reconstruct whatever's hidden underneath purely from error correction data. If the code was generated at level L or M, there simply isn't enough redundancy to recover that much missing information, and the code becomes unreadable.

That's why any generator worth using — including QRToolCraft — automatically switches to level H the moment you add a logo. It's not a stylistic choice; it's the only level with enough headroom to survive losing that much of the pattern.

Choosing a level when you're not using a logo

The right level is really a balance between how much punishment the printed code will take and how dense you're willing to let the pattern get. QRToolCraft handles the logo case automatically, and lets you adjust the level manually for everything else.