Chapter 16: The Defunct 1D - Codabar |
In Brief |
Codabar, developed in the early 1970s by Pitney Bowes, was one of the first barcode symbologies to achieve widespread use outside of retail. It found its primary homes in libraries, blood banks, and logistics operations, where its self-checking property and simple encoding made it an attractive early solution. However, its extremely limited character set (only 16 symbols), low data density, and lack of mandatory error checking ultimately sealed its fate. By the late 1990s and early 2000s, Codabar was in rapid decline, replaced by more capable symbologies---most notably Code 128. Today, it is considered effectively obsolete in new implementations, though occasional legacy systems still operate with it. This chapter explores the technical characteristics of Codabar, its real-world applications across multiple industries, and the reasons for its obsolescence. We will examine how its limitations manifested in practice and contrast it with the symbologies that replaced it, particularly Code 128. |

|
1. Introduction: The Birth of a Workhorse |
The story of barcodes is one of relentless innovation, driven by the need for speed, accuracy, and efficiency in tracking goods and information. By the early 1970s, the Universal Product Code (UPC) had been adopted by the grocery industry, proving that barcodes could revolutionize retail checkout. But the grocery store was only the beginning. Industries ranging from healthcare to logistics saw the potential of machine-readable labels, but they needed symbologies that could be printed on existing equipment and read by affordable scanners. |
It was in this context that Pitney Bowes Corporation introduced Codabar in 1972. Unlike the UPC, which was designed for the specific needs of supermarket point-of-sale systems, Codabar was envisioned as a more general-purpose symbology. It could be printed by the dot-matrix printers that were common in offices and warehouses at the time, and its self-checking design meant that a single printing defect would not accidentally be read as a different character. This made it robust enough for real-world use, even when printed on less-than-perfect equipment. |
Initially, Codabar found a foothold in retail price-labeling systems. However, the National Retail Merchants Association selected a different symbology as its standard in 1975, which prompted Codabar to seek new applications. It found them. Libraries, blood banks, and overnight shipping companies adopted Codabar for their own tracking systems. For a time, it seemed that Codabar would become a universal standard. |
But the seeds of Codabar's decline were sown in its very design. As technology advanced and the demands placed on barcode systems grew, Codabar's limitations became increasingly apparent. To understand why Codabar faded into obsolescence, we must first understand how it worked. |

|
2. Technical Anatomy of Codabar |
2.1. The Encoding Scheme |
Codabar is a linear (1D) barcode symbology, meaning it encodes data in the widths of bars and spaces along a single horizontal axis. The Codabar character set is extremely small: it encodes only the digits 0 through 9, six special characters (-, $, :, /, ., and +), and four start/stop characters (A, B, C, and D, sometimes written in lowercase or other variants like t, n, *, e). This is a total of only 16 data characters, which is incredibly restrictive by modern standards. |
Each character in Codabar is represented by a pattern of seven elements: four bars and three spaces. Each of these elements is either 'wide' or 'narrow.' For this reason, Codabar is sometimes called a '2 of 7' code, as each character contains exactly two wide elements out of the seven (some sources also call it '2 of 7' for this reason). The wide-to-narrow ratio is typically between 2.25:1 and 3:1, which means a wide bar is about 2.25 to 3 times the width of a narrow bar. It is this precise arrangement of wide and narrow elements that gives Codabar its structure and its limitations. |

|
2.2. The Self-Checking Property |
One of Codabar's most important features is that it is a self-checking symbology. This is a term that appears repeatedly in discussions of early barcodes, including Code 39, which we will discuss later. What does 'self-checking' mean |
In a non-self-checking symbology, a single printing or scanning error (like a narrow bar being printed slightly too wide) could potentially turn one valid character into another valid character. If this happened, the scanner would read the wrong character without any indication of an error. The system would operate on incorrect data. |
In a self-checking symbology like Codabar, the code is designed so that this cannot happen. If a single defect changes the width of one element, the resulting pattern of seven elements will not correspond to any valid Codabar character. The decoder software will detect that an invalid character has been read and can flag an error, reject the scan, or request a re-scan. This built-in error detection makes Codabar more reliable than some other early symbologies. |

|
2.3. Start/Stop Characters and Their Meanings |
Codabar uses four distinct start characters (A, B, C, D) and four distinct stop characters (also A, B, C, D). This means a Codabar barcode can start with one of four characters and end with one of four characters, resulting in 16 possible start/stop pairs. This is a notable feature because these pairs were not just markers; they could convey meaning. |
In blood banking, for example, the specific combination of start and stop characters could identify what type of information the barcode contained. As one source notes, 'the combination identifies whether the barcode is a donation number, component code, or blood group'. This allowed a single scanning system to process different types of labels without needing a separate field or data structure to define the label's purpose. In some systems, the D stop character was used to indicate that the barcode should be concatenated with the next one, allowing for the construction of longer identifiers. |

|
2.4. Data Capacity and Density |
The most significant technical limitation of Codabar is its very low data density. Because each character requires seven elements (bars and spaces) and because there must be a gap between characters, Codabar barcodes are physically long for the amount of data they hold. A typical Codabar barcode encodes only about 10 characters per inch. This means that encoding a simple 10-digit identification number would require a label approximately one inch long, and for longer strings, the labels could become unwieldy. |
Moreover, the character set only includes 16 symbols. This severely restricts what can be directly encoded. Unlike Code 39, which supports uppercase letters and numbers directly, Codabar cannot encode letters (except the start/stop characters) at all. This made it unsuitable for applications that required alphanumeric identifiers, such as part numbers or patient names. The need to encode letters or more complex data required a lookup table or database cross-reference, which added complexity and defeated the purpose of direct data encoding. |

|
3. Industry Applications of Codabar |
Despite its limitations, Codabar was well-suited to several specific applications where its features (self-checking, dot-matrix printability, and simple design) were valuable and its limitations (low density, small character set) were acceptable. Let us explore the most prominent of these use cases. |
3.1. Libraries: The Patron Card and the Book |
Libraries were one of the earliest and most significant adopters of Codabar. In the 1970s and 1980s, libraries across the United States and Europe began automating their circulation systems. The goal was simple: replace the manual stamping of due dates with a system that could instantly check out books, track inventory, and manage patron accounts. |
Codabar was an ideal fit for libraries. Patron cards and book labels required only a numerical identifier---a unique ID for each patron and each book. Codabar's ability to encode digits was perfectly adequate for this purpose. Furthermore, libraries could print Codabar labels on the dot-matrix printers they already owned, avoiding the need for expensive specialized printing equipment. The self-checking property of Codabar was also a significant benefit: if a label was scratched or smudged, a single error would likely render the barcode unreadable rather than cause it to be decoded incorrectly, which might have led to a book being checked out to the wrong patron. |
In many libraries, the start/stop character pairs were used to denote different types of media. For example, a barcode starting with A...B might represent a book, while one starting with C...D might represent a periodical. This allowed the circulation system to know what type of item was being handled without the librarian having to manually select a category. |
However, as library collections grew and interlibrary loan systems became more complex, the limitations of Codabar began to show. A single library might have hundreds of thousands of items, and the Codabar labels needed to be long enough to support the ID numbers. The labels became large and, due to the low density, physically wide, which was a problem for small items like CDs or cassette tapes. Additionally, libraries wanted to automate more complex tasks, such as sorting returned books by category or managing holds across multiple branches. These tasks required more information than just a numeric ID. The shift toward Code 39 and later Code 128 began, offering more data and a smaller physical footprint. |

|
3.2. Blood Banks: A Lifesaving Application |
Perhaps the most critical application for Codabar was in the healthcare industry, specifically in blood banks. For decades, Codabar was the standard barcode on blood bags. When blood is donated, it must be tracked from the donor to the recipient, and absolute accuracy is essential to prevent fatal errors like a patient receiving the wrong blood type. |
Blood bank labels were used to encode a vast amount of information, including the donation number, blood type (A, B, AB, O), Rh factor (positive or negative), and expiration date. As mentioned, Codabar's start/stop character pairs were used to encode this information. The label itself might have several Codabar barcodes, each with a different start/stop pair, indicating a different piece of data. For instance, one barcode with a specific start/stop pairing might represent the donation number, and another might represent the blood group. |
The self-checking property of Codabar was vital in this application. Blood banks handle high volumes of donations, and labels are often handled, refrigerated, and exposed to various environmental conditions. A barcode that becomes partially damaged could still be read correctly due to the self-checking design, or the scanner would reject it, alerting the technician to the issue. |
However, the international nature of blood supply chains eventually exposed the shortcomings of this system. Different countries and even different organizations used different start/stop character combinations for different purposes, leading to confusion and lack of interoperability. As global standardization became necessary, the International Council for Commonality in Blood Banking Automation developed the ISBT 128 standard. This standard, based on the far more capable Code 128 symbology, provided a uniform, international system for labeling blood products. ISBT 128 supports a much larger character set, including full alphanumeric characters, and includes robust error detection and correction. |
The transition from Codabar to ISBT 128 has been a long process, but it is now essentially complete. ISBT 128 is the global standard, and Codabar labels are only seen in legacy systems or during the transition period, if at all. |

|
3.3. Logistics and FedEx Airbills |
The logistics industry also made extensive use of Codabar, particularly for tracking packages. The overnight package delivery industry, including FedEx, used Codabar on airbills, the forms that accompany a package and contain the tracking information. |
On an airbill, the tracking number is typically a numerical sequence that can be easily encoded by Codabar. The label's self-checking property was valued, as the airbills pass through many hands and machines, from the drop-off location to the sorting facilities to the delivery truck. Damage to the label, such as tearing or smudging, is common, and Codabar's resilience helped ensure that the package could still be identified and routed correctly. |
However, as with libraries and blood banks, the logistical demands of modern package delivery began to exceed Codabar's capabilities. The volume of packages increased dramatically, and the need for more detailed tracking and customer-facing information, like delivery confirmation and access to package status online, required more data than Codabar could hold. FedEx and other carriers have transitioned to newer symbologies, particularly Code 128 and the 2D barcode PDF417, which are used on modern shipping labels. These new codes can hold the tracking number, the sender and recipient information, service type, and even a complete manifest, all in a much smaller space than a Codabar label could ever achieve. |

|
3.4. Photo Finishing and Other Niche Applications |
Beyond these primary industries, Codabar found its way into a variety of other niche applications. Photo finishing labs used Codabar on order envelopes and film rolls to track customer orders. The relatively low density was acceptable for a small volume of data, and the self-checking property was useful when processing tens of thousands of film rolls in a high-speed environment. |
The shipping industry also found uses for Codabar, particularly in the overnight delivery sector, as noted. It was also used to a limited extent in retail, though this was short-lived. The retail industry's choice to standardize on UPC and EAN meant that Codabar was not a major player in that market for long. |

|
4. The Technical Characteristics of Code 39 and Its Influence |
To fully understand Codabar's place in barcode history, we must also consider Code 39, another self-checking symbology introduced in 1974 by Intermec Corporation. Code 39 is often mentioned in the same breath as Codabar because they share some similarities, but Code 39 was more advanced and ultimately more successful in many applications. |
4.1. A Comparison of Code 39 and Codabar |
The most significant difference between Codabar and Code 39 is the character set. Code 39 can encode all uppercase letters (A-Z), digits (0-9), and a number of special characters, for a total of 43 distinct symbols. This made Code 39 immediately more versatile than Codabar. Code 39's ability to encode alphanumeric data directly was a major improvement. In fact, Code 39 was the first barcode specification to allow for the storage of alphabetic symbols. For industries like automotive manufacturing or defense, where part numbers and asset tags often contain a mix of letters and numbers, Code 39 was a much more natural fit. |
In terms of structure, both Codabar and Code 39 are self-checking. However, Code 39 uses a slightly more robust encoding: each character is represented by nine elements (five bars and four spaces), with exactly three of those elements being wide. This gives Code 39 its name: '3 of 9,' or Code 39 for short. The wide-to-narrow ratio is similar, typically between 2.5:1 and 3:1. |
A crucial difference is that Code 39 is also variable-length, but its self-checking property is so robust that a check digit is technically optional. Code 39 was used in the LOGMARS system, the U.S. Department of Defense's logistics standard, and in the automotive industry via the AIAG B-1 standard. Its adoption in the military and automotive sectors gave it a wide installed base and drove scanner manufacturers to support it. |

|
4.2. How Code 39's Features Shaped Its Industry Applications |
Military and Government: LOGMARS and MIL-STD-130 |
The U.S. Department of Defense adopted Code 39 for its LOGMARS (Logistics Applications of Automated Marking and Reading Symbols) system. This required all government property to be marked with Code 39 barcodes, adhering to MIL-STD-130. The use of Code 39 in a military context demanded exceptional robustness and reliability. While Code 39 is self-checking, the military often mandates the use of a Modulo 43 check digit for all applications to ensure near-perfect data accuracy. This combination of self-checking and optional check digit made Code 39 suitable for tracking everything from small components to large weapons systems. |
Automotive: AIAG Standards |
The automotive industry, through the Automotive Industry Action Group, standardized on Code 39 for parts identification. The AIAG B-1 standard defines how automotive parts should be labeled with Code 39 to ensure traceability across the entire supply chain. Parts from a small screw to a complete engine block can be labeled with a Code 39 barcode. The barcode contains a part number that can be scanned at each step of the manufacturing process, from production to assembly to installation. The alphanumeric capacity of Code 39 allows for meaningful, human-readable part numbers to be encoded directly in the barcode. |
Healthcare: HIBC Standards |
While Codabar was used in blood banking, Code 39 became the basis for the Health Industry Bar Code (HIBC) standard. This standard allows healthcare providers to label medical devices, pharmaceuticals, and patient records. The ability to encode letters and numbers directly in Code 39 was critical, as many medical products have alphanumeric catalog numbers and lot numbers. In contrast to Codabar, which was often limited to numerical IDs, Code 39's alphanumeric capacity simplified data management. |
Libraries and Asset Tracking |
As libraries began to move away from Codabar, many transitioned to Code 39. The more compact nature of Code 39 (though still not as dense as Code 128) allowed for smaller labels on items like CDs, DVDs, and magazines. However, Code 39's lower density compared to newer symbologies still made it a poor choice for very small items or for encoding long strings of data. |

|
4.3. Comparison Table: Codabar vs. Code 39 |
| Feature | Codabar | Code 39 | |
| Introduced | 1972 | 1974 | |
| Developer | Pitney Bowes | Intermec | |
| Character Set | 16 symbols (0-9, -, $, :, /, ., +) | 43 symbols (A-Z, 0-9, -, ., $, /, +, %, space) | |
| Encoding Scheme | 7 elements (4 bars, 3 spaces), 2 wide | 9 elements (5 bars, 4 spaces), 3 wide | |
| Self-Checking | Yes | Yes | |
| Check Digit | Optional (Modulo 16) | Optional (Modulo 43), often mandated for military/automotive | |
| Data Density | Low (approx. 10 chars/inch) | Higher than Codabar, but lower than Code 128 | |
| Full ASCII Support | No | With Extended Code 39 (using character pairs) | |
| Example Applications | Libraries, Blood Banks, FedEx Airbills | Military (LOGMARS), Automotive (AIAG), Healthcare (HIBC), Libraries | |
| Current Status | Almost obsolete | Still widely used, but often replaced by Code 128 | |

|
5. The Decline and Fall of Codabar |
The end of Codabar's dominance was driven by two primary factors: the rising tide of industry standards that required more data and the development of superior symbologies, most notably Code 128. |
5.1. The Need for More Data |
As we have seen, the world's data needs grew exponentially throughout the 1980s and 1990s. The simple numeric IDs of the 1970s were no longer sufficient. Businesses and organizations needed to encode more information directly onto a label, including product descriptions, lot numbers, expiration dates, and even tracking information in a machine-readable format. |
Codabar's very small character set of only 16 symbols was a critical bottleneck. It could not directly encode letters, which are essential for part numbers, names, and categories. It could not encode punctuation or other special symbols. While it was possible to use a lookup table to map numbers to meanings, this was cumbersome and defeated the point of direct data encoding. For instance, in a library system, if a Codabar label could only contain a numeric ID, the system would need a separate database to connect that ID to the book's title, author, and status. This made the system more complex and more expensive to maintain. A symbology like Code 128, on the other hand, could encode the title, author, and even a small abstract directly on the label, making the system more robust and self-contained. |

|
5.2. The Rise of Code 128 |
Code 128 was introduced in the 1980s and quickly became the new gold standard for linear barcodes. It addressed every major shortcoming of Codabar: |
High Data Density: Code 128 is much more densely encoded than Codabar. It can pack roughly twice as much information into the same physical space. This meant smaller labels, less wasted space, and the ability to put more data on a product's packaging without sacrificing readability. This is a key advantage that made Code 128 a clear choice for modern applications. |
Full Alphanumeric Support and More: Code 128 supports the full ASCII character set, including both uppercase and lowercase letters, digits, and all standard punctuation. This made it truly universal for any text-based data. |
Mandatory Check Digit: Unlike Codabar, where a check digit was optional, Code 128 requires a check digit as part of the specification. This ensures a much higher level of data integrity, reducing the risk of errors. In high-stakes applications like healthcare and manufacturing, this mandatory error checking was a decisive advantage. |
Multiple Character Encoding Modes: Code 128 offers three different encoding modes (A, B, and C). Code 128C, in particular, encodes numeric data in pairs of digits, achieving even higher density for numeric data, which is highly useful for tracking numbers. |
Code 128 was not just an incremental improvement; it was a generational leap. It was so versatile and efficient that it became the standard for numerous industries, including shipping and logistics (the successor to Codabar on FedEx airbills), healthcare (as the foundation of the ISBT 128 blood bank standard), and retail (in the form of GS1 standards). |

|
5.3. The Transition in Libraries and Blood Banks |
The transition away from Codabar was most visible in libraries and blood banks. In libraries, the move to Code 128 was gradual but steady. As library systems were upgraded, the new software and hardware were designed to support Code 128 as the primary symbology. Many libraries ran dual-labeling systems for a time, with both Codabar and Code 128 labels on books and patron cards. This allowed them to transition their collections at a manageable pace, using their old stock of Codabar labels while phasing in new Code 128 labels. Eventually, most libraries completed the transition, and Codabar became a rarity. |
In blood banking, the transition was driven by the need for international standardization, leading to the ISBT 128 standard. The mandatory check digit in Code 128 and its ability to encode a larger character set were vital for ensuring the traceability and safety of blood products across national borders. The transition was more urgent in this life-critical field, and it was largely complete by the early 2000s. |

|
5.4. Why Codabar Lingers On |
Despite its obsolescence, Codabar has not entirely disappeared. There are several reasons for this: |
1. Legacy Systems: Some organizations still operate old systems that were originally designed for Codabar. Upgrading these systems can be expensive, and if the Codabar labels are still functioning, there may be no business case for a migration. |
2. Cost of Change: As mentioned, dual-labeling or system-wide upgrades require resources. In some cost-sensitive environments, running a legacy Codabar system for internal tracking is considered good enough. |
3. Inertia: In some industries, like photo finishing, Codabar was used so pervasively that changing the entire supply chain to a new symbology would be a massive undertaking. If the labels are only used for internal tracking and the system is working, the change may not be a priority. |
However, as hardware is replaced and software is upgraded, the inherent advantages of modern symbologies like Code 128, Data Matrix, and QR codes are leading to the gradual and inevitable disappearance of Codabar. |

|
6. Detailed Summary |
Codabar represents a fascinating chapter in the history of automatic identification and data capture. It was a product of its time---a practical, self-checking, and easy-to-print symbology that served the needs of a burgeoning data-collection industry in the 1970s and 1980s. Its use in libraries, blood banks, and overnight package delivery provided a tangible boost to efficiency and accuracy in those fields. |
However, Codabar's technical limitations were severe: a low data density that led to large labels and a tiny character set that precluded the direct encoding of alphabetic information. It was a workhorse, but a limited one, confined to the narrow world of numeric identifiers. As technology advanced and the world's appetite for data grew, Codabar could not keep pace. |
The development of Code 39 provided a useful intermediate step, offering the alphanumeric capacity that Codabar lacked. Code 39's adoption in the military, automotive, and healthcare sectors cemented its place in barcode history. Yet even Code 39 had density and capacity limitations that Code 128 ultimately overcame. |
Code 128 became the replacement of choice for most of Codabar's applications. It offered higher density, a mandatory check digit for robust error detection, and support for the full ASCII character set. Code 128's adoption as the basis for ISBT 128 in blood banking and its widespread use in logistics represented a fundamental improvement that Codabar could not match. |

|
Today, Codabar is a relic of an earlier technological era. While it may still be found in a few dusty legacy systems, it is largely absent from modern, forward-looking implementations. Its story serves as a valuable reminder of the importance of anticipating future needs in system design. A symbology designed for a world of numeric IDs and dot-matrix printers proved insufficient for a world of alphanumeric data, global standardization, and high-speed information processing. |
The saga of Codabar is a testament to the relentless pace of technological progress. What was once a cutting-edge solution is now a footnote in the history of a technology that has become essential to modern life. Its replacement by more capable symbologies was not just inevitable but necessary for the continued evolution of the automatic identification industry. |