Runes

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.

Two checks depend on this: an edict output greater than the output count is a cenotaph, and a pointer must be strictly less than it. Leave it blank and those checks are reported as caveats instead of applied.

Examples

Each button loads a vector from the test vectors page and decodes it.

What the decoder checks

  1. Carrier. The script must begin 6a (OP_RETURN) then 5d (OP_13). Anything else is not a runestone at all, which is different from being a broken one.
  2. 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 gives InvalidScript.
  3. Varints. The payload is decoded as LEB128 varints with the 19-byte limit and the 19th-byte overflow mask. Any failure gives flaw Varint.
  4. Message. Tag and value pairs are read until the Body tag, then edicts in groups of four with delta-encoded rune IDs.
  5. 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.
  6. Supply. premine + cap × amount is 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.