2026-07-09 Knowledge Base

GS1-128 vs Code 128: What the Application Identifiers Actually Add

TL

Written by

Ready to generate barcodes?

Create high-quality labels in seconds.

Start Generator →

Put a GS1-128 label next to a plain Code 128 label and you will not spot the difference. Same bars, same widths, same human-readable line underneath. Scan both with a basic reader and they both decode. So why do retailers and logistics partners keep rejecting shipments labelled with "just" Code 128 — and what exactly are they asking for when the compliance document says GS1-128?

The short answer: Code 128 is a symbology — a way of turning characters into bars. GS1-128 is a data standard that rides on top of it. It does not change how the barcode looks; it changes what the data inside means, and it makes that meaning machine-readable for every trading partner in the chain.


Code 128: the carrier

Code 128 defines the physical symbol: how each of the 128 ASCII characters maps to a pattern of bars and spaces, how the mandatory Modulo 103 checksum is computed, and how subsets A, B and C compress data. It says nothing about what the encoded text means. If you print 5901234123457 in Code 128, a scanner hands your software the string 5901234123457 — and it is entirely up to your software to know whether that is a product number, an order ID or a phone extension.

For internal use, that is perfectly fine. Your warehouse system knows its own conventions. Bin B-14-03 means aisle B, rack 14, shelf 3 because you decided it does.

GS1-128: the grammar

GS1-128 (formerly UCC/EAN-128) takes the same symbology and adds a grammar. Two things make a Code 128 symbol a GS1-128 symbol:

  1. A leading FNC1 character. This invisible flag right after the start code tells any scanner: "what follows is structured GS1 data, not free text."
  2. Application Identifiers (AIs). Every piece of data is prefixed with a 2–4 digit code that declares what it is. The AI is printed in parentheses in the human-readable line — the parentheses themselves are never encoded in the bars.

The most common AIs you will meet on a logistics label:

AI Meaning Example
(00) SSCC — Serial Shipping Container Code (00)059012341234567890
(01) GTIN of the trade item (01)05901234123457
(10) Batch or lot number (10)LOT2607A
(17) Expiry date (YYMMDD) (17)270331
(21) Serial number (21)SN00982
(37) Count of items in the logistic unit (37)48

Because each field is self-describing, one barcode can carry several of them chained together: (01)05901234123457(17)270331(10)LOT2607A tells any GS1-aware system the product, its expiry date and its batch — with no prior agreement between sender and receiver about field order or length.

That is the whole point. Your internal convention works inside your four walls. AIs work between companies that have never spoken to each other.


When GS1-128 is required

You will typically be required to use GS1-128 rather than plain Code 128 when:

  • Labelling pallets and cases for retail distribution. The SSCC (AI 00) on the GS1 logistics label is scanned at every hub and is what links the physical pallet to the electronic despatch advice.
  • Food and beverage traceability. Regulations and retailer policies increasingly demand batch (10) and date (15/17) data at case level, precisely so recalls can be targeted.
  • Healthcare and pharmaceuticals. Unit-of-use marking commonly combines GTIN, expiry and lot — on larger packs as GS1-128, on tiny ones as GS1 DataMatrix.
  • A trading partner's routing guide says so. Amazon, big-box retailers and 3PLs publish carton label specs; if the spec mentions SSCC or AIs, it means GS1-128.

One practical note: to encode a GTIN or SSCC you need a GS1 Company Prefix, which comes from your national GS1 member organisation — it cannot be invented. If you are new to that topic, start with our guide to the GS1 Company Prefix.

When plain Code 128 is enough

Just as important: do not pay the complexity tax when nobody asked you to. Plain Code 128 is the right choice when:

  • The barcode never leaves your organisation — asset tags, bin locations, work orders, employee badges.
  • The data is a single arbitrary value with no structure to declare.
  • You control every scanner and every system that will ever read the label.

Wrapping internal data in AIs adds length, adds failure modes, and buys you nothing. The trade-offs mirror the ones we covered in Internal Barcodes vs GS1.


Three mistakes that cause rejected labels

  1. Encoding the parentheses. The (01) notation is display-only. If your generator literally encodes brackets into the bars, verification fails. The bars must contain FNC1 + 01 + the data.
  2. Using plain Code 128 with AI-formatted text. Without the leading FNC1, a compliant scanner treats 0105901234123457 as an opaque 16-character string, not as a GTIN. It looks right to a human and fails at the receiving dock.
  3. Wrong check digit inside the GTIN or SSCC. The Code 128 symbol checksum and the GTIN check digit are two different things; the symbol can scan perfectly while carrying an invalid GTIN.

The short version

Code 128 answers "how do I turn characters into scannable bars?" GS1-128 answers "how do I make those characters mean the same thing to every company that scans them?" Inside your own walls, Code 128 keeps things simple. The moment a label has to be understood by a trading partner — a retailer's warehouse, a pharmacy, a customs system — GS1-128 with the right Application Identifiers is the standard they expect.

Need the carrier itself? You can generate a crisp, standards-compliant Code 128 barcode in SVG, PNG or PDF on BarcodeReady in seconds.


Related Articles

TL
Software Engineer

Tomasz is a full-stack software engineer with a background in supply chain technology and logistics systems. He built BarcodeReady to solve a real problem he encountered while working on inventory management systems: the lack of a fast, free, and standard-compliant barcode generator that works entirely in the browser without requiring uploads or account registration. BarcodeReady is his answer to that gap — built on rigorous GS1 and ISO standards research.

Ready to generate barcodes?

Create high-quality labels in seconds.

Start Generator
Back to Knowledge Base