How it works
How a SHA-256 digest is anchored in Bitcoin through OpenTimestamps, and how anyone can check the proof without us.
- 01
Your browser hashes the file
The file stays on your device. Your browser computes its SHA-256 digest and sends only the digest.
- 02
We submit a blinded digest through the OpenTimestamps protocol
We append a random 16-byte nonce and hash again, then send that value to four timestamp servers through the OpenTimestamps protocol. You get a submission receipt at once; it is not a certificate.
- 03
The timestamp servers anchor it in Bitcoin
Each timestamp server gathers many submissions into one Merkle tree, whose root is committed in one Bitcoin transaction. It is not instant, and the timestamp servers decide when.
- 04
We check the anchor before we issue a certificate
The block header must come byte for byte identical from two independent block explorers, carry enough proof of work, and be at least 6 blocks deep.
Check it without us
Check a proof without us
- 1
Download the .ots file of your stamp and keep it with the document.
- 2
Install the OpenTimestamps client and run it next to a Bitcoin node:
- 3
It recomputes the digest of your file, follows the proof to a Bitcoin block header and tells you the block. Nothing in it depends on us.
# install the client pip install opentimestamps-client # verify next to your own Bitcoin node $ ots verify -f <your file> <your file>.ots Assuming target filename is '<your file>' Success! Bitcoin block 970894 attests existence as of 2026-10-11 UTC
