^BP
Plessey Bar CodePreview: partialThe ancestor of MSI: a numeric symbology from 1970s library and retail systems, kept in ZPL for the installations that still run them.
Syntax
^BPo,e,h,f,gParameters
| Parameter | Description and accepted values | If omitted |
|---|---|---|
| o | Rotation of the bar code on the label.N normal, R 90°, I 180°, B 270° | Last ^FW value, else N |
| e | Adds the CRC check digit the symbology defines.Y or N — add a check digit | N |
| h | Bar height in dots. Overrides the height set by ^BY for this field only.1 to 32000 dots | Height set by ^BY |
| f | Prints the data underneath the bars as text.Y or N — print the human-readable line | Y |
| g | Moves that text above the bars instead.Y or N — put that line above the bars | N |
How it works
^BP prints Plessey, developed by the Plessey Company for retail and library catalogues. It encodes digits and the letters A to F — it is a hexadecimal symbology underneath — four bits per character, each bit a pair of bars.
MSI (^BM) is a later refinement of the same idea and has largely replaced it. Plessey itself now appears mostly in library book spines and a few long-lived retail systems in the UK.
It is a wide symbology with weak error detection, and the optional check digit is a CRC rather than a modulus. There is no reason to choose it for new work.
Example
^XA
^BY2,3,80
^FO60,60^BPN,N,80,Y,N^FD1234^FS
^XZRendering…
How the preview on this site handles it
Drawn with a real Plessey encoder, so it scans, and rotation is applied. The check digit from `e` is not added to the bars, and the wide-to-narrow ratio from ^BY is not applied — the preview always uses 3:1.
Common mistakes
- Sending characters outside 0–9 and A–F. Plessey is hexadecimal; anything else will not encode.
- Expecting strong error detection. A CRC catches transmission errors, not misreads — do not rely on Plessey for anything safety-critical.
- Choosing it over MSI. If a legacy system does not specifically require Plessey, ^BM is the better-supported descendant.