GS1-128 Barcode: Complete Guide to Supply Chain Standards
Master GS1-128 barcodes with Application Identifiers (AIs), SSCC shipping codes, logistics implementation, and supply chain best practices. The essential guide for warehouse and distribution operations.
GS1-128 Barcode: Complete Guide to Supply Chain Standards
In the complex world of modern logistics and supply chain management, efficient data capture is critical for tracking products from manufacturer to end customer. While simple Code 128 barcodes excel at encoding alphanumeric data, supply chain operations need more: standardized data structures that convey not just numbers, but their meaning—distinguishing batch numbers from serial numbers, expiration dates from production dates, and quantities from weights.
Enter GS1-128 (formerly known as UCC/EAN-128): a sophisticated data carrier that combines the versatility of Code 128 symbology with a globally standardized data structure. It's the lingua franca of logistics, enabling seamless communication between trading partners worldwide.
This comprehensive guide covers everything you need to know about GS1-128 barcodes: technical architecture, Application Identifiers (AIs), SSCC implementation, warehouse and shipping applications, scanner configuration, EDI integration, and best practices for reliable supply chain operations.
What is GS1-128?
Definition and Standards
GS1-128 is an application standard that uses the Code 128 barcode symbology with a defined data structure governed by GS1 (formerly known as EAN.UCC). It enables encoding of complex supply chain data in a standardized, machine-readable format.
Key characteristics:
- Symbology: Uses Code 128 (specifically subset C for numerical efficiency when possible)
- Data structure: Defined by GS1 standards with Application Identifiers (AIs)
- Start character: Always begins with FNC1 (Function Code 1) to identify it as GS1-128
- Data capacity: Up to 48 alphanumeric characters practical (symbology supports more but label size limits apply)
- Global standard: Recognized and implemented worldwide across all industries
Former names:
- UCC/EAN-128 (North America / International)
- EAN-128 (Europe)
- UCC-128 (United States)
The naming change to GS1-128 in 2005 unified global terminology under the GS1 organization umbrella, but you may still encounter legacy names in older documentation or equipment.
Relationship to Code 128
Think of the relationship this way:
Code 128 = The language (symbology) GS1-128 = The grammar and vocabulary (data structure)
Just as English words can be arranged randomly or structured into grammatical sentences, Code 128 can encode any alphanumeric data, while GS1-128 provides rules for organizing that data meaningfully.
Code 128 example:
ABC123LOT456EXP20251231
Data is present but meaning is ambiguous. What is ABC123? What is LOT456? Is 20251231 a date?
GS1-128 example with AIs:
(01)00614141123452(10)LOT456(17)251231
Meaning is explicit: (01) = GTIN product identifier, (10) = batch/lot number, (17) = expiration date (YYMMDD format).
This standardization enables:
- Automated parsing by scanning systems without programming each data element
- Global interoperability between different companies' systems
- Error prevention through defined data formats and lengths
- Flexible data combinations with multiple AIs in one barcode
For more on the underlying Code 128 symbology, see our Complete Guide to Code 128.
Technical Architecture
Symbol Structure
A GS1-128 barcode consists of several key components:
[Start] [FNC1] [AI] [Data] [FNC1] [AI] [Data] ... [Check Digit] [Stop]
Components explained:
-
Start Character: Code 128 start (typically Start C for numerical efficiency)
-
FNC1: Function Code 1 character that identifies this as GS1-128 (not standard Code 128)
- Not visible in human-readable interpretation
- Critical for scanner recognition
- Appears at start and as separator between variable-length data elements
-
Application Identifier (AI): 2-4 digit prefix in parentheses (human-readable only; not encoded in bars)
- Defines the meaning of the data that follows
- Example: (01) for GTIN, (10) for batch number, (21) for serial number
-
Data: The actual information (GTIN, date, quantity, etc.)
- Format defined by the AI specification
- Can be fixed length (no separator needed) or variable length (FNC1 separator required)
-
Check Digit: Code 128 modulo 103 check digit (automatic)
-
Stop Character: Code 128 stop pattern
Application Identifiers (AIs) Explained
Application Identifiers are the heart of GS1-128's power. They transform ambiguous data into structured, meaningful information.
Format: AIs are 2-4 digits displayed in parentheses in human-readable text but encoded as plain numbers in the barcode (parentheses are not encoded).
Example:
- Human-readable:
(01)00614141123452 - Barcode encodes:
01followed by00614141123452
Two types of AIs:
Fixed-length AIs:
- Data length is predefined by the AI definition
- No separator needed after the data
- Scanner knows exactly how many characters to read
- Example: AI (01) GTIN is always 14 digits
Variable-length AIs:
- Data length varies (up to maximum defined by AI)
- Requires FNC1 separator after the data (or end of barcode)
- Scanner reads until FNC1 or end of symbol
- Example: AI (10) batch/lot number is up to 20 alphanumeric characters
Encoding Process
When you generate a GS1-128 barcode, the system:
- Validates data: Checks that each data element matches its AI format requirements
- Inserts FNC1: Adds FNC1 at start and after variable-length data elements
- Optimizes subsets: Switches between Code 128 subsets (A, B, C) for efficiency
- Calculates check digit: Computes Code 128 modulo 103 check digit
- Generates bars and spaces: Creates the physical barcode pattern
- Formats human-readable: Adds AIs in parentheses below bars
This complexity is handled automatically by proper GS1-128 barcode generators, ensuring compliance with standards.
Common Application Identifiers (AIs)
GS1 defines over 100 Application Identifiers. Here are the most commonly used in logistics and supply chain:
Product Identification
AI (01) - Global Trade Item Number (GTIN)
- Format: 14 digits (numeric)
- Length: Fixed (14)
- Purpose: Identifies the product/SKU
- Example:
(01)00614141123452 - Notes:
- Most important AI for product identification
- Includes check digit in last position
- Different from the 12-digit UPC or 13-digit EAN (GTIN-14 adds indicator digit)
- Must use GS1-licensed company prefix
AI (02) - GTIN of Contained Trade Items
- Format: 14 digits (numeric)
- Length: Fixed (14)
- Purpose: Identifies the product inside the packaging (when different from outer package GTIN)
- Example:
(02)00614141123469 - Usage: Cases containing different products than the case itself
Batch and Serial Numbers
AI (10) - Batch or Lot Number
- Format: Alphanumeric
- Length: Variable, up to 20 characters
- Purpose: Manufacturer's batch/lot number for traceability
- Example:
(10)LOT456ABC - Notes:
- Critical for recalls and traceability
- Requires FNC1 separator after data (if followed by another AI)
- Format determined by manufacturer
AI (21) - Serial Number
- Format: Alphanumeric
- Length: Variable, up to 20 characters
- Purpose: Unique serial number for individual item tracking
- Example:
(21)SN123456789 - Notes:
- Each unit has unique serial number
- Enables unit-level traceability
- Used in track-and-trace, anti-counterfeiting
- Requires FNC1 separator
Dates
AI (11) - Production Date (YYMMDD)
- Format: 6 digits (YYMMDD)
- Length: Fixed (6)
- Purpose: Date of production/manufacture
- Example:
(11)251231= December 31, 2025
AI (13) - Packaging Date (YYMMDD)
- Format: 6 digits (YYMMDD)
- Length: Fixed (6)
- Purpose: Date of packaging
- Example:
(13)250615= June 15, 2025
AI (15) - Best Before Date (YYMMDD)
- Format: 6 digits (YYMMDD)
- Length: Fixed (6)
- Purpose: Best before or best by date
- Example:
(15)260101= January 1, 2026
AI (17) - Expiration Date (YYMMDD)
- Format: 6 digits (YYMMDD)
- Length: Fixed (6)
- Purpose: Use by / expiration date
- Example:
(17)251231= December 31, 2025 - Notes: Most common date AI for perishables and pharmaceuticals
Quantities and Measurements
AI (30) - Variable Count
- Format: Numeric, up to 8 digits
- Length: Variable (1-8)
- Purpose: Count of items in variable quantity trade item
- Example:
(30)1250= 1,250 items
AI (310n) - Net Weight in Kilograms (n = decimal point position)
- Format: 6 digits (numeric)
- Length: Fixed (6)
- Purpose: Net weight in kg
- Example:
(3101)000125= 12.5 kg (n=1 means 1 decimal place)
AI (320n) - Net Weight in Pounds
- Format: 6 digits (numeric)
- Length: Fixed (6)
- Purpose: Net weight in pounds
AI (37) - Count of Trade Items
- Format: Numeric, up to 8 digits
- Length: Variable (1-8)
- Purpose: Number of units contained
- Example:
(37)25= 25 units in this package
Logistics Units
AI (00) - Serial Shipping Container Code (SSCC)
- Format: 18 digits (numeric)
- Length: Fixed (18)
- Purpose: Unique identifier for logistics units (pallets, containers, shipments)
- Example:
(00)006141412312345678 - Notes:
- Most important AI for logistics tracking
- Globally unique identifier
- Details in SSCC section below
AI (20) - Internal Product Variant
- Format: 2 digits (numeric)
- Length: Fixed (2)
- Purpose: Internal variant number (color, size, etc.)
- Example:
(20)05= Variant 05
Additional Information
AI (240) - Additional Product Identification
- Format: Alphanumeric, up to 30 characters
- Length: Variable
- Purpose: Secondary product identification assigned by manufacturer
AI (241) - Customer Part Number
- Format: Alphanumeric, up to 30 characters
- Length: Variable
- Purpose: Customer's part number for the product
AI (400) - Customer Purchase Order Number
- Format: Alphanumeric, up to 30 characters
- Length: Variable
- Purpose: Links shipment to customer PO
AI (420) - Ship To / Deliver To Postal Code
- Format: Alphanumeric, up to 20 characters
- Length: Variable
- Purpose: Postal code for delivery destination
For the complete list of Application Identifiers, consult the GS1 General Specifications.
Serial Shipping Container Code (SSCC)
The SSCC is one of the most important applications of GS1-128 in logistics. It deserves special attention due to its central role in supply chain tracking.
What is an SSCC?
Serial Shipping Container Code (SSCC) is an 18-digit number that uniquely identifies a logistics unit—any item that needs to be tracked through the supply chain, such as:
- Pallets
- Cases/cartons
- Containers
- Roll cages
- Intermediate bulk containers (IBCs)
- Individual parcels
- Any unit being shipped or stored
Key properties:
- Globally unique: No two SSCCs are ever the same worldwide
- Non-significant: The number itself doesn't convey meaning (unlike GTINs which identify product type); it's simply a lookup key
- License-required: Generated using GS1 company prefix
- 18 digits: Fixed length for consistent processing
SSCC Structure
An SSCC consists of:
[Extension Digit] [GS1 Company Prefix] [Serial Reference] [Check Digit]
1 digit 7-10 digits 6-9 digits 1 digit
-----
18 total
Components:
-
Extension Digit (1 digit): Increases numbering capacity
- Typically 0-9
- Often used to indicate packaging level (0=pallet, 1=case, etc.) but not standardized
-
GS1 Company Prefix (7-10 digits): Your licensed GS1 number
- Length varies by country and when license was issued
- Example: 0614141 (7-digit prefix)
-
Serial Reference (6-9 digits): Sequential or random number you assign
- Length = 17 - (length of company prefix)
- You manage this numbering
- Can be sequential, random, or incorporate date/location codes
-
Check Digit (1 digit): Modulo 10 calculation for error detection
- Calculated from first 17 digits
- Automatically computed by barcode generators
Example SSCC breakdown:
0 0614141 123456789 7
│ │ │ │
│ │ │ └─ Check digit (calculated)
│ │ └─ Serial reference (you assign)
│ └─ GS1 company prefix (licensed)
└─ Extension digit
SSCC in GS1-128
SSCCs are encoded in GS1-128 barcodes using AI (00):
Human-readable format:
(00)006141412312345678
Usage:
- Typically the only data in an SSCC label barcode (though other AIs can be added)
- Printed large on shipping labels for easy scanning
- Often includes additional human-readable information (ship-to, from, PO number)
Label example:
SHIP TO: FROM:
Distribution Center DC5 Warehouse WH12
123 Main St 456 Oak Ave
Chicago, IL 60601 Atlanta, GA 30301
PO: 45678901
(00) 0 0614141 123456789 7
|||||||||||||||||||||||||||||||
[ GS1-128 Barcode ]
SSCC Generation and Management
Numbering strategies:
Sequential numbering:
- Simple: Start at 000000001 and increment
- Predictable and easy to manage
- Reveals volume to trading partners (competitive consideration)
Random numbering:
- Generate random numbers within your range
- Conceals volume information
- Requires database to track used numbers
Structured numbering:
- Encode location, date, or other info in serial reference portion
- Example: First 2 digits = warehouse location, next 4 = date, final 3 = sequence
- Easier troubleshooting but reduces available numbers
Best practices:
- Never reuse an SSCC (even years later)
- Maintain database of assigned SSCCs with associated data
- Plan numbering capacity: with 9-digit serial reference, you have 1 billion numbers
- Use extension digit to multiply capacity by 10 if needed
Generate SSCCs easily with our GS1-128 barcode generator by providing your GS1 company prefix and serial reference.
SSCC in EDI Transactions
SSCCs are critical in Electronic Data Interchange (EDI) for logistics:
ASN (Advance Ship Notice) - EDI 856:
- Sent before shipment arrives
- Lists each SSCC with contained products, quantities, PO numbers
- Receiving facility prepares for arrival based on ASN data
- SSCC on physical label matches SSCC in EDI transaction
Receiving confirmation - EDI 861:
- Confirms receipt of specific SSCCs
- Updates inventory systems
- Triggers payment processes
Warehouse shipping order - EDI 940:
- Requests shipment of specific SSCCs
- Coordinates warehouse operations
This integration of physical barcodes with electronic transactions creates a seamless supply chain where information flows ahead of physical goods, enabling efficient receiving, routing, and inventory management.
GS1-128 in Logistics and Warehousing
Shipping Labels
GS1-128 shipping labels are the workhorses of modern logistics, containing multiple data elements in a single scannable barcode.
Common data combinations:
Basic carton label:
(01)00614141123452 ← Product GTIN
(37)25 ← Contains 25 units
(10)LOT2024-456 ← Batch number
(17)251231 ← Expiration date
Pallet label (SSCC):
(00)006141412312345678 ← Unique pallet ID
Advanced shipping label:
(00)006141412312345678 ← SSCC for tracking
(01)00614141123452 ← Product GTIN
(37)100 ← Contains 100 units
(10)LOT2024-456 ← Batch number
(400)PO-123456 ← Customer PO number
(420)60601 ← Ship-to postal code
Benefits in Warehouse Operations
Receiving:
- Single scan captures all relevant data
- Automatic verification against ASN (Advance Ship Notice)
- Instant batch and expiry date capture for FIFO management
- Reduced receiving time (60-80% faster than manual entry)
Put-away:
- SSCC links to location in WMS (Warehouse Management System)
- Batch tracking for lot control
- Expiry date tracking for rotation
Picking:
- Verify correct product with GTIN scan
- Confirm batch and expiry if required
- Track picked quantities automatically
Packing:
- Generate new SSCC for outbound shipment
- Link picked items to new SSCC
- Create ASN with SSCC and contents
Shipping:
- Scan SSCC to confirm outbound shipment
- Integrate with carrier systems
- Update inventory in real-time
Integration with WMS Systems
Modern Warehouse Management Systems (WMS) are designed for GS1-128 integration:
Configuration requirements:
- AI parsing rules: WMS must understand how to separate and interpret each AI
- Data mapping: Map each AI to appropriate database fields (GTIN→product_id, batch→lot_number, etc.)
- Validation rules: Ensure scanned data meets business rules (expiry dates not in past, etc.)
- FNC1 handling: Scanner or middleware must properly handle FNC1 separators
Implementation considerations:
- Scanner configuration: Enable GS1-128 symbology and AI parsing
- Middleware: Some systems use middleware to parse GS1-128 before sending to WMS
- Database design: Ensure fields exist for all AIs you plan to capture
- Testing: Thoroughly test all AI combinations your suppliers use
Workflow example:
- Scan GS1-128 barcode on incoming carton
- WMS receives parsed data: GTIN=00614141123452, BATCH=LOT456, EXPIRY=251231
- WMS looks up product details via GTIN
- WMS records batch and expiry for inventory tracking
- WMS suggests put-away location based on product and expiry
- WMS generates license plate (internal SSCC) for location tracking
- Operator scans location barcode to confirm put-away
- Inventory updated in real-time with full traceability
Multi-Level Tracking
Complex supply chains often use GS1-128 at multiple levels:
Item level:
- Individual pharmaceutical packages with GTIN, serial number, batch, expiry
- AI combination: (01) + (21) + (10) + (17)
Case level:
- Cases containing multiple items
- AI combination: (02) for case GTIN + (37) for unit count + batch and dates
Pallet level:
- SSCC identifying the entire logistics unit
- AI (00) with optional case/item GTINs if mixed pallet
Container level:
- Container or shipment-level SSCC
- Links to multiple pallet SSCCs in EDI transactions
This hierarchy enables drill-down traceability from container → pallet → case → item, critical for recalls and regulatory compliance.
Industry Applications
Retail Distribution
Use case: Consumer packaged goods from manufacturer to retail distribution center
Typical label (case):
(01)00614141999996 ← GTIN of case (12 items)
(02)00614141123452 ← GTIN of individual items inside
(37)12 ← Contains 12 units
(10)LOT-2024-SEP-15 ← Production batch
(15)260315 ← Best before date (March 15, 2026)
Benefits:
- Retailer confirms correct product received (case vs. item GTIN)
- Automatic FIFO management based on best-before date
- Recall capability via batch number
- Carton count verification without opening boxes
Food and Beverage
Use case: Fresh or perishable food products requiring strict expiry management
Typical label:
(01)00614141777778 ← GTIN
(10)PROD20241115 ← Production lot
(17)241130 ← Use by date
(3103)002450 ← Net weight 24.50 kg (AI 310n with n=3)
Benefits:
- Automated expiry date checking at receiving
- FEFO (First Expired, First Out) warehouse management
- Traceability for food safety incidents
- Weight verification for compliance
Pharmaceutical and Healthcare
Use case: Prescription medications requiring serialization for track-and-trace regulations (DSCSA, EU FMD)
Typical label:
(01)00357000123456 ← GTIN (NDC in GTIN-14 format)
(17)231231 ← Expiration date
(10)LOT456ABC ← Batch number
(21)SN1234567890 ← Unique serial number
Benefits:
- Unit-level traceability through entire supply chain
- Anti-counterfeiting via serial number verification
- Regulatory compliance (FDA, EMEA requirements)
- Automated medication administration record (MAR) in hospitals
- Recall precision to individual packages
Automotive Parts
Use case: Parts tracking from supplier to OEM assembly plant
Typical label:
(01)00614141888889 ← GTIN of part
(241)CUSPART-12345 ← Customer (OEM) part number
(10)SUPPLIER-LOT-789 ← Supplier batch
(37)50 ← Quantity in container
Benefits:
- Cross-reference supplier part number to OEM part number
- JIT (Just In Time) manufacturing coordination
- Quality tracking by supplier batch
- Warranty claim traceability
Third-Party Logistics (3PL)
Use case: 3PL warehouse managing inventory for multiple clients
Typical label (pallet):
(00)006141412312345678 ← SSCC for pallet tracking
(01)00614141123452 ← Product GTIN
(37)600 ← Total units on pallet
(410)5555555555 ← Ship-to location code (GLN)
(400)PO-CUST-12345 ← Customer PO number
Benefits:
- Single pallet ID (SSCC) for entire logistics unit
- Links to customer and destination
- Accurate inventory by customer in shared warehouse
- Efficient cross-docking operations
Scanner Configuration and Parsing
Enabling GS1-128 on Scanners
Most modern barcode scanners support GS1-128, but it must be configured correctly:
Configuration steps:
-
Enable Code 128 symbology: GS1-128 uses Code 128, so it must be enabled
-
Enable GS1-128 mode: Often labeled as:
- "GS1-128" or "EAN-128" or "UCC-128"
- "Application Identifier mode"
- "FNC1 character substitution"
-
Configure FNC1 output: Choose how FNC1 separators are transmitted:
- GS character (ASCII 29): Most common, separates AIs in output
- Custom character: Some systems use
|or~or other delimiter - No output: FNC1 recognized but not transmitted (requires fixed-length AI knowledge)
-
Enable AI parsing (if available): Scanner outputs AIs in specific format
- Example:
01=00614141123452, 10=LOT456, 17=251231 - Simplifies downstream parsing
- Example:
-
Test configuration: Scan GS1-128 test labels and verify output format
Example scanner output with GS1-128 mode enabled:
01006141411234521710LOT456GS17251231
Where GS represents the ASCII 29 (Group Separator) character transmitted for FNC1.
Parsing Application Identifiers
Receiving systems must parse the scanned data into individual AI components:
Parsing algorithm:
- Identify FNC1/GS characters: These separate variable-length AIs
- Read first AI: First 2-4 digits (consult AI table for length)
- Determine if fixed or variable length: Look up AI in specification
- Extract data:
- Fixed-length: Read specified number of characters
- Variable-length: Read until next FNC1/GS or end of string
- Repeat: Continue until all data parsed
Example parsing:
Input string (with GS shown as <GS>):
010061414112345210LOT456<GS>17251231
Parsing:
- Position 0-1: AI =
01(GTIN, fixed 14 digits) - Position 2-15: Data =
00614141123452(14 digits) - Position 16-17: AI =
10(Batch, variable up to 20) - Position 18-24: Data =
LOT456(until GS) - Position 25-26: AI =
17(Expiry date, fixed 6 digits) - Position 27-32: Data =
251231(6 digits, end of string)
Result:
GTIN: 00614141123452
Batch: LOT456
Expiry: 251231 (December 31, 2025)
Software Libraries and Tools
Many programming languages have libraries for GS1-128 parsing:
JavaScript/Node.js:
gs1-barcode-parser(npm package)
Python:
gs1-decoderor custom regex parsing
Java:
- Apache Commons GS1 parser
- Custom parsers using GS1 AI tables
C#/.NET:
- Built-in parsing in many WMS systems
- Custom parsers using AI lookup tables
Scanner/middleware solutions:
- Some scanners output pre-parsed data
- Middleware applications (e.g., Zebra Savanna, Honeywell Mobility SDK) can parse before sending to host system
Best practice: Use established libraries rather than building custom parsers to ensure compliance with GS1 standards and handle edge cases.
Implementation Best Practices
Label Design
Layout guidelines:
-
Barcode size:
- Minimum height: 1 inch (25mm) for reliable scanning
- Width: Varies by data content (typically 2-4 inches)
- X-dimension: 0.010" (10 mil) minimum for logistics
-
Human-readable interpretation:
- Display AIs in parentheses:
(01)00614141123452 - Place below barcode
- Font size: 10-12pt minimum
- Include all data from barcode
- Display AIs in parentheses:
-
Quiet zones:
- Minimum 10X (10 times narrow bar width) on both sides
- Keep text, graphics, edges away from quiet zones
- Account for printer tolerances
-
Additional information:
- Ship-to, ship-from addresses
- Carrier routing information
- Human-readable product description
- Company logos and branding
-
Label material and adhesive:
- Durable for supply chain environment
- Adhesive suitable for substrate (corrugate, plastic, etc.)
- Resistant to temperature, moisture as needed
Generate compliant labels using our GS1-128 barcode generator with proper sizing and quiet zones.
Data Quality and Validation
Before printing:
- Validate GS1 company prefix: Ensure you're using your licensed prefix
- Check data formats: Each AI has specific format requirements (numeric, alphanumeric, date formats)
- Verify data lengths: Don't exceed maximum lengths for variable AIs
- Test check digits: For GTINs and SSCCs, verify check digit calculations
- Confirm date formats: Use YYMMDD format, validate dates are logical (expiry after production)
During production:
- Print quality verification: Follow barcode print quality standards
- Scan testing: Test-scan every label design before production
- Database integration: Ensure label data matches your database records
- Batch tracking: Maintain records of labels printed for traceability
Quality assurance:
- Regular verification: Use barcode verifiers for Grade C minimum
- Scanner compatibility: Test with various scanner models (handheld, fixed-position)
- Environmental testing: Test labels in actual conditions (cold, heat, moisture)
- Partner validation: Share samples with trading partners before production
Trading Partner Coordination
Communication requirements:
- AI usage agreement: Which AIs will be included in barcodes?
- Data formats: Specific formats for variable-length AIs (batch numbers, etc.)
- Label specifications: Size, placement, material requirements
- EDI integration: ASN transaction specifications and timing
- Exception handling: Procedures for damaged or missing labels
Testing protocol:
- Share test labels: Send samples before production
- Conduct scan tests: Partner tests with their equipment
- EDI test transactions: Exchange test ASN messages
- Dry run: Test full process with small pilot shipment
- Go-live checklist: Confirm all systems ready before full implementation
Common Implementation Mistakes
Mistake 1: Not licensing GS1 numbers
- Issue: Using fake or unlicensed company prefixes
- Consequence: Non-compliant barcodes, retailer rejection, legal issues
- Solution: License proper GS1 company prefix from GS1 organization
Mistake 2: Incorrect AI formatting
- Issue: Using fixed-length format for variable AIs or vice versa
- Consequence: Parsing errors, wrong data extracted
- Solution: Consult GS1 AI table, use compliant generator software
Mistake 3: Poor print quality
- Issue: Barcodes that don't meet Grade C minimum
- Consequence: Scanning failures, supply chain delays
- Solution: Follow print quality verification guide
Mistake 4: Insufficient quiet zones
- Issue: Text, graphics, or edges too close to barcode
- Consequence: Scanning failures even with good print quality
- Solution: Use minimum 10X quiet zones, account for cutting tolerances
Mistake 5: Reusing SSCCs
- Issue: Using same SSCC for multiple shipments over time
- Consequence: Database conflicts, tracking errors, EDI failures
- Solution: Never reuse SSCCs—they must be permanently unique
Mistake 6: Incomplete scanner configuration
- Issue: Scanner not properly configured for GS1-128 parsing
- Consequence: Data not separated correctly, manual parsing required
- Solution: Configure FNC1 substitution and AI parsing correctly
Mistake 7: Inadequate testing
- Issue: Deploying without testing with trading partners' systems
- Consequence: Shipment rejections, returns, relationship damage
- Solution: Comprehensive testing with actual partner systems before production
Comparison with Alternatives
GS1-128 vs. Standard Code 128
| Aspect | GS1-128 | Code 128 |
|---|---|---|
| Data structure | Standardized with AIs | Freeform alphanumeric |
| Global standard | GS1-defined | ISO/IEC 15417 symbology only |
| Typical use | Supply chain, logistics | General-purpose encoding |
| Multiple data elements | Yes, with AIs | Possible but non-standard |
| Licensing required | Yes (for GTINs/SSCCs) | No |
| Automated parsing | Yes, with AI table | No standard method |
| Interoperability | Global | Limited to same system |
When to use Code 128 instead:
- Internal-only tracking (no trading partners)
- Single data element (tracking number, etc.)
- No GS1 licensing or compliance requirements
- General alphanumeric data encoding
See our Complete Guide to Code 128 for more on the underlying symbology.
GS1-128 vs. 2D Barcodes
GS1-128 advantages:
- Well-established in logistics industry
- Lower printing cost (linear printing)
- Longer readable range (laser scanners)
- Simple label design
2D barcode advantages (Data Matrix, QR Code):
- Much higher data capacity
- Smaller physical size for same data
- Better error correction
- Readable even when partially damaged
When to use 2D instead:
- Limited label space (small items)
- Large data requirements (>48 characters)
- Harsh environments (damage likely)
- Direct part marking (DPM) applications
GS1 also defines standards for 2D barcodes:
- GS1 Data Matrix: 2D alternative using Application Identifiers
- GS1 QR Code: QR codes with GS1 AI structure
Many modern applications use both: GS1-128 for case and pallet labels (easy scanning at distance) and GS1 Data Matrix for item-level serialization (space-efficient).
GS1-128 vs. RFID
GS1-128 advantages:
- Much lower cost per tag
- No reader infrastructure investment
- Works everywhere (universal scanner support)
- No interference issues
RFID advantages:
- No line-of-sight required
- Read multiple tags simultaneously (bulk scanning)
- Read/write capability (update data)
- Longer range (depends on frequency)
- Faster throughput
Industry trend: Hybrid approach
- GS1-128 on outer packaging for reliability and cost
- RFID on items for inventory visibility and anti-theft
- SSCC links physical barcode to RFID data
Advanced Topics
Concatenating Multiple AIs
One of GS1-128's key benefits is encoding multiple data elements in one barcode:
Example: Pharmaceutical packaging
(01)00357000123456(17)231231(10)LOT456ABC(21)SN1234567890
Encoded data:
- Product: GTIN 00357000123456
- Expiry: December 31, 2023
- Batch: LOT456ABC
- Serial: SN1234567890
AI ordering recommendations:
- Start with most important (often GTIN with AI 01)
- Place fixed-length AIs before variable-length when possible (reduces FNC1 characters needed)
- Group related AIs together (dates, measurements, etc.)
- Follow industry conventions for your sector
Length limitations:
- Code 128 supports very long strings, but practical limits apply
- Label size restricts barcode width (typically 48 characters maximum practical)
- More data = wider barcode = larger label = higher cost
- Balance data requirements with physical constraints
GS1-128 in EDI Integration
Advance Ship Notice (ASN) workflow:
-
Warehouse prepares shipment:
- Creates SSCCs for pallets
- Prints GS1-128 labels with SSCCs
- Records contents of each SSCC in WMS
-
ASN generation (EDI 856):
- WMS exports shipment data to EDI system
- EDI 856 transaction created with:
- Shipment header (carrier, ship date, etc.)
- For each SSCC: contained GTINs, quantities, batches, dates
- ASN transmitted to recipient before physical shipment
-
Receiving facility preparation:
- Receives ASN electronically
- Imports data into receiving WMS
- Prepares dock space, put-away locations
- Expects specific SSCCs
-
Physical receiving:
- Scan SSCC on pallet
- WMS matches to ASN data
- Automatic verification: expected vs. received
- Put-away directions based on ASN content info
- Discrepancy handling for unexpected SSCCs
-
Receipt confirmation (EDI 861):
- WMS generates receipt confirmation
- EDI 861 transaction with received SSCCs
- Sent back to shipper
- Updates both parties' inventory systems
Benefits of GS1-128 + EDI integration:
- Paperless transactions (reduced admin costs)
- Advance visibility (prepare before arrival)
- Automatic verification (reduce receiving errors)
- Real-time inventory updates
- Faster receiving throughput (60-80% improvement typical)
GS1 Digital Link
GS1 Digital Link is a newer standard that combines GS1 keys (like GTINs and SSCCs) with web URIs, enabling a single barcode to:
- Provide traditional supply chain identification
- Link to online product information when scanned by consumers
- Support track-and-trace applications
- Enable smart packaging applications
Example GS1 Digital Link in QR code:
https://example.com/01/00614141123452/10/LOT456/21/SN123
This URL structure encodes the same AI data (GTIN, batch, serial) but can be:
- Scanned in supply chain with GS1-compatible scanners (extract AIs)
- Scanned by consumers with smartphones (open webpage)
- Used in track-and-trace systems (web-based verification)
Future direction: GS1 is transitioning toward 2D barcodes (QR Code, Data Matrix) with Digital Link for retail packaging, replacing traditional UPC-A and EAN-13 over the next decade (2027+ timeline). However, GS1-128 will remain the standard for logistics and supply chain for the foreseeable future.
Troubleshooting and Support
Common Scanning Issues
Issue: Scanner doesn't read GS1-128 barcode
- Possible causes:
- Code 128 symbology disabled on scanner
- GS1-128 mode not enabled
- Poor print quality (see verification guide)
- Insufficient quiet zones
- Solutions:
- Enable Code 128 in scanner configuration
- Enable GS1-128/EAN-128/UCC-128 mode
- Verify print quality with verifier
- Test with different scanner
Issue: Data parsed incorrectly
- Possible causes:
- FNC1 not configured correctly on scanner
- Software parsing logic incorrect
- Variable-length AI not separated with FNC1
- Solutions:
- Configure FNC1 output as GS (ASCII 29)
- Review parsing algorithm against GS1 specs
- Verify barcode generation included FNC1 separators
Issue: SSCC rejected by trading partner system
- Possible causes:
- SSCC reused (not unique)
- Check digit incorrect
- Company prefix not recognized
- SSCC not in ASN transaction
- Solutions:
- Verify check digit calculation
- Confirm GS1 company prefix correct
- Ensure ASN transmitted before shipment arrival
- Check for SSCC uniqueness in your database
Testing Resources
Test barcode generation:
- Use our GS1-128 barcode generator to create test labels
- Verify output with our barcode scanner for correct data encoding
- Generate samples with various AI combinations for comprehensive testing
Print quality testing:
- Follow barcode quality verification guidelines
- Use ISO-compliant verifier for Grade C minimum confirmation
- Test with multiple scanner types (laser, linear imager, 2D imager)
GS1 resources:
- GS1 General Specifications - Complete technical documentation
- GS1 Company Database (GEPIR) - Verify company prefixes
- GS1 Training and Certification - Official courses
Scanner vendor resources:
- Zebra Technologies: Scanner configuration guides
- Honeywell: Barcode scanning best practices
- Datalogic: Application notes for GS1-128
Conclusion and Next Steps
GS1-128 is the cornerstone of modern supply chain communication, enabling standardized, efficient, and reliable data capture from warehouse receiving to retail checkout. By combining the versatile Code 128 symbology with globally standardized Application Identifiers, it allows trading partners worldwide to exchange complex product, batch, date, and logistics information seamlessly.
Key Takeaways
- GS1-128 is not just a barcode type—it's a complete data communication standard built on Code 128
- Application Identifiers (AIs) transform ambiguous data into structured, meaningful information
- SSCCs provide unique identification for logistics units, enabling end-to-end supply chain visibility
- Multiple AIs in one barcode eliminate the need for multiple labels and enable efficient data capture
- Print quality matters—follow verification standards to ensure reliable scanning
- EDI integration multiplies GS1-128's value by linking physical barcodes to electronic transactions
- Trading partner coordination is essential for successful implementation
Getting Started with GS1-128
-
License GS1 company prefix: Contact GS1 to obtain your unique company prefix for GTINs and SSCCs
-
Define your AI requirements: Determine which Application Identifiers you need based on your industry and trading partners
-
Generate compliant barcodes: Use our GS1-128 barcode generator with your GS1 prefix and data
-
Design labels: Create label layouts with proper sizing, quiet zones, and human-readable interpretation
-
Test thoroughly:
- Verify data encodes correctly with our barcode scanner
- Test print quality following verification guidelines
- Conduct trials with trading partners' systems
-
Configure systems:
- Set up scanners for GS1-128 parsing
- Integrate with WMS or ERP systems
- Establish EDI transactions if applicable
-
Train staff: Ensure operators understand barcode scanning procedures, quality requirements, and troubleshooting
-
Monitor and improve: Track scanning success rates, quality trends, and system performance
Learn More
Explore related topics to build comprehensive barcode expertise:
Symbologies and types:
- Code 128 Barcode: Complete Guide for Logistics - The underlying symbology
- Data Matrix: Complete Guide - 2D alternative for space-constrained applications
- ITF-14 Barcode Generator - Carton-level identification
- EAN-13: Complete Guide - Retail product identification
Implementation guidance:
- Barcode Print Quality & Verification Guide - Ensure reliable scanning
- Choosing the Right Barcode Type - Decision framework
- Barcodes Across Industries - Industry-specific applications
Tools:
- Barcode Generator - Create all barcode types
- Online Barcode Scanner - Test and verify barcodes
GS1-128 powers efficient, accurate, and traceable supply chains worldwide. With proper implementation, it delivers rapid ROI through reduced errors, faster operations, and seamless trading partner integration. Start generating compliant GS1-128 barcodes today and join the global standard for supply chain excellence.