Barcode Basics >
Different Types of
Barcodes > Plessey
The Plessey code
was originally developed in England and gave rise to several variations including the MSI,
Anker, and Telxon codes. Of these, the MSI Plessey is still in use in the USA; it is used
in libraries, and is often used for retail grocery shelf marking.
The MSI Plessey Code is is a pulse-width modulated non-self checking code. Each
character is represented by 4 bars; a narrow bar represents a binary 0 and a wide bar
represents a binary 1. The bars have the binary weights 8-4-2-1. It is possible to encode
the digits 0 through 9 and the letters A through F, although this code is most often used
just for numeric information. The start character is a single wide bar, and the stop
character is two narrow bars.
The Modulo 10 Checksum
A MSI Plessey barcode always includes a Modulo 10 checksum, and may include a second
checksum. The method for calculating the checksum is a bit unusual:
1. Form a new number using every other digit from the original number. If the original
number contains an even number of digits, start with the second digit; if an odd number of
digits, start with the first. For example, if the original number is 123456, the new
number will be 246; if the original number is 12345, the new number will be 135. The last
digit in the new number will always be the last digit in the original number.
2. Multiply the new number by 2. Using the original number 12345 as an example, 135 x 2
3. Add up all the digits in the result. For example, 2 + 7 + 0 = 9.
4. Add to this result all of the digits from the original number not used in step 1. So
9 + 2 + 4 = 15.
5. Perform a Modulo 10 division on the result and subtract the result from 10. If the
result is 10, change it to 0. Using our example...10 - (15 Modulo 10) = 5. This is the
If a second checksum is required, append the first checksum to the original string and
perform the calculation all over again including the first checksum. In our example, the
checksum for 12345 would be 5. The second checksum would be calculated using 123455 as the
The Modulo 11 Checksum
Some applications may require a Modulo 11 checksum, and this is calculated in a very
different way from the Modulo 10 checksum:
1. Assign a weight to each digit position of the original number. The weighting factors
are 2, 3, 4, 5, 6, 7 starting with the rightmost character and working to the left. The
rightmost character receives a weight of 2, the next to the left a weight of 3, and so on.
After the weight of 7 is used, go back to 2 and repeat.
Original number: 9 4 3 4 5 7 8 4 2
Assigned weights: 4 3 2 7 6 5 4 3 2
2. Multiply each digit by its assigned weight and add the products:
(9x4)+(4x3)+(3x2)+(4x7)+(5x6)+(7x5)+(8x4)+(4x3)+(2x2) = 195
3. Perform a Modulo 11 division and subtract the result from 11; if the result is 11,
change it to 0:
195 Modulo 11 = 8 (the remainder of 195 / 11)
11 - 8 = 3
4. Append the checksum (3 in this case) to the end of the original number.