Standards/rm4scc
RM4SCC
Overview
RM4SCC (Royal Mail 4-State Customer Code), known internally by Royal Mail as CBC (Customer Bar Code), is a height-modulated, four-state barcode symbology developed by the United Kingdom's Royal Mail for automated mail sorting [1, 3]. Unlike conventional width-modulated 1D barcodes (UPC, EAN, Code 128), RM4SCC encodes information through the vertical position and length of each bar — its "state" — rather than bar width [3]. The symbology encodes the destination postcode plus a two-character Delivery Point Suffix (DPS), allowing automated sorting equipment to route a letter to an individual delivery point [1].
RM4SCC is the ancestor of an entire family of national postal four-state codes, including the Dutch kix, the australia-post-4-state, and Royal Mail's own successor mailmark; Singapore Post uses RM4SCC without modification [1].
History
RM4SCC was developed by Royal Mail in the early 1990s as part of a mail-automation modernisation programme and entered operational use across UK sorting centres around 1993–1995 [5]. It was deployed on services such as Royal Mail's Cleanmail, which lets businesses send large quantities of letters cheaply, and was associated with the Mailsort automation suite [1]. From January 2018 Royal Mail began replacing the Customer Barcode (CBC/RM4SCC) with the newer mailmark barcode programme [7].
Technical specification
Four-state bar structure. Each RM4SCC character is built from four bars, where every bar occupies one of four states [1, 4]:
- Tracker (also "track"/short bar) — occupies only the middle third of the symbol height.
- Ascender — tracker plus an upward extension (top two-thirds).
- Descender — tracker plus a downward extension (bottom two-thirds).
- Full (ascender + descender) — spans the full symbol height.
Within each four-bar character, two bars carry ascenders and two carry descenders, giving 36 valid combinations used to represent the 10 digits (0–9) and 26 letters (A–Z) [1].
Symbol layout. A complete RM4SCC symbol consists of [1, 4]:
- a start bar (a single ascender bar),
- the encoded postcode,
- the two-character Delivery Point Suffix (DPS) ranging from
1Ato9T, - a checksum character,
- a stop bar (a single full-height bar),
all enclosed by a quiet zone.
Checksum. The check character is computed by treating each data character's four bars as having weights 4, 2, 1, 0 from left to right. The top halves (ascenders) and bottom halves (descenders) are summed separately, each modulo 6, and the two resulting values select the check symbol [1, 4].
Use cases
- Automated sorting of business bulk mail under Royal Mail's Cleanmail and Mailsort programmes [1].
- Encoding UK postcode + delivery-point suffix so mail can be machine-sorted to a single letterbox [1].
- Adoption beyond the UK: Singapore Post uses unaltered RM4SCC, and several national posts based their own four-state codes on it [1].
Implementations
- OkapiBarcode — Java, ~394 stars, active in 2025; open-source generator supporting Royal Mail 4-State (RM4SCC) among 50+ symbologies [6].
- cfax/rm4sccdec — Python (OpenCV/NumPy), ~71 stars, last commits 2015; an image decoder for RM4SCC, described by its author as not production-ready [8].
- antonscheffer/as_barcode — PL/SQL, ~27 stars; package that generates RM4SCC, Australia Post 4-State and KIX postal codes [6].
- productdevbook/etiket — TypeScript, ~409 stars, active 2026; zero-dependency generator with a four-state engine covering RM4SCC, KIX, Australia Post and Japan Post [6].
Comparison
RM4SCC is the root of the four-state postal family. The Dutch kix code is essentially RM4SCC stripped of its start bar, stop bar and checksum, with house number and suffix separated by an X [1]. The australia-post-4-state code adapts the same height-modulated four-state principle but adds a Format Control Code, an 8-digit Delivery Point Identifier and Reed–Solomon error correction [2-aus]. Royal Mail's own mailmark 4-state barcode extends RM4SCC with Reed–Solomon error correction and richer supply-chain data, and is its designated successor [7]. The US Intelligent Mail barcode and Canada Post's PostBar are also cited as RM4SCC derivatives [1].
Fun facts
- The "4-State" in the name refers to the four bar positions/lengths used to encode data, in contrast to the variable bar widths of ordinary linear barcodes [3].
- RM4SCC carries the internal Royal Mail nickname CBC ("Customer Bar Code") — the same "CBC" later cited as the system Mailmark replaced [1, 7].
Status
Legacy / being phased out. RM4SCC remains technically valid and is still widely understood, but Royal Mail began superseding the Customer Barcode with the mailmark programme from January 2018, making Mailmark the preferred barcode for UK bulk mail [7].
Sources
1 RM4SCC — Wikipedia — Wikipedia 2 RM4SCC Barcode Specifications — BarcodeFAQ.com — IDAutomation/BarcodeFAQ 3 Royal Mail (RM4SCC) Barcodes — Barcode Xpress — Accusoft 4 Royal Mail Barcode (RMS4CC) — Knowledge Base — Morovia 5 The history of RM4SCC barcode — Free-Barcode.com 6 OkapiBarcode — GitHub (woo-j) 7 Royal Mail Mailmark Barcode FAQ — IDAutomation/BarcodeFAQ 8 rm4sccdec — GitHub (cfax)
Deployments
No country reports mention this standard by name.