Codabar
Codabar (also known as Ames Code, NW-7, Monarch, or Code 2 of 7) is a linear, one-dimensional barcode symbology developed in 1972 by Pitney Bowes Corporation, designed primarily for encoding serial numbers in applications such as blood banks, libraries, and inventory tracking.[1] It supports a character set of 16 data symbols, including the digits 0–9 and six special characters (hyphen '-', dollar sign '', colon ':', forward slash '/', period '.', and plus sign '+'), with four additional distinct patterns for the start/stop characters A, B, C, and D; each character is represented by seven elements (four bars and three spaces), with the number and position of wide elements varying by character type: the basic 12 characters (0–9, -, ) use one wide bar and one wide space, the four special characters use three wide bars and no wide spaces, and the start/stop characters use one wide bar and two wide spaces.[1][2] Codabar is a discrete and self-checking symbology, meaning it includes inherent error-detection mechanisms and does not require variable intercharacter gaps between symbols, allowing it to be printed reliably on low-resolution devices like dot-matrix printers for multi-part forms.[3] The structure of a Codabar symbol begins and ends with one of four designated start/stop characters (A, B, C, or D), which frame the data to ensure accurate scanning but are not included in the decoded output.[4] Variable-length encoding is supported, with no fixed maximum length, though practical limits depend on print quality and scanner capabilities; the minimum bar width (X dimension) is 7.5 mils, and the ratio of wide to narrow elements must range from 2.0 to 3.0.[1] While not mandatory, some implementations incorporate a modulo-16 check digit for added verification.[1] Codabar gained prominence in the 1970s and 1980s for its simplicity and readability in specialized sectors, including U.S. blood collection and processing (where it was adopted by the American Blood Commission), library cataloging, photo laboratories for film processing, and logistics for shipping documentation.[5] Its adoption was facilitated by the lack of a mandatory check digit and compatibility with early barcode readers, though it has since been largely supplanted by more efficient symbologies like Code 128 or ISBT 128 in modern healthcare and supply chain systems.[6] The symbology is formally defined in the AIM Uniform Symbology Specification BC3-2000, ensuring consistent implementation across devices and software.[5]History
Origins and Development
Codabar was invented in 1972 by the Pitney Bowes Corporation as a linear barcode symbology primarily designed for encoding serial numbers in applications such as blood banks, libraries, and inventory tracking.[1] The symbology emerged during a period of rapid advancement in automatic identification technologies, addressing the need for a reliable, printable code suitable for early computing and mailing systems used by companies like Pitney Bowes in postage and shipping operations.[7] The initial design emphasized simplicity and robustness, supporting variable-length strings of numeric digits (0-9) along with a limited set of symbols (+, -, /, :, $, .) and four alphanumeric start/stop characters (A, B, C, D), which served dual purposes as delimiters and built-in error detection mechanisms.[4] Unlike more complex contemporaries, Codabar employed a two-width bar-and-space pattern—consisting of narrow and wide elements—that allowed for high tolerance in printing, particularly on dot-matrix printers common at the time, while incorporating a self-checking structure to minimize reading errors without requiring a mandatory parity or check digit.[7] This focus on ease of encoding and decoding made it ideal for environments demanding quick, low-error data capture in variable formats. Technical specifications for Codabar were formalized and released in the mid-1970s, building on its core self-checking properties and start/stop characters to enhance reliability in practical deployments.[7] The first commercial implementations appeared shortly after its invention, around 1972-1974, in retail merchandise labeling and early logistics systems for tracking shipments, marking a key milestone in its transition from concept to widespread industrial tool.[7] By the post-1980s era, its simplicity facilitated broader adoption in libraries for book tracking and healthcare for specimen identification.[4]Adoption and Evolution
Codabar experienced rapid adoption in the late 1970s, particularly in libraries where the Monarch variant—marketed by Monarch Marking Systems—was implemented for book labeling and circulation systems to streamline check-out and inventory processes.[7] This variant's reliability on dot-matrix printers facilitated its integration into library automation, enabling efficient tracking of materials in academic and public institutions.[8] By the 1980s, Codabar expanded into blood banks and photo labs, driven by its robustness in low-contrast printing environments such as multi-part forms. The American Blood Commission (ABC) standardized ABC Codabar in the late 1970s, with widespread implementation by over 16 blood centers starting in 1976 for donor identification and unit tracking, enhancing accuracy in transfusion services.[9] In photo labs, it supported order processing and film tracking, capitalizing on the symbology's self-checking properties for high-volume, error-prone workflows.[10] During the 1990s, Codabar integrated into point-of-sale (POS) systems and inventory management, particularly in sectors requiring serial numbering, though it faced competition from UPC and EAN codes in retail. Minor updates occurred through the Automatic Identification Manufacturers (AIM) Uniform Symbology Specification for Codabar (USS-Codabar) in 2000, which refined intercharacter spacing tolerances to improve readability across devices.[5] Post-2000, new implementations of Codabar declined as 2D barcodes like QR codes and Data Matrix gained prominence for their higher data capacity and error correction, rendering linear symbologies legacy in most applications. In the blood banking sector, many facilities transitioned to the ISBT 128 standard starting in the late 1990s, with ongoing phase-outs; for example, in Australia, 2D DataMatrix implementation began in November 2025, with full Codabar removal planned for March 2029. However, it persists in niche areas such as aviation-related shipping manifests, including FedEx airbills, where legacy compatibility remains essential.[11][12] No major revisions have occurred since the 2000 specification, solidifying its status as a stable but outdated standard.[5]Symbology Specifications
Character Set
Codabar supports a character set limited to the ten digits 0 through 9 and six special symbols: the hyphen (-), dollar sign ($), colon (:), forward slash (/), period (.), and plus sign (+). This set totals 16 characters and excludes lowercase letters, uppercase letters other than those reserved for start and stop functions, and any extended ASCII characters.[1][4] Within this set, the digits form the core of encoded data, representing numerical values in applications such as inventory tracking. The special symbols function primarily as separators for non-numeric elements; for instance, the forward slash (/) is commonly employed in date representations like month/day (e.g., 12/25) or to delineate components in identification codes.[13][14] The characters A, B, C, and D, while encodable within the symbology, are reserved exclusively for use as start and stop characters to delimit the barcode message.[1] Codabar messages are of variable length, with no fixed maximum length, though practical limits depend on print quality and scanner capabilities; typical usage constrains them to shorter formats—such as 3 to 16 characters for library book labeling or blood bank specimen identification—to maintain readability and printing efficiency. The symbology includes no built-in data compression, relying instead on direct character mapping for simplicity.[13]Barcode Structure
A Codabar barcode consists of a leading quiet zone, a start character, one or more data characters, a stop character, and a trailing quiet zone. The quiet zones on both sides must be at least 10 times the width of the narrow bar (10X) to ensure reliable scanning by distinguishing the barcode from surrounding elements.[1] This linear symbology has no fixed length, allowing variable numbers of data characters to be encoded, typically representing digits 0-9 along with symbols such as -, $, :, /, ., and +.[1] Each character in the barcode is formed by seven elements: four bars and three spaces, which alternate starting with a bar, featuring exactly one wide bar and one wide space. These elements have widths of either narrow (1X) or wide (2X), with the wide-to-narrow ratio ranging from 2:1 to 3:1 to accommodate printing variations and maintain readability.[1] The minimum narrow element width (X dimension) is 7.5 mils (0.0075 inches or 0.19 mm), and the barcode's minimum height is 0.25 inches (6.4 mm) or 15% of the symbol length (excluding quiet zones), whichever is greater, to support scanner performance across different densities.[1] Aspect ratio tolerances in printing allow for slight deviations in element widths, provided the overall pattern remains distinguishable. An optional human-readable interpretation (HRI) may be printed below the bars, displaying the encoded digits and symbols for manual verification.[2] Codabar employs pattern redundancy for error detection, making it a self-checking symbology that reduces reading errors without relying on a full parity check or mandatory check digit, though some implementations add optional checksums.[1]Encoding
Start and Stop Characters
Codabar employs four distinct start and stop characters—A, B, C, and D—to demarcate the boundaries of the barcode message. These characters are mandatory at both the beginning and end of the symbol, with the start and stop characters each chosen independently from this set. This design ensures proper recognition by the scanner and maintains symbology integrity. The characters are selected interchangeably across different barcodes, but they cannot appear in the data payload itself.[4] The primary purpose of the start and stop characters is to signal the scanner's reading direction and provide a built-in self-checking mechanism. Their unique patterns allow the decoder to synchronize timing, distinguish forward from reverse scans, and verify that the symbol begins and ends correctly, reducing errors in variable-length messages. Unlike data characters, these boundary markers do not contribute any information to the encoded payload; they exclusively frame the sequence of numeric and symbolic data. This design enhances reliability in applications like medical and logistics labeling, where accurate boundary detection is critical.[13][4] Each start and stop character is encoded using a seven-element pattern consisting of four bars and three intervening spaces, beginning with a bar. The elements are either narrow (binary 0) or wide (binary 1), with exactly three wide elements per pattern to maintain the symbology's self-checking properties (one wide bar and two wide spaces). The specific binary representations are as follows:| Character | Binary Pattern (bar-space-bar-space-bar-space-bar) |
|---|---|
| A | 0011010 |
| B | 0101001 |
| C | 0001011 |
| D | 0001110 |