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:

  1. Start Character: Code 128 start (typically Start C for numerical efficiency)

  2. 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
  3. 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
  4. 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)
  5. Check Digit: Code 128 modulo 103 check digit (automatic)

  6. 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: 01 followed by 00614141123452

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:

  1. Validates data: Checks that each data element matches its AI format requirements
  2. Inserts FNC1: Adds FNC1 at start and after variable-length data elements
  3. Optimizes subsets: Switches between Code 128 subsets (A, B, C) for efficiency
  4. Calculates check digit: Computes Code 128 modulo 103 check digit
  5. Generates bars and spaces: Creates the physical barcode pattern
  6. 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:

  1. Extension Digit (1 digit): Increases numbering capacity

    • Typically 0-9
    • Often used to indicate packaging level (0=pallet, 1=case, etc.) but not standardized
  2. GS1 Company Prefix (7-10 digits): Your licensed GS1 number

    • Length varies by country and when license was issued
    • Example: 0614141 (7-digit prefix)
  3. 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
  4. 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:

  1. AI parsing rules: WMS must understand how to separate and interpret each AI
  2. Data mapping: Map each AI to appropriate database fields (GTIN→product_id, batch→lot_number, etc.)
  3. Validation rules: Ensure scanned data meets business rules (expiry dates not in past, etc.)
  4. 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:

  1. Scan GS1-128 barcode on incoming carton
  2. WMS receives parsed data: GTIN=00614141123452, BATCH=LOT456, EXPIRY=251231
  3. WMS looks up product details via GTIN
  4. WMS records batch and expiry for inventory tracking
  5. WMS suggests put-away location based on product and expiry
  6. WMS generates license plate (internal SSCC) for location tracking
  7. Operator scans location barcode to confirm put-away
  8. 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:

  1. Enable Code 128 symbology: GS1-128 uses Code 128, so it must be enabled

  2. Enable GS1-128 mode: Often labeled as:

    • "GS1-128" or "EAN-128" or "UCC-128"
    • "Application Identifier mode"
    • "FNC1 character substitution"
  3. 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)
  4. Enable AI parsing (if available): Scanner outputs AIs in specific format

    • Example: 01=00614141123452, 10=LOT456, 17=251231
    • Simplifies downstream parsing
  5. 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:

  1. Identify FNC1/GS characters: These separate variable-length AIs
  2. Read first AI: First 2-4 digits (consult AI table for length)
  3. Determine if fixed or variable length: Look up AI in specification
  4. Extract data:
    • Fixed-length: Read specified number of characters
    • Variable-length: Read until next FNC1/GS or end of string
  5. 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-decoder or 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:

  1. 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
  2. Human-readable interpretation:

    • Display AIs in parentheses: (01)00614141123452
    • Place below barcode
    • Font size: 10-12pt minimum
    • Include all data from barcode
  3. Quiet zones:

    • Minimum 10X (10 times narrow bar width) on both sides
    • Keep text, graphics, edges away from quiet zones
    • Account for printer tolerances
  4. Additional information:

    • Ship-to, ship-from addresses
    • Carrier routing information
    • Human-readable product description
    • Company logos and branding
  5. 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:

  1. Validate GS1 company prefix: Ensure you're using your licensed prefix
  2. Check data formats: Each AI has specific format requirements (numeric, alphanumeric, date formats)
  3. Verify data lengths: Don't exceed maximum lengths for variable AIs
  4. Test check digits: For GTINs and SSCCs, verify check digit calculations
  5. Confirm date formats: Use YYMMDD format, validate dates are logical (expiry after production)

During production:

  1. Print quality verification: Follow barcode print quality standards
  2. Scan testing: Test-scan every label design before production
  3. Database integration: Ensure label data matches your database records
  4. Batch tracking: Maintain records of labels printed for traceability

Quality assurance:

  1. Regular verification: Use barcode verifiers for Grade C minimum
  2. Scanner compatibility: Test with various scanner models (handheld, fixed-position)
  3. Environmental testing: Test labels in actual conditions (cold, heat, moisture)
  4. Partner validation: Share samples with trading partners before production

Trading Partner Coordination

Communication requirements:

  1. AI usage agreement: Which AIs will be included in barcodes?
  2. Data formats: Specific formats for variable-length AIs (batch numbers, etc.)
  3. Label specifications: Size, placement, material requirements
  4. EDI integration: ASN transaction specifications and timing
  5. Exception handling: Procedures for damaged or missing labels

Testing protocol:

  1. Share test labels: Send samples before production
  2. Conduct scan tests: Partner tests with their equipment
  3. EDI test transactions: Exchange test ASN messages
  4. Dry run: Test full process with small pilot shipment
  5. 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

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

AspectGS1-128Code 128
Data structureStandardized with AIsFreeform alphanumeric
Global standardGS1-definedISO/IEC 15417 symbology only
Typical useSupply chain, logisticsGeneral-purpose encoding
Multiple data elementsYes, with AIsPossible but non-standard
Licensing requiredYes (for GTINs/SSCCs)No
Automated parsingYes, with AI tableNo standard method
InteroperabilityGlobalLimited 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:

  1. Warehouse prepares shipment:

    • Creates SSCCs for pallets
    • Prints GS1-128 labels with SSCCs
    • Records contents of each SSCC in WMS
  2. 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
  3. Receiving facility preparation:

    • Receives ASN electronically
    • Imports data into receiving WMS
    • Prepares dock space, put-away locations
    • Expects specific SSCCs
  4. 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
  5. 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 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:

Print quality testing:

GS1 resources:

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

  1. License GS1 company prefix: Contact GS1 to obtain your unique company prefix for GTINs and SSCCs

  2. Define your AI requirements: Determine which Application Identifiers you need based on your industry and trading partners

  3. Generate compliant barcodes: Use our GS1-128 barcode generator with your GS1 prefix and data

  4. Design labels: Create label layouts with proper sizing, quiet zones, and human-readable interpretation

  5. Test thoroughly:

  6. Configure systems:

    • Set up scanners for GS1-128 parsing
    • Integrate with WMS or ERP systems
    • Establish EDI transactions if applicable
  7. Train staff: Ensure operators understand barcode scanning procedures, quality requirements, and troubleshooting

  8. 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:

Implementation guidance:

Tools:

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.

29 min read

Frequently Asked Questions

What is the difference between Code 128 and GS1-128?
Code 128 is the underlying barcode symbology that encodes alphanumeric data. GS1-128 uses Code 128 but adds a standardized data structure with Application Identifiers (AIs) that define what each data element means (e.g., GTIN, batch number, expiry date). GS1-128 always starts with FNC1 character and follows GS1 formatting rules.
What are Application Identifiers (AIs)?
Application Identifiers are 2-4 digit prefixes that identify the type of data that follows in a GS1-128 barcode. For example, AI (01) indicates a GTIN, AI (10) indicates a batch/lot number, and AI (21) indicates a serial number. This standardization allows scanners and systems worldwide to interpret the data correctly.
Do I need a GS1 company prefix to use GS1-128?
Yes, for compliant GS1-128 barcodes containing GTINs or SSCCs, you need a GS1 company prefix licensed from GS1. This ensures your numbers are globally unique. For internal-use barcodes without GTINs, you can use Code 128 instead without GS1 licensing.
What is an SSCC and when should I use it?
Serial Shipping Container Code (SSCC) is an 18-digit number that uniquely identifies a logistics unit (pallet, carton, container). It's encoded in GS1-128 with AI (00). Use SSCCs for tracking shipments through the supply chain, especially in EDI transactions and automated warehouse systems.
Can GS1-128 encode multiple data elements in one barcode?
Yes, this is GS1-128's primary advantage. A single barcode can contain GTIN, batch number, expiration date, serial number, quantity, and more—all separated by FNC1 characters or defined by fixed lengths. This eliminates the need for multiple barcodes and enables efficient data capture.