NDEF Record
A single data element within an NDEF message, containing a Type Name Format (TNF), record type, optional ID, and payload. Common record types include URI, Text, Smart Poster, and MIME type records.
What Is an NDEF Record?
An NDEF record is the smallest discrete data element within an NDEF message. Each record encapsulates a single piece of information — URL, text, contact card, or binary data — along with metadata telling the receiving device how to interpret and handle the payload.
Record Header Structure
Every record begins with a 1-byte header containing flags and the TNF:
| Bit | Name | Description |
|---|---|---|
| 7 | MB | Message Begin — first record |
| 6 | ME | Message End — last record |
| 5 | CF | Chunk Flag |
| 4 | SR | Short Record (payload length in 1 byte) |
| 3 | IL | ID Length present |
| 2-0 | TNF | Type Name Format (0x00-0x07) |
Following the header: Type Length, Payload Length (1 or 4 bytes), optional ID Length, Type, optional ID, and Payload.
Common Record Types
Well-Known Types (TNF = 0x01)
- "U": URI — web addresses, phone numbers
- "T": Text — human-readable text with language code
- "Sp": Smart Poster — URI + metadata
MIME Type Records (TNF = 0x02)
text/vcard: Contact informationapplication/vnd.wfa.wsc: Wi-Fi credentials
External Type Records (TNF = 0x04)
android.com:pkg: Android Application Record- Custom application-specific data
Encoding Efficiency
Records minimize overhead on memory-constrained tags: Short Record flag saves 3 bytes for payloads under 256 bytes, and URI prefix codes compress common prefixes (https:// becomes one byte).
Record Processing
Devices process records in order. The first record determines the primary action (URI opens browser, text displays string). Subsequent records provide context (AAR forces Android app dispatch). Unknown types are silently ignored.
Custom Records
For application-specific data, use External Type records (TNF=0x04) with your reverse domain name. This prevents collisions and allows your app to register as the handler. The payload format is entirely application-defined.
Related Terms
Related Content
How to Read and Write NFC Tags
Getting Started…memory area. The NDEF memory contains a sequence of ndef-record s wrapped in an ndef-message . Each record carries a Type…
NFC for Beginners: Your First Project
Getting Started…Writing Your First URL In NFC Tools, tap "Write" → "Add a record" → "URL / URI". Enter https://nfcfyi.com and confirm. Tap…
NFC Troubleshooting Guide
Getting Started…Memory Calculator . Wrong tnf or type field: Inspect the record header. A miscoded TNF causes the host OS to silently drop…
Android NFC Programming Guide
Programming…Container for one or more NdefRecord s NdefRecord Single record: TNF + type + ID + payload Tag Represents a discovered…
iOS Core NFC Programming Guide
Programming…[NFCNDEFMessage]) { for message in messages { for record in message.records { print("TNF:…
Web NFC API Guide
Programming…{ const { serialNumber, message } = event; for (const record of message.records) { console.log("Record…
Flutter NFC Development Guide
Programming…'No NDEF message.'); return; } for (final record in message.records) { _handleRecord(record); }…
React Native NFC Guide
Programming…if (!tag?.ndefMessage?.length) return null; const record = tag.ndefMessage[0]; // Decode URI record const uri =…
자주 묻는 질문
The NFC glossary is a comprehensive reference of technical terms, acronyms, and concepts used in Near Field Communication technology. It is designed for developers, product managers, and engineers who work with NFC and need clear definitions of terms like NDEF, APDU, anti-collision, and ISO 14443.
Each glossary term is cross-referenced with related NFC chips, standards, and other terms. For example, the term 'AES-128' links to chips that support AES encryption (NTAG 424 DNA, DESFire EV2/EV3), and the term 'ISO 14443' links to all chips compliant with that standard.
Yes. NFCFYI provides glossary definitions in 15 languages including English, Korean, Japanese, Chinese, Spanish, Portuguese, Hindi, Arabic, French, Russian, German, Turkish, Vietnamese, Indonesian, and Thai. Use the language selector in the header to switch languages.