NFC Troubleshooting Guide: Common Problems and Quick Fixes
NFC failures split almost evenly between RF environment issues, software configuration mistakes, and mismatched tag types. This guide walks through every layer of the stack — antenna, protocol, OS, and application — with a structured diagnostic process you can apply in the field.
Diagnostic Framework
Before diving into specific fixes, establish which layer is failing:
| Layer | Symptom | Tool |
|---|---|---|
| RF / antenna | No read at any distance | Separate reader and tag, try metallic-free surface |
| Tag hardware | Read fails on all devices | Verify tag with a known-good device |
| Protocol | Partial reads, CRC errors | Enable verbose logging in your reader SDK |
| OS / driver | Tag detected but not parsed | Check OS NFC event logs |
| Application | Tag reads but app misbehaves | Decode raw NDEF with NDEF Decoder |
Problem 1: Tag Is Not Detected
Symptoms: No NFC event fires, no vibration or sound from the phone.
Causes and fixes:
- Wrong operating-frequency: Verify the tag is a 13.56 MHz NFC tagNFC tagPassive unpowered device storing data, powered by reader's RF fieldView full → and not a 125 kHz LF RFID tag. LF tags look similar but are completely incompatible. Use a frequency meter or datasheet.
- Metal interference: Placing an nfc-tag directly on a metal surface collapses the magnetic field. Use an on-metal-tag with a ferrite spacer, or move at least 5 mm off the surface.
- Antenna misalignment: The reader's antenna is typically a loop in the top 20–30% of a phone. Sweep the tag slowly across the back of the device to find the hot spot.
- Tag damaged: otp lock operations or electrostatic discharge can brick tags permanently. Test with a fresh tag from a different batch.
- NFC disabled on device: iOS requires NFC to be enabled in Settings > General > NFC. Android enables it in Settings > Connected Devices > NFC.
- Tag at wrong distance: The read-range for standard NTAG tags is 0–4 cm. At 5+ cm the field collapses. Close the gap.
Problem 2: Tag Detected but NDEF Read Fails
Symptoms: The OS fires an NFC discovered event but your app receives an empty or error payload.
Causes and fixes:
- Tag not NDEF-formatted: A blank tag from the factory contains no capability-container and no NDEF TLV. Use your NFC SDK's
formatNdef()method before writing. - Corrupt NDEF messageNDEF messageComplete data unit containing one or more NDEF recordsView full →: Write with one device, read with another to isolate. Use the NDEF Decoder to inspect raw bytes.
- NDEF message too large: If you wrote content close to the user-memory limit and the tag was power-cycled mid-write, the message may be truncated. Check total-memory with the Memory Calculator.
- Wrong tnf or type field: Inspect the record header. A miscoded TNF causes the host OS to silently drop the record.
- Password-protected tag: If password-protection is enabled and the read password (PACK) is wrong, the tag will NAK the read command.
Problem 3: Write Fails or Data Corrupts
Symptoms: Write operation returns success but reading back shows wrong or empty data.
Causes and fixes:
- Write enduranceWrite enduranceMaximum write/erase cycles before memory degradation (typically 100K)View full → exhausted: NFC tags have a finite write-endurance — typically 100,000 cycles for NTAG, 200,000 for MIFARE Ultralight C. Use the Tag Cost Calculator to model write frequency.
- lock-bits set: Once lock bitslock bitsControl bits making memory blocks permanently read-onlyView full → are programmed, user memoryuser memoryTag memory portion available for user data storageView full → becomes read-only permanently. This is irreversible on standard tags.
- Partial write interrupted: Remove metal objects or other tags from the RF field. The anti-collision loop will abort a transaction if a second tag enters the field mid-write.
- Incorrect block alignment: NTAG memory is byte-addressable but commands are page-aligned (4 bytes). Writing to an unaligned boundary silently wraps around.
- Android 10+ WriteNdef bug: Some OEM builds have a race condition in
NfcAdapter.enableForegroundDispatch(). Wrap the write in atry/catchand retry once onFormatException.
Problem 4: iOS Does Not Open App
Symptoms: Tag reads on Android but launches Safari instead of your app on iOS.
Causes and fixes:
- Missing Universal Link / App Clip: iOS requires either a Universal Link (domain-associated app) or a properly configured App Clip Code to launch apps from NFC. A plain URL will always open Safari.
- Background tag reading not declared: Add
com.apple.developer.nfc.readersession.formatswithNDEFto your entitlements if using Core NFC in background mode. - URL mismatch: The
apple-app-site-associationfile on your server must list the exact path prefix that the NFC tag URL uses. - Device running iOS < 11: Core NFC was introduced in iOS 11. Background tag reading requires iOS 14+. See iOS Core NFC Programming.
Problem 5: Inconsistent Read Range
Symptoms: Range varies from 0.5 cm to 3 cm across different reads.
Causes and fixes:
- Reader antenna misalignment: Phone antennas are not centred on the back. Map the antenna position once with a known tag.
- Phone case interference: Thick leather or carbon-fibre cases absorb the RF field. Remove the case or use a high-sensitivity tag.
- Other electronics nearby: Wi-Fi routers, USB 3.0 cables, and monitor power supplies generate 13.56 MHz harmonics. Move 30+ cm away.
- nfc-antenna damage: Cracks in the tag inlay break the resonant loop and reduce effective range. Inspect under bright light.
Problem 6: Wrong App Opens on Android
Symptoms: Scanning the tag opens the wrong app or a disambiguation dialog.
Causes and fixes:
- No Android Application Record (AAR): Append an AAR record at the end of your NDEF message with your app's package name. Android uses this as a strong hint.
- Multiple apps handle the same URI scheme: The OS presents a chooser when multiple apps register the same intent filter. Add a unique URI scheme or AAR to force your app.
- Intent filter priority too low: In your
AndroidManifest.xml, setandroid:priority="1000"on the NFC intent filter to outbid generic URI handlers.
Quick Reference Checklist
| Check | How |
|---|---|
| Tag is NFC ForumNFC ForumIndustry body developing NFC standards, specifications, and certifications since 2004View full → certified | Look for the n-mark on packaging |
| Tag type matches reader | Use Compatibility Checker |
| NDEF formatted | Attempt format before first write |
| Memory not exceeded | Memory Calculator |
| No lock bits set | Read CC byte 0x0A on Type 2 tags |
| Antenna aligned | Sweep slowly across phone back |
See also: What Is NFC | NFC Tag Types Explained | How to Read and Write NFC Tags | NFC Security Deep Dive