bsv.cx
Prove what happened, then verify it trusting no one — including us. bsv.cx writes compact, publicly-auditable records into Bitcoin (OP_RETURN), and every proof is checkable against block headers we run ourselves — not an explorer, not a database row anyone can quietly edit.
📄 Prove a file existed
Timestamp a contract, photo, recording or dataset on-chain — without uploading it. Later, prove it existed by a certain date. Free.
🔎 Check someone's proof
Given a Bitcoin inclusion proof, confirm it's real against block headers we sync ourselves. A forged proof can only fail. Free, no account.
💳 Pay-per-call, no signup
Fetch, capture or batch-timestamp with one BSV micropayment per call — for software agents that can't sign up for accounts. Every result comes with an on-chain receipt.
🔎 Verify any Bitcoin proof — free, and you check our math, not our word
Hand us a Merkle proof — or the ecosystem-standard BEEF / BUMP — and we fold it into a block Merkle root and check it against the header we independently hold at that height. You send the proof, never the root, so a forged proof can only ever fail, never falsely pass. No wallet, no account.
— run it yourself right now against a real mainnet anchor —
curl -s https://bsv.cx/spv/beef/12ffbfee559901a9257e78ecf6d9343823f8409de75f7df0d6d465209cb91364 > beef.hex
curl -s -X POST https://bsv.cx/spv/verify -H 'content-type: application/json' \
-d "{\"beef\":\"$(cat beef.hex)\"}"
# → {"status":"confirmed","verified":true,
# "computedRoot":"360a5493…7215","headerRoot":"360a5493…7215", …}
# computedRoot == headerRoot — folds to the root we independently hold
Three honest answers, never collapsed: confirmed · rejected · inconclusive
The services that produce those proofs — every result independently verifiable:
💳 Machine-payable APIs
Pay per call in BSV, or in MNEE (a USD stablecoin) if you'd rather not hold BSV — no account, no signup, no card. An agent that needs one thing from one service can pay for it and move on. Every paid result comes with an on-chain receipt, so you can prove later exactly what you were given and when.
🔗 URL shortener
Short links whose code is derived from the URL itself and anchored on-chain — anyone can recompute and verify.
🌐 Web-page archive
Paste a live URL and we capture it now — witnessing its HTML, hashed and anchored — or paste a Wayback snapshot link and we notarize that existing snapshot instead, carrying its original archive date. One door; the on-chain proof is forever, the stored copy best-effort.
📄 Filestamp Notary — proof of existence
Timestamp any file without revealing it — audio, video, images, documents, archives. Hashed in your browser; only the 64-char fingerprint is sent.
— or batch-timestamp thousands for one anchor (paid API, ~1 sat/hash) —
# paid API — this POST returns a 402 payment challenge first (~1 sat/hash)
curl -X POST https://bsv.cx/n/batch \
-H 'content-type: application/json' \
-d '{"hashes":["<sha256hex>", "…"]}'
Two questions every skeptic asks — answered plainly:
Why Bitcoin SV?
Because timestamping needs data to stay cheap and permanent at scale: large blocks and low, stable fees mean we can write real proofs on-chain for a satoshi or two and expect them to still be there in a decade. You don't need to hold or value BSV to use any of this — verification is free, and every anchor is an ordinary Bitcoin transaction, not a bsv.cx-specific format.
What happens to my proofs if bsv.cx disappears?
They still stand. Your timestamp lives in an OP_RETURN on the public chain, not in our database — and it re-verifies with any @bsv/sdk tool via standard BEEF / BUMP, with zero bsv.cx code, against block headers anyone can sync. Keep your own copy of the manifest and files (we tell you exactly which to keep) and your proof outlives us. That's the whole point: you never had to trust us in the first place.