QR Code Error Correction - Feb 2017
Yes, QR codes do have error correction. This error correction can ensure that a QR Code remains readable when as much as 30% of the code is corrupt. In this example, red ink covers a chunk of the QR Code but the QR Code can still be read successfully.
Error Correction is always enabled to some extent, you can't turn it off. When a code is being created, it's down to the designer to specify which of the 4 different leves of error correction they want. The designer can select from the following:
- L[ow] - up to 7% damage
- M[edium] - up to 15% damage
- Q[uality] - up to 25% damage
- H[igh] - up to 30% damage
Error correction comes at a cost, after all nothing is free, and that cost is that the higher the level of Error correction you apply to your QR Code, the more space you lose to store actual data. The table below gives an example of how the different error correction levels effect a standard QR Code.
You can see how even just the lowest level of error correction can reduce the Max. amount that you can encode into a QR Code quite dramatically.
There are times when error correction is worth sacrificing storage space and times when it isn't. For example, on a business card when you likely don’t need to store tonnes of detail, but where the card could become damaged or wet before the recipient has had a chance to scan it, higher levels of Error Correction could save the day. On the other hand, if you’re creating a code that will only be displayed digitally, it's unlikely the content of the code will be damaged and the original is easily reproducible so error correction isn't really very useful, especially not at the highest levels.
Newer Types of QR Code were introduced by Denso wave some years after the original QR Code, and these also support error correction. Frame QR Codes support all 4 levels, Micro QR Codes supports the first 3 levels, and iQR Codes support all 4 levels plus 2 new ones.
- S - up to 50% damage
- T - up to 60% damage
Error correction in QR Codes is achieved using "Reed-Solomon Error Correction" which in a very complex way is able to mathematically build in the backup data.
Luckily for the QR Code reader, every barcode has a small section which identifies which level of error correction was used when the QR Code was created. That section is circled in orange in this QR Code.
As you start to increase the level of error correction on your QR Code, the code appears a lot more dense to the naked aye and the amount of data you can store reduces. The physical size of each module is reduced as the number of modules used increases
When creating a code, especially one with a small surface area, having the code too dense could cause problems. The smaller the modules that make up the code are, the harder it is for the scanner to focus and also the more chance there is of the QR Code becoming corrupt in the first place.
With tiny QR Codes codes, the likelihood is that any damage at all could damage a high percentage of the code (greater than what Error Correction can recover from) therefore reducing the benefit.