Founders & Origins4 min readBitcoin (BTC)

OpenTimestamps: Proof a File Was Already There

OpenTimestamps links a file to a past Bitcoin block without putting the original on-chain. Its 2016 public alpha and 2017 Internet Archive experiment reveal the difference between a pending receipt, a completed proof and evidence that says more than it can support.

OpenTimestamps: Proof a File Was Already There

3-Minute Fast Briefing

  • The ParadoxPeter Todd announced an OpenTimestamps public alpha on September 15, 2016, using Bitcoin to anchor proofs of a file’s past existence.
  • The Turning PointA newly created .ots file can still be incomplete. The completed proof, the original file and the relevant Bitcoin data make independent verification possible.
  • The LegacyThe 2017 Internet Archive experiment used file digests at enormous scale but had coverage gaps. A timestamp proves past existence, not authorship or truth.

Chronological Timeline

September 15, 2016The public alpha is announced

Todd presents OpenTimestamps and distinguishes the existence of data from the truth of its contents.

May 25, 2017The archive experiment is explained

Todd describes timestamping Internet Archive file digests, while acknowledging missing coverage and limits for individual web captures.

A Receipt for the Past

On September 15, 2016, Peter Todd announced a public alpha of OpenTimestamps. The software addressed a modest-sounding question: can someone prove that particular data existed before a point in time? A date typed into a document depends on the person who typed it. OpenTimestamps instead built a verifiable connection between a file and a record outside its author’s control.[1]

Consider a research photograph that later becomes important. This is an illustrative case, not a reported incident. A timestamp can help establish that the exact file was already present before a later dispute. It does not identify the photographer, certify the scene or reveal the camera’s precise shutter time. The project defines its task as proof of prior existence; the meaning of the image still needs other evidence.[1][4]

The Original Stays Outside Bitcoin

The client hashes the file, producing a compact digest, and builds a sequence of cryptographic operations connecting it to a Bitcoin block. The separate .ots file records the proof. The image, book or video itself does not have to be stored in the blockchain. In the reference client’s privacy design, a calendar receives an opaque digest protected with a nonce rather than the original contents.[1][2]

Many submissions can share one Bitcoin transaction. A Merkle tree combines commitments in stages until a single root represents the batch; the proof preserves the path needed for one particular file. This is why the method can serve a large collection without paying for a transaction per document. Sharing a commitment does not turn the chain into a backup of the collection.[1]

The First Receipt May Still Be Waiting

The official client documentation makes the waiting visible. Running ots stamp creates a .ots file, yet an immediate verification can report that confirmation in Bitcoin is still pending. Calendar servers collect requests and provide the missing proof path when it becomes available. The arrival of a small file on your computer is therefore not, by itself, evidence of a completed Bitcoin timestamp.[2]

The ots upgrade command adds that path to the proof file. A complete proof can then be checked against Bitcoin data without asking the calendar to supply its missing pieces; the documented Python verifier uses a local Bitcoin Core node. Keeping the original and the completed proof matters. An unfinished receipt still depends on obtaining more data, while a finished proof cannot reconstruct an original file that has been lost.[2]

A Huge Archive, and Some Missing Years

In May 2017, Todd described applying the approach to the Internet Archive at the scale of hundreds of millions of files. The team used file digests exposed by the archive’s public APIs, avoiding the need to download the whole collection, and combined them through a Merkle tree. Todd explicitly said it was not an official Internet Archive project. The work concerned evidence about archived files, not moving the library into Bitcoin.[3]

His account also recorded the gaps. An initial import missed an entire year and parts of two others; some items lacked the metadata used to discover them. Timestamping underlying web-crawl files did not provide an individually convenient proof for every Wayback Machine page, and some raw data was not publicly accessible. A sound proof for one file could not establish that the collection had been covered completely.[3]

An Old File Can Still Be Wrong

That distinction goes beyond coverage. Someone can prepare false material and timestamp it honestly. A successful verification limits when the data must already have existed; it does not make the story inside it true or establish who owns it. Bitcoin’s block time is also not a precision clock for the creation of an individual file. Treating the displayed time as the exact moment a photograph was taken would ask the proof to answer a different question.[1][4]

For an archivist, the practical package is the original, a completed proof and a way to verify it against Bitcoin. OpenTimestamps lets that evidence travel beyond the service that first issued the receipt. Preserving those pieces gives a later reader something concrete to check, while leaving authorship, context and authenticity open to the evidence they actually require.[1][2][4]

Connected Lore & Universe

Connected Stories in this Universe

Explore the chain reaction of historical breakthroughs, blunders, and legends.

Sources & References

  1. [1]Source 1: 2016 public alpha: scope, hashing, aggregation and time limitsPeter Todd · 2016-09-15Accessed 2026-09-16
  2. [2]Source 2: Reference client: pending proofs, upgrades and privacyOpenTimestampsAccessed 2026-09-16
  3. [3]Source 3: 2017 Internet Archive experiment: method and coverage gapsPeter Todd · 2017-05-25Accessed 2026-09-16
  4. [4]Source 4: Project definition: proof of prior existenceOpenTimestampsAccessed 2026-09-16