Why Your iPhone Can't See a MIFARE Classic Card
Apple's Core NFC doesn't support MIFARE Classic, so iPhone apps can't read those cards. Here is why, what iPhone does support, and what to use instead.
Your iPhone isn't broken. Apple's Core NFC framework doesn't support MIFARE Classic, so an iPhone app has no supported way to read the memory of that card. If your card is an older access badge, hotel key, gym pass or transit card, there's a good chance it's Classic.
Below: what makes Classic different, what Apple has said about it, and what to use instead.
Why MIFARE Classic is different
MIFARE Classic isn't a plain NFC Forum tag. According to Wikipedia's MIFARE article, it uses a proprietary protocol that complies with parts 1 to 3 of ISO/IEC 14443 Type A, plus an NXP security protocol for authentication and ciphering. The cipher is Crypto-1 with a 48-bit key.
Memory is split into sectors, and each sector is guarded by two keys, A and B. Per Android's MifareClassic reference, a 1K card holds 1,024 bytes in 16 sectors of four blocks, a 4K card holds 4,096 bytes, and the blocks are 16 bytes each. You must authenticate a sector before you can read or write it.
That's the catch. To read a Classic card, a reader has to speak this sector-and-key protocol. Asking for an NDEF message isn't enough.
What Apple says about MIFARE Classic
In its WWDC19 session on Core NFC enhancements, Apple describes the MIFARE tag type as Ultralight, Plus or DESFire, and states: "At this time, MIFARE Classic tags are not supported." We found no Apple source saying that has changed, but the session is from 2019, so check Apple's current Core NFC documentation if you're on a new iOS version.
Developers on Apple's forums say the same thing. One reports that Core NFC does not support Classic 1K and that their app uses an external Bluetooth reader instead. The developer of NFC Tools adds that a compatibility mode can read and write standard NDEF records on some Classic cards, but that reading the memory isn't possible. Those are developer and vendor statements, not Apple's, so treat them as field reports.
What iPhone does support
Core NFC's MIFARE support covers Ultralight, Plus and DESFire. Ultralight tags are NFC Type 2 tags, the same family as most stickers. Plus and DESFire can be reached through ISO 7816 commands. For more on that family, see whether your phone can read a DESFire card and why a DESFire card shows no NDEF records.
Background tag scanning, where the iPhone reacts without an app open, still needs NDEF-formatted tags and is read-only, per the same WWDC session.
Android isn't guaranteed either
Android is friendlier, though not everywhere. Its documentation says that implementing MIFARE Classic on a device is optional. If a phone doesn't implement it, the MifareClassic technology never appears, though the tag still shows up as NfcA. Wikipedia notes that Classic-based stickers can only be read by devices with an NXP NFC controller. So if a card is invisible on one Android phone, the hardware may be the reason, not the card.
What to do instead
- You need the data on an existing Classic card: use an Android phone with Classic support or a dedicated reader. Only read cards you own or are authorized to read.
- You're starting a new project: buy NTAG213 or NTAG216 chips. The NFC Tools maker recommends them, and they work with iPhone. MIFARE Ultralight is also a documented Core NFC type.
- Security matters: Crypto-1 was reverse-engineered in 2008, and later attacks recover keys quickly, according to Wikipedia. NXP has recommended moving to higher-security products, so don't build a new access system on Classic.
- Your tag won't erase or rewrite: see protected versus locked NFC cards.
If you're writing NDEF tags for your own projects, NFCore for iPhone and for Android can read, write and inspect them. It can't make Core NFC read a card that Apple doesn't support.
Frequently Asked Questions
Why does my iPhone not detect my MIFARE Classic card?
Apple's Core NFC covers MIFARE Ultralight, Plus and DESFire, and Apple said in its WWDC19 session that MIFARE Classic tags are not supported. Classic uses a proprietary protocol with Crypto-1 sector authentication that an app can't perform through Core NFC.
Can an NFC app on iPhone read a MIFARE Classic 1K at all?
Not its memory. The NFC Tools developer says a compatibility mode can read and write standard NDEF records on some Classic cards, but raw memory reads aren't possible. That's a developer statement, not an Apple guarantee.
Which tag should I buy for iPhone?
NTAG213 or NTAG216 are the chips the NFC Tools maker recommends, and MIFARE Ultralight is a documented Core NFC type. Both are far easier on iPhone than Classic.