Chapter 11: The Birth of Code 128 (1981) |
In Brief |
Code 128, introduced in 1981, represents a pivotal moment in the evolution of automatic identification. It was conceived to address the growing need for a more efficient and versatile linear barcode, capable of encoding the full 128-character ASCII set while maintaining a compact footprint. Unlike its predecessors, such as Code 39, Code 128 offers significantly higher data density, a mandatory checksum for error detection, and three distinct character sets that can be dynamically switched within a single symbol. These technical innovations, while introducing complexities in printing and scanning, have enabled Code 128 to become a cornerstone in logistics, healthcare, retail, and manufacturing, underpinning modern supply chains and critical tracking systems. |

|
11.1 The Context: A Need for Greater Density |
By the late 1970s, the barcode had proven its value. The Universal Product Code (UPC) was transforming retail checkout in the United States, and Code 39 was gaining traction in industrial and military applications for its ability to encode alphanumeric data. However, a fundamental limitation was becoming increasingly apparent: these symbologies were inefficient in their use of space. Code 39, for example, uses nine elements (five bars and four spaces) to represent each character, with three of these elements being wide. This self-checking design was reliable, but it meant that the resulting barcode could become impractically long when encoding even a modest amount of data. |
As computer systems grew more powerful and integrated, businesses and government agencies began to demand the ability to encode more information directly onto a label. They needed to track not just a product's identity but also its batch number, expiration date, weight, destination, and other critical details. The limited data capacity of existing linear barcodes was a bottleneck. The need was clear: a new, high-density symbology that could encode the full range of characters used by modern computers---the 128-character American Standard Code for Information Interchange (ASCII) set---was essential for the next generation of automated data capture. |

|
11.2 The Genesis of Code 128 |
In 1981, this need was met by a new symbology developed by Computer Identics Corporation, a key player in the early barcode industry. Ted Williams, an engineer at the company, is credited with its invention. The new barcode was named Code 128, a direct reference to its most powerful feature: the ability to represent all 128 characters of the standard ASCII set. This was a monumental leap from Code 39, which was primarily limited to uppercase letters, numbers, and a handful of special characters. |
The goal of Code 128 was not just to be more versatile, but to be exceptionally efficient. Researchers designed it to pack a large amount of data into a small physical space. This 'high-density' approach was achieved by using a more complex encoding pattern. Where Code 39 used nine modules (wide and narrow bars and spaces) to represent a character, Code 128 uses six elements (three bars and three spaces) per character. This immediately made it much more efficient. Furthermore, a crucial innovation was the inclusion of a mandatory checksum character, calculated using a modulo 103 algorithm, which provides a high level of data integrity and error detection. |
The symbology was also designed with flexibility in mind. It accomplishes this through a system of three different character sets, known as A, B, and C, selected by three distinct start codes. This allows the barcode to dynamically switch between character sets within a single symbol to optimize data density. |

|
11.3 Technical Characteristics: Understanding the Power of Code 128 |
To appreciate the impact of Code 128, it is essential to understand its core technical features. These characteristics, while brilliant in design, also define where the symbology excels and where it presents challenges. |
The Three Character Sets (A, B, and C) |
The flexibility of Code 128 comes from its three distinct sub-symbols, or character sets, which are invoked by different start codes. |
Code Set A: This set encodes all standard uppercase letters (A-Z), numeric digits (0-9), punctuation, and control characters (ASCII values 00-95). This makes it suitable for applications where legacy computer codes or special formatting characters (like carriage returns or tabs) might be needed. |
Code Set B: This is the most versatile set for general text. It encodes all standard ASCII characters from 32 to 127, which includes uppercase and lowercase letters, numeric digits, punctuation, and various symbols. This is the most common set for applications like logistics and retail, where mixed-case information is frequently required. |
Code Set C: This set is optimized for numeric data. It encodes pairs of digits from 00 to 99 into a single character position. This effectively doubles the density for numeric-only data, making Code 128 exceptionally efficient when encoding large numbers, such as serial numbers or tracking IDs. It is this capacity that makes it possible to place extensive data within a tiny label area. |
The power of Code 128 lies in the ability to switch between these sets within a single barcode. For instance, a label could start with Code Set B to include a product name with mixed case ('ProductX'), then switch to Code Set C to encode a long numeric serial number ('1234567890'), and then switch back. This dynamic switching capability allows for the most compact representation of mixed data. |

|
Mandatory Checksum for Data Integrity |
Unlike many earlier barcodes where a checksum was optional, Code 128 requires a check character. This character is calculated based on the values of all the characters in the barcode. When the barcode is scanned, the reader performs the same calculation and compares its result to the checksum. If they match, the data is considered valid. If they do not, the scanner will typically reject the read, preventing the entry of erroneous data. This feature is absolutely critical in environments where data accuracy is paramount, such as healthcare and supply chain management. |
High Density and Compact Design |
The primary purpose of Code 128 was to create a high-density symbology. This is achieved through its encoding method---six elements per character---and particularly through Code Set C's ability to encode two digits per character. The result is a barcode that can hold more data in a smaller space than any other widely used linear symbology at the time. This is a crucial advantage for space-constrained labels on small items like pharmaceuticals, electronics components, or jewelry. |
The Trade-off: Complexity and Printing Requirements |
While the high density is a major benefit, it introduces technical challenges. The Code 128 symbology uses four different bar and space widths, rather than just the two widths (wide/narrow) used by simpler codes like Code 39. This requires higher-quality printing equipment to ensure that the distinctions between the different widths are clear and accurate. Code 128 is not well-suited for low-precision printing methods like many dot-matrix printers or for direct marking on coarse surfaces like corrugated cardboard, where ink spread can obscure the fine details. In addition, the mandatory checksum and the ability to switch character sets make the encoding and decoding process more complex, demanding more sophisticated scanning hardware and software compared to simpler symbologies. |

|
11.4 The 'Before and After': Code 128 vs. Code 39 |
To fully grasp the significance of Code 128, it is helpful to compare it directly with its predecessor, Code 39, a symbology invented in 1974 that was the industry standard for alphanumeric encoding before 1981. |
The primary difference is in data density and efficiency. Code 39 is a 'low-density' symbology. It encodes a character using nine elements, five of which are bars and four spaces. To represent a character, it uses a pattern of wide and narrow elements, with three of the nine elements being wide. This self-checking design was clever for its time, but it is very inefficient. A typical Code 39 barcode is long and requires a significant amount of label real estate, which is a major limitation when labels must be small or space is at a premium. |
In contrast, Code 128 uses a more complex but much more efficient method. It uses only six elements (three bars and three spaces) to represent a single character. With multiple widths, it can represent more data in a smaller area. The advantage of Code 128 is most apparent when comparing the ability to encode numeric data. Code 39 encodes each numeric digit as a separate character, consuming a lot of space. Code 128's Code Set C can pair digits together, making it approximately twice as dense as Code 39 for purely numeric data. The result is that Code 128 is often preferred for new applications where space is limited or a large amount of data is needed, a sentiment reflected in industry comparisons. |
The character set is another significant difference. Code 39 is famously limited to 43 characters: uppercase letters (A-Z), digits (0-9), and a few special characters like the dash, period, and space ($, %, +, /). Code 39 can encode lowercase letters and other symbols, but it requires a complex and less efficient two-character 'shift' method, which further reduces its density. Code 128, on the other hand, was designed from the start to encode all 128 ASCII characters, including lowercase letters, punctuation, and control codes, without any special workarounds. This made it significantly more versatile for modern computer systems. |
Code 39, in many implementations, does not require a checksum. While it is often recommended for accuracy, it is not mandatory. The lack of a mandatory checksum is simpler, but it also provides less built-in data integrity. Code 128, by contrast, mandates a checksum character for every symbol, dramatically increasing reliability and making it more suitable for critical applications. |
However, Code 39's simplicity is not without its merits. Because it uses only two widths (wide and narrow) and lacks a mandatory checksum, Code 39 is easier to generate and print on lower-quality printers, including older thermal and dot-matrix printers. It is also easier to scan with older or simpler barcode readers. Furthermore, it is a well-established standard in certain sectors, such as the U.S. Department of Defense, which has used a Code 39-based standard (LOGMARS) for years. This entrenched status is a form of power, making Code 39 resilient in legacy systems, even when newer symbologies are technically superior. |

|
11.5 The GS1-128 Standard: Code 128 for Global Commerce |
A critical development that amplified the power and reach of Code 128 was its adoption and standardization by the global supply chain standards organization GS1 (formerly the Uniform Code Council and EAN International). This standard is known as GS1-128 (previously called UCC/EAN-128). |
GS1-128 is not a different symbology; it is a standard for using Code 128. It defines a specific syntax for encoding structured product information within a Code 128 barcode. This is achieved through the use of Application Identifiers (AIs). AIs are two- to four-character prefixes that define the meaning and format of the data that follows them. For example, AI `(01)` indicates the Global Trade Item Number (GTIN), which is the product identifier; AI `(10)` indicates a batch or lot number; AI `(15)` indicates the 'best before' date; and AI `(3103)` indicates the net weight in kilograms. |
By including multiple AIs and their associated data in a single GS1-128 barcode, a supply chain partner can encode a rich set of information directly onto a label. Consider a shipment of pharmaceuticals. The label could contain the product's GTIN (AI 01), its batch number (AI 10), its expiration date (AI 17), its serial number (AI 21), and its weight (AI 3103). When the shipment is received, a single scan provides all this critical information, enabling automated inventory updates, quality checks, and regulatory compliance. This is far more powerful than a traditional barcode that simply identifies the product. |
GS1-128 is a vital component of global commerce, used in shipping, logistics, and point-of-sale, making Code 128 an integral part of the world's supply chain infrastructure. |

|
11.6 Industry Applications: The Power of Code 128 in Practice |
The technical characteristics of Code 128 have made it the symbology of choice for a wide variety of applications across multiple industries, each leveraging its strengths in different ways. |
Logistics, Shipping, and Transportation |
The logistics and transportation industry is perhaps the single largest user of Code 128, heavily relying on the GS1-128 standard for shipping labels. A major reason for this is the symbology's ability to encode large amounts of data, including product identifiers, batch numbers, weights, and destination codes, in a small space. In this industry, every square millimeter of label space is precious, and the capacity to store more information means more efficient routing and tracking. The United States Department of Defense also adopted barcodes for logistics early on, further cementing the use of barcodes in high-stakes, global supply chains. |
Consider a parcel being shipped overnight across the country. The shipping label on that box is almost certainly a GS1-128 barcode. When it is scanned, the barcode conveys not just the tracking number but also the service level, the destination sort code, the weight, and other key data. A single scan allows the package to be routed to the correct truck, sorted for the correct plane, and tracked by the customer in real-time. This detailed tracking ensures the item is managed efficiently and accurately throughout the complex logistics network. The barcode essentially replaces the need for a clerk to read a destination address and sort the package manually, dramatically increasing speed and reducing human error. |

|
Healthcare |
In healthcare, accuracy is a matter of life and death. The reliability and data capacity of Code 128 make it a crucial tool in medical settings, especially for patient identification and medication management. The International Society of Blood Transfusion (ISBT) uses a global standard based on Code 128, known as ISBT 128, for identifying, labeling, and processing medical products of human origin, including blood, cells, tissues, and organs. The symbology is also used for patient wristbands to encode essential data like patient ID, name, and allergies, ensuring correct identification and preventing medical errors. In specimen tracking, barcodes on lab samples eliminate the risk of mix-ups, guaranteeing that test results are correctly matched to the patient. |
Picture a hospital laboratory receiving hundreds of blood samples. Each sample tube has a small label with a Code 128 barcode. This barcode encodes the patient's unique ID number and a specimen code. When the lab technician scans the tube, the hospital's information system instantly pulls up the patient's electronic health record, ensuring the test request is known and the results are correctly filed. This automated process is vastly more efficient and less error-prone than transcribing numbers manually. The mandatory checksum in the Code 128 also provides an extra layer of assurance that the patient ID is read correctly every time. |

|
Manufacturing |
Manufacturers use Code 128 to track work-in-progress, manage inventory, and maintain quality control. The ability to encode mixed data---such as part numbers, batch codes, and serial numbers---onto a single label makes it possible to track a component or a finished product from raw material to final assembly and beyond. This traceability is crucial for managing complex supply chains, identifying defects, and performing recalls. |
In an automotive assembly plant, for instance, each major component might have its own Code 128 label. As the car moves down the assembly line, scanners read the barcodes on the chassis, engine, and transmission, ensuring that the correct parts are assembled together. If a quality issue is later discovered with a batch of engines, the manufacturer can use the serial numbers encoded in the barcodes to precisely identify which cars are affected, enabling a targeted and efficient recall. This process saves the manufacturer from having to recall a much larger number of vehicles than necessary. |

|
Retail and Inventory Management |
In retail, Code 128 offers advantages beyond the standard UPC, which is typically a numeric-only code. For items sold in non-POS (point-of-sale) environments, such as large items in a warehouse or internal inventory management, Code 128 is invaluable. It is used for shelf-labeling, inventory control, and tracking products through the supply chain before they reach the store shelf. It is also ideal for items where a simple numeric code is insufficient, and the product label needs to encode details like weight, size, or color in a human-readable and scannable format. |
A large department store receives a shipment of clothing. Instead of just a simple product ID, each garment's internal inventory tag could have a Code 128 label encoding the item's style, size, color, and price. When a store employee scans the item during a stock take, the scanner immediately knows exactly which variant of the product they have. This is more efficient than separate scanning or manual data entry. Because the barcode is compact, it can fit on a small tag, making it practical for tracking a huge variety of items. |

|
Asset Management |
Code 128 is widely used for tracking valuable assets in various industries. Equipment, tools, and machinery can be labeled with a Code 128 barcode that encodes a unique ID. This enables companies to track the location of their assets, manage maintenance schedules, and ensure that equipment is not lost or stolen. In a warehouse, pallets and storage bins can be labeled with Code 128, streamlining inventory cycles and simplifying order fulfillment. |
A construction company, for example, has thousands of expensive tools across dozens of jobsites. Each tool---from a power drill to a concrete mixer---is labeled with a durable Code 128 barcode. Workers scan their tools when they check them out in the morning and when they return them at the end of the day. The system automatically tracks who has each tool and where it is, preventing theft and ensuring the right equipment is on the right site. The compact size of the symbology means the label does not get in the way of the tool's function. |

|
11.7 The Impact and Legacy of Code 128 |
The introduction of Code 128 in 1981 was a watershed moment. It effectively solved the data capacity and density problems that were limiting the growth of the barcode industry. By offering a high-density, flexible, and reliable method for encoding the entire ASCII character set, Code 128 enabled the development of more sophisticated tracking and data management systems. |
Its greatest success is arguably its seamless integration into global supply chains through the GS1-128 standard. The symbology is a key enabler of modern logistics, allowing for the transparent movement of goods and information across the globe. It is a testament to the foresight of its designers that a standard developed in 1981 remains the de facto workhorse for the world's transportation and logistics networks. |
In many ways, Code 128 was the pinnacle of the first generation of 'alphanumeric' barcodes. It represented a fundamental technological breakthrough that met the needs of the computer age. While it has been complemented by even more powerful 2D barcodes like PDF417, Data Matrix, and QR codes in the decades since, Code 128 has not been superseded. It continues to be the standard for many critical applications, a testament to its robust design and the practical wisdom of its creators. Its ability to encode the same data as a modern computer file made it the bridge between the physical world of products and the digital world of data processing. |

|
Chapter Summary |
* Birth of a Standard: Code 128 was developed in 1981 by Computer Identics Corporation to meet the growing demand for a high-density, versatile linear barcode. Its primary innovation was the ability to encode the entire 128-character ASCII set, a significant leap over the limitations of Code 39. |
* Core Technical Strengths: The symbology achieves its high density through a compact encoding method (six elements per character) and a special numeric mode (Code Set C) that compresses two digits into one character. It includes a mandatory checksum for robust error detection, and three character sets (A, B, C) that can be dynamically switched within a single barcode to maximize efficiency. |
* The Trade-off with Complexity: The high-density design requires more precise printing and scanning equipment than simpler symbologies. The four different element widths and the mandatory checksum make it less suitable for low-precision printing on rough surfaces, as seen in some industry comparisons. |
* A Superior Successor: Compared to Code 39, Code 128 offers much higher data density, a complete ASCII character set, and superior data integrity, making it the preferred choice for new and demanding applications. However, Code 39 remains in use due to its simplicity, tolerance for lower-quality printing, and entrenched status in legacy systems. |
* The GS1-128 Standard: Code 128's power was amplified by its adoption by GS1 as the basis for the GS1-128 standard. This standard uses Application Identifiers to encode rich, structured supply chain data (like product IDs, batch numbers, and weights) into a single barcode, becoming a cornerstone of global commerce. |
* Across Industries: Code 128 is indispensable in logistics for shipping labels, in healthcare for patient ID and blood tracking (ISBT 128), in manufacturing for work-in-progress tracking, in retail for inventory management, and across industries for asset tracking. Its combination of data capacity, compactness, and reliability makes it a highly effective tool for automating business processes. |
* An Enduring Legacy: As a foundational technology, Code 128 has not been replaced by 2D barcodes. It continues to be the workhorse of the world's supply chains and a ubiquitous presence on parcels and products globally, representing the culmination of the first wave of barcode innovation. |