NFC UID

Every NFC chip has a globally unique, manufacturer supplied, read-only identifier that can be read by most NFC devices. In most NFC chips, this UID is 7 byte in length.  An NFC tag’s UID can not be changed or erased; it is stored in special memory in the NFC chip which does not allow the bits to be changed.

Example UID (hex)
043A98CABB2B80
UID Format for NTAG

Randomness

UIDs are not totally random; they have low entropy. The first byte of the UID represent the manufacturer of the NFC chip; 0x04 is NXP. The remaining bytes are variable and result in a unique UID. That said, the bytes of the UID do tend to follow a quasi-pattern. If the UIDs of several NFC chips that were manufactured in sequence are inspected, this pattern can be seen.

Example Sequence of UIDs
044A7232214B80

044F7132214B80

04547032214B80

045A7032214B80

045F6F32214B80

Formatting

The UID is stored as binary on the NFC tag, but it is typically represented in applications as a hexadecimal formatted string. The choice of whether the alpha characters are capitalized or not, if there are spaces or other separators (dash, colon…) between the bytes is arbitrary and not standardized. Different systems represent and use different formats; with no specific format being the “right” format. GoToTags software represents UIDs as all uppercase with no byte separators.

Some NFC chip types store the UID in in an alternative bit position format and need to be reversed before using.

Cloning

Since the UID is not effectively writable, it is the basis of preventing cloning an NFC tag.

Reading

On most systems it is easy to read the NFC chip’s UID. The specifics for each system are different; there is usually a single command to return the UID.

Apple’s iOS has limitations regarding reading the UID.

The GoToTags NFC Encoder and GoToTags Windows App can be used to read the UID into a data file for multiple NFC tags. The GoToTags iOS App can not read the UID until iOS allows for it.

Encoding

The GoToTags NFC Encoder can encode the UID into any NDEF record including text records and URI records.

Example UID in Encoding Records
text: the uid is {{uid}}

website: http://mydomain.com?uid={{uid}}
Updated on September 5, 2017

Was this article helpful?

Related Articles