QR Code Error Correction Explained
One of the most practically useful features of QR codes is something most people never think about: error correction. This built-in capability means a QR code can still be read even when part of it is physically damaged, covered by a logo, or obscured by dirt. Understanding how it works helps you make better decisions when creating QR codes — particularly when adding logos or planning for outdoor use.
By the Universal QR Generator Team
What is Reed-Solomon error correction?
QR codes use Reed-Solomon error correction, the same mathematical technique used to make CDs and DVDs recoverable when scratched, and satellite signals readable despite atmospheric interference. Named after mathematicians Irving Reed and Gustave Solomon, who described it in 1960, this method adds redundant data to the encoded message.
In simple terms: when you encode information in a QR code, the algorithm does not just store the data once. It encodes additional mathematically related information alongside it. When a scanner reads the code and finds some modules damaged or obscured, it uses the redundant data to calculate what the missing modules should have been and reconstruct the original message.
The elegance of Reed-Solomon is that it works regardless of which modules are damaged. The scanner does not need to know which modules are missing — the mathematics identifies the damaged positions automatically and repairs them.
The four error correction levels
The QR code standard defines four error correction levels, each offering a different balance between damage recovery capacity and data density:
Level L — Low: can restore approximately 7% of damaged or missing codewords (data blocks). This produces the smallest, least dense QR code for a given amount of data, because less error correction data is added. Use when the code will be displayed in controlled indoor conditions and will not be damaged.
Level M — Medium: can restore approximately 15% of damaged codewords. The most commonly used level. Good balance between code size and recovery capacity. Suitable for most standard applications.
Level Q — Quartile: can restore approximately 25% of damaged codewords. Produces a denser code. Use for materials that will experience physical wear — receipts, tickets, product labels.
Level H — High: can restore approximately 30% of damaged codewords. Produces the densest code. Required when adding a logo to the centre of the code. Also appropriate for outdoor signage, where weather and UV exposure can degrade print quality over time.
Why this matters for logo placement
The most visible practical application of error correction is logo embedding. By placing a logo in the centre of a QR code, you are intentionally obscuring some modules — and relying on error correction to reconstruct what was beneath.
For logo embedding, always use error correction level H (30%). This gives the maximum recovery capacity. A logo covering approximately 20–25% of the code area can be accommodated within this margin. Beyond 25%, scan reliability decreases even with level H.
The logo should ideally be square or circular with a white background or transparent background. PNG with transparency is the cleanest format — the scanner reads through transparent areas and encounters no obstruction. JPEG logos add a white rectangle behind the logo, which is visible but still scannable.
Do not use animated logos. A standard QR scanner captures a still frame — animation adds no value and can confuse detection algorithms.
Error correction and data capacity
There is a direct tradeoff between error correction level and the amount of data a QR code can hold (or equivalently, how physically large a code needs to be to hold a given amount of data).
For a URL of 50 characters: - Level L: requires a version 3 code (29×29 modules) - Level M: requires a version 4 code (33×33 modules) - Level Q: requires a version 5 code (37×37 modules) - Level H: requires a version 6 code (41×41 modules)
For a long URL of 150 characters: - Level L: version 7 (45×45 modules) - Level M: version 8 (49×49 modules) - Level Q: version 10 (57×57 modules) - Level H: version 12 (65×65 modules)
The difference in physical code size between level L and level H for the same data can be roughly 40% wider and twice the area. For content displayed in constrained spaces like business cards, this matters. For wall posters and large format printing, the extra density is invisible to the eye.
Choosing the right error correction level in practice
Level L: use for digital displays only (screens, presentations, websites) where the code will never be physically damaged and where maximum data density or minimum code size matters.
Level M: the practical default for most applications — indoor posters, leaflets, menus, and table cards in controlled environments. Provides meaningful damage recovery without excessive code density.
Level Q: use for any material that will experience physical handling — product labels, receipts, tickets, loyalty cards. Also use when the code will be printed on lower-quality material like thermal paper.
Level H: use whenever you add a logo to the code, and for any outdoor deployment. UV exposure, weathering, rain, and physical abrasion over months of outdoor exposure can degrade print quality substantially. The extra 5% recovery margin over level Q provides meaningful protection.
Testing error correction in practice
The most instructive test is simple: print your QR code at the intended size, add your logo if applicable, then deliberately obscure parts of the code with a pen — draw a line across a corner, or cover a 10% section with opaque tape — and try to scan it. If it scans with 30% blocked, your error correction level is genuinely working.
For codes with logos, test by placing a finger partly over the logo area while scanning. If the code still reads, the error correction is sufficient. If it fails, either reduce the logo size or switch to a higher error correction level.
Scanning reliability also depends on the scanner's software. Modern smartphone cameras with recent software handle partial damage well. Older devices or industrial scanners may be more demanding. If your QR code will be used in a context where users may have older phones, testing across device generations is worthwhile.
Create a free QR code — no account needed
→ universalqrgenerator.com