RFID Basics

Contributors: Nate, Toni_K, a_cavis
Favorited Favorite 28

Tag Memory

RFID tags store a lot of data in their memory - that's what makes them so useful. While there can be many different types of identifying information stored in tags (which can vary from industry to industry), the majority of that is beyond the scope of this tutorial. You can find more detailed information on tag storage requirements from the Tag Data Standard, and the Tag Data Translation Standard.

Some RFID tags (like the ubiquitous "HID ProxCard II" brand ID card and some brands of pet tag) use a proprietary format. School IDs and other cards from commercial access control systems may not work with all RFID readers.

Gen2 UHF RFID Memory Standard

The v2.0.1 standard written by EPCglobal covers all RFID requirements for Gen2 RFID tags. Generally speaking, the memory of a tag is split into three: the TID, EPC, and User Memory.

Tag Identifier Memory

The TID or Tag Identifier is 20 bytes or 160 bits. These means there are 1,460,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 different possible tag IDs (1.46 * 1048). More than there are atoms in the human body! Not quite the number of atoms in the universe. Every RFID tag has a unique TID. The TID is not editable.

Electronic Product Code Memory

While TIDs are good for absolute identification the Gen2 RFID standard was really created to replace the barcode in many retail environments. When you go to buy your groceries the register doesn't care if you have item TID 0xE242F3, it cares if you have a gallon of milk or a jar of peanut butter. That's where the Electronic Product Code (EPC) comes in: it's generally 12 bytes, user editable, and meant to be written to as a UPC type replacement. Slap an RFID tag on the gallon of milk, program the tag's EPC to be 0 7874203641 0 and the register will identify it as a half-gallon of Lactose Free 1% Low Fat Milk made by Great Value (random source). The tag doesn't care what you write to those 12 bytes so writing ASCII RufusTheDog is perfectly acceptable but keep it below 12 bytes.

User Memory

The size of User Memory can vary from 0 bytes to 64 bytes. The cheaper the tag the fewer bytes of user memory it will likely have. What do you do with 64 bytes? To continue with the gallon-of-milk analogy, user memory was originally intended to record things like expiration dates. The EPC is the global identifier ('this is milk'), and the User Memory was specific to that gallon ('sell by August 15th'). Again, the tag doesn't care so consider recording user setting data (this user enjoys a 10 degree decline in the pilot seat) or use the memory as the world's smallest dead drop.


There are additional writable memory locations called the Access password and Kill password. The Access password can be used to prevent people from re-configuring tags ("it may look like a sirloin steak but the register says it's a pack of gum..."). The Kill password is used to permanently and irrevocably disable a tag.