Ken Traub Consulting LLC logo

Encoder/Decoder FAQ

See below for answers to questions about the Electronic Product Code (EPC), RFID User Memory, TID Memory, and the encoder and decoder software on this web site.

General Questions about the Electronic Product Code (EPC)

What's this all about?

The EPC Encoder/Decoder on this site is an interactive application that lets you translate between different forms of the Electronic Product Code (EPC).

What is the Electronic Product Code (EPC)?

The Electronic Product Code (EPC) is a system for the identification of individual physical objects, including trade items, logistics units, documents, service relations, locations, and other physical assets. Every physical object can be assigned a unique EPC, and with a unique EPC a physical object can be the subject of electronic information.

Why are there different forms of the EPC?

The EPC is designed to be used in a variety of ways, and the different forms exist to serve those needs. Most EPCs are derived from the identifiers defined in the GS1 System (see below), and so in one form the EPC looks like a GS1 Key. The "Pure Identity" form of the EPC is the main form that business applications and information systems use when they want to refer to any physical object by its EPC identifier. And there are two other forms, the "EPC Tag URI" and the "EPC Binary Encoding", that are used specifically in Radio-Frequency Identification (RFID) systems. This makes a total of four different forms. Any EPC can be represented in any of the four forms, except for certain EPCs that do not have the GS1 Key form.

Wait a minute: I thought the EPC and RFID were the same thing?

This is a common misunderstanding, but it is not true. The EPC is a unique identifier that an information system can use to refer to a specific physical object. An RFID tag is a data carrier that can be used to physically affix an EPC identifier to the object it identifies. The EPC is identifier data that is stored inside the memory of the RFID tag.

So the EPC is always stored in an RFID tag?

This is another common misunderstanding. An RFID Tag is one possible data carrier for an EPC. But an EPC can also be stored in 1-D and 2-D bar codes, or written in human-readable text, or transmitted in an electronic document, message, or database record. The "EPC Tag URI" and "EPC Binary Encoding" forms of the EPC are specifically designed for use with RFID Tags. The "Pure Identity" form of the EPC is used in electronic documents, messages, and databases. And the "GS1 Key" form of the EPC is used in bar codes, as well as electronic documents, messages, and databases that were originally designed to work with bar code data.

What is a GS1 Key?

A GS1 Key is an identifier defined as part of the GS1 System in the GS1 General Specifications. There are nine different types of GS1 Keys defined, each used to identify a specific type of thing. The type of a GS1 Key is indicated by an "Application Identifier" (AI), which is a short numeric code. For example, AI 01 denotes a Global Trade Item Number (GTIN), which is a type of GS1 Key used to identify trade items.

Is any GS1 Key also a valid EPC?

Not quite. An EPC always identifies a specific physical object. Some GS1 Keys, however, identify a class of object rather than a specific object. For example, a Global Trade Item Number (GTIN) by itself identifies a class of trade item, such as "2-liter Acme Bottled Water." An EPC can only identify a specific physical object, such as one particular 2-liter bottle of Acme water. In the case of a GTIN, only the combination of a GTIN plus a serial number corresponds to an EPC. Two other GS1 Keys, the Global Returnable Asset Identifier (GRAI) and the Global Document Type Identifier (GDTI), have an optional serial number which must be included in order to have a corresponding EPC. Other GS1 Keys, specifically the Serial Shipping Container Code (SSCC), the Global Location Number (GLN), the Global Individual Asset Identifier (GIAI), and the Global Service Relation Number (GSRN), have corresponding EPCs without any restriction. The Global Shipment Identifier Number (GSIN) and the Global Identification Number for Consignment (GINC) are GS1 Keys which have no EPC counterpart at all.

Does every EPC correspond to a GS1 Key?

Again, not quite. There is a type of EPC called the General Identifier (GID) which has no corresponding GS1 Key. There is also a special type of EPC used by the United States Department of Defense (USDoD) which has no corresponding GS1 Key. And finally, the Aerospace and Defense Identifier (ADI), which supports the Air Transport Association (ATA) SPEC-2000 standard and the US Department of Defense Unique Identification (UID) standard, does not have a corresponding GS1 Key. All other types of EPCs do correspond to GS1 Keys.

What about all the other Application Identifiers defined in the GS1 General Specifications?

Only GS1 Keys correspond to EPCs. Other Application Identifiers can be stored in the User Memory of RFID tags. See the User Memory Encoder and User Memory Decoder on this site, and the associated section of this FAQ.

Why am I prompted to enter the length of the GS1 Company Prefix?

When translating a GS1 Key to any of the other EPC forms, it is necessary to indicate how many digits within the GS1 Key belong to the GS1 Company Prefix (GCP). This is because in the other EPC forms, there is an explicit separation between the GCP and the rest of the identifier.

How do I know what GS1 Company Prefix length to enter?

In some cases, the EPC Encoder/Decoder can infer this information for you (see next question). In general, this is information you must obtain from some outside source. If you are the company or organization that issued the GS1 Key, then you should know the length of the GS1 Company Prefix because you used it to create the GS1 Key in the first place. If you are a trading partner of the company that issued the GS1 Key, you may ask that company. Some GS1 Member Organizations (the bodies responsible for issuing GS1 Company Prefixes to companies that create GS1 Keys) publish lists of GS1 Company Prefixes that you can consult.

What does it mean for the GS1 Company Prefix length to be "inferred"?

When you enter a GS1 Key, the EPC Encoder/Decoder tries to figure out for you the length of the GS1 Company Prefix so you don't have to enter it yourself. The EPC Encoder/Decoder consults a variety of sources to do this. In some cases, it uses data published by the GS1 Global Office. In other cases, it uses the GS1 Global Electronic Party Information Registry (GEPIR). When one of these sources provides a GS1 Company Prefix length, the EPC Encoder/Decoder displays a message to let you know where the length came from. You can always override this if you don't think it is correct. In some cases, none of the available sources provide the length, so you will have to enter a length yourself.

What is an EPC Pure Identity URI?

The EPC Pure Identity URI is a form of the EPC that is used in electronic documents, messages, and databases to refer to any physical object. "URI" stands for Universal Resource Identifier, which is used in many Internet-aware software systems to refer to any resource on the network. Because the EPC Pure Identity URI uses URI syntax, any physical object can be given a unique URI by assigning it an EPC. EPC Pure Identity URIs are used in the EPC Information Services (EPCIS), Object Name Services (ONS), and EPC Discovery Services standards.

What are the EPC Tag URI and the EPC Binary Encoding?

These are forms of the EPC that are used exclusively within hardware and software systems that interact with Radio Frequency Identification (RFID) tags. When an EPC is stored in an RFID tag, it is accompanied by additional "control" information that helps RFID tags and readers interact more efficiently. The EPC Tag URI includes this additional "control" information, but like the EPC Pure Identity URI uses a syntax that is easy for humans and software to parse and understand. The EPC Binary Encoding contains exactly the same information, but it is compacted into a very efficient string of binary ones and zeros, in order to require as little memory as possible in the RFID tag itself. In the interactive EPC Encoder/Decoder, the EPC Binary Encoding is displayed in hexadecimal notation.

What is the Tag Length in the RFID Control Information box?

Some types of EPCs provide a choice in the way they are encoded into binary for storage on an RFID tag. One choice uses only 96 bits, but is only capable of encoding a subset of all possible EPCs of that type. For example, the serial number in a Serialized Global Trade Item Number (SGTIN) can be up to 20 alphanumeric characters, but if the 96-bit encoding is selected then the serial number must be all-numeric, must not have leading zeros, and must have a numeric value falling within a certain range. The other choice uses more bits, but is free of all such restrictions. The 96-bit choice is provided because up until very recently this was the largest available memory size for RFID tags. Some EPC types can be encoded in 96 bits without imposing any restrictions, and for those types 96 bits is the only available choice.

What is the Filter Value in the RFID Control Information box?

The filter value is extra information that is encoded into the RFID tag to assist RFID readers when confronted with a large number of tags. For example, suppose you have a warehouse application in which you want to read an RFID tag on a pallet, but each pallet contains 100 tagged cases and each case contains 24 tagged items. The reader sees a total of 2401 tags, even though you just want to read only one! This can make reading performance very slow. By programming a different filter value onto the pallet tag, it is possible for the reader to broadcast a "select" command instructing only the pallet tag to respond.

Why don't I see the filter value in the EPC Pure Identity URI or GS1 Key?

The filter value is not part of the EPC, meaning it is not part of the identification of the object to which the RFID tag is attached. The filter value is just extra information that is there to help RFID readers do their job better. It normally only plays a role in data capture, and is not communicated to business applications. Because the filter value is not part of the EPC, it does not contribute to the uniqueness of the EPC. Therefore, two EPC Tag URIs or Binary Encodings that only differ in their filter value cannot be applied to two different objects, because the corresponding pure identity URI would be the same for both.

What are the standards for the the different forms of the EPC?

The Electronic Product Code in all of its forms, and the rules for translating between those forms, are defined in the EPC Tag Data Standard Version 1.9. The EPC Tag Data Translation Standard Version 1.6 defines a machine-readable way to encode the translation rules via an XML schema language, and provides an XML document written in that language that codifies all of the translation rules currently specified in the EPC Tag Data Standard Version 1.9. The GS1 Keys are defined in the GS1 General Specifications.

What standards for translation of EPC forms are implemented by the EPC Encoder/Decoder on this web site?

The EPC Encoder/Decoder on this web site fully implements the EPC Tag Data Standard Version 1.9.

General Questions about RFID User Memory

What's this all about?

The User Memory Encoder and User Memory Decoder on this site are interactive applications that let you encode and decode the "user memory" of a Gen 2 Radio-Frequency Identification (RFID) tag.

What is a Gen 2 RFID tag?

A Gen 2 RFID tag is a passive RFID tag that conforms to the EPC Class-1 Generation-2 UHF RFID Protocol for Communications at 860 MHz - 960 MHz standard, the ISO/IEC 18000-6:2010 standard (Type C), or related standards currently under development.

What is "user memory"?

Gen 2 RFID tags have four different memory banks, each of which holds data for a different purpose. The "user memory" bank, also called "MB 11", is intended to hold application data, other than the unique identifier for the physical object to which the tag is affixed. (The unique identifier for the physical object to which the tag is affixed is usually held in a different memory bank.)

What is a "user memory encoder"?

A user memory encoder is software that converts application data into a form suitable for storing into the user memory bank of a Gen 2 RFID tag.

What is a "user memory decoder"?

A user memory decoder is software that converts the data stored in the user memory bank of a Gen 2 RFID tag into a form that an application can understand and process. It does the opposite of what a user memory encoder does.

Why is a user memory encoder or decoder needed? How is what's stored on the tag different from application data?

Application data usually consists of a number of different pieces of data. The user memory of a tag is a single string of bits, and so the data stored in the tag contains extra "framing" information to separate one piece of data from another and to identify what each piece of data is. Also, application data is compressed before storing on the tag so that as few bits as possible are required. This allows less expensive tags to be used in any given application, and also improves performance because fewer bits need to be communicated between the RFID tag and the RFID interrogator (reader). The user memory encoder knows how to compress the data values and add the extra "framing" information. The user memory encoder knows how to parse the "framing" information and uncompress the data values.

Some bar codes also store multiple pieces of data. Why is it more complicated for the user memory of RFID tags?

It is true that certain bar codes, for example the GS1-128 bar code, are capable of storing multiple pieces of data and so include a simple "framing" mechanism and a scheme for compressing data into light and dark bars. However, the encoding and decoding for the user memory of RFID tags is quite a bit more complex, for several reasons. First, it is much more important to have highly efficient compression of the data, due to the relatively high cost of RFID tag memory. Second, with RFID tags there may be requirements for random access to data (not reading the whole tag when only one or two pieces of data are needed), content-based selection of tags (only reading those tags that contain a certain piece of data), and adding to or modifying the data stored on the tag after it has been written the first time. The encoding and decoding of user memory is designed to make all of these operations possible. Because these operations do not apply to bar codes, the encoding and decoding of bar codes is much simpler.

Are there standards for the encoding and decoding of user memory?

Yes, there are standards that govern how application data is stored in user memory. The standards ensure that when one application writes data to the user memory of a tag, all applications that read the user memory will get the same data that was written. All user memory encoders and decoders must faithfully implement these standards in order to ensure interoperability.

What are the standards for the encoding and decoding of user memory?

The main standard that governs the encoding and decoding of user memory is ISO/IEC 15962:2013, which specifies a general purpose framework for encoding and decoding of RFID tag memory. The EPC Tag Data Standard Version 1.9 specifies how the ISO/IEC 15962 standard applies to Gen 2 RFID tags, and also extends ISO/IEC 15962 with an additional compression and framing mechanism called "packed objects". Packed Objects offers a number of performance and functional advantages over the mechanisms available in the 2004 version of ISO/IEC 15962. Packed Objects is incorporated into the 2013 version of ISO/IEC 15962.

What standards for the encoding and decoding of user memory are implemented by the user memory encoder and decoder on this web site?

The user memory encoder and decoder on this web site fully implements the ISO/IEC 15962:2013 standard and the EPC Tag Data Standard Version 1.9. The free version available on this web site allows the use of "packed objects" compression and framing, while the commercial version allows the use of packed objects as well as the original "no directory" and "with directory" compression and framing specified in ISO/IEC 15962:2004.

General Questions about RFID Tag Identificaton (TID) Memory

What's this all about?

The TID Decoder on this site is an interactive application that lets you decode the "TID memory" of a Gen 2 Radio-Frequency Identification (RFID) tag.

What is a Gen 2 RFID tag?

A Gen 2 RFID tag is a passive RFID tag that conforms to the EPC Class-1 Generation-2 UHF RFID Protocol for Communications at 860 MHz - 960 MHz standard, the ISO/IEC 18000-6:2010 standard (Type C), or related standards currently under development.

What is "TID memory"?

Gen 2 RFID tags have four different memory banks, each of which holds data for a different purpose. The "TID" bank, also called "MB 10", holds information about the tag itself, as opposed to information about the object to which the tag is affixed.

What information is available in TID memory?

At a minimum, TID memory indicates the make and model of the silicon chip that is the heart of the RFID tag. A 12-bit number called the "Mask Designer ID" (MDID) indicates the manufacturer (make) of the chip, and a second 12-bit number called the "Tag Model Number" (TMN) indicates the model of the chip. MDID numbers are assigned to manufacturers by EPCglobal, and then each manufacturer assigns its own TMN values for its own products.

What else is in TID memory?

Optionally, TID memory may contain a unique serial number that is programmed into the RFID tag when the RFID tag is manufactured. TID memory may also contain additional information about the capabilities of the RFID tag, such as how much memory it has, which optional commands it supports, and so on. The tag manufacturer determines whether either of these additional pieces of information is programmed into TID memory.

Can I write the contents of TID memory myself?

Generally not. TID memory describes features of the RFID tag that cannot be changed; therefore, there is no need to write to the TID memory after the tag is manufactured. Typically, the tag manufacturer stores the proper data into TID, then permanently locks it to prevent it from ever being changed. (This is why on this web site you will find a TID decoder but not an encoder: an encoder would only be of use to an RFID tag manufacturer.)

You said that TID memory contains a unique identifier. Is that the same as an Electronic Product Code (EPC)?

No it is not. The unique TID serial number, if a tag has it at all, identifies the tag, whereas the EPC identifies the object to which the tag is affixed. The EPC is generally programmed at the time the tag is physically attached to a specific object, product, or asset, and is usually selected to be a meaningful identifier to a software application. For example, when an RFID tag is affixed to a trade item, the EPC is often derived from the Global Trade Item Number (GTIN) for that product. The TID serial number, in contrast, is programmed at the time the tag is manufactured, before anybody knows to what it will be affixed. So the TID serial number is not usually as meaningful to an RFID software application as the EPC is.

If the TID serial number is not as meaningful as an EPC, why is it useful?

Because the TID memory is programmed at tag manufacture time, and usually cannot be changed afterwards, the TID serial number can be a useful way to detect whether one RFID tag has been replaced by another. This is sometimes helpful in anti-counterfeiting or similar applications where tamper detection is important. On the other hand, an adversary with sufficient resources might be able to make his own tag that has a writable TID, and so the TID serial number is not a guarantee of authenticity.

What is an STID URI?

An STID URI (Uniform Resource Identifier) is the unique TID serial number, converted to a form that is convenient for software applications to process. The STID URI has a syntax similar to the Electronic Product Code (EPC). Software applications may use the STID URI as a unique identifier for a tag without having to worry about the bit-level structure of the TID memory.

What is a "TID decoder"?

A TID decoder is software that converts the data stored in the TID memory bank of a Gen 2 RFID tag into a form that an application can understand and process.

What are the standards for the decoding of TID memory?

The standard that governs the encoding and decoding of TID memory for Gen 2 RFID tags for EPCglobal applications is the EPC Tag Data Standard Version 1.9. The TID decoder on this web site fully implements this standard.

Questions about the Encoder and Decoder Software On This Site

Are the EPC and user memory encoders and decoders on this site free?

You may use the EPC Encoder/Decoder, User Memory Encoder, User Memory Decoder, and TID Decoder on this site for personal use, free of charge. The free versions are only available for interactive use on this site. In the free version of the User Memory Encoder, certain advanced features are not available and the total amount of data you can encode at a time is also limited.

I would like to offer these interactive encoders and decoders on my own web site. Is that possible?

Yes, Ken Traub Consulting LLC offers licensing of the interactive encoders and decoders for use on your own web site. Localization to your web site's native language is also available, if needed. Please inquire by e-mail to info@kentraub.com.

I am an end user of RFID tags, and my software application needs to encode and/or decode EPC memory, user memory, and/or TID memory. Can I get a software library to embed in my application?

Yes, the interactive encoders and decoders on this web site are built using a software library that is designed to be embedded in applications. Ken Traub Consulting LLC offers licensing of the underlying library for use in your own software application. Please inquire by e-mail to info@kentraub.com. You may also download a product brochure.

My company sells "middleware" software that end users use to build RFID software applications. I would like to offer the capability to encode and decode EPC memory, user memory, and TID memory. Can I get a software library to embed in my middleware product?

Yes, the interactive encoders and decoders on this web site are built using a software library that is designed to be embedded in applications. Ken Traub Consulting LLC offers licensing of the underlying library to OEMs for embedding in their products. Please inquire by e-mail to info@kentraub.com.You may also download a product brochure.

What is Ken Traub Consulting LLC?

Ken Traub Consulting LLC is a Massachusetts Limited Liability Company founded in 2007 to provide services to software product companies and to enterprises that rely on advanced software technology to run their businesses. A key focus is helping companies to understand and adopt RFID standards, including the standards that underlie the EPC and user memory encoder and decoder. Among the services provided are education on RFID standards, and assistance in architecting and implementing software that use the standards. Please see our home page for more information about Ken Traub Consulting LLC, and the services page for more information about the services we provide.

Who is Ken Traub?

Ken Traub is an experienced CTO, entrepreneur, and software architect. Over his 30 year career in software, Ken Traub has founded three successful high-tech companies and led their engineering teams as CTO or VP Engineering. Since 2002 Ken has been deeply involved in the creation and implementation of software standards for the Electronic Product Code (EPC) and RFID, as the principal author of key EPCglobal specifications including the EPC Tag Data Standard. Please see Ken's biography for more information.