Code-128, GS1-128 Barcode Symbology

Code 128 is a barcode symbology and also a subject to the standards of the GS1 Organization. The high data density of this barcode enables many possible applications and is therefore very widely used.

Application Areas

Due to the high data density, Code 128 is used in many areas:
  • Logistics: registration of goods, order picking, scanning of order prices, checks of stock levels...
  • Shipping and packaging industry: identification of articles and goods, for checking packaging using scanned metadata, as a product identification code for the container and pallets...
  • Pharmaceutical industry: scanning/checking primary packaging and secondary packaging, tracking/monitoring products during production and shipping, checking unique serial number ...
  • Food industry: reading the labelling of the goods, scanning the most important meta data, scanning the batch number and expiry dates, ensuring traceability by scanning the code...


Code 128 is a modern and neutral linear barcode type with high data density. It is widely used in industry and commerce because of its dynamic and complex design, which can represent both alphabetic and numeric characters without compromising the density of the barcode. Code 128 generally results in more compact barcodes compared to other methods such as Code 39, especially when the texts contain mostly digits.


Code 128 was developed in 1981 by the US Computer Identics Corporation for the automatic identification of data. 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 by EAN/UCC (now GS1) under the name EAN-128/UCC-128 (now GS1-128). Such barcodes include FNC1 characters, application identifiers and parentheses in the human-readable interpretation characters (see details below).

Symbol Structure

In general, Code 128 consists of seven sections:

  • Quiet zone - white area before the barcode
  • Start symbol - shows the scanner the beginning of the barcode (and the default sub set)
  • Coded data - a series of data in the defined sub set
  • Check symbol - calculated by the weighted sum of all symbols and serves to ensure correctness (coded only in the bar code, not displayed as human readable character)
  • Stop symbol - indicates end of the bar code
  • End bar - added to the stop symbol for bidirectional scanning
  • Quiet zone - white area after the bar code
Code 128 Symbol Structure

Technical Data

  • Normative standards: Code 128 is specified in ISO/IEC 15417:2007.
  • Code 128 can encode all 128 standard US ASCII characters, and by use of an extension symbol (FNC4), the Latin-1 characters defined in ISO/IEC 8859-1.
  • Code 128 has seven sections and 108 symbols. The symbols are divided into 103 data symbols, 3 start symbols and 2 stop symbols.
  • One Code 128 section consists of 13 modules with four different bar and gap widths. For clean barcode scanning, the quiet zone, left and right, must be at least 10x the width of the smallest bar.
  • To represent the full ASCII character set, 3 character sets A, B and C are alternated to encode alphanumeric data.
    • Code 128 A: To encode capital letters and special characters.
    • Code 128 B: To encode upper case and lower case letters.
    • Code 128 C: To represent digits (encoded as pairs).
  • These character sets are part of Code 128 and are automatically selected by the TEC-IT barcode generator, eliminating the need to specify a particular character set by the user.
  • Code 128 contains a mandatory check digit based on a weighted modulo-103 algorithm. The check digit is only "internal" (for the scanner) and has no human readable interpretation.
  • A single FNC4 acts as a kind of "shift" character, adding 128 to the ASCII value of the next symbol character. A pair of FNC4 characters "locks" all subsequent symbol characters until another pair of FNC4 characters occurs.

GS1 128 Symbology

GS1-128 is a standard developed by the GS1 organization based on Code 128. This standard defines a uniform syntax and semantics. The GS1-128 serves as a link between the data carrier and the data structure defined in the GS1 specification.

The main feature of the GS1-128 is the coding of data that goes beyond just product identification. For example, it can communicate an article number, a batch number and an expiration date all in one single GS1-128 barcode.

Due to the efficiency and flexibility of the GS1 system, it can be used in many areas, especially in the industrial or commercial sector.


  • Left Quiet Zone.
  • The start pattern: A start character (A,B or C) followed by the function 1 symbol character (FNC1).
    Once GS1-128 is selected, the TEC-IT barcode generator encodes the FNC1 automatically after the start character.
  • The encoded data: The data following the GS1 standard consists of several associations of Applications Identifiers (AI) and user data. The AIs help to separate the individual data elements. A variable length field must be terminated with an FNC1. In the human readable text, the application identifier numbers are shown in parenthesis.
  • A symbol check character.
  • The stop character.
  • Right Quiet Zone

Sub Variants, Derivatives

The following bar codes are based upon GS1-128.

  • SSCC - Serial Shipping Container Code (uses GS1-128 with AI 00)
  • NVE - Nummer der Versandeinheit (uses GS1-128 with AI 00)
  • EAN-14 - Encodes the GTIN-14 with AI 02
  • EAN-128 - European Article Number - previous standard for GS1-128
  • UCC-128 - Uniform Code Council - previous standard for GS1-128

Technical Data

  • The normative reference for the GS1-128 can be found in the GS1 General Specifications.
  • The big difference between Code 128 and GS1-128 is the FNC1 character before the start character and the use of the GS1 Application Identifier Standard.
  • Bidirectional decoding possible, continuous barcode type, features self-checking of characters.
  • The data character density is 11 modules per symbol character (5.5 modules per numeric character in code set C).
  • Maximum physical length is 165.10 millimetres (6.5 inch) including quiet zones.
  • The maximum number of data characters in a single symbol is 48.
  • The minimum module width depends on the application - for general distribution it is 0.495 mm, for specific cases 0.250 mm.
  • The allowed characters in Application Identifier (AI) element strings are limited to ISO/IEC 646, Table 1. That means that characters with Extended ASCII values 128 to 255 are excluded from GS1-128 bar codes.