ISO/IEC 15417:2018 — Code 128 Bar Code Symbology Specification: Technical Overview and Compliance

Comprehensive guide to the international standard for Code 128 linear barcodes

Scope

ISO/IEC 15417:2018 defines the specifications for the Code 128 bar code symbology, a high-density, alphanumeric linear symbology widely used in supply chain, logistics, and automatic identification applications. This standard is part of the ISO/IEC 154xx series developed by ISO/IEC JTC 1/SC 31 (Automatic identification and data capture techniques).

The standard covers the physical characteristics, encoding rules, dimensions, and reference decoding algorithms for Code 128. It supersedes previous editions (including ISO/IEC 15417:2007) and aligns with industry practices such as GS1-128 (formerly UCC/EAN-128). The 2018 revision clarifies tolerances, adds new guidance for application identifiers, and improves inter-operability with modern scanning equipment.

Code 128 is a variable-length, continuous symbology capable of encoding the full ASCII character set (128 characters in standard mode plus extended ASCII using the Function 4 (FNC4) mechanism). It is designed for high reliability and is used for pallet labeling, transport labels, asset tracking, and healthcare product identification.

Tip: Although often confused with Code 39, Code 128 offers higher density and a more compact symbol for the same data length. It is the basis for GS1-128, the carrier for GS1 Application Identifiers.

Technical Requirements

Symbol Structure and Encoding

ISO/IEC 15417:2018 defines three subsets of code sets within Code 128: Code A (uppercase alphanumeric and control characters), Code B (uppercase and lowercase alphanumeric), and Code C (numeric digit pairs, compressing two digits into one symbol character). The encoder selects the most efficient subset(s) for the given data, and may shift between sets using control characters (CODE A, CODE B, CODE C, SHIFT, FNC1–FNC4).

Each symbol character comprises 11 modules arranged in six bars and six alternating spaces, with some exceptions for the stop pattern which uses 13 modules. The standard defines a start pattern dependent on the initial code set, a checksum character (modulo 103), and a stop pattern. Quiet zones (minimum 10 times the module width on each side) are mandatory.

ParameterRequirement (ISO/IEC 15417:2018)
Character setCode A, B, C (128 ASCII characters)
Data characters per symbolVariable, up to ~46 characters in normal density (practical limits apply)
Module width (X dimension)Minimum 0.191 mm (for general use) — application-specific tolerances apply
Nominal bar width ratioLinear dimensions defined by X, bars and spaces are multiples of X (1,2,3,4 X)
Quiet zoneMinimum 10X left and 10X right (12X for GS1-128)
Check characterModulo 103, mandatory; weighted sum of data and start character values
Decoding algorithmReference algorithm provided in Annex A (not required for compliance but ensures consistency)
Minimum heightTypically 5 mm or 15% of symbol length, whichever is greater (application-specific)

Print Quality and Tolerances

The standard does not include print quality metrics by itself; it references ISO/IEC 15416 (linear bar code print quality test specification) for grading. However, it specifies dimensional tolerances for bar and space widths: the deviation from nominal must not exceed ±0.4X for the X dimension, and edge-to-edge tolerances are derived from ISO/IEC 15416. The 2018 edition clarified the treatment of wide-to-narrow ratios for the FNC1 character and removed ambiguities in the reference decode algorithm for in-spec symbols.

Important: For GS1-128 symbols, additional rules apply: the first character after the start must be FNC1, the data structure follows GS1 General Specifications, and the quiet zone must be at least 12X. The standard notes these constraints but the GS1 specifications govern the application layer.

Implementation Highlights

Implementers of Code 128 encoding and decoding in hardware or software should adhere to the following principles derived from ISO/IEC 15417:2018:

  • Encoder optimization: The encoder must evaluate all three code sets and select the subset that yields the shortest symbol. Switching between sets uses the CODE and SHIFT control characters. The standard provides an example algorithm for determining the optimum encoding (Annex B).
  • GS1-128 support: The FNC1 character placed at the start indicates a GS1-128 symbol. Scanners must pass the FNC1 to the application layer or use it as a group separator as per GS1 rules.
  • Extended ASCII via FNC4: In Code A and Code B, the FNC4 character may be used to shift the interpretation of subsequent characters to the upper 128 values (Latin-1 supplement). This is rarely used but is fully defined.
  • Human-readable interpretation (HRI): The standard does not mandate HRI placement, but recommends it below the symbol, using a font without confusion (e.g., no OCR-B). Parentheses around application identifiers in GS1-128 should be shown for readability but are not encoded.
Best Practice: When printing Code 128, ensure at least one test scan verifies the decode against the reference algorithm. For high-speed sorting applications, use an X dimension of at least 0.254 mm (10 mil) and maintain grade C or better per ISO/IEC 15416.

Compliance Notes

Conformance to ISO/IEC 15417:2018 is typically claimed via self-declaration or third-party testing. Compliance can be assessed at two levels:

  1. Symbol compliance – The printed symbol meets the dimensional, encoding, and quiet zone requirements of the standard. Verification uses ISO/IEC 15416 to measure parameter grades (symbol contrast, minimum reflectance, edge contrast, modulation, defects, decodability). A symbol with overall grade A or B is considered fit for most applications.
  2. Encoder/Decoder compliance – Software or firmware implementations claim compliance if they produce symbols meeting spec (encoder) or correctly decode any valid symbol (decoder). The standard provides test symbols and data sets for validation.
Warning: Symbols printed with incorrect start/stop patterns, insufficient quiet zones, or invalid check characters are non-compliant and may be rejected by readers conforming to the standard. Always verify using a calibrated verifier before deployment.

In regulated environments (pharmaceuticals, automotive, aerospace), compliance with ISO/IEC 15417 is often a contractual requirement. The 2018 edition harmonizes better with ISO/IEC 15424 (Data Identifier syntax) and ISO/IEC 15434 (transfer syntax for RFID and barcodes). Organizations should ensure their barcode generation libraries are updated to reflect the 2018 clarifications, especially regarding FNC1 handling and reference decode edge-case corrections.

Q: What is the main difference between ISO/IEC 15417:2007 and the 2018 edition?
A: The 2018 edition clarifies the definition of the FNC1 character in Code C, updates the reference decoding algorithm to improve handling of edge cases, and adds notes on quiet zone requirements for GS1-128. It also harmonizes terminology with other symbology standards and improves annex guidance for encoder optimization.
Q: Can Code 128 encode lower case letters?
A: Yes. Using Code B (or Code A with SHIFT) the full set of upper and lower case letters is supported. Code 128 is one of the few linear symbologies that natively includes both cases without requiring escape sequences.
Q: Is GS1-128 the same as Code 128?
A: GS1-128 is an application standard that uses the Code 128 symbology with FNC1 as the first character after the start pattern. GS1-128 dictates the data structure (application identifiers) and additional printing rules (e.g., symbol size constraints). All GS1-128 symbols must comply with ISO/IEC 15417, but not all Code 128 symbols are GS1-128.
Q: What are the quiet zone requirements per ISO/IEC 15417:2018?
A: Minimum quiet zone is 10X (10 times the module width) on each end of the symbol. For GS1-128, this increases to 12X on the left and right. Quiet zones must be free of any printing or marks. Failure to maintain quiet zones is a common cause of non-compliance.

References: ISO/IEC 15417:2018, ISO/IEC 15416:2016, GS1 General Specifications 2018 (and later).

Disclaimer: This article provides a summary for informational purposes. Always consult the full standard for certification and compliance activities.

© 2026 Technical Standards Publishing

📥 Standard Documents Download

🔒
Please wait 10 seconds, the download links will appear after the ad loads

Leave a Reply

Your email address will not be published. Required fields are marked *