Data Redundancy
Data redundancy is a mechanism that adds extra data for recovery on top of the original data, so that the whole can be restored even if part of it is lost. It is used in every situation where data reliability must be ensured, such as RAID mirroring, parity bits in communications, and the error correction codewords of QR codes.
Error correction in QR codes is achieved through data redundancy based on Reed-Solomon codes. Error correction level L can restore about 7% of lost data, M about 15%, Q about 25%, and H about 30%. These figures are the proportion of loss that can be restored, not the proportion occupied by redundant data. At level H, about 66% of all the codewords in a QR code are used for error correction, and about 34% are available for the original data.
Redundancy involves a trade-off. The more redundant data there is, the higher the resistance to damage, but the QR code size (version) needed to store the same amount of information becomes larger. A 100-character URL stored at level L fits in version 5 (37 by 37 modules / 106 bytes), but level H requires version 10 (57 by 57 modules / 119 bytes). Choosing the right level for the use case determines the balance between size and durability.
When a logo is placed in the center of a design QR code, the modules covered by the logo are treated the same as if they were "damaged." It is precisely because level H can restore up to about 30% of lost data that there is room to place a logo in the center. However, this 30% is a proportion of the data (codewords), and it does not mean that 30% of the area may be covered. In practice, it is recommended to leave a safety margin and keep the logo to around 20% (the guideline upper limit assuming error correction level H is around 25%).