# Plessey Code

> Source: https://docs.barcoder.ai/docs/standards/plessey-code
> research date 2026-06-04 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [Plessey Code — Wikipedia](https://en.wikipedia.org/wiki/Plessey_Code)
- [Plessey Code — Seagull BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/content/Symbologies/Plessey.htm)

## Overview

**Plessey Code** is one of the earliest 1D linear barcode symbologies, developed in **1971 by The Plessey Company plc**, a British electronics firm <sup>[1][1], [2][2]</sup>. It is a **pulse-width-modulated, hexadecimal (0–F) symbology** in which each character is encoded as **4 bits**, with a **bit-level bar/space representation** and an **8-bit CRC check** for error detection <sup>[1][1], [3][3]</sup>. It is historically important as the **direct ancestor of [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey)** (MSI, "Modified Plessey") and is famous as one of the very first barcodes used in real-world retail — by **J. Sainsbury** in the early 1970s <sup>[1][1]</sup>.

This entry covers the **original 1971 Plessey Code** (sometimes called *UK Plessey*), which is distinct from [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey): MSI was developed by MSI Data Corporation *based on* Plessey but redefines the module structure and replaces the CRC with conventional Mod-10/Mod-11 check digits <sup>[1][1], [4][4]</sup>.

## History

**Plessey Code was developed in 1971 by The Plessey Company plc**, a British-based electronics and telecommunications company <sup>[1][1], [2][2]</sup>. Its **first commercial use was in the early 1970s by J. Sainsbury**, the UK supermarket chain, to identify all of its products on supermarket shelves in a product-restocking system <sup>[1][1]</sup> — one of the earliest documented retail barcode deployments anywhere.

Plessey Code went on to be adopted for **library shelf tags and book/catalogue identification**, a niche where it persisted long after general retail had moved to EAN/UPC <sup>[1][1], [2][2]</sup>.

**Relationship to MSI ([MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey))** <sup>[1][1], [4][4]</sup>: **MSI Data Corporation developed the MSI barcode based on the original Plessey Code**, which is why MSI is commonly called **"Modified Plessey."** MSI inherited Plessey's numeric/BCD heritage but redesigned the bar/space module structure and substituted standard Mod-10 (Luhn) / Mod-11 check digits for Plessey's CRC. A further descendant, **Anker Code** (by ADS and Telxon), is also derived from Plessey <sup>[1][1]</sup>.

The original Plessey specification is now **difficult to obtain** — surviving mainly as discontinued paper documentation <sup>[1][1]</sup>.

## Technical specification

Plessey Code is a **pulse-width-modulated, bit-oriented 1D symbology** encoding hexadecimal characters <sup>[1][1], [3][3]</sup>:

| Parameter | Value |
|---|---|
| Symbology family | 1D linear (pulse-width modulation) |
| Character set | **Hexadecimal 0–F** (4 bits per character) <sup>[1][1]</sup> |
| Encoding basis | **Pulse-width modulation**, reversed **BCD** (binary-coded decimal) for character representation <sup>[1][1]</sup> |
| Bit "0" | **Narrow bar + wide space** <sup>[1][1]</sup> |
| Bit "1" | **Wide bar + narrow space** <sup>[1][1]</sup> |
| Bits per character | 4 <sup>[1][1]</sup> |
| Forward start code | `1101` <sup>[1][1]</sup> |
| Reverse start code | reversed `0011` (enables bidirectional read) <sup>[1][1]</sup> |
| Check code | **8-bit CRC**, generator polynomial **g(x) = x⁸ + x⁷ + x⁶ + x⁵ + x³ + 1** (binary `111101001`) <sup>[1][1]</sup> |
| Termination | Full-pitch termination bar <sup>[1][1]</sup> |
| Bidirectional | Yes — left-to-right or right-to-left <sup>[1][1]</sup> |

**Pulse-width modulation / bit encoding** <sup>[1][1]</sup>: rather than a "n-of-m" element rule, Plessey encodes each *bit* as a bar/space pair — a `0` is a narrow bar followed by a wide space, a `1` is a wide bar followed by a narrow space. Four such bit-pairs make one hexadecimal character, using a reversed BCD mapping <sup>[1][1]</sup>.

**CRC error detection** <sup>[1][1]</sup>: Plessey's distinguishing technical feature is its **8-bit cyclic-redundancy check** computed by polynomial division with generator **x⁸ + x⁷ + x⁶ + x⁵ + x³ + 1**. This is a genuine CRC — substantially stronger error detection than the single Mod-10/Mod-11 check digits used by most contemporary symbologies (including its own descendant [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey)).

**Bidirectional framing** <sup>[1][1]</sup>: distinct forward (`1101`) and reverse (reversed `0011`) start codes plus a full-pitch termination bar let a reader determine scan direction and decode the symbol scanned either way.

## Use cases

Plessey Code's documented deployments are early retail and library systems <sup>[1][1], [2][2]</sup>:

- **Retail shelf labelling** — J. Sainsbury's early-1970s product-restocking system, marking all products on supermarket shelves <sup>[1][1]</sup>.
- **Library shelf tags / catalogue identification** — a long-lived niche where Plessey persisted in some library systems <sup>[1][1], [2][2]</sup>.
- **General shelf-edge inventory** — numeric location and stock identifiers, the same niche its descendant [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey) still occupies <sup>[2][2]</sup>.

## Implementations

Plessey Code is a legacy format retained for backward compatibility in barcode libraries <sup>[1][1], [5][5]</sup>:

- **C** — [zint/zint][5] — ~771★, active 2026. Lists "UK Plessey" (the original Plessey) among supported symbologies, separately from MSI.
- **JavaScript** — `bwip-js` (BWIPP) exposes `plessey` (and `msi` for the Modified Plessey descendant).
- **Commercial** — Seagull/BarTender documents both Plessey Code and the Anker Plessey variant in its barcode guide <sup>[2][2]</sup>; other commercial scanner/print SDKs retain it for reading legacy library and retail labels.

## Comparison

**vs. [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey) (MSI / Modified Plessey)** — the central relationship. **MSI was developed by MSI Data Corporation based on Plessey Code** ("Modified Plessey") <sup>[1][1], [4][4]</sup>. Key differences: Plessey encodes **hexadecimal 0–F** and protects data with a true **8-bit CRC**; **MSI is numeric-only (0–9)** and replaces the CRC with conventional **Mod-10 (Luhn) / Mod-11** check digits, and redefines the bar/space module structure <sup>[1][1], [4][4]</sup>. Plessey is the British 1971 original; MSI is its American derivative that became more widespread in warehouse shelf-labelling.

**vs. the 2-of-5 family ([Standard 2 of 5](https://docs.barcoder.ai/docs/standards/standard-2-of-5), [ITF](https://docs.barcoder.ai/docs/standards/itf), [Matrix 2 of 5](https://docs.barcoder.ai/docs/standards/matrix-2-of-5))** — entirely different encoding principle: the 2-of-5 codes use an "n-of-m wide-element" rule on decimal digits, while Plessey uses **per-bit pulse-width modulation** on hexadecimal characters <sup>[1][1]</sup>. Plessey is cited as having **higher density than 2-of-5 and Code 39 (3 of 9)** codes of its era, and its CRC gives stronger error detection than their optional single check digits <sup>[1][1]</sup>.

**vs. Anker Code** — Anker (ADS / Telxon) is another Plessey-derived variant, alongside MSI <sup>[1][1]</sup>.

## Fun facts

Plessey Code's J. Sainsbury restocking deployment in the early 1970s makes it **one of the first barcodes ever used in real retail** <sup>[1][1]</sup> — predating the 1974 launch of UPC at retail checkout in the United States. Sainsbury's used it for shelf-level restocking rather than checkout scanning.

Plessey is unusual among 1D symbologies in carrying a genuine **CRC** rather than a simple check digit <sup>[1][1]</sup> — a level of error detection its own commercially-successful descendant [MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey) actually *dropped* in favour of simpler Mod-10/Mod-11 digits.

The original Plessey specification has become a **lost document** in practice — Wikipedia notes the spec is now difficult to obtain and survives mainly as discontinued paper documentation <sup>[1][1]</sup>, a reminder of how quickly early-1970s industrial standards can slip out of reach.

## Status

**Legacy / largely obsolete.** Plessey Code is "largely obsolete today" <sup>[1][1]</sup>, surviving in rare library and retail shelf-tag systems and as a backward-compatibility format in barcode libraries (zint "UK Plessey," bwip-js) and commercial SDKs (Seagull/BarTender) <sup>[1][1], [2][2], [5][5]</sup>. Its descendant **[MSI Plessey](https://docs.barcoder.ai/docs/standards/msi-plessey)** outlasted it in warehouse/shelf-labelling use, but it too is legacy. New deployments use [Code 128](https://docs.barcoder.ai/docs/standards/code-128), [ITF](https://docs.barcoder.ai/docs/standards/itf), or 2D codes instead.

## Sources

[1]: https://en.wikipedia.org/wiki/Plessey_Code
[2]: https://barcodeguide.seagullscientific.com/content/Symbologies/Plessey.htm
[3]: https://www.crifan.com/files/doc/docbook/symbology_plessey/release/webhelp/ch01s02s03.html
[4]: https://en.wikipedia.org/wiki/MSI_Barcode
[5]: https://github.com/zint/zint
[msi-plessey]: https://docs.barcoder.ai/source/standards/msi-plessey
[standard-2-of-5]: https://docs.barcoder.ai/source/standards/standard-2-of-5
[itf]: https://docs.barcoder.ai/source/standards/itf
[matrix-2-of-5]: https://docs.barcoder.ai/source/standards/matrix-2-of-5
[code-128]: https://docs.barcoder.ai/source/standards/code-128

1. [Plessey Code — Wikipedia][1]
2. [Plessey Code — Seagull BarTender Barcode Guide][2]
3. [Plessey & MSI Symbology — Barcode Format (crifan)][3]
4. [MSI Barcode — Wikipedia][4]
5. [zint/zint — GitHub][5]

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
