Skip to content
barcoder

Standards/codabar

Codabar

Type1D Linear
Completeness91%high

Overview

Codabar is a discrete, self-checking, numeric 1D linear barcode symbology developed by Pitney Bowes in 1972 [1, 2]. It is one of the oldest barcode standards still in active commercial use — pre-dating upc-a (1973/74) by a year and almost every other linear symbology in this encyclopedia. The format has multiple names across applications: Monarch (Pitney Bowes), NW-7 (Japan), Code 2 of 7, USD-4, Ames Code, Rationalized Codabar, ANSI/AIM Codabar, USS Codabar [3].

Codabar's niche dominance is in three specific industries: library circulation systems, blood banks (mandated by the American Blood Commission in the 1970s and AABB), and legacy overnight delivery services including the original FedEx air-bill barcode [1, 2]. Its discrete, self-checking design means any print defect produces an unreadable code rather than a misread — a property valued in the high-criticality applications (blood-bag labelling) where misreads have severe consequences.

History

1972 — Pitney Bowes invents Codabar [1, 2, 4]: Postal-meter and barcode-equipment manufacturer Pitney Bowes designed Codabar specifically for applications needing simple numeric encoding with reliable self-checking — meaning a defect produces unreadable code rather than misread data. The discrete-character design (each character independent) and self-checking property were the load-bearing design choices.

Names and variants [3]:

  • Codabar — most common name today.
  • Monarch — Pitney Bowes product-line branding.
  • NW-7 — Japanese name (used by JAN/Japan Article Numbering standards).
  • Code 2 of 7 — descriptive technical name (2 wide of 7 elements per character).
  • USD-4 — Uniform Symbol Description series.
  • Ames Code — alternative name in some legacy systems.
  • Rationalised Codabar / ANSI/AIM Codabar / USS Codabar — formalised variants under standardisation bodies.

1970s — Blood-bank adoption [1]:

  • The American Blood Commission adopted Codabar in the 1970s as the standard for blood-product labelling.
  • AABB (American Association of Blood Banks) mandated Codabar for blood bag labelling, donor registration, and specimen identification.
  • Codabar has been the dominant barcode in US blood banking since the 1970s — a continuous 50+ year deployment.

Library systems (1970s–80s) [1]: Libraries adopted Codabar for book and patron-card barcoding because of its dot-matrix-printer-compatibility (Codabar prints reliably on the multi-part forms libraries used) and self-checking property.

FedEx air bills (1970s–80s) [1]: Federal Express used Codabar on its multi-part air-bill forms for tracking parcels through its overnight delivery network. Codabar's ability to print accurately on dot-matrix-printer multi-part forms was the structural reason for the choice — modern thermal-printer-based shipping labels mostly moved to code-128 but FedEx's legacy installed base retained Codabar elements for decades.

Continued use (2026) [1]:

  • Blood banks worldwide: AABB standard remains in force; ISBT-128 (newer ISBT standard) uses code-128 but Codabar deployments persist in many blood centres.
  • Libraries: many library-circulation systems run on Codabar; modern systems use code-128 but the legacy install base is large.
  • FedEx legacy systems: gradually being migrated to modern symbologies but operational Codabar still exists.

Technical specification

Codabar is a discrete numeric 1D linear symbology with letter start/stop characters [1, 5]:

Parameter Value
Symbology family 1D linear
Character set Digits 0–9 + symbols -, $, :, /, ., +
Start/stop characters A, B, C, D (or a, b, c, d / t, n, *, e) — four distinct
Elements per character 4 bars + 3 spaces (7 elements total — hence "2 of 7" alternate name)
Wide elements per character 2 of 7 (varies by character)
Self-checking Yes — discrete characters, each independently validatable
Length Variable
Bidirectional reading Yes
Quiet zone 10 × narrow-element width on each side
Check digit Optional (modulo-16 or modulo-11)

Discrete vs continuous [1, 5]:

  • Codabar is discrete — each character is independently encoded with intervening space.
  • Compare with code-39 (also discrete), code-128 (continuous), itf (continuous).
  • Discrete encoding has slightly lower density than continuous but simplifies decoding — each character can be validated independently.

Self-checking property [1]:

  • Codabar's structural rule (exactly 2 wide elements of 7) means any print or scanning defect that alters the wide-element count flags the character as invalid.
  • No silent misreads at the character level.
  • This is the load-bearing property for blood-bank and other high-criticality applications.

Four start/stop characters (A/B/C/D) [1, 5]:

  • Codabar uses letter start/stop characters (not the same as data characters).
  • The choice of A, B, C, or D as start/stop can encode additional metadata (e.g., character set, application identifier).
  • This is rare among 1D symbologies and structural to several Codabar deployments.

Variants by name [3]:

  • Pharmacode (a derivative used in pharmaceutical packaging) is sometimes confused with Codabar but is a distinct very-narrow-numeric symbology.

Use cases

Codabar's surviving use cases are narrow but deeply entrenched [1, 2]:

  • Blood-bank labelling — AABB-mandated for blood bags, donor registration, specimen tracking. Used by every US blood centre and many international ones. ISBT 128 is the newer standard but Codabar persists in many installed deployments [1].
  • Library circulation systems — book labels, patron ID cards, book-returns barcoding. Many library systems run Codabar-only software from 1980s–1990s vintage that hasn't been migrated.
  • FedEx air-bill legacy — original FedEx tracking-number barcode; gradually being replaced by modern symbologies on the customer-facing label but Codabar elements persist in internal systems.
  • Photo processing labs — film-canister and order-envelope barcoding through the 1990s–2000s; near-zero remaining use as film photography declined.
  • Health insurance claim forms — some legacy claim-form processing systems used Codabar; modern systems use code-128.
  • DHL Express — historically used Codabar for some package tracking; mostly migrated.

Why Codabar persists [1]:

  • Installed base — billions of existing Codabar labels in operational blood-bank and library systems.
  • Self-checking robustness — critical for blood-bag labelling where misreads are unacceptable.
  • Dot-matrix-printer compatibility — Codabar prints reliably on multi-part carbonless forms that thermal printers can't handle.
  • No licensing fees — public domain.

Why Codabar is being displaced for new applications [1]:

  • code-128's much higher density and ASCII support.
  • data-matrix (specifically ISBT 128 / GS1 DataMatrix) for blood-bank serialisation.
  • code-39's alphanumeric capability where letters are needed.

Implementations

Codabar has universal scanner support (every commercial 1D scanner ever made reads it) but narrower library support than code-128 / code-39 [6]:

  • Java + many portszxing/zxing — 34 000★, active 2025. Decodes Codabar alongside other 1D and 2D symbologies.
  • C / C++libzint (Zint barcode generator); zbar (decoder) — Codabar support.
  • Pythonpython-barcode, treepoem, pyzbar all support Codabar.
  • PHPpicqer/php-barcode-generator.
  • JavaScriptJsBarcode, bwip-js.
  • C# / .NETZXing.Net, Aspose.BarCode, Dynamsoft Barcode Reader.
  • OS-level mobile — iOS AVFoundation and Android CameraX / ML Kit decode Codabar (typically exposed as Codabar symbology type).
  • POS / industrial scanners — every commercial 1D scanner (NCR, Datalogic, Honeywell, Symbol/Zebra, Cognex) reads Codabar natively.
  • Thermal printers — Zebra, Honeywell, SATO, TSC all support Codabar from their command languages (ZPL, EPL).

Comparison

vs. code-39 — Both 1970s-era discrete 1D symbologies. Code 39 is alphanumeric (43 characters); Codabar is numeric + 6 symbols only. Code 39 came two years later (1974); Codabar came first (1972). Both still in active legacy use in their respective niches: Code 39 dominates DoD / automotive / library legacy; Codabar dominates blood-bank / older library / FedEx-legacy [code-39-ref].

vs. code-128 — Code 128 (1981) is denser, ASCII-capable, continuous. Modern blood-bank standards (ISBT 128) actually use code-128 for new deployments — but the installed Codabar base in blood banking is large and slow to migrate [code-128-ref].

vs. itf — Both numeric-only 1D. ITF is denser (interleaved encoding); Codabar is self-checking. ITF dominates shipping cartons; Codabar dominates blood banks and libraries. Different niches; both originated in early 1970s [itf-ref].

vs. data-matrix (ISBT 128 / GS1 DataMatrix in healthcare) — Modern blood-bank serialisation is migrating from Codabar to 2D ISBT 128 + GS1 DataMatrix combinations for richer data (lot, expiry, donor info). Codabar persists as the bridging item-level identifier on bags during the migration [data-matrix-ref].

Fun facts

Codabar pre-dates upc-a by a year (1972 vs 1973/74) [1] — making it among the oldest commercially deployed barcode symbologies still in active use. Most 1970s-era barcodes have been displaced; Codabar's survival in blood-bank and library applications is testament to the stickiness of niche installed bases in high-criticality contexts.

The American Blood Commission's 1970s adoption of Codabar shaped global blood-bank labelling for 50+ years [1]. AABB's mandate cascaded into international blood-bank standardisation; even countries that didn't formally adopt AABB standards often followed the same Codabar convention to maintain interoperability with US blood-product imports / exports.

Codabar's "no silent misreads" property is critical for blood-bag labelling [1] — in a blood centre, a misread bag could mean wrong-type blood reaching a patient, with potentially fatal consequences. Codabar's structural self-checking (any defect → unreadable rather than misread) is the operational reason it has been hard to displace even when newer denser symbologies offer technical advantages.

Codabar prints reliably on dot-matrix-printer multi-part carbonless forms [1] — a property that modern thermal-printer-focused symbologies often don't share. FedEx's original air-bill used Codabar partly because the FedEx form is multi-part (customer copy, driver copy, return copy) and Codabar prints crisply on all layers via dot matrix. Thermal printers (which print only the top layer) require different symbology choices.

The multiple names of Codabar reflect its long history across multiple standards bodies and regions [3]:

  • US: Codabar (most common), Monarch, USD-4, Ames Code
  • Japan: NW-7
  • Technical: Code 2 of 7
  • Standardised: ANSI/AIM Codabar, USS Codabar

A barcode standard accumulating 7+ names over 50 years is unusual; most peers (Code 39, Code 128) maintain a single canonical name.

Status

Active in legacy niches, slowly being displaced for new applications [1, 2]:

  • Active deployments: US blood banks (AABB mandate continues); legacy library systems; FedEx-internal legacy.
  • No formal deprecation by ANSI/AIM/ISO; the standard remains maintained.
  • Universal scanner support continues across commercial scanner products.
  • Public domain — no licensing fees.

Strategic context:

  • ISBT 128 (newer ISBT standard using code-128 + sometimes data-matrix) is the modern blood-bank successor; Codabar coexists with ISBT 128 in many deployments rather than being immediately replaced.
  • Library systems are gradually migrating to code-128 / qr-code for new deployments; legacy Codabar installations persist for decades.
  • FedEx and other carriers have largely moved to pdf417 / code-128 / maxicode for new labels; Codabar in this context is essentially gone except in legacy internal systems.

The structural pattern: Codabar is a 50+ year old symbology surviving in high-criticality installed bases (blood banks particularly) where the self-checking robustness and installed-base inertia outweigh density and feature limitations.

Sources

  1. Codabar — Wikipedia
  2. Codabar Complete Guide — Barcode Scanner Online
  3. Codabar Barcode (all alternate names) — Neodynamic
  4. Codabar History and Purpose — ByteScout
  5. Codabar — BarcodeLabel.guru
  6. zxing/zxing — GitHub
  7. Codabar — Labeljoy
  8. Codabar — QTE Solutions

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · docs/standards/codabar/index.md