Guide
How do I timestamp a document to prove it existed on a date?
Compute a cryptographic hash of the file, then publish that hash in a dated record you do not control: a transaction on a public blockchain, or a timestamping authority's signed token. Later, anyone holding the same file can recompute the hash and match it to the dated record, which shows the content existed by that date without ever revealing it. A timestamp proves existence at a date and nothing more: not who wrote the text, not that anyone agreed to it, not that it is true.
Updated September 10, 2026
What a cryptographic hash is
A cryptographic hash is a fixed-length fingerprint computed from a file: the same input always produces the same output, and changing a single character produces a completely different fingerprint. It is one-way, so the original text cannot be recovered from the hash, and finding two different files that share a hash is not feasible with today's computers.
SHA-256 and Keccak-256 are the two you will meet most often. SHA-256 is the everyday standard used by Bitcoin and most timestamping authorities. Keccak-256 is the hash used throughout Ethereum and Ethereum-compatible chains such as Polygon, and it is the one TrustChain computes on a signed agreement. Both produce a 64-character hexadecimal string, both are fine for timestamping, and the only requirement is to record which one you used.
- Same file in, same fingerprint out, every time
- Change one character and the whole fingerprint changes
- The fingerprint cannot be reversed to reveal the text
- The fingerprint is the same length whether the file is one line or one gigabyte
Why publishing a hash proves existence at a date
Publishing the hash instead of the document is the whole trick. The hash reveals nothing about the content, so it can sit in public, and because nobody can feasibly construct a document to match a chosen hash after the fact, a dated public record of the hash shows that exactly that content existed by that date.
The strength of the proof comes from the record, not the hash. A hash written in your own notebook proves nothing, because you control the notebook and its dates. A hash in a Bitcoin or Polygon block, or inside a timestamping authority's signed token, is dated by a system you do not control and that many other people watch.
Keep the original file, byte for byte. The proof only works if you can later produce a file that hashes to the published value, and a re-saved PDF, a re-typed text or a document with tracked changes will hash differently. Store the exact file in more than one place, with a note of which hash function you used and where the hash was published.
What a timestamp does not prove
A timestamp proves that specific bytes existed at or before a date. It proves nothing else, and it does not even prove the document was written on that date: a text written in January and anchored in March carries a March timestamp. Three further things are often read into a timestamp that it cannot carry, and this is true of every method in this guide, including a Polygon anchor or a signed authority token.
- Who wrote it. Anyone can hash any file, including one copied from someone else. A hash in a block or a token identifies neither the author nor the person who published it, unless a separate identity step ties a person to the act.
- That it was agreed. A timestamped contract draft shows the draft existed, not that the other party saw it, accepted it or signed it. Agreement needs a record of each party assenting to the same text.
- That it is true. A hash of an invoice, a statement or a claim says nothing about whether the contents are accurate. It is a fingerprint of the bytes, not a check on the facts.
Public blockchain anchors: Polygon and Bitcoin
A blockchain anchor puts the hash into a transaction on a public chain, and the block that includes it carries the date. On Polygon or Ethereum the hash goes into the transaction data or a contract event. On Bitcoin the usual route is OpenTimestamps, a free open protocol that gathers many hashes into one Merkle tree, commits the root in a single Bitcoin transaction, and hands you a small proof file to keep.
The strengths are independence and longevity. No company needs to stay in business for the proof to keep working, anyone can look up the transaction on a public block explorer, and once the block is confirmed and buried under later blocks the record is tamper-evident: it cannot be altered without the change being visible to everyone running the network.
The weaknesses are precision and identity. A block timestamp is set by the network and is approximate rather than exact: on Bitcoin it can be off by an hour or more, so treat it as proof of the day rather than the minute. An OpenTimestamps proof can take hours to be fully confirmed, and you must keep the transaction id or proof file yourself. Above all, a transaction identifies no one: it shows that some wallet published this hash at this time, and nothing about who wrote or agreed to the document.
Timestamping authorities and notaries
A timestamping authority is a server that signs your hash together with the current time and returns a token. The common standard is RFC 3161, and the European eIDAS framework defines a qualified version with supervised providers. You submit the hash, not the document, so the authority learns nothing about the content.
Strengths: precise time, a widely recognised format, and support built into many document and code-signing tools. Weaknesses: you are trusting the authority's clock, its key handling and its continued existence, and checking a token later requires software that understands the format. If the authority's signing key is ever compromised, every token it issued becomes questionable.
A notary is the human alternative. A notary checks identity, witnesses a signature and records the date in a register. That is a different kind of evidence from a hash, and it is the only method on this list that speaks to who was in the room. The limits are cost, scheduling, and the fact that the notary usually attests to a signing on paper, not to the bytes of a digital file: a notarised paper copy and an edited digital copy can drift apart unless you hash the file as well.
Why emailing it to yourself is weak
Emailing a document to yourself is the folk method, and it is weak for three reasons. You control the mailbox, so a message can be deleted and re-created with an altered attachment. Header dates are plain text and can be edited on the way in or in an exported file. And the content sits in the mailbox in full, so it is neither private nor compact.
The one thing it has going for it is the receiving timestamp on the mail provider's server, which you do not control. That is slightly better than nothing, but the provider is not attesting to anything, its logs are not designed as evidence, and it will not help you retrieve a server-side record years later. If you want something as easy that actually proves the date, hash the file and stamp the hash with OpenTimestamps: it is one command and the public calendars are free.
Where TrustChain fits
A bare timestamp answers one question: did these bytes exist by this date. TrustChain is built for a different one: did both verified parties agree to this exact text, and when. Both parties verify identity once with a photo ID and a selfie (through SumSub, about two minutes), negotiate in an end-to-end encrypted chat, and sign the same final text. An unverified account cannot sign.
At signing, TrustChain computes the Keccak-256 fingerprint of the signed text and writes a timestamped, append-only audit entry. That pairs the dated fingerprint with signatures from identity-verified accounts, which is the part a hash alone cannot supply. Anchoring the fingerprint in a Polygon mainnet transaction is optional. On the Free plan ($0, no card: one protected agreement and three AI Advisor requests a month), an extra agreement or an extra Polygon anchor costs $1 each, one-off, and anchors require a verified identity. Pro at $19 a month includes 20 agreements and 20 anchors; Elite at $49 includes 100 of each. Plans are monthly and cancel any time.
If you anchor, only the fingerprint goes on-chain, never the text, names or personal data. The agreement text is stored on TrustChain's servers so it can compute the fingerprint and serve the record, certificate and PDF, which are free on every plan. The chat is end-to-end encrypted and TrustChain cannot read it. The public verification link opens without an account and shows the fingerprint and status, never the parties' identities; the title appears only if the owner opted in. If the record is anchored, the Polygon transaction can be checked on any block explorer independently of TrustChain. The registry contract on Polygon mainnet is 0x649Bc303d15E173D95B4d379e163868b03cf5Fec.
None of this changes what a timestamp is. The cryptographic parts verify anywhere; whether an agreement is enforceable depends on where the parties are and what they agreed, and TrustChain makes no claim about that.
Do it by hand
Pick one hash function and write down which one. For SHA-256, every mainstream operating system ships a tool. For Keccak-256, the function TrustChain uses and the one used across Ethereum-compatible chains, you need a short script, because the sha3-256 option in OpenSSL and similar command-line tools is NIST SHA-3, which uses different padding and gives a different result from Keccak-256.
Online hash calculators are convenient but come with two caveats. Anything you paste or upload leaves your machine, so never use one for a document you would not publish; a tool that runs entirely in your browser is better, and one rough check is to disconnect from the network before hashing and see whether it still works. And an unfamiliar site can mislabel its algorithm, so cross-check at least one result against a local command before you rely on it.
Once you have the hash, publish it somewhere dated that you do not control: an OpenTimestamps proof, a timestamping authority token, or a transaction on a public chain. Then store the exact original file with a note of the algorithm, the hash and where it was published.
To check later, run the same command on the same file and compare the two 64-character strings; the 0x prefix and letter case do not matter, but every other character must match. If they differ, the file has changed or you used a different algorithm or encoding, and the usual culprits are a re-saved PDF, converted line endings or a trailing newline. If the hash was anchored on-chain, open the transaction on a block explorer, find the hash in its data, and compare it the same way.
- SHA-256 on macOS: shasum -a 256 agreement.pdf
- SHA-256 on Linux: sha256sum agreement.pdf
- SHA-256 on Windows (PowerShell): Get-FileHash agreement.pdf -Algorithm SHA256
- Keccak-256 with Python (pip install pycryptodome first): python3 -c "from Crypto.Hash import keccak; print(keccak.new(digest_bits=256, data=open('agreement.txt','rb').read()).hexdigest())"
- Keccak-256 with Node.js (npm install ethers first): node -e "const {ethers}=require('ethers'); console.log(ethers.keccak256(require('fs').readFileSync('agreement.txt')))"
Questions people ask next
Does a timestamp prove who wrote the document?
No. A hash identifies bytes, not people; anyone can hash a file they did not write. TrustChain answers a neighbouring question, who signed: both parties verify identity with a photo ID and selfie before they can sign, and an unverified account cannot sign, so the signatures on the record come from verified identities. It still says nothing about who first wrote the text.
How much does it cost to anchor an agreement on Polygon with TrustChain?
The Free plan ($0, no card) includes one protected agreement a month; an extra Polygon anchor costs $1, one-off, and anchors require a verified identity. Pro at $19 a month includes 20 agreements and 20 anchors; Elite at $49 includes 100 of each. Plans are monthly and cancel any time. Anchoring is optional: every signed agreement gets a Keccak-256 fingerprint and a timestamped, append-only audit entry, and your own record, certificate and PDF are free on every plan.
Is the agreement text stored on the blockchain?
No. Only the Keccak-256 fingerprint goes on-chain, and only if you choose to anchor; never the text, names or personal data. The agreement text is stored on TrustChain's servers so it can compute the fingerprint and serve the record, certificate and PDF. The negotiation chat is end-to-end encrypted and TrustChain cannot read it. Anyone holding the signed text can recompute the hash and compare it to the fingerprint on the public verification page.
Can someone verify a TrustChain timestamp without an account?
Yes. The public verification link opens without an account and shows the fingerprint and status, never the parties' identities; the title appears only if the owner opted in. If the record is anchored, the Polygon transaction can be checked on any block explorer independently of TrustChain. The registry contract on Polygon mainnet is 0x649Bc303d15E173D95B4d379e163868b03cf5Fec.
Does a timestamp make my agreement legally stronger?
That is not something TrustChain claims. A timestamp shows the text existed by a date, and TrustChain's record adds which verified accounts signed it and when; that is all it shows. The cryptographic parts verify anywhere; whether an agreement is enforceable depends on where the parties are and what they agreed, and TrustChain makes no claim about that. If that question matters to you, ask a lawyer who practises where you are.
The free plan covers one protected agreement a month: both identities verified, the signed text fingerprinted, a public verification link. No card needed.