I’m a huge fan of 2D barcodes – whether the Datamatrix for industrial applications, QR Codes for cool marketing (and some industrial) stuff and Microsoft Tag for its design features – I use them all!
While one of the huge advantages of 2D over linear barcodes is the fact more data can be encoded into a given space, another important factor is that most 2D barcode symbologies have built-in error correction, which makes the printed code more robust. Parts of it can be missing and the code can still be read.
The 2D barcode we use the most here at the WincoPlex, is the Datamatrix Code. In this example (a Datamatrix encoded for MIL-STD-130) you can see I’ve chosen Symbol Type ECC200.
The ECC value isn’t really the Symbol Type as BarTender labels it – it is the level of error correction encoded into the symbol. If I had opened the drop-down to show the different possible values of ECC, it would show values including ECC 000, ECC 010, ECC 040, up to ECC 140 – ending with the ECC 200 I had chosen for this job.
As explained in a White Paper from Code Corporation the ECC levels of less than ECC 200 use a type of error correction called Convolutional Coding. This had been used in the early versions of the Datamatrix specification, but were replaced with ECC 200 as Datamatrix became more of an international standard.
The ECC 200 error correction is based on Reed-Solomon principles, named after two MIT guys, who developed these ideas back in 1960. Reed-Solomon error correction is employed in many of the modern 2D barcodes, such as PDF417 and QR as well as in Datamatrix.
This type of error correction is proven to work very well. In the Datamatrix for example, as much as 25% of the content area of the code symbol can be damaged and the barcode can still be decoded. Of course, all this error correction means the symbols are a little larger than they would normally be, but since the 2D barcodes are economical with the space they need, this isn’t usually an issue.
The example here shows the same MIL-STD-130 Datamatrix code encoded with both ECC 200 and ECC 000 (no error correction) to show the difference in size.
In reality, I don’t believe I’ve ever printed a Datamatrix code that wasn’t ECC 200, and I’ve printed them for 100’s of clients. Most standards that call for Datamatrix specify ECC 200 and it is a good practice anyway, even if not specified.
If printing MIL-STD-130 UID labels, the barcode will fail verification if ECC 200 isn’t used.
Want to learn more about Reed-Solomon error correction? Look no further than the Wikipedia entry – real geeky stuff!
QR Code Error Correction
QR Codes also use Reed-Solomon error correction, although it is presented in a slightly different way:
QR Codes have four levels of error correction: L (Low), M (Medium), Q (Quartile), and H (High). These levels denote the amount of the QR Code that can be damaged or obscured while still maintaining its functionality:
- Level L: This level offers up to 7% error correction capability. It’s the most fundamental error correction level and is useful when the code has minimal risk of being damaged, for instance, when displayed digitally.
- Level M: This level provides up to 15% error correction capability. It’s a middle-ground level, suitable for situations where there might be some risk of damage, but only a little.
- Level Q: This level offers up to 25% error correction capability. It’s a higher error correction level, suitable for situations where the QR Code might face a higher risk of damage.
- Level H: This is the highest error correction level, with up to 30% error correction capability. It’s ideal for situations where the QR Code is at an increased risk of damage, such as outdoor displays or when printed on physical products that might face wear and tear.
It’s important to note that the higher the level of error correction, the larger the barcode will become – this might be an issue when there is limited space available for printing the QR Code.
Do you use 2D barcodes in your operations? We are always happy to help if you need us – just use the contact page.