How to compare an original pdf with the signed version
- Step 1Open the PDF Compare tool — Open PDF Compare / Diff. The executed document is processed locally in your browser — nothing is uploaded.
- Step 2Add the original (unsigned) PDF first — Drop the exact file you sent for signature as file A. Its lines become the
removedside. It appears in the queue with name, size, and page count. - Step 3Add the signed PDF — Drop the returned, signed file as file B — its lines become
added. The tool takes exactly two files; add original-then-signed in that order (no reorder control). - Step 4Click Process 2 files — The Process button enables once both files are present. There is no options panel for this tool. Click to run the comparison.
- Step 5Check that the text matches — If
textDiff.identicalis true, the extractable text is unchanged — the body of the agreement wasn't edited. Investigate any entries intextDiff.added/removedto see whether they're benign (a typed name/date in a signature field) or substantive (a changed term). - Step 6Verify the signature separately — This diff proves text equivalence, not cryptographic validity. To confirm the digital signature is intact and the document wasn't tampered with at the byte level, run the signed file through PDF Signature Verify.
Two questions, two tools
Content equivalence and cryptographic integrity are different checks. This tool does the first; the verifier does the second.
| Question | Tool | What it actually checks |
|---|---|---|
| Did the words change before signing? | PDF Compare / Diff (this tool) | Extracts text from both files and lists added/removed lines; flags page-count/size changes |
| Is the digital signature intact? | PDF Signature Verify | Recomputes the ByteRange digest and verifies the PKCS#7/CMS signature against the signer's certificate |
| Was the document changed after signing? | PDF Signature Verify | Checks whether the signature covers the whole file (coversWholeDoc) |
| Who signed it and when? | PDF Digital Signature viewer | Reads signer name, time, and reason from the signature dictionary |
How to read a difference between original and signed
Not every difference is tampering. Use this to triage what the diff surfaces.
| Observed difference | Likely meaning | Action |
|---|---|---|
textDiff.identical: true, larger file size | Signature data added bytes; text unchanged | Benign — confirm cryptographically with the verifier |
| Page count +1, one added line | A signature/certificate page was appended | Read the added page's text to confirm it's a signature page |
| Added/removed pair on a body page | Text on that page changed before signing | Investigate — this is a substantive change |
| Names/dates appear as added | Typed signature-field values were filled in | Usually benign; confirm they match the agreed signatories |
textDiff.extracted: false | The signed copy is a scan with no text layer | OCR it first, or rely on the structural diff plus the verifier |
Cookbook
Original-vs-signed scenarios and exactly what the report shows. Remember: a clean text diff confirms the words match, not that the signature is cryptographically valid.
Signed copy — text identical, only signature added
The signer applied a digital signature without filling typed fields or editing the body. Text is identical; file size grows from the signature data.
Result: pageCountA: 9 pageCountB: 9 differences: [] textDiff.identical: true textDiff.unchanged: 9 textDiff.report: "No text differences — the two documents have identical text content." (File size differs — that's the signature bytes, not a content change.)
Typed name and date filled into signature fields
The signer typed their name and date into form fields on the last page. That page's text changes, so it shows as a removed/added pair — benign, but worth confirming.
textDiff.report:
Page 8 text …
- Page 9 … Signature: ____ Name: ____ Date: ____
+ Page 9 … Signature: [sig] Name: Jordan Lee Date: 2026-06-01
Review: the only change is the filled-in signatory block — expected.A body clause was changed before signing
The dangerous case: a term on page 4 was altered, then the document was signed. The diff flags page 4 as a removed/added pair so you catch it.
textDiff.report:
Page 3 text …
- Page 4 … payment due within 30 days …
+ Page 4 … payment due within 90 days …
Page 5 text …
addedCount: 1 removedCount: 1 ← investigate before honouring the signatureA signature/certificate page was appended
Some signing platforms add a certificate-of-completion page. Page count rises by one and the new page's text appears as an addition.
Result: pageCountA: 6 pageCountB: 7 differences: ["Page count differs: 6 vs 7", "Text differs: 1 line(s) added, 0 line(s) removed"] textDiff.added: ["Certificate of Completion … signed by … timestamp …"] textDiff.removed: [] (Expected for many e-sign platforms — verify the page is genuine.)
Signed copy is a scan — text diff can't run
The party printed, wet-signed, and scanned the document. No text layer means only the structural diff runs.
Result:
textDiff.extracted: false
textDiff.report:
"Text layer could not be extracted from one or both PDFs
(e.g. a scanned/image-only document). Run OCR first to
enable the text diff."
Fix: OCR the scan at /pdf-tools/pdf-ocr, then compare the typed text
against the original; the wet-ink signature won't OCR.Edge cases and what actually happens
This does not verify the digital signature
Out of scopeThe tool compares text content; it does not validate the certificate, recompute the ByteRange digest, or check the PKCS#7/CMS signature. A clean text diff means the words match — not that the signature is cryptographically valid. Run PDF Signature Verify for that.
Signed file is larger but text is identical
By designDigital signature data, embedded certificates, and timestamps add bytes, so the signed PDF is normally bigger. A file-size difference with textDiff.identical: true is expected and is not evidence of a content change. Size alone proves nothing about the body.
An image-only signature was pasted in
Not detectedIf someone pasted a scanned signature image into the PDF, the diff won't see it — image content isn't compared, only text. The text diff can still confirm the surrounding words are unchanged, but it can't tell you whether the image signature is authentic. Cryptographic authenticity requires a real digital signature and the verifier.
A signature/certificate page was appended
ExpectedMany e-sign platforms append a certificate-of-completion page, so page count rises by one and the new page's text appears as an addition. This is normal — read the added page to confirm it's a legitimate signature/certificate page, not smuggled content.
Signed copy is a wet-ink scan
Structural onlyA printed-and-scanned signed copy is image-only, so textDiff.extracted is false and only the structural diff runs. OCR the scan with PDF OCR to compare the typed text; the wet-ink signature itself won't OCR and must be checked by eye.
Typed field values look like content changes
TriageWhen signers type their name and date into form fields, the page holding those fields changes, so it shows as a removed/added pair. This is usually benign — verify the change is only the filled-in signatory block and not a body edit on the same page.
Form fields flattened on signing
Heads upSome platforms flatten form fields into the page on signing. If field placeholders in the original became filled values in the signed copy, those pages will differ. Read the pairs to confirm the differences are limited to expected field values.
Encrypted signed PDF
May failA signed PDF with encryption may block pdfjs text extraction, leaving extracted: false. Remove the password with PDF Unlock before comparing — but note that altering an encrypted-and-signed file can itself invalidate the signature, so do the comparison on a working copy and verify the original with the signature verifier.
Files added in the wrong order
By designFile A (removed) should be the original, file B (added) the signed copy. If the report reads inverted, remove a file with the X and re-queue original-then-signed. There's no reorder control.
Body text changed AND re-signed
InvestigateIf the diff shows a substantive body change between original and signed, the document was edited before (or the signature was re-applied after) the change. The text diff flags the page; the verifier tells you whether the current signature still covers the whole file. Use both to decide whether to honour the signature.
Frequently asked questions
Does this cryptographically verify the digital signature?
No. This tool compares text content only — it does not validate the certificate, recompute the ByteRange digest, or check the PKCS#7/CMS signature. A clean text diff confirms the words match between original and signed; it says nothing about whether the signature is valid. For that, run the signed file through PDF Signature Verify, which performs the actual cryptographic checks.
The signed PDF is a different size — does that mean it was tampered with?
Not by itself. Digital signatures, embedded certificates, and timestamps add bytes, so a signed PDF is normally larger than the original. A size difference with textDiff.identical: true is expected. To check whether anything was changed at the byte level after signing, use the signature verifier's coverage check, not file size.
How do I confirm only the signature changed and nothing else?
Run this diff: if textDiff.identical is true, the extractable body text is unchanged. Any entries in added/removed are typically filled-in name/date fields or an appended certificate page — read them to confirm they're benign. Then run PDF Signature Verify to confirm the signature is cryptographically intact. Together, those two checks cover content and cryptography.
Can it detect a scanned signature image that was pasted in?
No. Image content isn't compared — only text. A pasted signature image is invisible to the diff, and even if it were detected, the tool couldn't verify its authenticity. The text diff confirms the words around it are unchanged; for any cryptographic proof you need a real digital signature and the signature verifier.
What if the signed copy is a printed-and-scanned document?
A wet-ink scan is image-only, so there's no text layer and textDiff.extracted returns false. Run the scan through PDF OCR to recover the typed text, then compare it to the original. The handwritten signature won't OCR — check that by eye — but the OCR'd body text can be diffed against the original.
Why does my signed contract show an extra page?
Many e-signature platforms append a certificate-of-completion or audit page on signing, which raises the page count by one and shows up as an added line. That's expected — read the added page's text to confirm it's a genuine signature/certificate page and not unexpected content inserted into the body.
Is the executed contract uploaded anywhere?
No. Both files are read and diffed entirely in your browser, and the result panel confirms 0 bytes uploaded. The executed document never reaches a server — important for confidential signed agreements. Only an anonymous usage counter is recorded when you're signed in.
How precisely does it locate a changed clause?
To the page. Because pdfjs joins each page's text into one string, the line-level diff aligns one line per page — a changed clause shows as that page's whole text removed and re-added. Read the removed/added pair to find the exact wording. It tells you which page changed and shows the old and new text for it.
Should I compare before or after running the signature verifier?
Order doesn't matter, but run both. Use this diff to confirm the body text matches the original you sent. Use PDF Signature Verify to confirm the signature is intact and covers the whole document. A signed file can pass the text diff yet fail verification (or vice versa), so neither check substitutes for the other.
Will filled-in form fields show up as changes?
Yes, on the pages that hold them. When a signer types a name or date into a field, that page's text changes and shows as a removed/added pair. This is usually benign — verify the difference is limited to the expected signatory block (name, date, signature placeholder) and not a body edit hiding on the same page.
Which file do I add first — original or signed?
Add the original (unsigned) file as A and the signed file as B. A's unique lines are reported as removed and B's as added, which reads as 'this was in the original, this is what the signed copy has.' There's no reorder control, so if it reads backwards, remove a file and re-add original-then-signed.
Can I automate this check for a batch of signed returns?
Yes. pdf-diff is a named tool slug, so you can pair the JAD runner and POST each original/signed pair to the local runner endpoint to get the JSON comparison back automatically. Combine it with an automated signature verification pass for a full content-plus-cryptography check on every returned document.
Privacy first
All PDF processing runs locally in your browser using PDF-lib and pdf.js. No file is ever uploaded — only metadata counters are saved for signed-in dashboard stats.