--- title: QR Code Error Correction: L, M, Q and H Explained description: What the four QR error correction levels actually do, how much damage each recovers, what they cost in code density, and which one to pick for your job. url: https://qr-tag-generator.com/guides/qr-code-error-correction/ updated: 2026-09-08 licence: content (c) QR Tag Generator --- # Error correction levels explained Every QR code carries spare data so it can survive being damaged. You choose how much, and you pay for it in density. ## How it works QR codes use Reed–Solomon error correction, the same family of maths used on CDs and in deep-space transmission. Extra check bytes are computed from your content and woven into the grid. When a scanner reads a code with some modules unreadable — scratched, covered, faded — it uses those check bytes to reconstruct what was lost, and the scan succeeds as if nothing were wrong. This is not error _detection_. The code does not merely notice damage; it repairs it. ## The four levels - **L** — recovers about 7% of the code. Smallest, densest-capacity option. - **M** — about 15%. The sensible default and what most generators use. - **Q** — about 25%. For codes that will take some abuse. - **H** — about 30%. Maximum protection, largest grid. ## What it costs The check bytes take up room, so raising the level either pushes the code to a larger grid or reduces how much you can encode. Going from L to H on the same content can add roughly 40 to 60% more modules. A denser grid means smaller squares at the same printed width, which is itself a scanning risk — see the [size guide](https://qr-tag-generator.com/guides/qr-code-size-guide/). That is the trade nobody mentions: **H is not simply safer.** A code at H printed at the same size as one at M has smaller modules, and if you were already near the resolution limit, you have made things worse rather than better. High error correction protects against damage; it does not protect against being too small. ## Which to choose - **L:** screens, digital documents, anywhere the code will never be printed and content is long. - **M:** almost everything. Flyers, menus, business cards, signage in good condition. - **Q:** packaging that creases, labels that get handled, outdoor signs, curved surfaces. - **H:** codes with a logo over the centre, industrial and equipment labels, anything exposed to weather or wear for years. ## The logo case Covering the centre of a code with a logo works only because error correction rebuilds what the logo hides. At H you can obscure roughly 30% of the modules, but leave real headroom — aim for under 20% — because print imperfections consume the same budget. And never cover the three large corner squares: those are the finder patterns a scanner uses to locate the code, and no amount of error correction can recover them. ## Raising the level is free when it fits QR versions come in fixed sizes, so content often does not fill the grid exactly. When there is spare room, the generator on this site automatically raises the correction level to use it, giving you better damage tolerance at no cost in size. The readout under each code shows the level actually applied, which may be higher than the one you selected. Try it on the [link generator](https://qr-tag-generator.com/url-qr-code-generator/) — type a short address and watch the level climb on its own. ## More guides - [Why a QR code will not scan](../../guides/qr-code-not-scanning/) — Nine causes, in the order they actually happen. - [Static vs dynamic QR codes](../../guides/static-vs-dynamic-qr-codes/) — What the difference really costs you, both ways. - [What size to print a QR code](../../guides/qr-code-size-guide/) — The 10:1 rule, and where it stops working. - [Do QR codes expire?](../../guides/do-qr-codes-expire/) — Static codes do not. Dynamic ones can, and often do. --- Source: https://qr-tag-generator.com/guides/qr-code-error-correction/