The tag is detected but no action runs
Detection and action are two separate steps, and only the second failed. The tag, the phone, the distance and the surface are therefore all working. What remains is the content, the record type, and whether the result needs a tap to proceed, which it does on iOS and, for a web link, from Android 17.
Two steps, not one
First the phone finds the tag and reads it. Then it looks at what it read and decides what to do.
A failure at the first step gives no reaction at all. A failure at the second gives a reaction and then nothing, which is what you are seeing.
This distinction is worth holding onto, because it means every physical cause is already eliminated. Moving the phone, changing the tag, removing the case: none of it will help.
Content the system cannot act on
An empty tag is the simplest case. Read successfully, holds nothing, nothing to do.
A record whose type declaration is empty or unknown gives the phone a payload with no instruction about it.
A record type with no default handler is the subtler case. Plain text is read and displayed rather than acted on. A custom type defined for your own application does nothing on a phone without that application.
Read the tag with a tool that lists records and types. The answer is visible immediately and no amount of retrying the tap will reveal it.
The iOS notification
On an iPhone, a tag read in the background presents a notification rather than acting immediately. If it is not tapped, nothing further happens, and the experience is a tag that was detected and did nothing.
This is expected behaviour rather than a fault, and it surprises people coming from Android 16 or earlier. From Android 17, the Android NFC basics guide says a tag holding a web link shows an open link notification too, with the same result when it is ignored.
Background reading is available from the iPhone XS and XR onwards. On earlier supported models an application must be launched manually to read a tag at all, which produces the same symptom for a different reason.
Take NFC Tools. On iOS it requires an iPhone 7 or later running iOS 15.6 or later, and the app must be launched manually. Background reading is available from the iPhone XS and XR onwards.
When an app should have opened
If the tag was written to launch an application, check that the application is installed on the phone you are testing with. A record pointing at an absent application has nothing to open.
Check that the record is the right kind for the job. Opening an app reliably needs the record type intended for it rather than a plain text mention of the app's name.
On Android, check that the app is allowed to receive tags. From Android 16, a user can stop an app receiving them, and the NFC basics guide places that choice under Settings > Apps > Special app access > Launch via NFC. From Android 17, an app that has never been opened, or has been force stopped, receives no tag until it is opened again.
And check whether the phone offers a choice instead of acting. Several installed applications claiming the same content produce a chooser, and a chooser dismissed by accident looks like nothing happened.
Frequently asked questions
Why does my phone react and then stop?
Because reading succeeded and the action step found nothing to do. The content is the place to look, not the tag or the distance.
Is an empty tag detected?
Yes. Detection does not depend on content, so an empty tag produces a reaction and no action.
Why does my iPhone show a notification instead of opening?
That is how background reading works on iOS. The notification has to be tapped, and without that nothing further happens.
Can I make a text record open something?
No. Text is content to display, and opening something needs a record type that names an action, such as a web address.