bitcoinburned burn address registry
Provable Burn · v1

Destroy bitcoin
with mathematical certainty.

Builds an unsigned transaction that sends real value into an OP_RETURN output — a script that fails for every possible unlocking attempt, forever, by consensus rule rather than by hoping nobody finds a key.

Never asks for a private key Runs entirely in this browser tab Nothing is sent anywhere until you broadcast it

1The coin you're spending

The UTXO to feed into the burn. You can find these fields in any wallet's transaction details or a block explorer.

2How much to burn

A full burn spends the whole UTXO into OP_RETURN. A partial burn destroys some and sends the rest back to you as change.

3Optional message

Embedded permanently in the OP_RETURN output alongside the burned value. Leave blank if you don't want one.

0 bytes

Burning is permanent — the bitcoin can never be recovered — but this PSBT stays inert until you sign it in your own wallet.

🔥
Unsigned burn certificate
Provably unspendable · not yet signed
⚠ Fee is more than half the input value — double-check this is intentional.
Burning
OP_RETURN script (hex)

What to do with this

  1. Open a PSBT-capable wallet you already trust and import this PSBT. Check every field against what you entered above — especially the burn amount.
  2. Sign it there. This page never sees your private key and cannot sign anything itself.
  3. Broadcast it from your own Bitcoin Core node — see below. This is the step that catches people out.

You need your own node to broadcast this

A burn puts real value into an OP_RETURN, and Bitcoin Core refuses to send that unless you explicitly raise maxburnamount, which defaults to 0.00. Public broadcast endpoints — mempool.space, Blockstream, and the Electrum servers behind wallets like Sparrow and Electrum — all call sendrawtransaction without it, so they will reject this transaction. The flag cannot be set in bitcoin.conf either, so it has to be your node and your command line:

bitcoin-cli -named sendrawtransaction hexstring=<signed-hex> maxburnamount=<btc>

Set maxburnamount just above the amount you're burning — never blanket-large. It is the last guard between a typo and a real loss.

This is a limit of the tooling around you, not of your transaction. maxburnamount is a safety check inside that one RPC call — it is not a network rule. Once any single node accepts your burn, the rest of the network relays and mines it normally.

Two more things worth knowing before you sign. Trezor and Ledger firmware refuse to sign an OP_RETURN output carrying a nonzero amount, so a hardware wallet likely won't complete this — Bitcoin Core's own walletprocesspsbt is the proven path. And testmempoolaccept takes no maxburnamount argument at all, so it reports allowed: true for a burn that sendrawtransaction then rejects. It is not a green light.

If a broadcast is refused, your transaction is almost certainly fine and the pusher is simply declining it. Check the command before you touch the transaction — rebuilding a correct burn is how people make expensive mistakes.