Electronic Product Code
The Electronic Product Code (EPC) is a standardized numbering system and syntax for assigning unique, serialized identifiers to physical objects, trade items, logistics units, locations, and other entities in supply chains, primarily encoded on radio-frequency identification (RFID) tags to enable automatic identification and data capture without line-of-sight reading.[1] Developed in the early 2000s by the MIT Auto-ID Center—a research consortium involving universities and global corporations—EPC was created to extend beyond traditional barcodes by providing item-level granularity for tracking individual instances of products rather than just classes or manufacturers.[2] In 2003, the Auto-ID Center transitioned its work to EPCglobal Inc., a subsidiary of GS1, which formalized and promoted the standard globally, integrating it with GS1's existing identification keys like Global Trade Item Numbers (GTINs).[3] The EPC structure is defined in the GS1 EPC Tag Data Standard (TDS) (version 2.3, October 2025), which specifies how identifiers are encoded in binary format on UHF RFID tags compliant with ISO/IEC 18000-63 (Gen2) protocols, supporting up to 496 bits of data for various schemes such as Serialised Global Trade Item Numbers (SGTINs) or Global Location Numbers (GLNs).[4][5] This standard ensures interoperability across industries by mapping EPCs to human-readable GS1 keys and providing both pure identity encodings (without application data) and variable-length formats for enhanced flexibility.[5] Key features include hierarchical partitioning for elements like company prefixes, item references, and serial numbers, allowing scalability from individual items to pallets while maintaining privacy through optional filters and partition tables.[6] EPC technology underpins broader GS1 standards like the EPC Information Services (EPCIS) (version 2.0, 2022) for event-based visibility and the Core Business Vocabulary (CBV) for standardized terms and definitions in event data, facilitating applications in retail inventory management, logistics optimization, healthcare asset tracking, and manufacturing efficiency.[7][8] Adopted worldwide since its commercialization in the mid-2000s, EPC has driven RFID deployment in sectors handling billions of tagged items annually, improving accuracy, reducing labor costs, and enabling real-time data sharing among trading partners while adhering to international privacy guidelines.[9]Introduction
Definition and Purpose
The Electronic Product Code (EPC) is a GS1-standardized syntax for assigning globally unique identifiers to individual physical objects, trade items, logistics units, locations, documents, and other identifiable entities in supply chains.[5][10] Unlike traditional barcodes, which provide class-level identification for product types, the EPC enables instance-level uniqueness by incorporating serialization, such as serial numbers, to distinguish specific items within a class.[11] This structure is primarily encoded in binary format on RAIN RFID tags, bridging barcode-based GS1 identification keys with radio-frequency identification technology.[12][13] The primary purpose of the EPC is to facilitate automated, real-time identification, tracking, authentication, and data sharing across supply chains and Internet of Things (IoT) applications.[5][12] By encoding object-specific data—derived from GS1 keys like Global Trade Item Numbers (GTINs)—into RFID tags, the EPC supports seamless serialization and interoperability between trading partners, enabling efficient visibility from production to consumption.[13] For instance, a single EPC can uniquely identify a specific bottle of wine by combining its manufacturer's details, batch information, and serial number, allowing precise tracing without manual intervention.[12] Key benefits of the EPC include enhanced supply chain transparency, reduced inventory errors through accurate, non-line-of-sight reading, and support for scalable IoT ecosystems.[11] These advantages stem from the EPC's ability to handle high-volume identifications—up to thousands of objects per second—and integrate with standards like EPC Information Services (EPCIS) for event-based data exchange.[5] Overall, the EPC promotes efficiency by minimizing human error and enabling data-driven decisions in dynamic environments like retail and logistics.[11]Development History
The MIT Auto-ID Center was founded in 1999 by Kevin Ashton, a brand manager at Procter & Gamble, along with MIT researchers David Brock and Sanjay Sarma, with the goal of advancing radio-frequency identification (RFID) technology to enable automatic identification of individual items, surpassing the limitations of traditional barcodes like the Universal Product Code (UPC), which primarily identified product classes rather than unique instances.[14][15][16] The center, initially sponsored by companies including Procter & Gamble, Gillette, and Walmart, focused on developing a global system for tracking physical objects through low-cost RFID tags connected to networked databases.[17][18] In 2000, the center proposed the initial Electronic Product Code (EPC) as a 96-bit identifier designed for item-level tracking, addressing UPC's inability to serialize individual products and enabling unique identification across supply chains via RFID.[19] Early development involved collaborative pilots by sponsor companies; for instance, Gillette and Procter & Gamble tested EPC-enabled RFID tags on products like razor blades to demonstrate real-time inventory visibility, while Walmart participated in field trials to evaluate supply chain efficiencies.[20][21] These efforts built industry consensus on EPC's potential for scalable, automatic identification.[22] By October 2003, the Auto-ID Center concluded its operations, transferring research to the Auto-ID Labs network while establishing EPCglobal Inc. as an independent, neutral standards organization to manage EPC specifications and promote adoption.[23][24] In 2005, following the merger of EAN International and the Uniform Code Council into GS1, EPCglobal was integrated as a subsidiary, aligning EPC with GS1's global identification keys.[25] Key milestones under EPCglobal included the ratification of the Tag Data Standard Version 1.0 in 2004, which formalized EPC encoding guidelines, followed by Version 1.3 in 2006 incorporating direct mappings to GS1 keys for broader interoperability.[26] The standard has since evolved through the 1.x series, with a major update to Version 2.0 in September 2022 introducing EPC+ schemes for improved interoperability with barcodes and other enhancements, and Version 2.3 released in October 2025 supporting additional encoding options while maintaining backward compatibility.[5][27]Technical Encoding
Binary Structure
The Electronic Product Code (EPC) is encoded as a variable-length binary string designed for storage in RFID tags, with the most common length being 96 bits to align with the capabilities of Gen2 UHF RFID tags compliant with the ISO/IEC 18000-63 protocol.[28] This format ensures efficient transmission over the air interface while supporting interoperability in supply chain applications.[29] Variants of 64 bits or 128 bits are also supported depending on the tag hardware and application requirements, allowing flexibility for different data densities.[28] The structure is defined in the GS1 EPC Tag Data Standard version 2.3 (as of October 2025), which maintains the core binary encodings described here while introducing new schemes.[5] The general binary format of an EPC consists of an 8-bit header followed by variable-length type-specific data including filter, partition, and core components, with optional reserved bits.[28] The header identifies the EPC scheme, enabling readers to parse the subsequent bits correctly.[5] Type-specific data includes fields such as manager number, object class, and serial number, whose lengths are determined by the scheme and any partition values that divide shared bit spaces.[28] Optional bits, such as reserved areas, may pad the structure to meet byte alignment or protocol needs.[29] Encoding rules emphasize a compact binary representation to minimize tag memory usage, with rules for converting the binary EPC to a URI format via the GS1 Digital Link standard.[28] For instance, in a typical 96-bit EPC such as the SGTIN-96 variant, the breakdown allocates 8 bits to the header, 3 bits to the filter, 3 bits to the partition, 20 to 40 bits to the manager number and 4 to 24 bits to the object class (totaling 44 bits based on partition), and 38 bits to the serial number.[28] The total length is calculated as the sum of these fields, ensuring the structure fits within the designated tag memory while adhering to scheme-specific constraints—for example, totaling exactly 96 bits in the SGTIN-96 variant.[28] This binary structure is fully compatible with the ISO/IEC 18000-63 air interface protocol for Gen2 UHF RFID tags, facilitating global readability and data capture in automated systems.[28] The design prioritizes efficiency, with binary fields using pure numbering or variable partitioning to represent hierarchical identifiers without redundancy.[29]Header and Components
The Electronic Product Code (EPC) binary structure comprises several key fields that enable the encoding of unique identifiers in a compact format suitable for RFID tags. These include the header, filter, partition, and variable-length components such as the manager number, object class, and serial number. This organization allows for flexibility in representing diverse identification schemes while maintaining a fixed total bit length, typically 96 bits for common implementations.[4] The header is an 8-bit field at the beginning of the EPC encoding that specifies the particular EPC scheme being used, ensuring interoperability across systems. For instance, the binary value 00110000 indicates the SGTIN-96 scheme, while other values like 00110001 denote alternative formats. This field is essential for decoders to interpret the subsequent bits correctly.[4] Following the header, the filter is a 3-bit field that provides control information for data processing and granularity selection, with values ranging from 000 to 111 (0 to 7 in decimal). These bits help in filtering tags during reads, such as distinguishing between individual items (e.g., filter value 001) and larger units like cases or pallets (e.g., 110). The filter enhances efficiency in supply chain applications by allowing selective querying.[4] The partition field, typically 3 bits in 96-bit encodings, defines how the remaining bits are divided among the core components, using a predefined table to allocate lengths dynamically. This mechanism supports varying identifier sizes without altering the overall EPC length; for example, a partition value of 0 might assign more bits to the manager number, while higher values shift allocation toward the object class or serial number. The partition table ensures precise parsing of the variable fields.[4] The primary components of the EPC are the manager number, object class, and serial number, which together form the unique identifier. The manager number, representing a GS1-assigned company prefix, varies from 20 to 40 bits depending on the partition, encoding organizational authority over the identifier. The object class, denoting the product or item reference, ranges from 4 to 24 bits and specifies the type of object being identified. Finally, the serial number provides a unique instance identifier, 38 bits, ensuring individuality for each physical object. These components are encoded in pure binary to maximize compactness.[4] In a standard 96-bit EPC, the structure allocates 8 bits to the header, 3 bits to the filter, and 3 bits to the partition, leaving 82 bits for the components as determined by the partition value, with serial fixed at 38 bits and 44 bits shared between manager and object class. For example:| Field | Bits | Example Allocation (Partition 0) | Example Allocation (Partition 6) |
|---|---|---|---|
| Header | 8 | 8 | 8 |
| Filter | 3 | 3 | 3 |
| Partition | 3 | 3 | 3 |
| Manager Number | Variable | 40 | 20 |
| Object Class | Variable | 4 | 24 |
| Serial Number | 38 | 38 | 38 |
| Total | 96 | 96 | 96 |
EPC Schemes
SGTIN Scheme
The Serialized Global Trade Item Number (SGTIN) is an Electronic Product Code (EPC) scheme that encodes a Global Trade Item Number (GTIN) along with a unique serial number to identify individual instances of trade items, such as specific units of consumer products.[6] This scheme enables precise identification at the item level, distinguishing one unit from others sharing the same GTIN, which is essential for applications requiring granularity beyond basic product classification.[6] SGTIN exists in two primary variants to accommodate different serial number lengths and tag capacities: SGTIN-96, which uses a 96-bit binary encoding and is the most common for standard RFID implementations, and SGTIN-198, which employs a 198-bit encoding to support longer alphanumeric serial numbers of up to 20 characters.[6] The SGTIN-96 variant limits serial numbers to numeric values under 2^38 (approximately 274 billion), while SGTIN-198 allows full GS1-compliant alphanumeric serialization without such restrictions.[6] In terms of encoding, the SGTIN structure begins with an 8-bit header identifying the scheme (00110000 for SGTIN-96 and 00110110 for SGTIN-198), followed by a 3-bit filter value for business context, a 3-bit partition value that determines the allocation of bits between the manager number and object class, the manager number (derived from the GS1 Company Prefix portion of the GTIN, ranging 20-40 bits based on partition), the object class (derived from the GTIN's item reference including the indicator digit, 24-44 bits), and the serial number serving as the instance identifier (38 bits for SGTIN-96 or 140 bits for SGTIN-198).[6] The partition table standardizes these variable lengths; for instance, partition 000 allocates 40 bits to the manager number and 24 bits to the object class.[6] A practical example of SGTIN encoding involves a specific smartphone with GTIN 0123456789056 and serial number 123456789. Assuming a filter value of 011 (for item-level granularity) and partition 001 (for a 28-bit manager number from the GS1 prefix 01234567 and a 36-bit object class from the item reference 89056), the resulting SGTIN-96 binary EPC would pack these elements into 96 bits: header 00110000, filter 011, partition 001, manager number (binary equivalent of 01234567), object class (binary of 89056 with indicator), and serial number (38-bit binary of 123456789 padded as needed). This binary form can then be stored on an RFID tag for automatic identification.[6] The SGTIN scheme's key advantages include enabling product serialization for efficient recalls by pinpointing affected units, combating counterfeiting through unique instance verification, and supporting precise tracking throughout the supply chain to reduce errors and improve visibility.[6]SSCC and Other Logistic Schemes
The Serial Shipping Container Code (SSCC) is a 96-bit EPC scheme designed to provide a unique, persistent identifier for logistics units, such as pallets, cartons, shipping containers, or trade items, facilitating tracking and tracing throughout the supply chain.[6] It encodes the GS1 SSCC identification key, which consists of an 18-digit number excluding the modulo-10 check digit used in barcodes, resulting in 17 digits represented in the EPC: a single extension digit followed by the GS1 company prefix (6 to 12 digits) and a serial reference (the remaining digits to total 17).[6] The binary structure allocates 8 bits for the header (fixed at binary 00110001), 3 bits for the filter value (used for selective reading, with values such as 110 for unit loads), 3 bits for the partition (determining variable field lengths), a variable-length company prefix (20 to 40 bits), a variable-length serial reference (38 to 18 bits), and 24 reserved bits set to zero.[6] The partition field specifies the digit length of the company prefix and corresponding bit allocation, ensuring efficient packing within the 96 bits, as shown in the following table:| Partition Value | Company Prefix Digits | Company Prefix Bits | Serial Reference Digits | Serial Reference Bits |
|---|---|---|---|---|
| 0 | 12 | 40 | 5 | 18 |
| 1 | 11 | 37 | 6 | 21 |
| 2 | 10 | 34 | 7 | 24 |
| 3 | 9 | 30 | 8 | 28 |
| 4 | 8 | 27 | 9 | 31 |
| 5 | 7 | 24 | 10 | 34 |
| 6 | 6 | 20 | 11 | 38 |
GS1 Integration
Relation to GS1 Identification Keys
The Electronic Product Code (EPC) builds upon GS1 identification keys to enable unique identification in RFID-enabled supply chains, incorporating established keys such as the Global Trade Item Number (GTIN), which uses 8 to 14 digits to identify classes of trade items like products; the Serial Shipping Container Code (SSCC), an 18-digit identifier for logistic units such as shipments or pallets; and the Global Location Number (GLN), a 13-digit code for physical locations, legal entities, or functional entities like warehouses.[5][30] EPC schemes map directly to these GS1 keys for compatibility and extension: the Serialized Global Trade Item Number (SGTIN) combines a GTIN with a serial number to identify unique instances of trade items; the SSCC scheme encodes the full 18-digit SSCC key directly without additional serialization; and class-level EPCs, such as those for generic product classes, omit serial numbers to represent shared identifiers.[5] This mapping ensures that EPCs extend GS1 keys for instance-level tracking while maintaining alignment with barcode-based systems. As detailed in the EPC Schemes section, the SGTIN scheme exemplifies this by appending a serial reference to the GTIN. The EPC framework supports a hierarchical structure that links these elements in a unified identification system, connecting individual items via SGTIN to locations identified by the Serialized Global Location Number (SGLN, based on GLN with an optional extension digit) and to shipments via SSCC, facilitating end-to-end supply chain visibility.[5] EPC identifiers are expressed in GS1 Digital Link URI format for web resolution, such asurn:epc:id:sgtin:0614141.112345.400, where the components represent the GS1 Company Prefix (0614141), item reference (112345), and serial number (400), allowing resolution to online data sources like product details or logistics information through GS1 resolvers.[31][5]
Global uniqueness of EPCs is ensured by GS1 Company Prefixes, unique numeric codes assigned by GS1 member organizations to over two million companies worldwide, preventing duplication across the international supply chain.[5][32]