Chapter 42: The Failure of Code 16K |
In Brief |
Code 16K, introduced in 1988 as an early stacked two-dimensional barcode, promised to pack more data into a smaller footprint by stacking rows of linear barcode patterns. Yet despite its technical innovations, it ultimately failed to achieve widespread adoption. The reasons are instructive for anyone interested in the evolution of automatic identification technology: limited error correction, poor tolerance to printing defects, proprietary licensing terms, and competition from a more flexible, open standard called PDF417. This chapter examines the technical limitations that doomed Code 16K, contrasts its approach with that of the successful Code 39 symbology, and explores how different industries responded to the strengths and weaknesses of these competing standards. |

|
The Promise of Stacked Barcodes |
The late 1980s was a period of intense innovation in the automatic identification and data capture industry. Linear barcodes, which had revolutionized retail inventory management through the Universal Product Code, were proving inadequate for a growing number of industrial applications. The fundamental limitation of one-dimensional barcodes is simple: they can only store a limited amount of data in a given physical space. A typical Code 39 barcode might hold 20 to 25 alphanumeric characters before becoming impractically long . For applications requiring more information---such as shipping manifests, healthcare records, or manufacturing specifications---this was simply not enough. |
The industry needed a solution that could encode more data without requiring an impossibly large label. Two approaches emerged. The first was the development of two-dimensional matrix codes, such as Data Matrix and QR Code, which encode data in a grid of square modules. The second approach, which seemed more natural to engineers familiar with existing barcode technology, was the 'stacked' or 'row-pile' barcode. |
Stacked barcodes are built on a clever premise: take the familiar linear barcode, rotate it slightly, and stack multiple rows on top of one another. This approach offered several advantages. First, stacked codes could be printed using the same technology as linear barcodes---no special printing equipment was required. Second, they could be read by scanners that were already in use, with relatively modest software upgrades. Third, they preserved the familiar pattern of bars and spaces that had proven so reliable in industrial environments . |
Code 49 was the first commercially available stacked barcode, introduced in 1987. It was followed quickly by Code 16K, developed by Ted Williams at Laserlight Systems and introduced in 1988 . Code 16K was based on the widely adopted Code 128 symbology, which meant it inherited a proven encoding scheme and a character set that included the full ASCII range. The '16K' in its name refers to its maximum capacity: up to 16 layers or rows of data. |

|
How Code 16K Worked |
Understanding why Code 16K ultimately failed requires a closer look at its technical design. At its core, Code 16K is a stacked symbology built on the foundation of Code 128. Each row in a Code 16K symbol is essentially a miniature Code 128 barcode, complete with its own start and stop characters, encoded data, and a mandatory check digit . |
A Code 16K symbol could contain between two and sixteen rows, with each row holding up to five ASCII characters. When fewer than five characters were encoded in the final row, placeholder characters filled the remaining positions. Rows were separated by horizontal bars, known as separator bars or bearer bars, which helped the scanner distinguish one row from the next. The minimum row height was eight times the width of the narrowest bar, ensuring sufficient vertical extent for reliable scanning . |
One of Code 16K's more ambitious features was its ability to stack up to 107 separate symbols together, creating a composite that could theoretically encode up to 8,025 ASCII characters or 16,050 numeric characters. This was an extraordinary capacity for its time, suggesting applications in dense data storage and complex record-keeping . |
The symbology supported the full extended ASCII character set, encompassing 256 characters, through the use of shift characters and code-set switching . It adopted the three character sets from Code 128---Set A, B, and C---allowing efficient encoding of uppercase letters, mixed case text, and numeric data respectively. This flexibility was a genuine strength. |
Error detection in Code 16K relied on two mandatory modulo-107 check digits . The first check digit was calculated across all the data characters in the symbol, while the second provided additional verification. This dual-check approach was more robust than the single check digit found in many linear barcodes, and certainly more robust than the optional check digit that was often omitted in Code 39 implementations. |
However, the critical limitation of Code 16K lay in its error correction capabilities---or rather, the lack thereof. Unlike modern two-dimensional barcodes such as QR Code or Data Matrix, which incorporate Reed-Solomon error correction to recover data even when a significant portion of the symbol is damaged, Code 16K offered only error detection. If a symbol was damaged in a way that affected the encoded data, the scanner could recognize that an error had occurred, but it could not reconstruct the missing information . This might be acceptable for symbols that are guaranteed to remain in pristine condition, but in industrial environments, labels get scratched, smudged, and faded. |
The problem was compounded by Code 16K's limited tolerance to printing distortion. Barcode printing is subject to variations in ink spread, edge noise, and other distortions that can alter the apparent width of bars and spaces. Code 16K, because it was built on Code 128, inherited the latter's sensitivity to such variations. A patent filing from the period noted that even advanced techniques struggled to handle 'extreme levels of ink spread and ink shrink distortion' when reading stacked symbologies like Code 16K . The narrow bars that enabled higher data density also made the symbol more vulnerable to printing imperfections. |

|
A Tale of Two Approaches: Proprietary vs. Open |
Perhaps the most consequential factor in Code 16K's failure was its proprietary nature. Laserlight Systems held patents on the technology, and companies wishing to implement Code 16K had to navigate licensing terms that were not always favorable. In an industry where interoperability and widespread adoption are critical to success, proprietary standards face an uphill battle. |
The contrast with PDF417, introduced in 1991, could not be starker. PDF417 was developed by Symbol Technologies and was designed from the outset to be an open, freely available standard. The specification was published and made available to any company that wished to implement it, without restrictive licensing fees or legal barriers. This openness was instrumental in PDF417's rapid adoption by the US Department of Defense, the airline industry, and numerous other organizations . |
The proprietary nature of Code 16K had practical consequences beyond licensing fees. Because the specification was not freely available, fewer companies developed scanning hardware and software capable of reading it. The ecosystem of compatible devices remained limited, which in turn discouraged potential users from adopting the symbology. It was a classic chicken-and-egg problem: no one wanted to implement Code 16K because there were few scanners that could read it, and no one wanted to build scanners because there was no demand. |

|
The Technical Characteristics of Code 39 |
To fully appreciate Code 16K's failure, it is helpful to understand the technical strengths of Code 39, the linear barcode that remained the workhorse of industrial applications throughout this period. Code 39, also known as Code 3 of 9, was introduced by Intermec Corporation in 1974 and was the first barcode symbology to encode both letters and numbers . Its design principles offer valuable lessons about what makes a barcode technology succeed. |
Each character in Code 39 is encoded using a pattern of five bars and four spaces, for a total of nine elements. Of these nine elements, exactly three are wide and six are narrow. This 'three of nine' pattern gives the symbology its name and is central to its self-checking property . |
The self-checking property is one of Code 39's most important features. Because each character has a unique pattern of wide and narrow elements, a single printing defect or reading error cannot transform one valid character into another. If a single bar is misread as wide when it should have been narrow, or vice versa, the resulting pattern will not correspond to any valid character in the code set, and the decoder will reject it . This provides a degree of error detection without requiring a separate check digit, though a modulo-43 check digit can be added if additional verification is required . |
Code 39's character set includes uppercase letters A through Z, the digits 0 through 9, and seven special characters: space, dash, dot, dollar sign, slash, plus sign, and percent sign . The asterisk serves as the start and stop character, marking the beginning and end of the barcode. For applications requiring lowercase letters or additional special characters, the Extended Code 39 variant uses pairs of standard Code 39 characters to represent the full 128-character ASCII set, though at the cost of significantly longer barcode length . |
The most significant drawback of Code 39 is its low data density. Because each character requires nine elements (five bars and four spaces), with three of those elements wide, Code 39 barcodes are relatively long for the amount of data they encode. A typical Code 39 barcode can hold 20 to 23 alphanumeric characters before becoming impractically large . For applications requiring more information, Code 128, introduced in 1981, offers approximately 40% higher density while supporting the full ASCII character set natively . |
Despite this limitation, Code 39's simplicity, self-checking property, and lack of mandatory check digits made it easy to implement and virtually universal in its compatibility with existing barcode readers . The ability to print Code 39 barcodes using simple font-based systems, rather than specialized software, was a significant advantage for organizations with limited technical resources . |

|
Industry Applications of Code 39 |
The widespread adoption of Code 39 across diverse industries illustrates how its technical characteristics aligned with real-world requirements. Each industry valued different aspects of the symbology, and the trade-offs between density, reliability, and ease of implementation were weighed differently depending on the application. |
Military Logistics: The LOGMARS System |
Perhaps the most influential early adopter of Code 39 was the United States Department of Defense. In the early 1980s, the military recognized that its logistics systems, which tracked billions of dollars worth of equipment and supplies, were in desperate need of automation. The result was LOGMARS, the Logistics Applications of Automated Marking and Reading Symbols program . |
The military's choice of Code 39 was driven by several factors. First, the symbology's self-checking property meant that even without a check digit, the risk of misread data was acceptably low. In a military supply chain, where a misread could send critical spare parts to the wrong location or result in incorrect inventory counts, this reliability was essential. Second, the ability to encode alphanumeric characters was crucial, as military part numbers and equipment designations typically include both letters and numbers. Third, the military required a standard that could be implemented consistently across all branches of service and by all suppliers. Code 39, as an open and well-documented specification, met this requirement. |
The LOGMARS program mandated the use of Code 39 for identifying all government property, and this requirement cascaded down through the defense supply chain. Any company that wanted to do business with the Department of Defense had to be able to print and read Code 39 labels . This created a vast installed base of Code 39-compatible hardware and software, ensuring the symbology's continued relevance for decades. |

|
Healthcare: Patient Safety and Inventory Management |
The healthcare industry adopted Code 39 through the Health Industry Bar Code standard developed by the Health Industry Business Communications Council. This standard, known as HIBC, specified Code 39 as the primary symbology for labeling medical products, including pharmaceuticals, devices, and supplies . |
In healthcare applications, the self-checking property of Code 39 was particularly valuable. A misread barcode on a medication label could have life-threatening consequences, so any mechanism that reduced the risk of data errors was welcome. The ability to encode both letters and numbers was also essential, as drug names, lot numbers, and expiration dates include a mix of characters. |
Hospitals also used Code 39 for patient identification wristbands, laboratory specimen tracking, and equipment inventory. The symbology's simplicity meant that barcode printing could be integrated into hospital information systems without specialized hardware, and the widespread availability of Code 39 readers meant that staff at any location could scan labels without proprietary equipment. |

|
Automotive Manufacturing: Supply Chain Tracking |
The automotive industry, through the Automotive Industry Action Group, established standards for barcode labeling that relied heavily on Code 39. Parts manufacturers were required to label components with Code 39 barcodes containing part numbers, serial numbers, and date codes, enabling tracking through the entire supply chain . |
In automotive manufacturing, the key requirement was reliability in a demanding environment. Automotive parts travel through factories where they are exposed to oil, grease, heat, and abrasion. Barcode labels must survive these conditions and remain readable. Code 39's simple bar and space patterns proved robust enough to withstand the harsh environment of automotive production. |
The low data density of Code 39 was not a significant concern in this application. Automotive part numbers tend to be short, typically containing 10 to 20 characters, which is well within the capacity of a reasonably sized Code 39 label . The larger label area required by Code 39 was acceptable because automotive parts are generally large enough to accommodate a label of several inches in width. |

|
Government and Defense Contracting |
Beyond the military LOGMARS program, Code 39 was widely adopted across government and defense contracting. MIL-STD-130, the military standard for identification marking of US government property, specified Code 39 as the required symbology . This standard applied to everything from combat vehicles to office furniture, creating an enormous installed base. |
Government contractors found that Code 39 was easy to integrate into existing operations. Because no check digit calculation was required (though some specifications mandated the optional modulo-43 check digit), Code 39 could be printed simply by adding a font to a printer and formatting the data accordingly . This simplicity made Code 39 accessible to organizations that lacked specialized barcode expertise. |

|
Warehousing and Logistics |
Warehouses and distribution centers, particularly in the government and defense sectors, used Code 39 for inventory management, shipping and receiving, and asset tracking . The symbology's ease of implementation was a key factor, as warehouse operations often involve multiple systems and suppliers. |
The reliability of Code 39 in dusty, dimly lit warehouse environments was also important. The self-checking property meant that a dirty or partially damaged label was less likely to produce a misread than a symbology without this feature. While Code 128 might have been more efficient in terms of label space, many warehouse operators saw no compelling reason to switch from Code 39. |

|
The Failure of Code 16K: A Technical Postmortem |
With this background on Code 39's success, the failure of Code 16K becomes more comprehensible. Code 16K attempted to address a genuine need---the desire for greater data capacity in barcode labels---but it did so in a way that exposed the limitations of the stacked barcode approach while failing to provide compensating advantages. |

|
The Error Correction Problem |
The most significant technical limitation of Code 16K was its lack of robust error correction. While Code 39's self-checking property protected against single-character misreads in a linear barcode, a stacked barcode faces different failure modes. Damage to a label can affect multiple rows simultaneously; a scratch across the symbol might obscure a portion of every row, making the affected data unrecoverable. |
Code 16K's two modulo-107 check digits provided error detection, but not error correction . If a portion of the symbol was unreadable, the entire symbol had to be rescanned or replaced. In practical applications, this was a serious limitation. A barcode that cannot be read because of minor damage is not merely an inconvenience; it can cause production delays, shipping errors, and customer dissatisfaction. |
Modern two-dimensional barcodes solve this problem through Reed-Solomon error correction, which can reconstruct missing data from redundant information encoded in the symbol. This allows a QR Code or Data Matrix symbol to remain readable even if a significant percentage of the symbol is damaged. Code 16K's era predates the widespread availability of this technology, and its architects lacked the computational resources necessary to implement sophisticated error correction in a cost-effective manner. |

|
Printing Tolerance Issues |
The second major technical limitation of Code 16K was its poor tolerance to printing distortion. Barcode printing involves a process of ink application or thermal transfer that inevitably introduces some variation in the width of printed bars. Narrow bars are particularly susceptible to these variations, as a small amount of ink spread can significantly change their apparent width. |
Code 16K, built on the Code 128 symbology, inherited that standard's sensitivity to printing distortion. While Code 39 uses a simple wide-narrow ratio that accommodates significant variation in bar width, Code 128 requires more precise control over bar widths to decode correctly. When this precision is multiplied across multiple stacked rows, the risk of reading errors increases . |
In practice, this meant that Code 16K required higher-quality printing than many industrial environments could provide. Labels printed on older thermal transfer printers, or on substrates that caused ink to spread, were often unreadable. This was particularly problematic for applications where barcodes were printed on demand by workers using portable printers. |

|
Competition from PDF417 |
The introduction of PDF417 in 1991 was a watershed moment for stacked barcodes. Developed by Symbol Technologies, PDF417 addressed many of the weaknesses of its predecessors. Most importantly, it included built-in error correction that could reconstruct data even when a portion of the symbol was damaged. It also offered higher data density, better printing tolerance, and a flexible structure that could be scaled to accommodate different amounts of data. |
PDF417 was designed from the start as an open standard, available to all without licensing restrictions . This contrasted sharply with Code 16K's proprietary nature. Organizations that had been reluctant to commit to Code 16K because of licensing uncertainty found PDF417 an attractive alternative. |
PDF417 also offered a more sophisticated approach to error correction. The symbology could be configured with different levels of error correction, allowing users to trade off data capacity for robustness depending on their needs. This flexibility made PDF417 suitable for a much broader range of applications than Code 16K. |

|
The Ecosystem Problem |
The failure of Code 16K was self-reinforcing. Because the symbology was proprietary, few scanner manufacturers invested in supporting it. Because few scanners could read Code 16K, organizations were reluctant to use it. This created a classic network effect problem, where the value of a technology depends on how many others are using it. |
The contrast with Code 39 is instructive. Code 39 was not only open and free, but its simplicity meant that nearly every scanner manufacturer could support it with minimal effort. This created a virtuous cycle: as more organizations adopted Code 39, scanner manufacturers competed to offer better reading performance, further increasing the symbology's adoption. |

|
Lessons for Technology Adoption |
The failure of Code 16K offers several lessons that extend beyond the world of barcodes. First, technical superiority does not guarantee market success. Code 16K offered greater data capacity than linear barcodes, but it sacrificed reliability and ease of implementation in ways that mattered more to users. |
Second, open standards have a significant advantage over proprietary ones. The open nature of PDF417 and Code 39 allowed them to benefit from competition among implementers, which improved both quality and price. Proprietary technologies, by contrast, must overcome the barrier of licensing uncertainty and the need to build a complete ecosystem of compatible products. |
Third, reliability matters more than capacity for many applications. The self-checking property of Code 39, and the error correction of PDF417, addressed genuine user concerns about data integrity. Code 16K's lack of error correction, and its sensitivity to printing distortion, created vulnerabilities that users found unacceptable. |
Fourth, industry standards and government mandates can make or break a technology. Code 39's success was driven in large part by the LOGMARS program and MIL-STD-130, which required its use in defense applications . PDF417's success was accelerated by adoption by the Department of Defense and the airline industry. Code 16K, lacking such mandates, remained a niche product. |
Finally, the installed base of hardware and software creates enormous inertia. Once organizations have invested in barcode printers, scanners, and software that support a particular symbology, they are reluctant to change. Code 39's early adoption in defense and healthcare created an installed base that continues to sustain it decades later. Code 16K never achieved this critical mass. |

|
Conclusion |
Code 16K stands as a cautionary tale in the history of barcode technology. It was technically innovative, offering greater data capacity than linear barcodes in a format that could be printed with existing equipment. Yet it failed to gain traction because of fundamental limitations: inadequate error correction, poor tolerance to printing distortion, proprietary licensing, and competition from a superior open standard. |
The success of Code 39 in military, healthcare, automotive, and logistics applications demonstrates the importance of reliability, simplicity, and openness. Code 39's self-checking property, while modest compared to modern error correction, provided a level of data integrity that users valued. Its alphanumeric character set made it flexible enough for diverse applications. And its open specification created an ecosystem of compatible hardware and software that reinforced its adoption. |
PDF417 ultimately succeeded where Code 16K failed by addressing the limitations of early stacked barcodes. It provided robust error correction, accommodated a wider range of printing conditions, and was available as an open standard. Yet even PDF417 eventually ceded ground to two-dimensional matrix barcodes, which offer even higher data density and more sophisticated error correction in a smaller footprint. |
The story of Code 16K reminds us that innovation is not enough. New technologies must fit the practical needs of users, work reliably under real-world conditions, and be adopted by an ecosystem of compatible products. When these conditions are not met, even technically ambitious technologies can fail. The barcode industry's evolution from linear codes through stacked codes to matrix codes reflects the industry's learning about what truly matters: reliability, interoperability, and practical usability in diverse industrial environments. |

|
Summary |
Code 16K, an early two-dimensional stacked barcode introduced in 1988, promised to solve the data capacity limitations of linear barcodes by stacking multiple rows of Code 128 patterns. However, it failed to achieve widespread adoption due to several critical weaknesses. |
Limited Error Correction: Code 16K used two check digits for error detection but lacked the robust error correction capability of modern 2D codes. Any damage to the symbol could make it unreadable, and the missing data could not be reconstructed. This was a serious problem in industrial environments where labels are subject to wear, abrasion, and contamination. |
Poor Printing Tolerance: Based on the Code 128 symbology, Code 16K was sensitive to variations in bar width caused by ink spread and other printing distortions. Low-quality printers, which were common in many industrial settings, often produced Code 16K labels that could not be read reliably. This limited the symbology's applicability in the very environments that most needed greater data capacity. |
Proprietary Licensing: Code 16K was developed and patented by Laserlight Systems, requiring users and implementers to navigate licensing terms. This created uncertainty and discouraged adoption, particularly in contrast to the open standards that dominated the industry. |
Competition from PDF417: The introduction of PDF417 in 1991 offered a superior alternative that addressed many of Code 16K's weaknesses. PDF417 provided robust error correction, better printing tolerance, higher data density, and was available as an open standard. Organizations that might have considered Code 16K increasingly chose PDF417 instead. |

|
The success of Code 39 in military, healthcare, and industrial applications illustrates the principles that drive barcode adoption. Code 39's self-checking property provided a level of data integrity that users valued, even without mandatory check digits. Its ability to encode alphanumeric characters made it flexible for diverse applications. Its simplicity meant it could be printed and read with inexpensive equipment. Its open specification ensured widespread compatibility and a robust ecosystem of hardware and software. And its adoption by military and government programs created an installed base that sustained it for decades. |
Code 16K's failure demonstrates that technical innovation must be accompanied by practical reliability, ease of implementation, and ecosystem support to achieve commercial success. The barcode industry's evolution toward increasingly sophisticated symbologies has been driven by real user needs, and technologies that fail to address those needs---no matter how innovative---will not succeed. |