QR Code Error Correction Levels Explained — Is H (30%) Really Safe for Logos?
You've probably seen a business card or poster with a brand logo sitting right in the middle of a QR code. The claim "set the error correction level to H (30%) and you can cover it with a logo and it'll still scan" comes up often, but exactly why that works — and whether you can really cover it with anything, however you like — is less well understood. This guide breaks down, from the underlying math, how the four error correction levels defined by the QR code standard (ISO/IEC 18004) work, and exactly how much room you actually have when adding a logo.
1. What error correction levels are — the four tiers L/M/Q/H
A QR code isn't just an image with data drawn into a black-and-white grid — it's a structure that stores Reed-Solomon error correction codewords alongside the actual data codewords. The error correction level determines what proportion of the code is set aside for these redundant codewords, and the standard defines four tiers.
| Level | Name | Recoverable damage | Typical use |
|---|---|---|---|
| L | Low | ~7% | On-screen display with minimal damage risk |
| M | Medium | ~15% | General purpose (standard default) |
| Q | Quartile | ~25% | Printed materials, outdoor exposure — environments with damage risk |
| H | High | ~30% | When inserting a logo or image in the center |
A higher level means "it still reads even when more of it is obscured," which in turn means a larger share of the code is taken up by redundant codewords relative to the original data.
2. How Reed-Solomon error correction recovers damage
Intuitively: Reed-Solomon coding treats the original data as values on a polynomial and stores more points on that polynomial than are strictly necessary. For example, a straight line (a first-degree polynomial) is fully determined by just 2 points — but if you store 5 points instead, even if only 2 of them survive (the other 3 are erased or misread), you can still reconstruct the original line from the surviving points. QR codes work the same way: the data codewords are treated as polynomial coefficients, extra codewords (parity) are calculated and stored alongside them, and when a scanner reads some codewords incorrectly, it solves the mathematical relationships among the remaining codewords to work backward to the original, damaged values. As long as the damage stays within the correctable limit, this recovery isn't an approximation — it returns a value 100% identical to the original. Once damage exceeds that limit, though, recovery becomes impossible and the scan simply fails.
3. Why a higher level means less storable data
This is where the tradeoff comes in. Each QR code version (the size tier that starts at version 1's 21×21 modules and grows from there) has a fixed total number of modules — in other words, a fixed total codeword capacity. That fixed pool is split between data codewords and error correction codewords, so raising the error correction ratio from 7% to 30% allocates more of those cells to redundant codewords, leaving relatively fewer for actual data. For the same version (same size), an H-level code holds noticeably fewer characters than an L-level one, and to store the same amount of data at level H, the QR code has to jump up one or two versions (a denser grid) compared to level L. It's a straightforward exchange — more safety margin for less capacity — which is also exactly why you need a short URL to keep a logo-embedded, H-level QR code from turning into visual noise.
4. How this actually applies in the real generator
MODOO HUB's QR Code Generator currently generates codes with a fixed error correction level of M (about 15%). For general-purpose conversions — URLs, text, Wi-Fi credentials, contact info (vCard) — level M is a solid middle ground that works well for both screen display and print. If you need level H specifically to insert a logo in the center, it's worth checking a dedicated logo-embedding tool or library option that respects the safe zone described above (logo within 15-20%, QR at least 200px, finder patterns left untouched).
Frequently Asked Questions
Q. What exactly does a QR code error correction level mean?
A. It's one of four levels defined by the QR code standard (ISO/IEC 18004), representing how much of the code can be obscured or damaged while still recovering the original data. L withstands about 7% damage, M about 15%, Q about 25%, and H about 30%. The higher the level, the more redundant code is packed in to hold the same data, making the grid denser.
Q. If a QR code is set to H (30%), can I cover it with a logo however I like?
A. No. H is just the theoretical ceiling — up to 30% of the total symbol area can be damaged and still recovered. In practice, you should keep the logo small and centered (within about 15-20% of the total area), make the QR code itself large enough (at least 200px), and leave margin around the logo. If the logo covers the finder patterns (the large squares in the corners) or the timing patterns, scan failures spike even at level H.
Q. How does Reed-Solomon error correction recover damaged parts?
A. Beyond the actual data, a QR code also stores redundant codewords calculated with the Reed-Solomon algorithm. These redundant codewords are mathematically entangled with every part of the original data, so even if some codewords can't be read, the combination of the remaining codewords can be used to solve for and reconstruct the original values. As long as the damage stays within the correctable range, the recovery is exact — not an approximation — restoring the data 100% identical to the original.
Q. Why does raising the error correction level shrink the amount of data you can store?
A. The total number of modules (cells) in a QR code is fixed for each version (size), and that fixed capacity is split between actual data codewords and error correction codewords. Raising the error correction ratio to 30% means more of those cells get allocated to redundant codewords, so for a QR code of the same size, less room is left for actual data (like URL character count) — or, to keep the same amount of data, the QR code itself has to move up to a larger version.
Q. Can MODOO HUB's QR Code Generator let me choose the error correction level?
A. Currently it's fixed at M (about 15%). Level M is a solid middle ground for general URL, text, Wi-Fi, and contact conversions, and if you specifically need level H for logo insertion, we recommend checking a dedicated option while keeping the safe zones described in this guide in mind.