GS1-128 (EAN-128) explained: Application Identifiers

GS1-128 looks like an ordinary barcode with brackets in the text. Those brackets are the whole point — they turn raw data into something every supply-chain system understands. It used to be called EAN-128, and you will still see it written EAN 128 or UCC/EAN-128.

EAN Studio · Updated July 2026

GS1-128 is a barcode standard built on the Code 128 symbology. What sets it apart is structure: instead of encoding free text, it uses Application Identifiers (AIs) to label each piece of data, so a scanner anywhere in the chain knows whether it is reading a product number, a batch, an expiry date or a pallet ID.

What is an Application Identifier?

An AI is a short numeric code, shown in brackets, that declares the meaning of the data that follows it. A single GS1-128 barcode can chain several AIs together. Common ones include:

AIMeaningExample
(00)SSCC — serial shipping container code (logistics unit)(00)123456789012345675
(01)GTIN — the product number(01)05601234567892
(10)Batch / lot number(10)ABC123
(11)Production date (YYMMDD)(11)260720
(17)Expiry date (YYMMDD)(17)261231
(21)Serial number(21)000042

So a single logistics barcode reading (01)05601234567892(10)ABC123(17)261231 says, unambiguously: this GTIN, from this batch, expiring on that date — all in one scan.

How it differs from plain Code 128

 Code 128GS1-128
DataFree text, any structureStructured via Application Identifiers
Special startNone requiredLeading FNC1 character
Meaning of dataDefined by youStandardised across all GS1 users
Typical useSKUs, internal labelsLogistics, pallets, regulated supply chains

Under the hood, GS1-128 is Code 128 — the difference is the leading FNC1 character and the AI conventions that give the data a shared, machine-readable meaning. That is why fixed-length AIs need no separator, while variable-length ones are separated by an FNC1 function character.

Where GS1-128 is used

It is the workhorse of logistics and regulated supply chains: shipping labels, pallet and case labels, and anywhere batch, expiry or serial data must travel with the product number. Retail checkouts still use EAN-13 or UPC-A on the consumer unit; GS1-128 lives on the boxes and pallets behind them.

Still just an image from a number. As with every barcode, GS1-128 encodes data you provide — the GTIN inside it is assigned by GS1. EAN Studio renders the barcode; it does not issue the numbers or AIs.

A malformed string still draws

This is where GS1-128 catches people out. Put a 13-digit number in (01) instead of 14, or write a date as 20.01.2026 instead of 260120, and the symbology raises no objection: Code 128 encodes those characters quite happily. You get an image that looks right, and that a scanner reads without complaint — but the system at the other end cannot pull a GTIN out of it. Nothing shows on the label. It shows up in the warehouse of whoever receives the pallet.

Many free generators draw the string exactly as it comes, without checking it.

EAN Studio checks the string before it draws. The check digit on the GTIN and on the SSCC, the length and type of every AI, dates in YYMMDD, weights with their six digits, and the combinations the standard requires — (02) needs (37), and (15) and (17) cannot both appear. If the string is not right, no barcode comes out, and it says which AI is wrong.

GS1-128 is a Pro feature

GS1-128, GS1 DataBar, GS1 DataMatrix and Pharmacode are part of the Pro plan. Plain Code 128 is free.

See the Pro plan Free Code 128 generator

Frequently asked questions

Is GS1-128 the same as EAN-128?

Yes. EAN-128 — also written EAN 128 or UCC/EAN-128 — is the old name for GS1-128. The standard was renamed when EAN International and the UCC came together as GS1; the barcode itself did not change, and a scanner reads both the same way.

What is GS1-128?

GS1-128 is a barcode standard that uses the Code 128 symbology with a defined data structure. Application Identifiers (AIs) label each piece of data — such as GTIN, batch, expiry or SSCC — so any GS1 system reads it consistently.

What is an Application Identifier (AI)?

An AI is a short numeric prefix in brackets that says what the following data means. For example (01) is GTIN, (10) is batch/lot, (17) is expiry date and (00) is the SSCC logistics unit number.

What is an SSCC and when do I need one?

An SSCC — Serial Shipping Container Code — is the eighteen-digit number that identifies one logistics unit: a specific pallet or a specific carton, not the product inside it. It travels in AI (00) and must never repeat, because two pallets carrying the same SSCC break the scan at goods-in. You need one when a retailer or a distribution centre asks for a pallet label, or when you send a despatch advice that has to match what arrives on the dock. It is built from your GS1 company prefix, a serial number you choose and a check digit. EAN Studio builds and prints SSCC labels on the Pro plan and keeps a register of the numbers already used, so you do not repeat one without noticing.

How is GS1-128 different from Code 128?

Code 128 is the underlying symbology and encodes free text. GS1-128 adds the GS1 rules on top: a leading FNC1 character and Application Identifiers that give the data a standard, machine-readable meaning.

Where is GS1-128 used?

On shipping and logistics labels, pallets and cases, and in regulated supply chains that need batch, expiry or serial data alongside the product number.

What happens if the GS1-128 string is wrong?

The symbology raises no objection: Code 128 encodes whatever characters it is given, so you get an image that looks right and scans. What fails is the reading system at the other end, which cannot separate the fields or pull out the GTIN — and that only surfaces when someone receives the goods. EAN Studio validates the string before drawing: if it is not right, no barcode comes out, and it says which AI is wrong.