Use GS1-128

Use GS1-128

The GS1-128 symbology can encode information for traceability and enable the tracking of goods during transport and monitoring warehouse inventory. GS1-128 is used to mark packages, logistic units, pallets, electricity meters, assets and much more.

GS1‑128 can encode more information

GS1‑128 is used to mark packages and logistic units, such as pallets. The barcode is used in, for example, the pallet, transport and store and customer label – the GS1 Logistics Label. GS1‑128 is also used to mark electricity meters, electricity installations (metering points) and assets since the barcode can contain more information than just an item number.

GS1‑128 can, for example, contain:

  • SSCC (Serial Shipping Container Code)GTIN (Global Trade Item Number, GS1 Part Number)
  • GTIN (Global Trade Item Number)
  • GSRN (Global Service Relation Number)
  • GIAI (Global Individual Asset Identifier)
  • Batch or lot number
  • Dates.

GS1‑128 is a variant of the more general symbology Code 128. GS1‑128, as distinct from Code 128, uses Application Identifiers (AI). These describe what type of information is in the barcode. An application identifier consists of two to four digits and is printed in parentheses below the barcode together with information it describes. The application identifier for SSCC, for example, is “00”.

Learn more about application identifiers.

Note that it is not possible to use Code 128 to encode different types of information in one and the same barcode.

Example of the barcode GS1-128.

Barcode size

A barcode can be printed in different sizes on condition that it can be easily read. A large barcode has wider bars and tolerances which means you can be more certain that it can be read without problems.

The maximum physical length, including light margins, of a GS1‑128 barcode is 165 mm.

The maximum number of data symbols, i.e. digits or characters, in a single barcode is 48.

Dimensions for GS1‑128 are specified in the Barcode Size Guide.

Bar width

GS1‑128 is built up from bars and spaces of four different widths. It is critical that the bars and spaces have the correct width for the barcode to be readable.

The width of the narrowest bar in a barcode is called the module width. If a barcode is reduced or enlarged relative to the nominal size, the module width must be changed by the same proportion.


The height of GS1‑128 is measured from the bottom edge to the top edge.

Light margins

There must always be a light margin to the left and right of a barcode. The light margins are empty spaces to ensure that adjacent information, such as the package artwork, does not interfere with scanning.

Human-readable characters

The characters under the barcode must be at least 3 mm high and readable. The distance between the top of the characters and the bottom of the bars must be at least one-half of a module width. The module width is the width of the narrowest bar.

Placement of data elements

Certain fields, such as SSCC and GTIN, have fixed lengths. Other information, for example batch or lot number, do not have fixed lengths.

In order to minimise the length of the barcode fields with variable length, such as batch or lot number, should be placed last in the barcode. No separator (Function Code 1, FNC-1) is needed to mark the end of the field.

Barcode’s construction

GS1‑128 is alphanumeric, which means the symbol can encode both digits and letters. Remember that digits take less room in this symbology than letters and we therefore recommend only using digits in GS1‑128.

GS1‑128 is built from left to right of:

  • Light margin
  • Start* A, B or C and FNC1 (function code)
  • Data (including application identifiers)
  • Check character
  • Stop character
  • Light margin

* Start A, B or C defines which character set is used in the barcode.

Character set selection

GS1-128 is alphanumeric, which means that the barcode can contain both numbers and letters. Using different combinations of start and shift characters, the same data can be represented differently.

Start characters A, B, or C

In GS1 -128, the starting character (Start A, Start B, or Start C) determines which character set is used. GS1-128 has three character sets:

  • A – all uppercase alphanumeric characters and control and special characters.
  • B – all the usual uppercase and lowercase characters plus special characters.
  • C – 100 digital pairs from 00 to 99 and special characters. Allows you to encode numeric data at double density, that is, two digits per barcode d’mark.

The character set can be changed within a barcode by entering Code A, Code B, or code C. In addition, a “shift” character can be used to switch between large and lower case letters when using character set A or B.

Keep in mind that numbers take up less space in barcode format than letters do, so we recommend using numbers only in GS1-128.

Character set selection

The following rules should normally be implemented in a barcode printer’s software to reduce the length of the barcode. Note that “data” here means both the application identifier and the data element together.

  1. Use start character B if not:
    • Data starts with four or more digits. Then use start character C.
    • A control character appears in the dataset before a lowercase character. Then start character A should be used, see General Specifications.
  1. If start character C is used and an odd number of digits starts, insert code A or code B before the last digit.
  1. If four or more digits appear together when using character sets A or B:
    • Insert code C before the first digit, if there is an even number of digits in the group.
    • Insert code C immediately after the first digit, if there is an odd number of digits in the group.
  1. When character set B is used and a control character appears in the dataset:
    • Insert the shift sign before the control character, if after a control sign there is a lowercase sign before another control character.
    • Otherwise, insert code A before the check mark.
  1. When character set A is used and a lowercase character appears in the dataset:
    • Insert the shift sign before the lowercase character, if after a lowercase sign there is a control sign before another lowercase character.
    • Otherwise, insert code B before the lowercase character.
  1. When character set C is used and a nonnumeric character exists in the dataset.
    • Insert code A or code B before the nonnumeric character.