QR Code Error Correction: Which Level Should You Pick?

Error correction is the setting nobody changes and everybody should understand. It's what lets a scuffed code still scan.
Every QR code carries redundant data, so that a code which is partly dirty, scratched, creased or covered can still be read. How much redundancy is the error correction level, and it is the one setting in a QR generator whose effect is not obvious from its name.
The four levels
L recovers from about 7% damage, M about 15%, Q about 25%, and H about 30%. Higher is not automatically better: the redundant data has to live somewhere, so raising the level packs more modules into the same square. More modules means smaller squares at the same printed size, which is harder for a camera to resolve β you can make a code less scannable by protecting it more.
Which to actually use
M is a sensible default and is where most generators sit. Use L when the content is long and the code is displayed on a clean screen where nothing will damage it. Use Q or H for anything printed on a surface that will be handled, wiped, folded or stuck outdoors β table cards, packaging, equipment labels, anything in a workshop.
The logo trick
Putting a logo in the middle of a QR code works precisely because of error correction: the logo is damage, and the code recovers from it. That only holds if the level is high enough β H, or at least Q β and if the logo stays small, around 20β25% of the width at most. Cover more than the level can recover and the code is simply broken, which you will only discover after printing.
Always test the real thing
Whatever level you pick, scan the final artefact β the actual print, at the actual size, under the actual lighting β with more than one phone. A preview on a bright monitor is a much easier test than a matte sticker in a dim room.
Generate a QR code now β free
Pick your level, size and colours, and download PNG or SVG. It all runs in your browser.


