Skip to content
BTC2H₿₿2H
BlogChaptersDownloadOrderAboutFAQ
BTC Price
—
In Circulation
—
Block Time
—
Tx Fee
—

Bitcoin Zero to Hero

A free, open book for everyone—read online, download, or order a physical copy.

Explore

  • Blog
  • Bitcoin tax: Zurich
  • Read Online
  • Download PDF
  • Open-Source Projects
  • Order Book

Legal

  • About
  • FAQ
  • Privacy Policy
  • Cookie Policy

Connect

  • Share on X
  • Follow the author
© 2026 Bitcoin Zero to Hero. All rights reserved.
  1. Home
  2. Blog
  3. How to Put Anything on Bitcoin Using Ordinals
Ordinals

How to Put Anything on Bitcoin Using Ordinals

Published April 14, 20249 min read
MH
Written by Mohamed Habbat · Author

In this article

  • TL;DR
  • The wallet mistake that costs the most
  • What the ord protocol actually supports
  • What you need before you start
  • Path 1 Gamma.io no-code recommended starting point
  • Path 2 OrdinalsBot batch inscriptions
  • Path 3 ord CLI advanced users only
  • Fee estimation
  • After your inscription
  • Background reading
  • Three paths, one rule
In this article
  • TL;DR
  • The wallet mistake that costs the most
  • What the ord protocol actually supports
  • What you need before you start
  • Path 1 Gamma.io no-code recommended starting point
  • Path 2 OrdinalsBot batch inscriptions
  • Path 3 ord CLI advanced users only
  • Fee estimation
  • After your inscription
  • Background reading
  • Three paths, one rule

I work in the crypto self-custody space. I have watched the inscriptions debate split rooms full of Bitcoin developers since early 2023. As of May 2026, over 127 million inscriptions have landed on Bitcoin's timechain per ordinals.com/status. The technique works. The tooling is mature. What still trips people up is one wallet mistake that destroys the inscription before you realize what happened.

TL;DR

Three paths to inscribe a Bitcoin ordinal in 2026. Gamma.io handles everything with no code. OrdinalsBot adds batch controls and Lightning payment. The ord CLI (anchored to ord 0.27.1 released 2025-03-29) gives you full sovereignty but requires a fully synced Bitcoin node, currently around 743 GB of disk space. Whatever path you use, route the inscription to an Ordinals-aware wallet. Xverse, UniSat, and Leather are the verified options. Any other destination risks permanent loss.

The wallet mistake that costs the most

An inscription sits inside a specific satoshi. That satoshi carries at minimum 546 sats of value and lives inside a UTXO. Receive the inscription into a wallet that does not understand Ordinals and the software may pick that UTXO for a routine fee sweep or a coin-join. The satoshi pays a miner. The inscription is gone. You cannot recover it.

Bitcoin does not roll back. The mistake is final.

Use an Ordinals-compatible wallet to receive, store, and transfer inscriptions:

  • Xverse at xverse.app
  • UniSat at unisat.io
  • Leather (formerly Hiro) at leather.io

Never send an inscription to an exchange address. Never send it to a hardware wallet address unless you have confirmed the interface supports Ordinal-aware UTXO control. Read this before you do anything else.

What the ord protocol actually supports

The ord handbook states that inscriptions can carry any valid HTTP content type. The protocol itself imposes no fixed MIME allowlist. The community has converged on a handful of common types:

  • image/png and image/jpeg for static images
  • image/gif for animations
  • image/svg+xml for vector graphics
  • text/plain for plain text
  • text/html for interactive HTML
  • application/json for metadata and generative art trait files

These are common examples, not an exhaustive specification. The binding constraint is block size. Bitcoin's witness weight cap puts the practical per-inscription ceiling near 400KB. The 520-byte per-push PUSHDATA limit means larger data chunks get split across multiple push operations inside the inscription envelope. A 400KB file works. A multi-megabyte file does not.

The underlying mechanism is a commit-reveal construction using two Taproot transactions. The data sits inside a Taproot script-path spend with the envelope OP_FALSE OP_IF "ord" 1 <content-type> 0 <data> OP_ENDIF. Bitcoin Core 30.0 (released 2025-10-10) raised the -datacarriersize relay limit from 83 to 100,000 bytes via PR #32359, which affects OP_RETURN outputs only. Taproot witness-path inscriptions were not affected. If you have seen claims that CVE-2023-50428 or the datacarriersize change broke Ordinals, they did not. See the full breakdown for the distinction.

What you need before you start

  • A compatible Bitcoin wallet. Xverse is my pick for most users in 2026, with mobile and browser extension support plus full Ordinals and Runes handling. UniSat and Leather are solid alternatives.
  • Bitcoin for fees. Costs track mempool congestion. Check mempool.space for live sat/vByte rates before you commit. The API returns fastestFee, halfHourFee, hourFee, economyFee, and minimumFee in sat/vByte. For a rough cost calculation: commit_fee + reveal_fee + postage. The ord software targets a default postage of 10,000 sats per inscription.
  • Your file ready. Any valid HTTP content type the recipient's viewer can render. Keep it under 400KB to stay within practical limits.

Path 1 Gamma.io no-code recommended starting point

Gamma.io handles fee estimation, transaction construction, and broadcasting. No node required. No command line. The workflow is eight steps.

Step 1. Download Xverse (or UniSat or Leather). Create your wallet, write down your seed phrase, fund your Ordinals receive address. Check mempool.space before you fund.

Step 2. Go to gamma.io. Click Connect Wallet top right. Select your wallet and approve the connection.

Step 3. From the main menu, go to Create or Inscribe. For your first inscription, choose single.

Step 4. Click Upload File and select your file. Any valid HTTP content type works. Keep it under 400KB.

Step 5. Review the fee estimate. Gamma shows you the network fee derived from current sat/vByte rates plus a service fee. If the total looks high, check mempool.space. Off-peak windows can run far cheaper than peak congestion periods.

Step 6. Click Inscribe (or Confirm) and approve in your wallet. The transaction broadcasts to Bitcoin.

Step 7. Wait for confirmation. At standard fee rates you get one to six blocks, ten to sixty minutes. At low fee rates, queue time grows. Status shows in your Gamma dashboard.

Step 8. View your inscription. Check Gamma's My Inscriptions section, the Xverse Collectibles tab, or search the inscription ID at ord.io.

Path 2 OrdinalsBot batch inscriptions

OrdinalsBot is a dedicated inscription service with built-in batch support, so you can submit multiple files in one flow. You save per-transaction overhead when you inscribe a set.

The workflow mirrors Gamma.io:

  1. Connect your Ordinals-compatible wallet.
  2. Upload one or multiple files.
  3. Use the built-in fee selector to set priority.
  4. Pay the invoice via Bitcoin Lightning or on-chain.
  5. Receive your inscription(s) at the address you specify.

OrdinalsBot has processed millions of inscriptions and was operational at time of writing. Reach for it if you prefer batch controls or its fee presentation.

Path 3 ord CLI advanced users only

The ord CLI is the reference implementation maintained at github.com/ordinals/ord, currently led by raphjaph. The syntax below is anchored to ord 0.27.1 released 2025-03-29. CLI flags change between releases. Check the release notes for the version you install.

Requirements:

  • Bitcoin Core version 28 or later, fully synced, with txindex=1 in your bitcoin.conf. Standard config also needs server=1, rpcuser, and rpcpassword per bitcoincore.org.
  • A fully synced Bitcoin node: about 743 GB of disk space as of May 2026 per blockchainsize.org. Allocate headroom.
  • The ord binary compiled or downloaded from the verified GitHub release.
  • Command-line familiarity.

Core wallet workflow (ord 0.27.1):

# Create the ord wallet
ord wallet create

# Get your receive address
ord wallet receive

# Inscribe a file (verified flags in ord 0.27.1)
ord wallet inscribe --fee-rate <sats/vB> --file <path-to-file>

# Send an inscription to another address
ord wallet send <address> <inscription-id>

Verified inscribe flags in ord 0.27.1:

FlagPurpose
--fee-rate <sats/vB>Network fee rate (required)
--file <path>File to inscribe (required)
--destination <address>Where the inscription lands
--postage <sats>Sat value attached to inscription output (default 10,000)
--commit-fee-rate <sats/vB>Separate fee rate for commit tx
--compressGzip the content to reduce size
--dry-runSimulate the inscription without broadcasting
--parent <inscription-id>Set a parent inscription
--delegate <inscription-id>Delegate content from another inscription
--cbor-metadata <path>Attach CBOR-encoded metadata
--json-metadata <path>Attach JSON metadata
--sat <ordinal>Inscribe on a specific sat
--satpoint <satpoint>Inscribe at a specific satpoint

Two notes on flags that older tutorials get wrong. The correct flag for a simulation run is --dry-run. There is no --metadata flag. Use --cbor-metadata or --json-metadata depending on your encoding. If a guide lists either of the wrong forms, it is outdated.

Recursive inscriptions reference content from other inscriptions via the endpoint /r/inscription/<ID> (slash, not underscore) per the ord recursion documentation.

Check mempool.space before you set --fee-rate. The API at https://mempool.space/api/v1/fees/recommended returns current fastestFee, halfHourFee, hourFee, economyFee, and minimumFee values in sat/vByte.

Skip this path if you are starting out. For most users, Gamma.io reaches the same outcome in a fraction of the time without running a node.

Fee estimation

Inscription cost has two components. The network fee is your payment to Bitcoin miners and follows the formula commit_fee + reveal_fee + postage. File size in bytes times the sat/vByte rate dominates. The service fee is a flat addition charged by Gamma.io or OrdinalsBot when you use those platforms.

Postage defaults to 10,000 sats in ord's code (TARGET_POSTAGE constant in inscribe.rs). That is the amount attached to the inscription's output UTXO. It is not a fee. It is the sat value you will spend or transfer along with the inscription later.

When to inscribe: check mempool.space before every inscription. Congested periods (after major price moves, during high-profile collection launches) push sat/vByte rates up sharply. Quiet periods can cut the same inscription's network cost by a wide margin. If you are not time-sensitive, set the economyFee rate and wait.

After your inscription

Verify on-chain. Your inscription has a unique ID formatted as <txid>i0. Search it at ord.io to confirm the content, the sat it lives on, block height, and current ownership.

Transfer safely. In Xverse: go to Collectibles, select the inscription, then Send. The wallet constructs a Taproot transaction that moves the specific satoshi. Never use the standard Bitcoin send function for inscriptions. Use only the Ordinals-specific transfer in a compatible wallet.

List for sale. The main Ordinals marketplaces operational at time of writing:

  • Magic Eden Ordinals (highest liquidity)
  • Gamma.io
  • OKX Ordinals

Listing is non-custodial across all three platforms. You hold your private keys until the buyer pays.

Background reading

New to satoshi numbering and how inscriptions work? Start here: Discover How Bitcoin Ordinals and Inscriptions Transform Satoshi's Vision. For rare sats and the satoshi rarity tiers: Bitcoin Ordinals and Satoshi Uniqueness. For seed phrase security when you set up your wallet: BIP39 Seed Phrase Security. For the CVE-2023-50428 episode and the datacarriersize change that followed: Bitcoin CVE-2023-50428 explained. For a broader look at NFTs and tokens on Bitcoin: NFTs and Tokens on Bitcoin.

Three paths, one rule

Gamma.io. First inscription, no setup, done in minutes. The default choice.

OrdinalsBot. Batch inscriptions, fee optimization controls, same trust model.

ord CLI. Full sovereignty. No third-party trust. Budget roughly 743 GB of disk and setup time against ord 0.27.1 syntax.

Whichever path you choose, use the right wallet. Xverse, UniSat, or Leather for receiving and transferring. Not an exchange address. Not a standard Bitcoin wallet that treats all UTXOs as interchangeable. Bitcoin does not roll back. Neither does the mistake.


New to Bitcoin? Start with Chapter 1 in eight minutes.

Want the full picture? Read all 19 chapters free or order the physical book.

Frequently Asked Questions

What is the cheapest way to create an ordinal inscription?+
Inscribe during low-mempool windows. Check mempool.space before you start and wait for economyFee to drop. Off-peak UTC mornings and quiet weekends can cut costs significantly compared to peak periods. OrdinalsBot's economy tier queues inscriptions to execute at low fee rates.
Can I use any Bitcoin wallet to receive an inscription?+
No. Use only Ordinals-aware wallets such as Xverse, UniSat, or Leather. Receiving to a regular wallet or exchange address can permanently destroy the inscription when the underlying satoshi gets spent as a fee.
What is the file size limit for an inscription?+
Approximately 400KB per inscription, governed by Bitcoin's witness weight cap of roughly 4MB per block. Larger files mean proportionally larger fees. The ord protocol supports any valid HTTP content type, so images, text, HTML, JSON, SVG, and more are all supported.
Do I need a Bitcoin node to inscribe?+
Not for Path 1 (Gamma.io) or Path 2 (OrdinalsBot). Those services handle infrastructure. Only the ord CLI path requires a fully synced Bitcoin node, currently around 743 GB of disk space as of May 2026.
How long does an inscription take to confirm?+
One to six blocks at standard fee rates, typically ten to sixty minutes. Lower fee rates queue longer. Track status in your wallet or at ord.io.
Can I sell my inscription?+
Yes. Magic Eden Ordinals, Gamma.io, and OKX list inscriptions non-custodially, meaning you retain your private keys until the buyer pays. Magic Eden Ordinals currently has the highest liquidity among Ordinals marketplaces.
Go deeper

This topic is covered in full in nfts-and-tokens-on-bitcoin.

Enjoyed this article?

The complete Bitcoin guide — free online or CHF 25 for the physical book.

Related Articles

  • Bitcoin exposure inside a Swiss Pillar 3a pension via a regulated ETF held by the foundation

    Bitcoin in your Swiss Pillar 3a

  • Bitcoin Foundation Switzerland Setup Holders 2026

    Bitcoin Foundation Switzerland Setup Holders 2026

In this article

  • TL;DR
  • The wallet mistake that costs the most
  • What the ord protocol actually supports
  • What you need before you start
  • Path 1 Gamma.io no-code recommended starting point
  • Path 2 OrdinalsBot batch inscriptions
  • Path 3 ord CLI advanced users only
  • Fee estimation
  • After your inscription
  • Background reading
  • Three paths, one rule
In this article
  • TL;DR
  • The wallet mistake that costs the most
  • What the ord protocol actually supports
  • What you need before you start
  • Path 1 Gamma.io no-code recommended starting point
  • Path 2 OrdinalsBot batch inscriptions
  • Path 3 ord CLI advanced users only
  • Fee estimation
  • After your inscription
  • Background reading
  • Three paths, one rule
MH
Mohamed Habbat

Author

Wrote this book over five years of researching Bitcoin — because he needed the answers himself.

About the author
Go deeper

This topic is covered in full in nfts-and-tokens-on-bitcoin.

Related Articles

  • Bitcoin exposure inside a Swiss Pillar 3a pension via a regulated ETF held by the foundation

    Bitcoin in your Swiss Pillar 3a

    9 min read

  • Bitcoin Foundation Switzerland Setup Holders 2026

    Bitcoin Foundation Switzerland Setup Holders 2026

    9 min read

  • Bitcoin Social Security AHV Switzerland 2026

    Bitcoin Social Security AHV Switzerland 2026

    9 min read

BTC2H₿₿2H