Digital signature
Sign with a certificate, so a reader can prove the file is unchanged.
This tool runs entirely in your browser. Your file is never uploaded, and you can verify that in your browser's network tab. Verify it yourself: open your browser's network tab and watch. You will see one small request asking whether you have tasks left - a tool name and a hash, never the file.
What this does
This applies a real cryptographic signature: a detached CMS SignedData structure computed over the document's bytes and embedded in the file, which Acrobat and other compliant readers check when the document is opened. Unlike a drawn signature it establishes two things - that the holder of a particular certificate signed, and that not one byte has changed since.
When the recipient will verify rather than merely look: a tender submission, an invoice under an e-invoicing rule, a document going into an archive that requires signed originals, or anything where a later argument about whether the file was altered is a real possibility.
How it works
- Drop two files onto this page: the PDF, and your certificate as a .p12 or .pfx file. The order does not matter - the PDF is recognised by its contents.
- Type the passphrase that protects the certificate. It is used in your browser to unwrap the private key and is never sent.
- Fill in the reason and the location if your recipient expects them. Both are recorded inside the signature and shown by readers that display signature details.
- Leave visible on to draw a signature block on the page you choose, or turn it off for a signature that exists only in the file's structure.
- Press Sign with certificate, then open the result in Acrobat to see what a recipient's reader will report.
Every online signing service asks you to upload the one file you should never upload. Here the .p12 is read in the page and parsed inside a worker that holds nothing else, and the worker is terminated when the job finishes - the thread is discarded rather than a variable cleared, so nothing of the key survives into a later job.
A PDF signature covers the byte ranges its /ByteRange array names, and that array has to be written into the file in place, after space for the signature has been reserved. Re-serialising the document afterwards moves every offset and invalidates what was just computed - the mistake naive implementations make, and the reason some signed PDFs report as broken the moment they are opened.
A self-signed certificate produces a valid signature that readers report as validity unknown, because they have no reason to believe the name on it. That is not a failure: it says the mathematics checks out and the identity does not. A certificate issued by an authority your recipient's reader already trusts is what turns that into a green tick.
There is no trusted timestamp and no revocation checking, because both need a network service that this tool never contacts. The signing time recorded is your own computer's clock, which a strict recipient should treat as a claim rather than proof. An encrypted PDF is refused for a related reason: a signature computed over ciphertext is not something a reader will validate.
What this tool cannot do
- A self-signed certificate shows as validity unknown in the recipient's reader until they choose to trust it. Only a certificate from an authority their reader already trusts avoids that.
- No trusted timestamp is applied and no revocation is checked, because both require contacting a server. The recorded signing time is your device's clock.
- This produces a basic signature rather than a long-term-validation profile, so once the certificate expires nothing in the file confirms the signature was made while it was valid.
- Encrypted documents are refused. Remove the password with Unlock PDF before signing.
- The visible signature block has a fixed position and size on the page you choose; it cannot be dragged elsewhere.
Questions people ask
- What is the difference between this and Sign PDF?
- Sign PDF draws a picture of a signature on the page. This computes a cryptographic signature over the file's bytes with your private key and embeds it, so a reader can report who signed, according to the certificate, and whether anything has changed since. The drawn version establishes neither.
- Where do I get a certificate?
- From a certificate authority - several national schemes, a number of commercial CAs and some employers issue them. What you need is a PKCS#12 bundle, a .p12 or .pfx file holding your certificate together with its private key. A self-signed one made with OpenSSL signs perfectly well, but readers will not trust it automatically.
- Why does Acrobat say the signature's validity is unknown?
- Because it has verified the mathematics and cannot verify the identity. The message means the signature is intact and the document unchanged, but the certificate does not chain to an authority the reader trusts - which is what happens with every self-signed certificate.
- Does my private key get uploaded?
- No, and this is the tool where it matters most. The .p12 is read in the page and parsed inside a Web Worker that is terminated as soon as the job ends, so the key is not retained and never transmitted. Open the network tab before you sign: the one request there asks whether you have tasks left, and carries a tool name and a hash.
- Is there a trusted timestamp?
- No. A timestamp comes from a time-stamping authority over the network, and this tool never contacts one, so the time recorded is your own machine's clock. It is a claim rather than evidence, and a recipient with a strict policy should be told up front.
- Is my document uploaded?
- No. The document and the certificate both stay on your device; the signature is computed and written into the file locally. The only request a run makes asks whether you have tasks left, and it carries a tool name and a hash of the bytes - never the document, and never the key.