Skip to content
barcoder

Standards/gs1-composite

GS1 Composite

TypeComposite (1D+2D)
Completeness74%high

Overview

GS1 Composite symbology is a specialized barcode format that combines a linear (1D) component with a multi-row two-dimensional (2D) component into a single integrated symbol, enabling high data capacity in a small footprint [1]. The linear component carries the primary product identification so it remains readable by all scanning technologies, while the stacked 2D component above it carries supplementary GS1-formatted data for compatibility with linear and 2D imagers and with linear and rastering laser scanners [4]. It is defined by ISO/IEC 24723:2010 [2]. There are three composite-component variants: CC-A, CC-B, and CC-C [1].

History

GS1 Composite symbology was developed to extend existing linear GS1 barcodes (such as EAN/UPC and the GS1 DataBar family) with a 2D layer for additional structured data, while preserving backward-compatible scanning of the primary identifier through the linear component [4]. The symbology was standardized internationally as ISO/IEC 24723, with the current edition being ISO/IEC 24723:2010, which specifies the symbology characteristics, data-character encodation, symbol formats, dimensions, print-quality requirements, error-correction rules, and reference decoding algorithms [2].

Technical specification

A GS1 Composite symbol always consists of a primary linear component beneath a 2D component, the two joined by a separator pattern [5]. The permitted linear components are EAN-13, EAN-8, UPC-A, UPC-E, GS1-128, and any member of the GS1 DataBar family — Omnidirectional, Stacked Omnidirectional, Expanded, Expanded Stacked, Truncated, Stacked, and Limited [5].

The three composite-component (CC) variants differ in their 2D layer [1][5]:

  • CC-A — a space-saving variant of MicroPDF417 used as the 2D component, paired with an EAN/UPC or GS1 DataBar linear component. It encodes up to about 56 numeric characters (fewer if alphanumeric/punctuation data is used) and is widely used in retail [1][3].
  • CC-B — a full MicroPDF417 2D component, paired with EAN/UPC, GS1 DataBar, or GS1-128 linear components. It encodes up to about 338 alphanumeric characters and is common in healthcare/pharmaceutical labeling [1].
  • CC-C — a PDF417 2D component, used only with a GS1-128 linear component (GS1-128 Composite). It offers the largest capacity, approximately 800 characters [1][3].

Encoders select the variant automatically by data size: CC-A is chosen first if the data fits, otherwise CC-B; for GS1-128 Composite a CC-C component is used when the data exceeds CC-A/CC-B capacity [5]. The supplementary data follows the GS1 Application Identifier (AI) format, and FNC1 characters that delimit AIs are inserted automatically by the encoder where required rather than being supplied manually [5].

Use cases

GS1 Composite symbols are used where a primary GTIN-bearing linear code must carry additional supply-chain data in the same label space [6]. In healthcare and pharmaceuticals they encode batch/lot numbers and expiration dates alongside the product identifier to support traceability, patient safety, and regulatory compliance [6]. In fresh food and variable-measure retail they carry weight, expiry date, and lot information [6]. They are also used for coupons and loyalty-program tracking, and for general food traceability and logistics where end-to-end product tracking and data compliance are required [6].

Implementations

  • Zint (github.com/zint/zint) — C; open-source library that explicitly supports "GS1 Composite (EAN/UPC/DataBar/GS1-128)" as well as PDF417 and MicroPDF417; ~771 stars; actively maintained [7].
  • BWIPP (Barcode Writer in Pure PostScript) (github.com/bwipp/postscriptbarcode) — PostScript; provides a GS1 Composite Symbols module with automatic CC-A/CC-B/CC-C selection and automatic FNC1 insertion [5].

Comparison

Against a plain linear barcode, a GS1 Composite symbol adds a 2D component that multiplies data capacity (from a single GTIN up to hundreds of characters for CC-C) without sacrificing the broad scanner compatibility of the linear primary [1][4]. Within the family, CC-A (MicroPDF417-based, ~56 numeric) is the most compact, CC-B (full MicroPDF417, ~338 alphanumeric) is the mid-tier, and CC-C (PDF417-based, ~800 characters, GS1-128 only) is the highest capacity [1][3]. Some vendors now recommend single-symbol alternatives — GS1 DataBar Expanded, GS1 Data Matrix, or GS1 QR Code — over composite data in many new deployments [3].

Status

GS1 Composite symbology is an active ISO/IEC standard (ISO/IEC 24723:2010) and remains in production use across healthcare, fresh food, coupons, and logistics [2][6]. At the same time, some implementers are migrating toward single 2D GS1 symbols (GS1 Data Matrix / GS1 QR Code) for new applications [3].

Sources

  1. GS1 Composite Codes — Scandit
  2. ISO/IEC 24723:2010 — GS1 Composite bar code symbology specification — ISO, 2010
  3. GS1 DataBar Composite Barcode FAQ — BarcodeFAQ.com / IDAutomation
  4. Scan composite codes — Scandit Docs
  5. GS1 Composite Symbols — BWIPP wiki
  6. GS1 Composite Codes — CYBRA
  7. zint/zint — GitHub, accessed 2026

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · docs/standards/gs1-composite/index.md