Code GS1-128 Explained

Code GS1-128 Example

GS1-128 is a specification that determines how structured data is encoded into a Code 128 barcode symbol. Originally known as UCC-128 (in the US) and EAN-128 (rest of the world), the official name of the specification is now GS1-128. It's important to note that all three terms essentially refer to the same thing.

The most common applications of GS1-128 barcodes are warehousing (encoding GTINs and related data) and shipping labels (encoding a Serial Shipping Container Code or SSCC). Like all linear barcodes, GS1-128 can get quite wide when larger amounts of data are encoded. If space is a constraint, Datamatrix GS1 is a compact alternative to GS1-128.

Code GS1-128 Specifications

Link to official 128 GS1 specifications from

GS1-128 Application Identifiers

Each piece of data within a barcode symbol is preceded by an application identifier, or AI. For each AI the length and format of the encoded data are specified. For example, the application identifier for a GTIN-14 is 01, with a length of exactly fourteen digits. To distinguish the AIs from the actual data the identifiers are enclosed in parentheses both for data entry and when printed with the human readable text.

Note: The parentheses are not encoded into the actual barcode, they are only intended to visually separate the AIs from the data content.

Sample sequence to encode a GTIN-14 with AI 01: (01)95012345678903

Simply concatenate AIs and their data to add to the symbol:

Sample sequence to encode a GTIN-14 and a weight in kilograms: (01)95012345678903(3103)000123

A list of all AIs can be found in the Wikipedia article on Code 128 GS1.

GS1-128 FNC1 Character

The data stream of a GS1-128 symbol always begins with an FNC1 character to indicate to the barcode scanner or decoder that GS1-128 formatted data follows. The FNC1 is inserted after the start character and before the first AI. The FNC1 character is also used to delimit variable length fields within a barcode symbol. Usually the barcode software that generates the code will take care of this and insert FNC1 characters when necessary.

Coding UPC-A / EAN 13 as GTIN-14

Fill with leading zeroes to encode an EAN number (aka GTIN-13) or a UPC-A (GTIN-12) as a GTIN-14. (GS1-128 Specs Sec. 3.3.2).

Sample EAN 13: 4012345678901

EAN 13 as GTIN-14 with AI: (01)04012345678901

Checksum for Code GS1-128

GS1-128 uses the same Modulo 103 check digit calculation as plain Code 128. Please see the discussion here. The check digit is mandatory and a GS1-128 barcode without check digit will not scan. All Softmatic applications calculate the required check digits automatically.

Sample Barcodes GS1-128

Sample GS1-128 code with application identifier 01 and a GTIN-14:

Code GS1-128 Sample AI 01

Sample GS1-128 code with a GTIN-14 and product weight (123kg, AI 3103):

Code GS1-128 Sample GTIN Weight

Generating Code GS1-128 with GTIN-14 and expiration date

Step-by-step video shows creating a GS1-128 barcode with GTIN and expiration date:

Create Code GS1-128 in Illustrator, InDesign

Easy to use barcode plug-ins and extensions for Adobe InDesign, Illustrator und Photoshop. For more videos, see the Softmatic Youtube Channel

The Softmatic barcode plug-ins and extensions for InDesign, Illustrator and Photoshop are available from the Softmatic online store.

Barcode generator for Code GS1-128

Softmatic BarcodePlus V5 creates Code GS1-128 and will automatically insert all required FNC1 characters. The barcode can be exported as PDF / SVG (resolution-independent vector) oder raster image (PNG, TIFF). The app will format the given data according to the GS1 specifications and inserts FNC1 characters when required:

Barcode generator for Code GS1-128

Generate Code GS1-128 in bulk

For batch creation of Code GS1-128, use Softmatic BarcodeFactory V5, our time tested bulk barcode generator. The software will create thousands of barcode symbols in seconds, with data coming from the built-in serial number generator, the clipboard or via import from Excel, Numbers or CSV text files: