GS1-128 vs Code 128: What's the Difference?
Code 128 vs GS1-128: when to use each, key differences, Application Identifiers, and practical examples for cartons, pallets, and internal workflows.
GS1-128 vs Code 128: What's the Difference?
(Complete Guide + FAQ)
If you've ever searched for "GS1-128 vs Code 128", you're not alone. The names sound similar. They even look identical at first glance.
But they are not the same thing.
This guide breaks down:
- What Code 128 actually is
- What GS1-128 really means
- The key differences
- When to use each
- Common mistakes to avoid
- Practical examples for cartons, pallets, and internal workflows
Let's make this simple.
Best for: Internal use only
Format: Linear barcode symbology
Code 128 is a barcode symbology. That means it's just the technical format used to encode data into bars and spaces.
Key Characteristics
- High-density linear barcode
- Can encode letters, numbers, and symbols
- Compact and efficient
- No built-in data structure
- Common in logistics and internal systems
Example Use Cases
- Internal SKU labels
- Picking bins in warehouses
- Internal ID tracking
- Serial numbers
- Short alphanumeric references
Example Data in Code 128
SKU-AX93-RED-01PO-47291INT-REF-88922
There are no predefined rules about what the numbers mean. You decide the structure.
Best for: Supply chain, pallets, retail cartons
Format: Code 128 under GS1 standards
GS1-128 is not a different barcode type. It is Code 128 used under the GS1 standard with structured data rules.
It follows global standards set by GS1.
The Critical Difference
GS1-128 uses:
- Application Identifiers (AIs) — prefixes that define what the data means
- Standardised data formats
- Globally recognised structure
This makes the data readable across supply chains worldwide.
Application Identifiers are prefixes that define what the next numbers mean.
| AI | Meaning |
|---|---|
(01) | GTIN (product number) |
(10) | Batch / Lot number |
(17) | Expiry date |
(21) | Serial number |
(00) | SSCC (pallet ID) |
Example GS1-128 Data String
(01)05012345678903(17)250630(10)BATCH123
This means:
- GTIN: 05012345678903
- Expiry: 30 June 2025
- Batch: BATCH123
That structure is globally understood. See GTINs Explained for more on GTIN formats.
| Feature | Code 128 | GS1-128 |
|---|---|---|
| Barcode Type | Linear | Linear |
| Based On | Code 128 | Code 128 |
| Governing Standard | None | GS1 |
| Data Structure | Flexible | Strict (AI-based) |
| Global Supply Chain Use | No | Yes |
| Used for Retail Cartons | Sometimes | Yes |
| Used for Pallets (SSCC) | No | Yes |
| Used for Internal IDs | Yes | Rarely |
Use Code 128 when:
- The barcode is for internal use only
- It won't be scanned by retailers
- It won't be used in global supply chains
- You just need a compact barcode for internal tracking
Typical Examples
- Warehouse shelf labels
- Internal production references
- Work-in-progress tracking
- Temporary logistics labels
If it's inside your own system only → Code 128 is usually fine.
Use GS1-128 when:
- You're shipping to retailers
- You need SSCC pallet labels
- You're encoding GTIN + batch/expiry
- A retailer or distributor requires GS1 compliance
- You're working in regulated industries
Typical Examples
- Outer cartons sent to retailers (see Which Barcode Should I Use?)
- Pallet labels (SSCC)
- Food products with expiry dates
- Medical or pharmaceutical shipments
- Cross-border logistics
If it leaves your building and enters a formal supply chain → use GS1-128.
Scenario 1: Internal SKU Label
You print: YOP-A5-RED-2025
You use Code 128. Simple. Clean. Efficient.
Scenario 2: Pallet Shipping to a Retailer
You must encode:
- SSCC
- Batch
- Expiry
You use GS1-128 with AIs like:
(00)123456789012345678(10)BATCH123(17)250630
Retailer systems expect this format.
Many people think: "GS1-128 is a different barcode type."
It isn't. It's Code 128 with rules.
Think of it like this:
- Code 128 = the alphabet
- GS1-128 = grammar + sentence structure
| Mistake | Why It Matters |
|---|---|
| Using Code 128 for pallets that require SSCC | Retailers may reject shipments |
| Not including Application Identifiers | Scanners won't interpret structured data properly |
| Mixing EAN-13 with logistics labels | EAN-13 is for retail products, not cartons or pallets |
| Generating GS1-128 without a valid GS1 company prefix | If you're encoding GTINs or SSCCs, you must follow GS1 allocation rules |
Is GS1-128 the same as Code 128?
No. GS1-128 uses Code 128 technology but follows GS1 structured data standards.
Can I scan both with the same scanner?
Yes. Most modern barcode scanners can read both. The difference is how the data is structured and interpreted.
Do I need a GS1 membership to use GS1-128?
If you are encoding GTINs, SSCC, or official GS1 identifiers — then yes, you need a valid GS1 company prefix. If you are just using Code 128 internally, you don't.
Can I use Code 128 for retail products?
No. Retail products require EAN-13 or UPC-A.
Is GS1-128 required for Amazon?
For cartons and pallets in certain fulfilment scenarios, yes. For individual product barcodes, Amazon typically requires EAN/UPC.
Why does my retailer reject my barcode?
Common reasons: wrong barcode type, missing Application Identifiers, incorrect SSCC format, or non-GS1 compliant data. Retailers rely on automation. If it doesn't match the standard, it fails.
- If it stays inside your business → Code 128.
- If it enters the global supply chain → GS1-128.
Don't overcomplicate it. But don't guess either — retailers and logistics systems are strict.
If you're building systems like SKU management, label generators, or carton workflows, getting this right early will save you endless headaches later.
You can generate both Code 128 and GS1-128 in the barcode generator, with Application Identifier support for supply chain–ready labels.