Bitcoin · mainnet · protocol documentation
Runes
Runes is a fungible token protocol carved directly into Bitcoin transactions. A compact message called a runestone, carried in an OP_RETURN output, etches a new token, mints an existing one, or moves balances between transaction outputs. Balances live in UTXOs, so runes move the way bitcoin moves.
Protocol origin: Casey Rodarmor, the Ordinals project · Activated at block 840,000 (the fourth halving, April 2024) · Documented against ord 0.29.0 (ordinals crate 0.0.17) · Lifecycle: stable
The protocol in one look
What a runestone can do
- Etch
- Create a new rune and fix its properties forever: name (A to Z, with optional spacer dots like
UNCOMMON•GOODS), divisibility, currency symbol, an optional premine for the etcher, and optional open mint terms (amount per mint, mint cap, height or offset windows). - Mint
- While a rune's mint terms are satisfied, anyone may mint: each mint transaction creates the fixed amount and assigns it to the transaction's outputs.
- Transfer
- Edicts move amounts of specific runes to specific outputs. Anything left over follows the pointer, or the first non-OP_RETURN output. Sending runes to an OP_RETURN output burns them.
A malformed runestone is a cenotaph: input runes are burned, an etched rune becomes unmintable, and mints count against the cap but burn what they mint. The specification lists every cenotaph condition, and the decoder flags them in pasted scripts.
How runes are identified
A rune ID is the block that etched it and the transaction index inside that block, written BLOCK:TX. The first rune, UNCOMMON•GOODS, is hardcoded in the reference implementation with ID 1:0, symbol ⧉, and an open mint of amount 1 from block 840,000 to block 1,050,000. Every other rune's ID comes from where its etching confirmed.
Who this documentation is for
- Users and collectors: start with the guide to understand what your wallet builds and what to check before signing.
- Wallet and app developers: the specification gives numbered encoding and validity rules; the test vectors exercise them byte by byte.
- Indexer operators: the reference covers state transitions, confirmation, reorg behavior, and an implementation checklist.
Entry points
- Specification: normative rules, tag table, varint encoding, edict delta encoding, cenotaph list.
- Guide: etch, mint, and transfer walkthroughs with worked byte-level examples, and the Bitcoin Universe support matrix.
- Reference: terminology, indexer semantics, fees, limitations, security considerations.
- Test vectors: valid and invalid cases with expected outcomes.
- Runestone decoder: paste an OP_RETURN script, get a field-by-field reading. Runs entirely in your browser.
Source and ecosystem
- Owning repository: github.com/bitcoinuniverseio/runes
- Central documentation platform: docs.bitcoinuniverse.io
- Reference implementation: ord by the Ordinals project; upstream docs at docs.ordinals.com
- Bitcoin Universe products: the marketplace and Token Explorer surface runes as read-only, first-party indexed data. Rune transactions are not built or broadcast in-app. Details in the support matrix.
- Security reports: see private vulnerability reporting on GitHub.