Logistics & standards

Code 128 vs GS1-128: They Are Not the Same

GS1-128 uses the Code 128 symbology, but it is not simply any Code 128 barcode with a different name. GS1-128 follows GS1 data rules, uses a GS1-specific structure and carries standardized Application Identifiers so trading partners can interpret the data consistently.

Updated September 14, 2026

Quick answer

Use generic Code 128 for internal identifiers when you control the data format. Use GS1-128 only when the workflow requires GS1 data structures such as a GTIN, SSCC, batch, expiry date or other Application Identifier data. A generic Code 128 generator does not automatically create a valid GS1-128 symbol.

The shortest useful distinction

QuestionCode 128GS1-128
Symbology baseCode 128Code 128
Data structureDefined by your systemDefined by GS1 rules
GS1 Application IdentifiersNot requiredRequired for GS1 data elements
Typical useInternal SKU, stock ID, serial, locationSupply-chain and logistics data
Can generic output be assumed valid GS1-128?NoRequires GS1-compliant encoding

GS1-128 gives each data element a defined meaning

GS1 Application Identifiers are short numeric prefixes that define what the following data means and how it is formatted. Examples include identifiers for a GTIN, serial number, batch or lot, expiry date, quantity and logistics data.

That structure is why two companies can exchange a GS1-128 label without inventing a private field order. The receiving system knows how to interpret each element from the GS1 Application Identifier rules.

Why FNC1 matters

GS1-128 uses a special GS1 structure based on Code 128 and includes FNC1 handling required by the GS1 system. Human-readable parentheses around Application Identifiers are visual separators for people; GS1 states that those brackets are not encoded as literal barcode data.

This is one reason manually typing text such as “(01)…” into a generic Code 128 generator does not by itself make the result a standards-compliant GS1-128 barcode.

Which one should you use?

  • Use Code 128 for an internal SKU, asset ID, serial or location code when your own system defines the value.
  • Use GS1-128 when a customer, carrier, retailer or logistics specification explicitly requires GS1 Application Identifier data.
  • Do not rename generic Code 128 output to GS1-128 in documentation or labels.
  • For GS1 logistics labels, verify the complete label specification, not only the barcode symbol.

Common questions

Frequently asked questions

Is GS1-128 a different barcode symbology from Code 128?

GS1-128 is based on the Code 128 symbology but adds GS1-defined data structures and control rules. The names are not interchangeable.

Can I type (01) before a GTIN in a normal Code 128 generator to create GS1-128?

No. Literal parentheses plus a GTIN are not enough to guarantee a valid GS1-128 symbol. GS1-128 requires the correct GS1 structure, including FNC1 handling and Application Identifier rules.

Does BarcodeBatch generate GS1-128?

BarcodeBatch currently provides generic Code 128 generation. Do not use that output as a substitute where a trading partner specifically requires GS1-128 compliance.

What is GS1-128 commonly used for?

GS1 describes GS1-128 as a supply-chain barcode used for trade units and logistics labels, including data such as GTINs, batch numbers, dates and SSCCs.

Sources & standards

Technical claims in this guide are checked against primary or official documentation where available.