Codabar Barcode: Complete Guide to Library, Blood Bank, and Legacy Applications

Learn about Codabar barcodes, one of the earliest barcode symbologies still used in libraries, blood banks, and FedEx airbills. Covers encoding, structure, and modern alternatives.

Codabar belongs to the first generation of barcode symbologies — developed in 1972, before even Code 39. While most early barcodes have been fully retired, Codabar still runs in library circulation desks, blood bank refrigerators, and FedEx sorting facilities. Understanding it matters if you maintain systems that depend on it or need to interface with organizations still using it.

What is Codabar?

Codabar (also known as NW-7, Monarch, Code 2 of 7, or USD-4) is a discrete, self-checking, numeric barcode symbology developed by Pitney Bowes in 1972. It encodes digits 0 through 9, six special characters, and four start/stop indicators using patterns of wide and narrow bars and spaces.

The symbology was designed for applications needing simple numeric encoding with reliable self-checking — meaning a print defect produces an unreadable barcode rather than a misread. This property was critical for blood banking and healthcare, where a misread barcode could have life-threatening consequences.

Codabar gained wide adoption in the 1970s and 1980s across libraries, blood banks, and overnight delivery services. Each industry adapted the format slightly, leading to variant naming (Monarch for Pitney Bowes applications, NW-7 in Japan). Despite these alternate names, the encoding scheme is identical.

Character Set and Encoding

Codabar has a limited but focused character set:

Numeric Characters: Digits 0 through 9

Special Characters: Dash (-), dollar sign ($), colon (:), forward slash (/), period (.), and plus (+)

Start/Stop Characters: A, B, C, D (also written as a, b, c, d or t, n, *, e depending on the system)

Each character is encoded as 4 bars and 3 spaces (7 elements total). Among these 7 elements, either 2 or 3 are wide, with the rest narrow. A narrow inter-character gap separates each encoded character — this is the "discrete" property that distinguishes Codabar from continuous symbologies like Code 93.

The start and stop characters are mandatory and frame the data. Different applications use specific start/stop character pairs to indicate the type of data encoded. For example, a library might use A...B framing for patron cards and C...D for book labels, allowing the system to route scanned data to the correct processing logic.

The wide-to-narrow ratio ranges from 2.0:1 to 3.0:1, with 2.25:1 to 3.0:1 being typical. Like Code 39, this binary width encoding makes Codabar tolerant of print quality variation — the scanner only needs to distinguish "wide" from "narrow," not measure precise widths.

Self-Checking Property

Codabar's self-checking characteristic means that any single printing defect — a bar growing wider, a space shrinking — cannot transform one valid character into another valid character. The defect either produces an invalid pattern (no decode) or slightly alters a valid pattern without changing it to a different valid character.

This property operates without any check digit. The mathematical separation between character patterns is sufficient to prevent single-element defects from causing substitution errors. For blood banking and healthcare, this was Codabar's key advantage: a failed scan is always preferable to a wrong scan.

However, self-checking doesn't protect against all error types. Multiple simultaneous defects, systematic print problems affecting many bars, or complete character deletion can still produce incorrect reads. For higher-security applications, an optional modulo 16 check digit can be appended to the data.

Blood Bank Applications

The American Blood Commission adopted Codabar in the 1970s as the standard for blood product labeling. The barcode appears on blood unit bags, donor identification cards, and test tube labels throughout the blood collection and distribution chain.

Blood Unit Identification: Each blood unit receives a unique numeric identifier encoded in Codabar. This number links to the donor record, blood type, test results, and collection date in the blood bank's database.

Donor ID: Donor cards carry Codabar barcodes encoding the donor's identification number. Scanning the card at donation time retrieves the complete donor history.

Product Codes: Different blood products (whole blood, packed red cells, plasma, platelets) receive distinct product codes encoded alongside the unit identifier.

The blood banking industry has largely transitioned to ISBT 128, a standard built on Code 128 that encodes more structured data with stronger error detection. However, many smaller blood banks and hospital blood banks still operate Codabar systems, and transition remains ongoing. During the transition period, some labels carry both Codabar and ISBT 128 barcodes.

Library Systems

Libraries were early adopters of barcode technology, and many chose Codabar for patron cards and material labels. The simple numeric encoding suits library card numbers and catalog identifiers, and the barcode's durability handles the frequent scanning that library materials undergo.

Patron Cards: Library card barcodes encode the patron's numeric ID. Staff scan the card at checkout and return to link transactions to the patron account.

Material Labels: Books, DVDs, and other materials carry barcodes encoding the item's catalog identifier. The barcode might encode a copy number or accession number that the integrated library system maps to the bibliographic record.

Many libraries have migrated to Code 39 or Code 128 as they update their circulation systems. New library system installations rarely specify Codabar. But libraries with older circulation hardware and large volumes of already-labeled materials continue using Codabar because relabeling millions of items represents significant cost and disruption.

FedEx and Delivery Services

FedEx adopted Codabar for its airbill tracking numbers in the early days of overnight delivery. The tracking number barcode on FedEx shipping labels enabled the automated package sorting and tracking that made express delivery logistics possible.

While FedEx has modernized its labeling systems with newer barcode formats for additional data fields, Codabar compatibility remains in their scanning infrastructure for backward compatibility with older airbills and third-party shipping systems.

Technical Specifications

X-Dimension (Narrow Element Width): Minimum 0.15mm (6 mil) for close-range scanning. Library and blood bank applications typically use 0.25mm to 0.38mm for reliable hand-held scanner reads.

Wide-to-Narrow Ratio: 2.25:1 to 3.0:1. Higher ratios improve readability but increase barcode length. Blood bank applications commonly use 2.5:1.

Bar Height: Minimum 5mm or 15% of barcode length, whichever is greater. Library book labels typically use 10-12mm height for easy scanning across book spines.

Quiet Zones: Minimum 10 narrow elements (10X) on each side. Library labels sometimes violate this requirement due to label size constraints, causing intermittent scanning failures.

Inter-Character Gap: The gap between characters should be at least 1X (one narrow element width) but not wider than 5.3X. Gaps outside this range can cause decoding failures.

Implementation

When you generate Codabar barcodes, specify the start and stop characters appropriate for your application:

  • A/B, A/A, etc.: Different applications use different start/stop pairs. Check your system documentation for the expected combination.
  • Data content: Digits and the six special characters only. No letters in the data portion.
  • Check digit: Include a modulo 16 check digit if your application requires it.

Print quality matters, but Codabar is more forgiving than high-density symbologies. Its wide/narrow binary encoding tolerates moderate ink spread, slight bar width variation, and imperfect print registration. This tolerance is why Codabar works on materials like blood bag labels and library book spines that aren't ideal printing substrates.

Modern Alternatives

For new system designs, Codabar is not the recommended choice. Modern alternatives offer better density, larger character sets, and stronger error detection:

NeedRecommended Alternative
Simple numeric trackingCode 128
Blood product labelingISBT 128 (based on Code 128)
Library circulationCode 39 or Code 128
Shipping and logisticsGS1-128 or ITF-14
High-density identificationData Matrix

The case for continuing with Codabar rests entirely on existing infrastructure. If your scanners, printers, software, and labeled inventory all use Codabar, the migration cost may outweigh the benefits of switching. But when building new systems or planning major upgrades, choose a current symbology that will serve you for decades rather than carrying legacy encoding forward.

7 min read

Frequently Asked Questions

What is Codabar used for today?
Codabar remains in active use in blood banks (ISBT 128 predecessor systems), library book lending systems, and some FedEx airbill tracking. It's also found in legacy photo finishing and older overnight delivery systems.
What characters can Codabar encode?
Codabar encodes digits 0-9, six special characters (dash, dollar sign, colon, forward slash, period, plus), and four start/stop characters (A, B, C, D). It cannot encode letters beyond the start/stop characters.
Why do blood banks use Codabar?
Blood banks adopted Codabar in the 1970s because it could encode the numeric data needed for blood unit identification, donor IDs, and product codes. Its self-checking property made it reliable for critical healthcare labeling. Many blood banks have since migrated to ISBT 128 (using Code 128), but legacy Codabar systems remain.
Is Codabar being replaced?
Yes, Codabar is gradually being replaced by Code 128 and 2D barcodes in most applications. Libraries are migrating to newer systems, and blood banks have largely adopted ISBT 128. New system designs should use Code 128 or Data Matrix unless Codabar compatibility is specifically required.