Stamp a file
Your file is hashed (SHA-256) in your browser. Only the hash is sent.
You pay with a browser wallet (MetaMask, Coinbase Wallet, Rabby…) holding USDC on Base. You sign a one-off USDC authorization; you don't need ETH for gas.
Keep the .ots next to your file. It's pending now, and Bitcoin confirms it in about 1–6 hours. Download it again from the status link later, or drop it into Verify below: once Bitcoin confirms it, Verify completes it for you.
Verify a file
Drop the original file and its .ots proof. The file is hashed locally, and nothing is stored.
Don't want to trust us? Verify at opentimestamps.org, or with ots verify on your own Bitcoin node.
How it works
- Hash. Your file's SHA-256 fingerprint is computed. Any change to the file gives a different hash.
- Commit. We add a random nonce, build a Merkle tree, and submit its root to independent OpenTimestamps calendars.
- Anchor. The calendars commit to a Bitcoin transaction. Once it's in a block, your proof is complete, and it points at that block.
- Verify. Anyone with the file and the .ots can recompute the path to the block header, without us.
Built on OpenTimestamps
OpenTimestamps is a free, open protocol for timestamping data in Bitcoin. It was created in 2016 by Bitcoin developer Peter Todd. Independent operators run its public calendars, and governments use it for public records (Guatemala's electoral tribunal, ministries in El Salvador).
Every proof we hand out is an ordinary .ots file. Any OpenTimestamps tool can verify it: opentimestamps.org, the ots client, or your own code. No lock-in: if we disappeared tomorrow, your complete proofs would still verify.
Payment per file with no account, which AI agents can do too. A batch of up to 100 hashes in one call. Submission to four independent calendars. We fetch the completed proof from Bitcoin for you, notify you by webhook, give you a signed receipt, and offer a verify page.
You can also stamp with the open-source ots client directly. We think that's great. stampthisfile is for when you want it done for you, with no software to install or keep running.
For developers and agents
One HTTP call, paid with x402: no sign-up and no API key. Agents can read /llms.txt, or install the skill: npx skills add stampthisfile/skills
# 1. Ask: the 402 answer carries the price (PAYMENT-REQUIRED) $ curl -i -X POST https://stampthisfile.com/v1/stamps -H 'content-type: application/json' \ -d '{"hashes":["'$(sha256sum contract.pdf | cut -d' ' -f1)'"], "webhook":{"url":"https://you.example/hooks","signing_key":"whsec_…"}}' # 2. Pay: any x402 client signs a USDC authorization and retries with PAYMENT-SIGNATURE # 3. Get pending .ots proofs now, and a signed webhook when Bitcoin confirms them
Up to 100 hashes per call, each at the unit price, in one payment.
stamps.completed / stamps.failed, Standard Webhooks format. Every delivery is signed with our Ed25519 key, and with HMAC too if you pass an optional signing_key.
Proofs are plain OpenTimestamps files. See the OpenAPI, the signing keys, and llms.txt. Agents: read /evidence.md before stamping.
What a stamp proves, and what it doesn't
- It proves the file existed no later than the time of the Bitcoin block its proof is anchored in. Bitcoin block times are accurate to within about two hours.
- It does not show who made the file, it is not a signature, and it is not an eIDAS qualified electronic timestamp.
- We only ever receive hashes. Your payment is public on chain, linked to the time of the stamp but not to your hash.
- If a stamp isn't confirmed within 7 days (rare), contact us and we'll refund the paying address.
Courts in China and France have accepted Bitcoin-anchored timestamps as evidence, alongside other proof. Read when a stamp helps as evidence, and what courts have said.