Checksums are used to detect errors in the transmission of data. The idea is that the whole unit of data can be identified by a single number, a checksum. If the checksum does not match its expected value, errors have occurred.
Many types of barcodes employ checksums. In several other types, checksums are optional. Those that incorporate checksums are more robust and reliable.
Checksum Example
The simplest checksum is to add up the value of the individual bytes in the data. Given the data of "CAT", the ASCII values of the letters are as follows:
-
C - 67
-
A - 65
-
T - 84
Summing these values gives 216, and the whole package might be given the notation "CAT(216)". So if we received "CAS(216)" we’d do the same steps:
-
C - 67
-
A - 64
-
S - 83
We would sum these values and receive 215. Since 215 does not equal 216, we know that an error has occurred.
This simple sum of the characters can be fooled by switching the order but not the value of the data, e.g. "TAC" and "CAT" have the same checksum. So more sophisticated checksum methods have been developed which reduce (but never totally eliminate) the chance of incorrect data giving the correct checksum.
Error Correction
In the example above, we can detect that "CAS(216)" has a data transmission error, but we can't correct it becausee we don't know which character caused the problem. "BAS(216)" or "CAT(216)" could be the correct data.
To be able to correct data transmission errors, Reed-Solomon Error Correction is performed. More often, advanced barcodes use this system. There is a trade-off here however, because as the barcode is made more robust against transmission errors, the barcode has to store more ECC data in its data.
Platform-Specific Notes
The UPC and EAN codes always append the checksum character to the barcode results. This is done regardless of the AppendCheckSum property value.
The UPC and EAN codes always append the checksum character to the barcode results. This is done regardless of the AppendCheckSum property value.
The UPC and EAN barcodes always append the checksum character to the barcode results regardless of the BarcodeAppendCheckSum property value.
The UPC and EAN codes always append the checksum character to the barcode results. This is done regardless of the AppendCheckSum property value.
The UPC and EAN codes always append the checksum character to the barcode results. This is done regardless of the AppendCheckSumproperty value.
The UPC and EAN codes always append the checksum character to the barcode results.
Checksums by Barcode Type
Barcodes with No Checksum | Barcodes Requiring a Checksum | Barcodes with Optional Checksum | Barcodes with Error Correction |
---|---|---|---|
Add 2 | Code 128 | Code 39 | Australia Post 4 State |
Add 5 | Code 93 | Code 39 Extended | Aztec |
Codabar | Code 93 Extended | Industry 2 of 5 | Data Matrix |
Code 32 | IATA 2 of 5 | Interleaved 2 of 5 | MicroPDF417 |
DataLogic 2 of 5 | EAN-128 | Inverted 2 of 5 | PDF417 |
Patch Code | EAN-13 | BCD Matrix | QR Code |
EAN-8 | UPU S18 4-State | ||
GS1 DataBar | |||
Intelligent Mail | |||
Matrix 2 of 5 | |||
Planet | |||
PostNet | |||
Royal Post 4-State | |||
UPC-A | |||
UPC-E |
For more information, see the Barcode Xpress SDK product page or try our online demos.