Tool
Runestone decoder
Paste the output script of a runestone, in hex, starting 6a 5d. The decoder reads the varints, resolves tags and fields, reconstructs edicts, and tells you whether the result is a well-formed runestone or a cenotaph, and why.
Decoding rules: ord 0.29.0, ordinals crate 0.0.17. Network: Bitcoin mainnet semantics. Everything runs in your browser: nothing you paste is logged, stored, or sent anywhere. Requires JavaScript; the rest of this site does not.
Examples
Each button loads a vector from the test vectors page and decodes it.
What the decoder checks
- Carrier. The script must begin
6a(OP_RETURN) then5d(OP_13). Anything else is not a runestone at all, which is different from being a broken one. - Pushes. All data pushes after OP_13 are concatenated. A non-pushdata opcode gives flaw
Opcode; a push running past the end of the script givesInvalidScript. - Varints. The payload is decoded as LEB128 varints with the 19-byte limit and the 19th-byte overflow mask. Any failure gives flaw
Varint. - Message. Tag and value pairs are read until the Body tag, then edicts in groups of four with delta-encoded rune IDs.
- Fields. Flags, etching fields, terms, mint, and pointer are consumed in the reference implementation's order, with each range check applied exactly where it belongs, so odd tags degrade quietly and even tags become
UnrecognizedEvenTag. - Supply.
premine + cap × amountis checked for u128 overflow.
The decoder reads one output script. It cannot tell you whether an etching's name is available, whether a commitment exists in the transaction's inputs, or whether a mint's terms are open at the current height: those depend on chain state. See specification section 6 and terms evaluation.
Privacy
This page loads one stylesheet and two scripts from this same site. There are no third-party requests, no analytics, no fonts, and no network calls at all once the page has loaded. The script hex you paste never leaves the page, and nothing is written to storage except your theme preference.