# MSI Plessey

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

Specifications:
- [MSI Barcode — Wikipedia](https://en.wikipedia.org/wiki/MSI_Barcode)
- [MSI Plessey barcodes — Cognex](https://www.cognex.com/resources/symbologies/1-d-linear-barcodes/msi-plessey-barcodes)

## Overview

**MSI**, also known as **Modified Plessey**, is a numeric-only, continuous, variable-length 1D linear barcode symbology derived from the original Plessey Code <sup>[1][1]</sup>. It encodes only the digits 0–9 and supports no letters or symbols <sup>[1][1]</sup>. The symbology is not self-checking, so one or two optional check digits are normally appended for integrity <sup>[1][1]</sup>. Its primary application is inventory control — particularly the marking of storage containers and warehouse shelves <sup>[1][1]</sup><sup>[2][2]</sup>.

## History

MSI was developed by **MSI Data Corporation**, basing the design on the earlier Plessey Code symbology <sup>[1][1]</sup><sup>[5][5]</sup>. Because of this lineage it is commonly called "Modified Plessey" <sup>[2][2]</sup>. (Plessey Code itself originated with the British Plessey Company.)

## Technical specification

- **Character set:** digits 0–9 only; no alphabetic or symbol support <sup>[1][1]</sup>.
- **Encoding:** each digit is converted to its 4-bit binary-coded decimal (BCD) representation <sup>[1][1]</sup>. A leading `1` bit is prepended and two trailing `0` bits appended to form the full bit stream <sup>[1][1]</sup>.
- **Module structure:** each bit is printed as a bar/space pair three modules wide. A `0` bit is a 1/3-width bar followed by a 2/3-width space; a `1` bit is a 2/3-width bar followed by a 1/3-width space <sup>[1][1]</sup><sup>[5][5]</sup>.
- **Start / stop:** start character is the bit `1` (pattern `110`); stop character is `00` (pattern `1001`) <sup>[5][5]</sup>.
- **Self-checking:** MSI is a continuous symbology that is **not** self-checking <sup>[1][1]</sup>.
- **Check-digit options:** MSI supports no check digit, or 1–2 check digits in several schemes <sup>[1][1]</sup><sup>[5][5]</sup>:
  - **Mod 10** — uses the Luhn algorithm; the most common option <sup>[1][1]</sup><sup>[5][5]</sup>.
  - **Mod 11** — two weighting variants: the IBM pattern uses repeating weights (2,3,4,5,6,7) and the NCR pattern uses (2,3,4,5,6,7,8,9) <sup>[1][1]</sup><sup>[5][5]</sup>.
  - **Mod 1010** — two sequential Mod 10 (Luhn) check digits <sup>[1][1]</sup><sup>[5][5]</sup>.
  - **Mod 1110** — a Mod 11 check digit followed by a Mod 10 check digit, giving maximum error detection <sup>[1][1]</sup><sup>[4][4]</sup>.

## Use cases

MSI's dominant deployment is inventory and warehouse management: it is used to mark storage bins, containers, and especially **shelf edges** in warehouse and retail stockroom environments <sup>[1][1]</sup><sup>[2][2]</sup>. Its numeric-only nature suits internal stock-location numbering where alphanumeric data is unnecessary.

## Implementations

- **[zint](https://github.com/zint/zint)** — C, ~771 stars, active in 2026. A barcode-encoding library supporting 50+ symbologies; lists "Plessey (MSI & UK)" / MSI Plessey among them <sup>[6][6]</sup>.
- **[bwip-js](https://github.com/metafloor/bwip-js)** — JavaScript, ~2.4k stars, active in 2026. A pure-JavaScript port of Barcode Writer in Pure PostScript (BWIPP) covering 100+ types; exposes MSI as `msi` ("MSI Modified Plessey") <sup>[6][6]</sup>.

(The widely used `python-barcode` library does **not** support MSI <sup>[3][3]</sup>.)

## Comparison

- **MSI vs. Plessey:** MSI is a direct derivative ("Modified Plessey") of the British Plessey Code, sharing the BCD-oriented heritage but redefining the bar/space module structure and check-digit handling <sup>[1][1]</sup><sup>[2][2]</sup>.
- **MSI vs. self-checking codes:** Unlike self-checking symbologies (e.g. Code 39), MSI carries no built-in per-character integrity, which is why a Mod 10 or Mod 11 check digit (or both, as Mod 1110) is conventionally added <sup>[1][1]</sup>.
- Among compact numeric codes MSI is bulkier than Interleaved 2 of 5 because each digit consumes a fixed BCD-derived width, so where density matters ITF is usually preferred; MSI persists mainly by inertia in shelf-labelling systems <sup>[1][1]</sup><sup>[2][2]</sup>.

## Status

MSI is a **legacy, niche** symbology. It is no longer chosen for new general-purpose deployments but remains supported by commercial scanner SDKs and barcode-generation libraries (Cognex, Seagull/BarTender, zint, bwip-js), and still appears in established warehouse shelf-labelling systems <sup>[1][1]</sup><sup>[2][2]</sup><sup>[5][5]</sup><sup>[6][6]</sup>.

## Sources

[1] [MSI Barcode — Wikipedia](https://en.wikipedia.org/wiki/MSI_Barcode) — Wikipedia, accessed 2026.
[2] [MSI Plessey barcodes](https://www.cognex.com/resources/symbologies/1-d-linear-barcodes/msi-plessey-barcodes) — Cognex, accessed 2026.
[3] [Supported Formats](https://python-barcode.readthedocs.io/en/stable/supported-formats.html) — python-barcode documentation, accessed 2026.
[4] [MSI Plessey (Mod 1110) Generator](https://www.barcodegenerator.tech/Msi1110) — BarcodeGenerator.tech, accessed 2026.
[5] [MSI Barcode](https://handwiki.org/wiki/MSI_Barcode) — HandWiki, accessed 2026.
[6] [zint — A barcode encoding library](https://github.com/zint/zint) — GitHub (zint/zint), accessed 2026.

[1]: https://en.wikipedia.org/wiki/MSI_Barcode
[2]: https://www.cognex.com/resources/symbologies/1-d-linear-barcodes/msi-plessey-barcodes
[3]: https://python-barcode.readthedocs.io/en/stable/supported-formats.html
[4]: https://www.barcodegenerator.tech/Msi1110
[5]: https://handwiki.org/wiki/MSI_Barcode
[6]: https://github.com/zint/zint

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
