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
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
| Question | Code 128 | GS1-128 |
|---|---|---|
| Symbology base | Code 128 | Code 128 |
| Data structure | Defined by your system | Defined by GS1 rules |
| GS1 Application Identifiers | Not required | Required for GS1 data elements |
| Typical use | Internal SKU, stock ID, serial, location | Supply-chain and logistics data |
| Can generic output be assumed valid GS1-128? | No | Requires 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.