What a Docseal record shows.
When you select a file, your browser reads and hashes its bytes using SHA-256. It sends the 64-character digest, not the document, to Docseal. Our server stores that digest, a random record ID and the UTC time it received the digest.
To check it later
Anyone with the record link can see the saved digest and server time. They select a file in their browser. It is hashed locally and compared with the saved digest. A match indicates the selected bytes have the same SHA-256 digest. Keep both the original file and the record link; Docseal cannot retrieve the file for you.
Check a receipt without this service
Each record comes with a receipt that this service signs with its Ed25519 key. You can download it from the record page. The public key is published at /.well-known/docseal-receipt-key.json. Save a copy of that key next to your receipts. Then you can check a receipt without this service:
node scripts/verify-receipt.js docseal-<id>.json original-file.pdf --key docseal-receipt-key.json
To create records from a terminal, run node scripts/seal.js first.pdf second.pdf. Each file gets its own record and a receipt saved next to it.
To check a file against a record link from a terminal, run node scripts/check.js original-file.pdf https://docseal.ink/verify/<id>. It hashes the file on your machine and compares the digest with the record.
After several files, the create form can save every receipt in one docseal-receipts-<n>.json bundle. The same command and the receipt check on this page accept that bundle. They check every entry and look for the one whose digest matches your file.
The script ships in the Docseal source. A valid signature shows only that this service's key signed that id, digest and server time.
What it does not prove
- We do not verify who submitted a digest or who authored the document.
- We do not prove when a document was written or signed, or that anyone consented.
- The time is our own server's clock, not an independent trusted timestamp, blockchain proof, signature or notarization.
- Do not put sensitive information in a filename or share your original file publicly. The record link itself reveals the digest and time.
- Records depend on this service and its storage being available. We make no legal evidentiary guarantee.
A match is evidence the exact bytes matched this service's earlier record; not identity, consent, signing, notarization or a third-party timestamp.
Need a signing workflow?
agree.ink shows an engineering preview for preparing, routing and tracking agreements. It cannot yet send, sign or store legal documents.