NFC Troubleshooting Guide
Common Problems and Quick Fixes
Quick-reference troubleshooting guide for common NFC problems including tags not reading, failed writes, incompatible devices, and range issues.
- NFC Troubleshooting Guide: Common Problems and Quick Fixes
- Diagnostic Framework
- Problem 1: Tag Is Not Detected
- Problem 2: Tag Detected but NDEF Read Fails
- Problem 3: Write Fails or Data Corrupts
- Problem 4: iOS Does Not Open App
- Problem 5: Inconsistent Read Range
- Problem 6: Wrong App Opens on Android
- Quick Reference Checklist
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 tag 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 message: 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 endurance 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 bits are programmed, user memory 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 Forum 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
Frequently Asked Questions
Check these four things: (1) NFC tag reading requires iPhone 7 or later running iOS 11+; background reading without opening an app requires iPhone XS and iOS 12+. (2) The Control Center NFC toggle must be on. (3) The tag must be held near the top edge of the iPhone, where the NFC antenna is located. (4) If the tag is mounted on metal, the antenna is likely detuned — use an on-metal NFC tag with a built-in ferrite layer.
Common write failures: (1) the tag is write-locked (check with NXP TagInfo — locked tags show 'Read Only'); (2) the NDEF payload is too large for the tag's user memory — use a larger chip like NTAG216 (888 bytes); (3) the phone moved away before the write completed — hold the tag firmly against the antenna for 1–2 seconds; (4) the tag's 32-bit password is set and the write app does not know the password.
This is usually a chip-compatibility or NDEF format issue. MIFARE Classic tags are not supported on iPhone because they use the proprietary Crypto-1 protocol, which Apple does not expose via Core NFC. FeliCa (Type 3) tags work only on iPhone 8+ in supported regions. Ensure your tag is formatted as an NFC Forum-compliant NDEF message using a standard TNF — RTD_URI or RTD_TEXT — which works reliably on both platforms.
NXP's TagInfo app (Android, free) is the gold standard for tag diagnostics. It shows the chip type, UID, memory size, NDEF content, lock status, password-protection status, and raw memory dump. Tap a tag and check the 'Tech Details' and 'NDEF' tabs. For iOS, NFC Tools Pro includes a tag info scanner that covers NTAG, DESFire, and MIFARE Ultralight families.
Our guides cover a range of experience levels. Getting Started guides are written for beginners with no prior NFC knowledge. Programming guides target developers integrating NFC into mobile apps or embedded systems. Security guides are for engineers designing secure NFC deployments for payments, access control, or authentication.
Most guides require only an NFC-enabled smartphone (iPhone 7+ or any modern Android device) and a few NFC tags (NTAG213 or NTAG215 recommended for beginners, available for under $1 each). Advanced guides may reference USB NFC readers like the ACR122U or Proxmark3 for development and testing.
Yes. Programming guides include code examples for Android (Kotlin/Java with the Android NFC API), iOS (Swift with Core NFC), and web-based tools (Web NFC API for Chrome on Android). All code samples are tested and include inline comments explaining each step.