Read any dump
fromPages(), fromDump() and fromFile() take a UID with 80 or 144 bytes, or a full 180-byte dump. pretty(), describe() and toDict() return text, a plain-language paragraph or JSON-ready objects.
JavaScript / Node.js SDK
The SDK of the open TigerTag protocol for 3D-printing filament and resin: it turns a chip's bytes into material, colour, print settings and quantity, checks its ECDSA-P256 signature offline, and builds new tags byte for byte.
$ npm install tigertag
const { TigerTag } = require('tigertag');
const tag = TigerTag.fromPages(uid, payload); // from your NFC SDK
console.log(tag.pretty()); // human-readable summary
console.log(String(tag.verify())); // VALID / NOT SIGNED / INVALID
console.log(tag.toDict()); // JSON-ready objectOne package for every side of a TigerTag chip: reading, checking, writing, and keeping its data up to date.
fromPages(), fromDump() and fromFile() take a UID with 80 or 144 bytes, or a full 180-byte dump. pretty(), describe() and toDict() return text, a plain-language paragraph or JSON-ready objects.
verify() checks the ECDSA-P256 signature that binds the chip UID to its product data, with the public key bundled in the package. Result: valid, invalid, unsigned, no_key or no_uid.
create(), asInit(), patch() and erase() build chip bytes. A TigerTag is immutable: patch() returns a new one, and refuses to change idTigertag, idProduct, uid or the signature.
TigerTag.fromCatalog(productId) builds a complete TigerTag+ from the official product catalogue, downloaded on first use and cached in a per-user folder.
For TigerTag+ chips, rawApi(), diffApi() and patchFromApi() fetch the brand's current product data, list what differs from the chip and apply it.
The material, brand, aspect, type, diameter and unit tables ship in the package and update at most once a day; offline: true or TIGERTAG_OFFLINE=1 means zero network calls.
Pass the 7-byte UID and the bytes your NFC library reads to TigerTag.fromPages(). pretty(), verify() and toDict() return a readable summary, the signature result and a JSON-ready object. It works right after npm install, with no setup.

Every change returns a new TigerTag; toBytes() gives the bytes to write back. erase() gives a blank chip.

A local web page, served by the SDK itself, that builds and decodes TigerTag chips and shows every byte. No NFC hardware is needed. The playground never writes a signature: only a certified manufacturer can issue one.
Run npm install tigertag, or pnpm add tigertag, yarn add tigertag or bun add tigertag. It needs Node.js 18 or later and no other package for parsing and verification.
No. The reference tables and the signature public key ship in the package, so reading and verifying work offline. The network is only used for the daily table check, the product catalogue and the TigerTag+ cloud methods; offline: true or TIGERTAG_OFFLINE=1 turns it off.
TigerTag uses NTAG213, NTAG215 and NTAG216 chips (ISO 14443-3). The SDK takes the UID and the bytes your NFC library reads, so it is not tied to one reader; the README shows nfc-pcsc with an ACR122U.
verify() checks the chip's ECDSA-P256 signature over its UID and product identifiers, with the public key bundled in the package. It returns valid, invalid, unsigned, no_key or no_uid, without a server call.
It builds the bytes: create(), patch(), asInit(), erase() and fromCatalog() give a TigerTag whose toBytes() is the payload your NFC library writes. The playground's Burn button writes it to the chips on connected readers.