OP_RETURN
Message Builder

Write a permanent message to the Bitcoin blockchain. Type it below, then follow the steps for your wallet. Nothing you type is sent anywhere.

Encoder
0 bytes Up to 80 bytes works everywhere.
Your message in hex appears as you type. OP_RETURN data travels as hex, which is just your text written in base 16.

Pick your path

Both are self-custody. You hold the keys and sign the transaction either way. The full node path adds privacy and verification: your own node builds and broadcasts the transaction instead of a company server doing it for you.

Everything here happens in Trezor Suite, the desktop app for your Trezor device. The message rides along on a normal payment. Simplest version: send a small amount to a fresh receive address in your own account, so the coins come right back to you and you only pay the miner fee.

Open the Send form

In Trezor Suite, open your Bitcoin account and start a send like any normal transaction.

Reveal the message option

Click the small three-dot button in the top-right corner of the Send screen, above the Total panel, and choose Attach message. It is easy to miss. Not the Add label pencil next to the address field. That one is a private note stored on your computer only and never touches the blockchain.

Paste your message

Use the left box, the plain text one. Emoji work fine, Suite converts them for you. The hex box on the right fills automatically, and it will match the hex encoding shown above. Copy your message from below.

Your message appears as you type.
Fill in the payment and confirm

Enter the recipient address and amount, review the transaction, and confirm on the device screen. The amount can be tiny. Around 1,000 sats to your own fresh receive address works well, and the network minimum is a few hundred sats. Your only real cost is the miner fee, since the coins come back to you.

See it on-chain

Search the transaction ID on mempool.space. The explorer decodes the OP_RETURN output back to readable text on the transaction page.

Why write to a blockchain at all?

An OP_RETURN output attaches a small piece of data to a Bitcoin transaction. Once that transaction confirms, the data is copied to every full node on Earth, stamped with a block time nobody controls, and it stays there. Public, timestamped, and beyond anyone's reach to alter. That combination is the whole reason people use it.

Proof it existed

Publish the hash of a document (instructions below), and you have proof that the exact file existed before that block was mined. Useful for manuscripts, designs, research data, and disclosures, without revealing the contents.

Notarization

Contracts, audit logs, and records can be anchored to a block. Anyone can later verify the anchor themselves. There is no notary to trust, and no service that can go out of business and take the record with it.

Provenance

Certificates, credentials, and supply-chain events can be committed on-chain so their history is checkable by anyone, forever, rather than living in one company's database.

Censorship resistance

A statement written into a block cannot be taken down, edited, or de-platformed. No host, registrar, or moderator sits between the message and the people reading it.

Protocol markers

Other systems use OP_RETURN as a machine-readable tag: asset issuance, sidechain pegs, layer-two commitments, and cross-chain proofs all ride on it.

Because it lasts

Memorials, dedications, and messages people simply want kept. It costs a few cents and it outlives every website you could otherwise put it on.

Proof it existed: how to make the hash

A hash is a short fingerprint of a file. Publishing the fingerprint instead of the file proves you had that exact file on that date, while revealing nothing about what is in it. Anyone can run the same command on their copy years later and see whether it still matches.

shasum -a 256 yourfile

That works on macOS and Linux. On Windows it is certutil -hashfile yourfile SHA256. Either way it prints 64 characters. Paste those into the Hex tab at the top and you are publishing the fingerprint of the file, not the file itself.

What OP_RETURN can't do

It is a tiny, permanent, public noticeboard. Almost every mistake people make with it comes from expecting one of these six things to be otherwise.

Size

80 bytes is the safe limit. That is about one sentence. Watch out for accented letters and emoji, which use several bytes each: a plain emoji costs four, and one with a skin tone or built from several joined together can cost eight or more. The counter above shows the real cost as you type. You can go longer, but only by sending with Bitcoin Core v30 or newer, and even then some of the computers that make up the Bitcoin network may refuse to pass your message along, and nothing will tell you it happened. Trezor Suite will not send more than 80 bytes at all.

Permanent

There is no delete. Once it confirms, it is on every node forever. It cannot be edited, retracted, or taken down by you or anyone else. Read your message twice before you broadcast it.

Public

It is not encrypted. Anyone can read it in any block explorer, and it is permanently linked to the transaction that carried it, which may connect it to your other addresses. Never write anything private, identifying, or regrettable.

Storage

It stores a fingerprint, not a file. You cannot put an image, a PDF, or a contract on-chain this way. The normal pattern is to publish a hash on-chain and keep the actual file elsewhere. The chain proves the file has not changed, but it does not host it.

Value

Nothing can ever be spent from it. The part of the transaction that carries your message holds no bitcoin, and no key exists that could unlock it. The network does not even keep it on the list of coins that can be spent. Any bitcoin sent there is destroyed for good. Your own money travels in the other parts of the same transaction and comes back to you as normal.

Policy

One message per transaction, and it costs a fee. Assume one. That is the rule older nodes enforce, so it is what travels reliably. Bitcoin Core v30 and newer allow several in a single transaction, the same change that raised the size limit, but older nodes may not pass those on. Either way you pay the normal Bitcoin fee for the extra bytes, and it takes just as long to confirm as any other transaction.