NFC Tag Test Guide

A reference for the DeskTest.net NFC Tag Test. Covers why NFC reading in the browser is Android-only, how the tool reads NDEF records and decodes their URL or text payloads, how to read the verdict, and how to fix NFC permission and tag-read problems.

Open the NFC Tag Test →

What does the NFC Tag Test check?

NFC (Near-Field Communication) tags are the little stickers and cards you tap a phone against - a tap-to-review tag on a counter, a product or menu tag, a tap-to-connect business card. This tool confirms two things, in order, on a supported device:

  1. NFC reading is available. The tool checks whether the browser exposes the Web NFC API (the NDEFReader interface) and whether you are on Android. If the API is missing, the tool stops here with a clear, friendly message - it never pretends to read a tag.
  2. Tap a tag to read it. Where the API exists, you tap an NFC tag to the back of the phone. The tool reads the tag's NDEF message, breaks it into records, decodes each payload (a URL record becomes the URL it points to; a text record becomes the text), and shows the tag's serial number if the platform provides one. Success looks like "Tag read successfully" with a record breakdown.

There is no plugin, no app to install, and nothing is uploaded. The read happens entirely on your device.

Why Android only?

Web NFC - the only way a web page can read an NFC tag - is implemented in Chromium, which means Chrome and Edge on Android. That is the whole supported surface today:

This is why the tool degrades honestly. On anything but Android Chrome/Edge, NDEFReader simply does not exist. Rather than show a red failure - which would wrongly blame your device or your tag - the tool reports "NFC reading needs an Android device" and tells you to open the page on Android. Nothing failed; the capability is just not present.

Testing a USB NFC reader on a PC?

Front desks often have a small USB NFC or contactless reader wired to the workstation - for key fobs, membership cards, or tap cards. That is a different device class from a phone's built-in NFC, and the right test depends on how the reader presents itself to the computer:

So if "NFC" at your desk means a box plugged into a PC, this page is not the right test - on that machine it will simply report that the browser has no NFC. The pointers above go to the tool that fits.

When should I run this?

Reading the results

Each step shows a status badge: Pending (gray), Running (yellow), Pass (green), Fail (red), or N/A (gray, used when NFC reading is not available in this browser). The verdict panel at the top summarizes the outcome and, on any problem, names the most likely cause and a recommended next step.

There are three broad outcomes:

Copy Diagnostic Report copies a plain-text report - browser, platform, whether the API was present, the serial number, and each record's type and decoded value - for pasting into a ticket.

Understanding NDEF records

An NFC tag stores an NDEF message, which is a list of records. Each record has a type, and the tool decodes the common ones:

Record typeWhat it holdsHow the tool shows it
url / absolute-urlA web address (the most common tap-to-open tag)The decoded URL as plain text
textHuman-readable text, with a language codeThe decoded text, plus its language and encoding
mimeTyped data (for example a vCard business card)Decoded as text when the media type is text-like; otherwise a byte count
smart-posterA URL bundled with a title and an actionLabeled as a structured record
emptyA record with no payloadMarked as empty
external / unknownApp-specific or unrecognized dataDecoded text if printable, else a byte count
Tag contents are treated as untrusted. A tag can hold any text, including something that looks like a link. The tool shows every value as plain text and never opens a URL or runs anything from a tag. That is deliberate: an NFC tag is input from the physical world, and displaying it should never trigger navigation. If you want to visit a URL a tag stores, read it here first, then type or copy it yourself.

Common problems and fixes

"NFC reading needs an Android device"

The browser has no Web NFC API. See Why Android only. Open desktest.net/nfc-test/ in Chrome or Edge on an Android phone or tablet. On desktop or iOS there is no browser-based way to read a tag; this is a platform limit, not a fault in your setup.

"NFC permission was blocked"

You are on a capable device, but the browser was not allowed to use NFC.

  1. Run the test again and choose Allow when the NFC prompt appears.
  2. If you blocked it before, tap the lock or tune icon in Chrome's address bar, open Permissions, reset NFC for this site, and retry.
  3. Confirm NFC is switched on in Android Settings (usually Connected devices -> Connection preferences -> NFC).

"NFC is turned off or unavailable"

The browser could not start a scan at all.

  1. Open Android Settings, search for NFC, and turn it on.
  2. Confirm the device actually has NFC hardware. Most modern phones do; some budget tablets do not.
  3. With NFC on, run the test again and hold a tag to the back of the phone.

"Tag could not be read"

NFC is working - the phone sensed a tag - but the message did not read cleanly.

  1. Hold the tag flat and still against the back of the phone for a full second.
  2. Move it around: the NFC antenna is usually near the top-center or the camera, not the middle of the back.
  3. Remove any thick case or metal object between the tag and the phone - metal blocks NFC.
  4. The tag may be blank, damaged, or an unsupported chip type. Compare against a known-good tag.

For IT admins

Web NFC needs a secure context (HTTPS) and a user gesture - the read starts from a button tap, never automatically. It also runs only in the top-level page, not inside a cross-origin iframe. If you are wrapping this or a similar tool in a kiosk or MDM-managed browser, make sure NFC is enabled at the OS level and that the managed Chrome/Edge policy does not disable the Web NFC permission.

For tap-to-review, tap-to-menu, and product tags, the common failure in the field is not the tag - it is a phone with NFC switched off, a heavy case, or (on iPhone) a user expecting the same behavior as Android. iPhones do read NFC tags through the system (background tag reading), but not through a web page's API, so a browser-based encoder or reader like this is Android-only. Encode tags with a simple, short HTTPS URL, keep the antenna area clear, and test a sample from each batch here before deployment.

Privacy for deployments. This tool reads and displays on-device only. No tag content, serial number, or read event is sent anywhere. That makes it safe to use on a shared or customer-facing device without exposing what was scanned.

Behind the scenes

When you tap Run on a supported device, the page creates an NDEFReader and calls scan() inside the click handler, satisfying the user-gesture requirement. The scan is wired to an AbortController; its signal both registers the reading and readingerror listeners and provides a single call to tear everything down. On a reading event the handler walks event.message.records and, for each record, decodes the data DataView with TextDecoder using the record's own encoding where relevant. The serial number, when present, comes from event.serialNumber.

Every value read from a tag is rendered with textContent, never innerHTML, and the page never navigates to a decoded URL. A tag is untrusted physical-world input, so it is displayed inertly by design.

The scan is aborted the moment a tag is read, when you cancel, when you reset, and on page unload - the reader never lingers in the background. If scan() is rejected (permission denied, or NFC off), the tool reports the specific reason rather than a generic error, and where NDEFReader does not exist at all it degrades to the honest "open on Android" state instead of failing.

Nothing leaves the browser tab. No tag content, no serial number, and no read event is logged to a server, and there is no telemetry. Open DevTools, Network tab, and confirm: no outbound requests while the test runs.