Write a message on the blockchain
Your words go into an OP_RETURN output, inside a real Bitcoin transaction. Nobody can edit them, and nobody can delete them while Bitcoin exists.
What this is
You write up to 80 bytes — roughly 80 characters, fewer if you use emoji or accented letters. You pay 1400 sats. Within a minute of your payment, a transaction carrying your message is signed and broadcast by this site's own wallet. It confirms with the next block, usually ten minutes later.
Technical: what exactly goes on chain
Your message is encoded as UTF-8 and written into a script of the form OP_RETURN <push> <your bytes>. 80 bytes is one standard output, which every node relays and every miner includes; anything larger is non-standard, so the tool refuses it rather than build something that might never confirm.
The transaction spends from this service's wallet, pays the miner fee from that wallet, and returns the change to it. The OP_RETURN output itself carries zero value — you pay for the space, not for an amount. Messages are paid for over Ark or Lightning, which settle in seconds; the message transaction itself is always on-chain, because that is the only place an OP_RETURN can live.
The price is the service fee plus the miner fee at the feerate this site's node reports when you order. There is no account, no login, and no identifier linking the message to you: a different address pays each order, and this site stores only your message and its transaction id.
The plain truth about permanence: a confirmation makes the message part of the chain, but nothing stops someone from copying it, and nothing on chain is confidential. Do not put secrets in it.
Your message
The latest 21 messages found on the chain are shown with a grey border, so a paid one is easy to tell apart.
Payment
Pay any one rail. The message goes out once the payment is seen; this page follows it through to the transaction.
Using it from code
The same service is a public API, with no key:
POST https://pay.satoshi.si/opreturn/v1/orders
{ "message": "hello", "isPublic": false }
GET https://pay.satoshi.si/opreturn/v1/orders/<id>
GET https://pay.satoshi.si/opreturn/v1/config
GET https://pay.satoshi.si/opreturn/v1/latest
The order answers with the rail destinations and the amount. Poll it until state is published, then read opReturnTxid.