Fact-checked by Grok 2 weeks ago

Code 128

Code 128 is a high-density linear symbology that encodes the full 128-character ASCII set, including uppercase and lowercase letters, digits, symbols, and control codes, making it suitable for compact representation of alphanumeric data. Developed in 1981 by at Computer Identics Corporation, it was designed to provide efficient encoding for industrial and commercial applications. The standard is formally defined in ISO/IEC 15417:2007, which specifies its bar and space patterns, data encodation rules, dimensions, decoding algorithms, and application parameters. Code 128 operates through three character subsets to achieve versatility and : Subset A encodes uppercase letters (A–Z), digits (0–9), and control characters (00–31 plus ); Subset B extends this to include lowercase letters (a–z) alongside uppercase, digits, and common symbols; while Subset C enables high-efficiency numeric encoding by pairing two digits per codeword (00–99). Barcodes begin with a start character selecting the initial subset, include a modulo-103 for error detection, and end with a stop pattern, allowing seamless switches between subsets for optimal data compression within variable-length symbols. This structure supports quiet zones on either side for reliable scanning and uses variable bar widths to balance with . Widely adopted in and , Code 128 serves as the foundation for GS1-128, which incorporates application identifiers to encode structured data like serial numbers, batch codes, and expiration dates in up to 48 characters. Common applications include shipping labels, inventory tracking, healthcare product labeling under ISBT 128, and USPS mail processing, where its alphanumeric capability and compactness outperform fixed-length symbologies like UPC. The symbology's flexibility has made it a preferred choice for non-retail environments, with ongoing support in modern scanning technologies despite the rise of 2D barcodes.

History and Development

Origins and Invention

Code 128, a high-density linear symbology, was developed in 1981 by the Computer Identics Corporation, a U.S.-based firm specializing in automatic identification technologies for industrial use. The creation addressed growing demands in and inventory management for a more efficient method to encode alphanumeric data compactly, enabling faster and more reliable data capture in operations. Computer Identics, founded earlier by as a pioneer in systems, recognized the need for advancements beyond existing technologies to support expanding industrial automation. The primary inventor was , an engineer at Computer Identics, who designed Code 128 to encode the full 128-character ASCII set while maintaining a smaller footprint than predecessors. This innovation stemmed from the limitations of , the dominant symbology at the time, which offered lower data density and supported only uppercase letters, numbers, and a few symbols, making it inadequate for complex alphanumeric tracking in and distribution. Williams' approach emphasized variable-width bars and modular encoding to achieve higher information density without sacrificing readability by standard laser scanners. Early implementation involved prototyping the symbology for real-world industrial testing, particularly in manufacturing environments where compact labeling was essential for inventory control and parts identification during the mid-1980s. These initial trials demonstrated Code 128's superior performance in high-volume production settings, paving the way for its broader integration into automated systems. Subsequent efforts led to formal standardization, enhancing its role in global supply chains.

Standardization and Adoption

Code 128 was formally adopted as a public domain standard by the Association for Automatic Identification and Mobility (AIM) through its Uniform Symbology Specification (USS) for Code 128, establishing consistent guidelines for its implementation across industries. This endorsement facilitated interoperability among barcode readers and printers, promoting its use beyond proprietary systems. In 2000, the (ISO) and the (IEC) incorporated Code 128 into the ISO/IEC 15417 standard, which detailed its symbology characteristics, data character encoding methods, dimensions, and requirements for to ensure uniformity. This international ratification solidified Code 128's specifications for worldwide applications, including alphanumeric and numeric data encoding in logistics and inventory management. By the late 1980s, advancements in hardware, particularly the commercialization of laser scanners capable of reliably reading high-density symbologies like Code 128, accelerated its practical deployment in supply chains. These devices, introduced in 1969 and widely available by the 1970s, reduced reading errors and increased scanning speeds compared to earlier light-based systems, enabling efficient data capture in dynamic environments such as warehouses. Widespread adoption occurred through integration into GS1 systems (formerly the Uniform Code Council [UCC] and European Article Number [EAN]) by the early 1990s, particularly for shipping labels and retail cartons to encode variable data like lot numbers and expiration dates. In 1988, UCC and EAN International endorsed Code 128—rebranded as UCC/EAN-128—for despatch units, marking a pivotal step in standardizing supplementary information in global trade. This timeline transformed operations by supporting accurate tracking and reducing manual errors, with 's Application Identifiers further enhancing data structure interpretation starting in 1989.

Overview and Design Principles

Key Features and Advantages

Code 128 is a variable-length, high-density linear symbology capable of encoding the full 128-character ASCII set, including alphanumeric characters, numeric digits, and control codes. This versatility allows it to represent a wide range of data types in a compact form, making it suitable for applications requiring efficient space utilization. One of the primary advantages of Code 128 is its superior data density compared to earlier symbologies like , enabling more compact encoding for alphanumeric data while supporting higher character capacities per unit length. It incorporates a mandatory self-checking mechanism via a modulo 103 , which enhances error detection during scanning. Additionally, Code 128 supports bidirectional scanning, allowing readers to decode the symbol from either direction, which improves operational flexibility in and systems. The design of Code 128 prioritizes compact representation of structured data such as serial numbers, dates, and unique identifiers, particularly in environments with limited label space. It includes three subtypes—A for control characters and uppercase letters, B for full ASCII, and C for double-density numerics—to optimize encoding for specialized uses. Despite these strengths, Code 128 has limitations, including the need for precise printing to avoid decoding errors due to its high-density structure, which demands high-resolution printers and scanners. The symbology itself is not human-readable without the application of specialized barcode fonts that interpret the bars as text.

Comparison to Other Symbologies

Code 128 offers higher data density than , encoding data with fewer bars per character, which allows for more compact symbols in space-limited applications such as shipping labels. Unlike , which supports only 43 standard characters (with extended versions requiring multiple symbols for full ASCII), Code 128 natively encodes all 128 ASCII characters, enabling richer data representation like special symbols and control codes. However, this increased efficiency comes at the cost of greater decoding complexity for Code 128, as its variable-length codewords demand more sophisticated scanner algorithms compared to the fixed-width patterns of . In comparison to Code 93, Code 128 offers higher density for alphanumeric encoding but incorporates more advanced control functions, including function codes (FNC1–FNC4) that facilitate structured data in logistics and support for GS1 application identifiers. Code 93 is an alphanumeric symbology with a standard set of 47 characters (uppercase letters, digits, and symbols), extendable to full ASCII, and features a simpler encoding scheme with two check digits for error detection, making it suitable for basic inventory tasks but less versatile for complex messaging. Relative to 2D symbologies like , Code 128 remains a linear that enables faster scanning with traditional line-of-sight readers, ideal for high-speed conveyor environments in warehouses. However, it stores far less data—typically up to a few hundred characters in a linear format—compared to , which can encode thousands of characters in a compact square pattern, better suiting applications requiring extensive information like serial numbers and compliance data. Code 128 plays an evolutionary role in bridging traditional 1D linear codes to modern hybrid systems in , where its high density and extensibility via GS1-128 standards support seamless integration with emerging and tracking technologies.

Technical Specifications

Subtypes (A, B, and C)

Code 128 employs three distinct subtypes—Code Set A, Code Set B, and Code Set C—to accommodate varying data requirements while maintaining high encoding density. Each subtype corresponds to a specific of the ASCII set, selected via a start that initiates the symbol in that mode. Switching between subtypes during encoding is facilitated by dedicated code set selection characters, enabling a single symbol to handle mixed alphanumeric and numeric data efficiently. Code Set A supports the ASCII range from 0 to 95, including uppercase letters (A–Z), digits (0–9), standard , and 32 control characters (00–31, such as NUL and SOH), along with function characters FNC1–FNC4. In Code Set A, code values 0–94 encode ASCII 0–94 ( codes to uppercase and symbols). This subtype is particularly suited for legacy systems interfacing with older equipment that relies on codes for data transmission and formatting. Code Set B encompasses the full printable ASCII character set from 32 to 127, incorporating uppercase and lowercase letters (A–Z, a–z), digits (0–9), and all standard printable symbols and . In Code Set B, code values 0–94 encode ASCII 32–126 (printable characters), and 95 encodes (127). It is optimal for applications involving text-heavy content, such as product descriptions, shipping labels, or any scenario requiring the complete range of human-readable alphanumeric data without control codes. Code Set C is dedicated to numeric-only encoding, representing pairs of digits (00–99) within each code character to achieve the highest possible density for pure numerical strings. In Code Set C, code values 0–99 encode digit pairs 00–99. This makes it ideal for encoding long sequences of numbers, such as serial numbers, batch codes, or quantities in systems, where efficiency is paramount.

Character Set and Encoding

Code 128 utilizes a set of 106 distinct code words, indexed from 0 to 105, where each code word is represented by a unique pattern of bars and spaces to encode data efficiently. Code values 0–95 generally correspond to data characters (alphanumeric, control, or numeric pairs depending on the set), while specific values within this range (e.g., 96–102, 98–101) are designated for function characters FNC1 through FNC4, which enable such as linking symbols or reader initialization, and for code set selection, allowing transitions between subsets A, B, C, and a temporary shift mode. This structure supports the encoding of all 128 ASCII characters across the subsets, with the patterns remaining consistent regardless of the active subset. The core of the encoding scheme is an encoding table that assigns each to a precise 11-module comprising three bars and three spaces, ensuring high and . A is defined as the narrowest bar or space width in the symbol, serving as the fundamental unit of measure; all elements are multiples of one to four modules, with the total width per character fixed at 11 modules to maintain uniform scanning. For instance, code word 33 maps to the (!) in Code Set A with its unique 11-module of three bars and three spaces. Similar unique patterns apply to all code words, with no two sharing the same bar-space sequence to prevent decoding ambiguity. To achieve full ASCII coverage, Code 128 incorporates shift mechanisms that temporarily switch between code sets without altering the overall subtype, enabling access to extended characters like lowercase letters or additional symbols. For example, a shift code ( 98 in Sets A or B) allows encoding of characters from the alternate set for a single position, reverting automatically, while FNC4 ( 100 in Set A or 101 in Set B) supports extension to Latin-1 characters beyond ASCII. This approach ensures compact representation of diverse data without requiring multiple symbols or subtype changes.

Start, Stop, and Shift Mechanisms

Code 128 employs distinct start patterns to initiate the and select the initial set, ensuring from the outset. There are three start variants, each comprising an 11-module of three s and three spaces with widths ranging from 1 to 4 modules. The Start A (for code set A, encoding and uppercase letters) follows the sequence (2 modules)-space (1)- (1)-space (4)- (1)-space (2). Start B (for code set B, encoding full ASCII printable ) uses (2)-space (1)- (1)-space (2)- (1)-space (4). Start C (for code set C, encoding pairs of digits for compact numeric data) is (2)-space (1)- (1)-space (2)- (3)-space (2). These precede the first data and establish the module width reference for the entire . The stop pattern serves as a universal terminator for all Code 128 symbols, spanning 13 modules with four bars and three spaces to signal the conclusion of the data, including the mandatory check character. Its sequence is bar (2)-space (3)-bar (3)-space (1)-bar (1)-space (1)-bar (2), designed to support bidirectional scanning by producing a unique reverse pattern that the recognizes as invalid when read backward. A trailing quiet zone of at least 10 modules (typically 0.25 inches or 6.4 mm) must follow the stop pattern to isolate the symbol and prevent interference from adjacent elements or media edges. Shift and mechanisms facilitate dynamic transitions between the A, B, and C sets within a single symbol, optimizing encoding for mixed alphanumeric and numeric content without requiring multiple start . The , invoked by value 98 (: (4)- (1)- (1)- (3)- (1)- (1)), temporarily alters the set for only the immediately following character before reverting to the prior set; this is particularly useful for isolated characters from another set, such as a lowercase in a mostly uppercase string. In contrast, functions enable permanent changes: 99 in sets A or B latches to set C (: (1)- (1)- (3)- (1)- (4)- (1)), 100 in set A latches to B, and 101 in set B latches to A. These control (values 98–101) are special characters not transmitted in the decoded output but essential for set management. During decoding, the start pattern calibrates the scanner's timing and module measurement while selecting the baseline code set, preventing misalignment in variable-width bars and spaces. Shift and latch patterns are interpreted inline to adjust mappings for subsequent characters, maintaining across set boundaries. The stop pattern cues the to process the final check character for validation and halt reading, with the overall mechanisms contributing to robust and in noisy scanning environments.

Encoding Process

Data Preparation and Mapping

The data preparation phase for Code 128 encoding begins with analyzing the input data to determine the most suitable primary , ensuring compatibility and efficiency in representation. Subset C is selected for purely numeric data to maximize density by encoding pairs of digits, subset B for alphanumeric text including uppercase and lowercase letters, and subset A for data incorporating ASCII control characters. This initial analysis considers the data's composition, length, and frequency of character types to avoid unnecessary mode switches later in the process. Once the primary subset is identified, the mapping process translates each input character or digit pair into a corresponding code set value from 0 to 105, as defined by the subset's character table. In subset B, for instance, the uppercase letter 'A' maps to code value 33, the digit '0' to 16, and the lowercase 'a' to 65. Subset A uses similar mappings for uppercase and control characters (codes 0–31 for NUL to ), while subset C exclusively maps two-digit combinations from "00" (code 0) to "99" (code 99); for odd-length numeric strings, switch to subset A or B to encode the single digit. These mappings ensure that the data is represented as a sequence of code values ready for further processing. To optimize the encoded sequence and minimize the resulting barcode length, the preparation incorporates strategic use of latch and shift mechanisms, grouping similar character types to reduce overhead from mode changes. Consecutive numeric segments are ideally grouped and latched into subset C to encode two digits per codeword, potentially shortening the symbol by up to 50% compared to single-digit encoding in subsets A or B. For mixed data, the algorithm evaluates potential latch sequences (permanent mode switches via 103 to A, 104 to B, 105 to C) versus temporary shifts (101 to A, 100 to B, 99 to C for single-character mode change), selecting the combination that yields the fewest total codewords. Code 128 accommodates variable-length data effectively, supporting up to approximately 48 characters in subsets B and C for standard applications like shipping labels, where the exact capacity depends on the proportion of mode switches and special function characters included.
SubsetExample MappingCode Value
B'A'33
B'0'16
B'a'65
C"12"12
C"00"0
This table illustrates representative mappings; full tables span 106 values per subset as per the standard.

Checksum Calculation

The checksum in Code 128 is a mandatory check digit that ensures by verifying the encoded message during scanning. It is computed using a weighted modulo-103 applied to the sequence of code values, including the start character. The formula for the checksum value c is: c = \left( \sum_{i=1}^{k} i \cdot v_i \right) \mod 103 where k is the total number of characters up to and including the last data (excluding the and stop), i is the starting at 1 for the start code, and v_i is the numeric code value assigned to the at i (ranging from to 102). Positions are assigned sequentially beginning with the start : for example, in a Code 128B symbol starting with code value 104 (Start B) followed by the 'A' (code value 33), the contributions are $1 \times 104 = 104 for the start and $2 \times 33 = 66 for 'A', yielding a partial sum of 170 before operation. The resulting c determines the code value of the , which is then encoded as a full symbol using the appropriate subset's mapping. The is placed as the second-to-last symbol in the , immediately preceding the stop pattern, and is not represented in the human-readable text. During decoding, the recomputes the from the scanned code values and compares it to the encoded to validate the symbol; any mismatch indicates an error. This modulo-103 mechanism provides robust error detection, capable of identifying single substitution errors and many or burst errors, and in short symbols (fewer than 103 characters), it offers potential for single-error correction through ambiguity resolution in the code space.

Handling Special Characters (FNC1–FNC4)

Code 128 employs four non-data function characters—FNC1, FNC2, FNC3, and FNC4—to provide control instructions to readers, enabling advanced features such as data linking and extended character support without occupying standard data positions. These characters are encoded using specific patterns within the symbol's structure and do not correspond to printable ASCII values. FNC1 functions primarily as an application identifier (AI) separator in barcodes, a variant of Code 128 used for applications. When placed immediately after the start character, FNC1 designates the symbol as GS1-compliant and signals the beginning of variable-length data fields, allowing the reader to parse AIs from subsequent variable data elements. In this context, FNC1 effectively replaces the group separator character, ensuring proper interpretation of structured GS1 data streams. FNC2 supports message concatenation across multiple barcode symbols and is occasionally used in optical character recognition (OCR) scenarios, though its implementation remains rare in general Code 128 applications. It instructs the reader to temporarily store data from the current symbol and append it to data from a subsequent symbol, facilitating extended messaging in linked barcodes. FNC3 performs a reset, instructing the reader to ignore all data in the symbol and use it only to transmit the start character and code set. FNC4 facilitates the encoding of values from 128 to 255 in environments limited to 7-bit systems, such as those adhering to ISO-8859-1 (Latin-1). It is followed by a standard code value representing the desired character modulo 128, effectively shifting the interpretation to access the higher byte range; this mechanism is reserved for closed-system applications where custom high-ASCII support is needed. Function characters adhere to strict positional rules: they may only appear in the initial positions after the start character or code set selection, and cannot be inserted following a shift operation (such as Code A, B, or C shifts), as this would invalidate their control function. Their comprehensive utility, particularly for full ASCII handling, is optimized in Code 128 subtype B. These characters contribute to the overall symbol's modulo-103 for verification purposes.

Physical and Printing Characteristics

Bar and Space Widths

Code 128 employs a system for constructing its bars and spaces, where the fundamental unit is the , with a nominal width denoted as the X-dimension. Each bar or space within a spans 1 to 4 modules, ensuring precise and variable-width elements that contribute to the symbology's high . Specifically, every consists of exactly three bars and three spaces, with their combined widths totaling 11 modules; this fixed per-character width facilitates consistent scanning and decoding. The ISO/IEC 15417 standard defines the allowable X-dimension range as approximately 0.25 mm to 1.0 mm, depending on the application and printing technology, to balance , , and . To maintain decoding reliability, the widths adhere to a parity rule: the sum of the module widths for the three bars in any character is always even, while the sum for the three spaces is always odd. This even-odd provides an inherent self-checking mechanism without additional overhead. There are precisely 106 unique patterns possible under these constraints, each corresponding to a code value from 0 to 105; these patterns are assigned meanings based on the active (A, B, or C), enabling the encoding of 128 distinct through contextual interpretation. Representative patterns illustrate this structure. For example, the pattern for code value 1 (representing '!' in subset B) uses the following widths: of 2 s, space of 2 s, of 2 s, space of 1 , of 2 s, space of 2 s. Similarly, the pattern for code value 65 (representing 'A' in subset A) is of 1 , space of 1 , of 1 , space of 3 s, of 2 s, space of 3 s. These sequences alternate starting with a and ensure the total adheres to the 11-module rule and constraints. In terms of relative widths, Code 128 does not enforce a strict binary narrow-to-wide ratio like some symbologies; instead, the variable counts (1:2, 1:3, or 1:4) allow flexibility, with practical implementations often optimizing for 1:2 or 1:3 effective ratios to enhance print tolerance and performance across different media. Quiet zones, essential for initialization, must extend at least 10X (where X is the width) on both sides of the to prevent interference from adjacent elements.

Symbol Dimensions and Quiet Zones

Code 128 symbols must meet specific dimensional requirements to ensure reliable scanning across various devices and conditions. The minimum bar height is 10X, where X denotes the width (the nominal dimension of the narrowest or ), providing a baseline of 2.5 mm when X equals 0.25 mm. This height supports effective beam coverage during scanning, with magnification factors typically ranging from 0.50 to 1.50 to accommodate different density and application needs, such as high-density encoding on small labels or larger formats for . The overall length of a Code 128 depends on the encoded and is calculated as 11X × (number of characters + 2) + 13X for the active area, accounting for the start character and check character each spanning 11 modules and the stop pattern spanning 13 modules. For instance, a encoding 10 characters results in 145X for the portion. Quiet zones, essential clear margins free of any printing or markings, extend at least 10X on both the leading and trailing sides to facilitate precise detection of the start and stop mechanisms by optical . Compliance with ISO standards is assessed through ISO/IEC 15416, which assigns density grades from A (highest quality) to D (acceptable with minor defects) based on parameters like element width variations, , and decode success rates across multiple scan lines. These grades ensure the symbol's robustness against printing tolerances and environmental factors, with grade F indicating failure and unscannability.

Barcode Length Optimization

One key strategy for minimizing the length of a Code 128 symbol involves leveraging Type C, which encodes pairs of digits (00–99) using a single code word, thereby halving the symbol length for purely numeric data compared to Types A or B, where each digit requires its own code word. This double-density encoding makes Type C particularly advantageous for applications with long numeric sequences, such as serial numbers or identifiers. Optimization rules emphasize switching to C-mode only for sequences of six or more consecutive digits, as shorter runs do not offset the overhead of the mode-switch characters (one code word to enter C-mode and potentially another to return to A or B, adding 1–2 extra symbols overall). Unnecessary shifts should be avoided to prevent inflating the total length, with automatic encoders evaluating run lengths to determine if the density gain justifies the transition cost. Algorithms in barcode generation tools partition input data across subtypes for minimal length, routing consecutive numerics to Type C while assigning alphanumeric portions to Type B (or A for control characters), often via "auto" modes that dynamically mix sets. For example, a mixed string like "123456DEF" might encode "ABC" in B-mode, switch to C for "123456" (three code words instead of six), then back to B for "DEF," yielding a shorter symbol than uniform B-mode encoding. While these techniques achieve higher density, they increase sensitivity to printing imperfections and scanning errors, as narrower bars in compact symbols are more prone to misreads from , , or low . In practice, such as GS1-128 implementations, the maximum encoded length is capped at approximately 48 characters (including identifiers and functions) to ensure the symbol remains printable on small labels while preserving reliable scannability.

Applications and Implementations

Common Use Cases

Code 128 barcodes, particularly in their GS1-128 variant, are widely employed in and shipping to encode Serial Shipping Container Codes (SSCC), enabling the unique identification and tracking of logistic units such as pallets, cases, and containers throughout the . This application facilitates efficient routing, inventory management, and compliance with international shipping standards by embedding an 18-digit SSCC into a compact, high-density symbol that can read at high speeds. In healthcare, Code 128 is used in Health Industry Bar Code (HIBC) symbols, which are employed for labeling medical products, including medications and devices, to ensure accurate and traceability in clinical settings. HIBC-compliant Code 128 barcodes encode primary data such as manufacturer identifiers, product codes, and lot numbers, supporting regulatory requirements like the U.S. and Drug Administration's (UDI) system for and integrity. These barcodes also appear on wristbands and specimen labels, aiding in positive identification and reducing errors during and administration processes. Manufacturing industries leverage for part numbering and tracking, where its ability to encode alphanumeric numbers allows for precise labeling of components, assemblies, and tools on production lines. This symbology supports just-in-time systems by enabling automated scanning for work-in-progress tracking, , and asset management, often integrated with GS1-128 for standardized data elements like batch numbers and expiration dates. Although less prevalent than UPC or EAN-13 in point-of-sale scanning, Code 128 finds niche applications in for variable-weight items, such as fresh or meats, where it encodes dynamic including weights and prices via application identifiers in the GS1-128 format. It is also utilized on coupons and promotional labels to embed offer details, expiration dates, and redemption codes, streamlining processing at checkout and back-end reconciliation.

Software Tools and Libraries

Several open-source libraries facilitate the generation and reading of Code 128 barcodes, enabling developers to integrate barcode functionality into applications without proprietary dependencies. ZXing, an open-source multi-format 1D/2D barcode image processing library implemented in Java with ports to other languages, supports encoding and decoding of Code 128 barcodes, making it suitable for Android and desktop environments. Similarly, Barcode4J, a flexible Java-based barcode generator licensed under Apache 2.0, allows for the creation of Code 128 symbols, including output to PDF formats via integration with tools like Apache PDFBox. Commercial software provides user-friendly options for barcode creation, particularly in office productivity suites. IDAutomation's Code 128 Barcode Font Package includes over 18 font variations in multiple sizes, along with encoders for seamless integration into , Word, and Access using VBA macros. Additionally, IDAutomation's ActiveX COM DLL serves as a font encoder tool for embedding Code 128 barcodes in or COM-compliant applications, supporting dynamic image generation without relying on fonts. Hardware scanners from leading manufacturers ensure reliable reading of Code 128 variants, including the GS1-128 subset. ' devices, such as the DS3608 scanner, are configured to decode GS1-128 barcodes via USB interfaces, parsing application identifiers like FNC1 for data. Honeywell's scanners, including the Dolphin CT60 mobile computer, support GS1-128 decoding by transmitting group separator (GS) characters and handling variable-length fields, often through configuration scripts for data stripping. As of 2025, advancements in cloud-based integration have enhanced mobile scanning capabilities for Code 128 barcodes. Google Cloud Vision API, through its Document AI features, detects and extracts data from Code 128 formats in uploaded images, supporting real-time applications via web APIs. No major changes to the Code 128 specification have occurred since its formalization in ISO/IEC 15417:2007, which defines its symbology characteristics and data encoding rules.

References

  1. [1]
    Code 128/GS1-128 Barcode FAQ & Tutorial | BarcodeFAQ.com
    The Code 128 barcode is a high-density linear symbology that encodes text, numbers, numerous functions and the entire 128 ASCII character set.
  2. [2]
    [PDF] THE HISTORY OF AUTOMATIC IDENTIFICATION ID Systems
    Code 128, authored by Ted Williams, is introduced by Computer Identics. scanner. Dest Corporation introduces the first desktop electronic OCR document reader.
  3. [3]
    ISO/IEC 15417:2007 - Information technology
    ISO/IEC 15417:2007 specifies the requirements for the bar code symbology known as Code 128. It specifies Code 128 symbology characteristics, data character ...
  4. [4]
    Understanding Code 128 A, B, and C Code Sets
    May 5, 2025 · Code 128 is divided into three different code sets: A, B, and C. Each code set has unique characteristics and applications.Missing: explanation | Show results with:explanation
  5. [5]
    [PDF] General Specifications Change Notification (GSCN) - GS1
    Mar 7, 2020 · Code 128 is fully described in ISO/IEC 15417, Information Technology - Automatic. Identification and Data Capture Techniques - Bar code ...
  6. [6]
    What is a GS1-128 barcode? | GS1 US
    The GS1-128 barcode can carry up to 48 characters of information and can include a wide variety of attribute data such as batch/lot information, serial number, ...
  7. [7]
    Code 128 FAQ and General Specifications - PrecisionID
    Code 128 is a high density, alphanumeric barcode commonly used for, but not limited to, shipping labels, ID cards, USPS applications, and some medical ...
  8. [8]
    The Evolution of Global Blood Labeling: Dr. Clive Hohberger's ...
    Oct 17, 2024 · ISBT 128 is based on the Code 128 barcode standard, which is a high-density, alphanumeric barcode that can encode a wide range of characters.
  9. [9]
    Code 128 - Barcodes Inc.
    ### Summary of Code 128 Bar/Space Module Widths and Mechanisms
  10. [10]
    CODE 128 and GS1-128 | Basics of Barcodes - Keyence
    GS1-128 makes use of the characteristics of CODE 128 and is currently used in many industrial applications. With GS1-128, various data are included in the ...
  11. [11]
    Code-128, GS1-128 Barcode Symbology - TEC-IT
    The name 128 means that all 128 ASCII characters can be encoded. Ted Williams is credited with the invention. After creation of Code 128, the code was adopted ...
  12. [12]
    History of Barcodes
    David Collins founds Computer Identics, the first company whose product line is based exclusively on barcode technology. Gerry Wolfe, then at Identicon ...Missing: origins invention
  13. [13]
    Code 128 Barcodes: History, Purpose, Advantages, Limitations ...
    Code 128 is another linear barcode which is widely used in industry and stores due to its dynamism and complexity, representing both alphabetic and numeric ...
  14. [14]
    History of Barcode Technology - A2B Tracking
    Apr 29, 2021 · Computer Identics introduces Code 128, the most frequently printed barcode in the world today. 1982. Symbol Technologies LS7000, the first ...Missing: origins | Show results with:origins
  15. [15]
    [PDF] Code 128 - Express Identification Products
    All AIM USS symbols must satisfy the minimum reflectance specification cited below for the spectral band centered at 633 nanometres in the visible spec trum.Missing: 1986 | Show results with:1986
  16. [16]
    ISO/IEC 15417:2000 - Bar code symbology specification
    Publication date. : 2000-06 ; Stage. : Withdrawal of International Standard [95.99] ; Edition. : 1 ; Number of pages. : 24 ; Technical Committee : ISO/IEC JTC 1/SC ...
  17. [17]
    Barcodes: A Brief History - Datacor
    Dec 4, 2018 · To the delight of cashiers everywhere, many supermarkets in the US in the 1980s adopted barcode scanning technology. ... Laser Scanner or Imager ...
  18. [18]
    The Fascinating History of Barcode Scanners - Scanco
    May 10, 2018 · The idea came from Norman Joseph Woodland on the beach. Early scanners were light-based, but laser-based scanners were developed in the 70s. ...Missing: adoption | Show results with:adoption
  19. [19]
    The Code 128 barcode standard, defined by ISO/IEC 15417
    Code 128 is a widely used linear barcode, defined by ISO/IEC 15417, known for its high density, versatility, and ability to encode various data types.
  20. [20]
    Code 128 - Barcode Xpress - Accusoft
    Code 128 is a linear, high-density barcode for encoding alphanumeric data, using 108 symbols, and can encode a large selection of characters.
  21. [21]
    What is the Difference Between Code 39 and Code 128? - Dynamsoft
    Jul 7, 2020 · Code 128 has a higher data density and includes a check digit for better error detection. Code 39 is easier to implement and scan in low-demand ...Missing: bidirectional | Show results with:bidirectional
  22. [22]
    Check digit calculation of Code-128 - Barcode Generator
    The check digit is a weighted modulo-103 checksum. It is calculated by summing the start code 'value' to the products of each symbol's 'value' multiplied by ...
  23. [23]
    Barcode Comparison Chart (by Steven Label)
    Here is a chart comparing information on some of the most commonly used industrial barcodes. These are ALL bidirectional (can be scan from either direction).
  24. [24]
    Understanding the Basics of Code 128 Barcodes - Triton Store
    May 22, 2023 · Code 128 was designed with the goal of providing greater density while being able to accommodate alphabetic, numeric and special characters. It ...
  25. [25]
  26. [26]
    Barcode types - ActiveBarcode
    Extended version of Code 93 supporting full ASCII. Offers higher data density than Code 39 Extended but remains niche in usage. ActiveBarcode: Code 128A. Code ...
  27. [27]
  28. [28]
    1D vs. 2D barcodes – benefits and drawbacks of one - Scanbot SDK
    Feb 15, 2024 · In some use cases, switching from 1D to 2D barcodes can raise the scan success rate from nearly 0% to 90% or higher. Choosing the right 2D ...Disadvantages Of 2d Barcodes · 1d Or 2d Barcodes -- Which... · Data Matrix CodeMissing: comparison | Show results with:comparison<|control11|><|separator|>
  29. [29]
    Barcoding for Beginners & Barcode FAQ | BarcodeFAQ.com
    Compared to Code 39 encoding the same data, Data Matrix is approximately 30 times smaller in symbol size. This comparison may be seen visually in the Barcode ...
  30. [30]
    The Evolution of Barcodes: From 1D to 2D and Beyond - Jadak
    Laser scanners, used for 1D scanning, offer speed and accuracy, particularly ... By the 1980s, the first 2D scanners for Data Matrix were being made ...
  31. [31]
    Code 128 barcode FAQ: full ascii character set, char ... - OnBarcode
    Code 128 barcode is a high-density linear barcode symbology, which encodes digits, text, control characters, and full ASCII 128 characters.Missing: ABC explanation
  32. [32]
    KB10136 - Understanding Code128 character sets and Limitations ...
    Although you can use a human readable font to produce a barcode with human readable, there are certain limitations you should aware. First, if a barcode is ...Missing: precise | Show results with:precise<|control11|><|separator|>
  33. [33]
    Using Code 128 For NDC Barcodes - RxKinetics
    Code 128 is a continuous, variable-length, high-density symbology which permits the encoding of alphanumeric data. The symbology encodes the full ASCII 128 ...<|control11|><|separator|>
  34. [34]
    [PDF] Code 128 Specification
    Code 128 is a high-density alphanumeric symbology. Since it was introduced in early 1980s, it has been widely adopted by many industry applications.<|control11|><|separator|>
  35. [35]
    Code 128 and EAN 128 - Barcode Types
    Code 128 was designed to encode all 128 ASCII characters. Although Code 128 was originally created as a 7 bit ASCII code, the 2007 update of the ISO-15417 ...
  36. [36]
    [PDF] GS1 General Specifications
    Jul 3, 2016 · ... Code 128 Symbology. By agreement between. AIM and GS1, use of the ... Start A. 2 1 1 4 1 2. 104. Start B. 2 1 1 2 1 4. 105. Start C. 2 1 1 2 3 ...
  37. [37]
    Code 128 barcode specification - bardecode.com
    Nov 23, 2012 · Code 128 is one of the more complex linear barcodes, with a greater capacity than Code 25 or Code 39, but requiring better quality.
  38. [38]
    Code128 barcodes incl. EAN/UCC128, GS1-128 - Computalabel
    The GS1-128 standard uses Code 128 for certain supplementary coding applications and have adopted the use of a FNC1 immediately after the start character to ...
  39. [39]
    About Barcode Code 128C
    1.Input Data Preparation. Ensure the data consists of even numbers of digits. If not, prepend a zero. · 2.Character Mapping. Convert each pair of digits into ...
  40. [40]
    Code-128 :: Code128 barcode symbology description & information
    It automatically switches between character sets A, B and C to encode alphanumeric data in the shortest possible form.Missing: explanation | Show results with:explanation
  41. [41]
    [PDF] BAR CODE 128
    This package includes 24 versions of bar code 128 fonts in scalable TrueType & PostScript formats, a Windows utility, Bar128, that helps you make bar codes, ...Missing: specification | Show results with:specification
  42. [42]
    How to manually calculate checksum for Code 128
    Feb 1, 2013 · Calculate the Checksum.​​ The check character (checksum) is p. NOTE: If using Code 128 A, use Start 103. If using Code 128 C, use Start 105.How to manually calculate checksum for Code 128 CHow to calculate check-digit in Code 128/EAN-128More results from support.idautomation.com
  43. [43]
    Code 128 Barcode Check Digit Calculator
    Code 128 barcode check digit calculator ; Products, 104, 33, 82, 135 ; Sum of Products, 1014 ; Divide by 103 (mod 103), 1014 / 103 = 9.
  44. [44]
  45. [45]
    [PDF] GSCN for 16-477 Function 1 - GS1
    Dec 20, 2016 · Presence of Function 1 Symbol Character (FNC1) as a flag for the GS1 system subset of the. Code 128 symbol, in the first position after the ...Missing: ABC | Show results with:ABC
  46. [46]
    About Code 128 Barcodes - TAL Technologies
    FNC2 is used to concatenate the message in a barcode symbol with the message in the next symbol. FNC3 is used to perform a reset. When FNC3 is encoded anywhere ...Missing: values | Show results with:values
  47. [47]
    How to encode extended ASCII characters (bytes 128-255) ISO ...
    Apr 4, 2011 · USS Code 128 features four Function Characters (FNC1, FNC2, FNC3, and FNC4). The last one, FNC4 is the one you need to use if you want to encode ...
  48. [48]
    The code 128 - Grandzebu
    There are 107 patterns, each is coded with 11 modules including 3 bars and 3 spaces (The STOP pattern have 4 bars). There are 3 tables giving the character or ...Missing: codeword | Show results with:codeword
  49. [49]
    ISO/IEC 15416 - Barcode Verification - Cognex
    The verification standard for 1-D codes, ISO 15416, requires 10 individual scan lines be taken throughout the height of a code and a grade assigned to each scan ...
  50. [50]
    ISO/IEC 15416 Verification Method | Barcode Information & Tips
    10 scans worth of verification data are obtained every 8%. The grade of each scan is judged. The range of grades is A, B, C, D, F.
  51. [51]
    Bar coded monetary transaction system and method - Google Patents
    Where there are only numerics, the Code 128 Type C variant features a high-density bar code—with one printed symbol per two digits of information. [0108].
  52. [52]
    Code 128 character and symbol width / space efficiency
    It has a fixed character width of 11 modules, a build in Modula 103 checksum check character. Code128 specifies a combination of 3 bars and 3 spaces for each ...
  53. [53]
    Code-128 and GS1-128 / EAN-128 / UCC-128 - IDEAL Software
    The barcode library switches between the character sets (A/B/C) automatically, in order to optimize the length of the barcode to the shortest possible ...<|control11|><|separator|>
  54. [54]
    Code 128 A, B, C, and Auto - BarCodeWiz
    Subset A supports numbers, upper-case letters, and control characters, such as tab and new-line. Subset B supports numbers, upper- and lower-case letters and ...Missing: explanation | Show results with:explanation
  55. [55]
    Advantages and disadvantages of Code128 barcode
    Explanation: Code 128 can be used to encode various data types, including numeric, alphabetic, and special characters, making it flexible for different ...
  56. [56]
    Identify Logistic Units with SSCC - GS1 US
    The SSCC is encoded in the GS1-128 barcode and included on the GS1 Logistics Label (a sample is shown here), making it possible to track the logistic unit in ...
  57. [57]
    [PDF] THE HEALTH INDUSTRY SUPPLIER LABELING STANDARD FOR ...
    Be sure to use the Modulo 43 calculation when using the HIBC LIC data structures, whether Code 39 or Code 128 is used. ... The Unique Transport Unit Identifier ...
  58. [58]
    [PDF] HEALTH INDUSTRY BUSINESS COMMUNICATIONS COUNCIL
    Dec 10, 2013 · We administer the Health Industry Bar Code Supplier. Labeling Standard (HIBC SLS) designated in the final regulation as an accepted UDI format.
  59. [59]
    HIBC LIC 128 Barcode - Neodynamic
    The HIBC LIC is used by Labelers (manufacturers) of health care products for identification purpose. Labelers can encode which is called "Primary Data" and ...
  60. [60]
    The Code 128 and GS1-128 Guide & How to Use Them
    Jul 10, 2023 · What is Code 128? The history of Code 128 dates back to 1981, when it was developed by Computer Identics Corporation (now part of Honeywell) ...Missing: AIM | Show results with:AIM
  61. [61]
    Simplify Warehouse Processes with GS1-128 Barcodes
    May 26, 2023 · GS1-128 barcodes are a valuable tool for optimizing warehouse operations and streamlining inventory management.
  62. [62]
    GS1 Logistic Label Guideline
    The Check Digit is calculated using the algorithm defined by GS1. [GENSPECS, 7.9.1], also see [CHECK] for a calculator. 3.2 Including the SSCC on the label.Missing: checksum | Show results with:checksum
  63. [63]
    Symbology Guide - Barcode Producer
    GS1-128 Coupon​​ GS1-128 barcodes are used on coupons for retail items. This symbology combines a UPC-A barcode and a GS1-128 barcode.
  64. [64]
    ZXing ("Zebra Crossing") barcode scanning library for Java, Android
    ZXing ("zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages.ZXing Project · Releases 31 · Getting Started Developing · Issues 6
  65. [65]
    Welcome to Barcode4J
    Barcode4J is a flexible generator for barcodes written in Java. It's free, available under the Apache License, version 2.0.Version 2.1 · Barcode4J examples · Download Barcode4J · Barcode4J CVS
  66. [66]
    Generating Barcodes and QR Codes in Java - Baeldung
    Mar 26, 2025 · The Code 128 barcode is a compact, high-density linear code used in the logistics and transportation industries for ordering and distribution.
  67. [67]
  68. [68]
  69. [69]
    Hello, I have DS3608 and I need to set up this scanner to read GS1 ...
    Jan 12, 2022 · Hello, I have DS3608 and I need to set up this scanner to read GS1-128. I use SSI over USB CDC We have a barcode: (01)08456789014530(15) ...DS3678 ADF-Rule for GS1-128 Barcode sometimes doesn't send ...How to decode/parse GS1-128 barcodes? If any sample code or any ...More results from supportcommunity.zebra.com
  70. [70]
    gs128 barcode not able to scan with Honeywell Dolphin CT60
    Jul 22, 2020 · In case of GS1-128 code you need to use a special start character FNC1. It is used to initialize the GS1 string and to signalize the end of a variable length ...GS1 barcode parsing - It seems that there is no separating characterWhat is the high level approach to being able to scan and parse ...More results from stackoverflow.com
  71. [71]
    How to set the Honeywell Scanner to transmit [GS] character as ALT ...
    To transmit the [GS], [RS], and [EOT] characters as shown in the screenshot taken from Notepad++, use the ALT key along with the corresponding three-digit code.
  72. [72]
    Detect Barcode Using Google Vision API - InnovationM Blog
    Jan 8, 2021 · Barcode provides security for our data. Formats of Barcodes: 1. Code 128 (FORMAT_CODE_128). 2. Code 39 (FORMAT_CODE_39). 3. Code 93