Your Dice
What's actually on an NFC tag, how to claim one, and what the app does with it.
Last looked at 2026-08-17
What a die is here
A key fob with an NFC tag inside. You hold your phone to it, the app reads it, and the app produces a number. It is not a die you throw â there's no camera, nothing watching a physical object come to rest.
So the honest description of a roll is: the tag says which of your dice you meant, and the app rolls it. Everything below follows from that.
What's written on a tag
Four lines, as a plain text record:
| Field | Example | What it's for |
|---|---|---|
UUID | a fresh UUID per tag | The die's identity. Everything hangs off this. |
Dice Range | 1-20 | Where the face count comes from. |
Formula Type | STANDARD | How the roll is shaped. See below. |
Timestamp | when it was encoded | Bookkeeping. Nothing reads it. |
Encoding happens in the phone app, which offers d4, d6, d8, d10, d12, d20 and d100.
For a roll made on the phone, the UUID is what seeds it: hashed into a seed for an Xorshift generator, mixed with the clock so the same tag doesn't repeat itself, warmed up before the first number comes out. Each physical die therefore has its own sequence â a tag is a thing, not a label on a shared RNG.
(One exception worth knowing: the character-wizard tap rolls are generated on the server instead, from a cryptographic source. The tag still decides which die you rolled and the server checks it's yours and has the right number of faces â but it doesn't seed those particular numbers.)
Formula types, which are not cosmetic
Worth knowing before you encode a stack of them, because these genuinely change the distribution:
- STANDARD â one roll, uniform. What you want almost always.
- ADVANTAGE â rolls twice behind the scenes and keeps the higher. You only see the result.
- HIGH â a natural min or max is kept as-is; otherwise, if the roll isn't already in the top third of the range, it gets one re-roll.
- LOW â the same idea pointed downwards.
A HIGH d20 is not a fair d20, and isn't pretending to be. If you want your per-die statistics to mean anything, encode STANDARD and leave the drama to the dice gods.
Claiming a tag
A phone job â reading and writing NFC needs the native app. Tap Scan RFID Dice, hold the phone to the tag, then name the die. The app reads the range off the tag to work out the sides. The web's Add New Dice button honestly just points you at the store.
Rules the server enforces:
- One owner per tag. If somebody else has it registered and active you get a conflict, not a duplicate.
- Removing a die doesn't burn the tag. Register it again later and your old record comes back, name and all. A tag whose previous owner deleted it counts as unclaimed.
What the app then knows
/diceâ your collection, with a virtual roller and your roll history as tabs./dice/[id]â one die's statistics: distribution across every face, naturals at both ends, averages.- Ownership history â every die records who has held it and how it changed hands. Transfers and trades both need an NFC tap to complete, so provenance is backed by somebody physically having the object.
- A shareable page. You can mint a public link to a die's roll history for people with no account. One active link per die, revocable.
Two exclusions keep the numbers honest, and they trip people up:
- Virtual rolls never count towards a physical die's history. They're recorded against no die at all.
- Guest rolls do. If someone else taps your die during a VTT session, that roll belongs to the die's history but not to their personal one. It was your die's bad decision, not theirs.
The shrine
Every table already puts the cursed d20 in a cup under a glass for the rest of the night. /table has a shrine for exactly that, with the die's own numbers as the charge sheet: how many times it's been thrown, what it averaged against what a fair die of that size should average, and how much of its work came from the bottom third of its own range.
Below thirty rolls it declines to have an opinion, which is both statistically decent of it and funnier.
You can Bless it (three coppers, lasts about a session) and you can Send it down with a written charge. Neither does anything to how it rolls. A blessing does not weight a die and jail does not stop you rolling one â nothing at the shrine can reach the roll path at all, and that's structural rather than an oversight. The product rests on a die being a fair random source, so the shrine records the superstition and is upfront that superstition is all it is.