Your QR Code's Error Budget Is Not Free Money
Error correction is the reason QR codes survive the real world. A portion of every code is redundancy: extra data that lets the scanner reconstruct the payload when part of the pattern is damaged, dirty, or covered. Level L reserves about 7% of the code for that purpose, M about 15%, Q about 25%, and H about 30%. Those percentages are the code's budget for everything that can go wrong — and a logo spends from the same budget as a scuff, a shadow, or a fading patch. The calculator shows how big that budget is in modules for your version, and how much of it a logo can safely consume while leaving headroom for reality.
Why the budget is smaller than it looks
Two details shrink the usable budget. First, the recovery percentages in the specification apply to codewords, the internal data units, not literally to printed modules — the module counts on this page are a planning proxy that makes levels comparable, and real behaviour depends on where damage lands. Damage over the corner finder patterns or the timing patterns hurts far more than the same area lost in the middle of the data region, because those patterns carry the code's geometry. Second, real damage is never the tidy central square of a logo. A coffee stain, a fold, or a peeling corner is irregular, and it arrives on top of whatever the logo already consumed. That is why the calculator reserves half the budget for the world and lets a logo spend at most the other half.
Spending the budget wisely
The hierarchy is simple. Spend the budget on the things you cannot avoid first: outdoor exposure, handling, textured stock, and the odd splash. Then, if budget remains, spend it on a logo — centred, clear of the finder patterns, at level H, inside the conservative size the calculator shows. Never stack a logo on top of an already-hostile environment without enlarging the code or shortening the payload to buy back margin. And remember that raising the error-correction level itself costs capacity: a code at H holds far less data than the same version at L, so a payload that only just fits at H may need a version bump, which shrinks the modules and spends a different kind of margin.
A testing rule that beats arithmetic
- Generate the code at the chosen level with the logo applied, then print it at final size.
- Scan it on several phones, including an older one, in good light and in dim light.
- Deliberately abuse the proof: smudge a corner, tilt it, scan from an angle.
- If any test is flaky, shrink the logo, enlarge the code, or drop the logo entirely.
- For high-stakes print, keep a plain no-logo version in the artwork file as a fallback.
An error budget is a safety margin, and safety margins are for the unexpected. Spend half of it on purpose, keep half in reserve, and the code will survive the surprises.
