Two files in, every changed word highlighted — side by side, page by page
| Change | Shows in the diff? | Notes |
|---|---|---|
| Changed words, numbers, dates | Yes | Highlighted word-level, per page pair |
| Inserted or deleted sentences | Yes | Added text on the right, removed on the left |
| Inserted or dropped whole pages | Yes | Counted in "pages only in one file"; later pairs shift |
| Formatting-only edits (font, color, spacing) | No | Text-based comparison; the words didn't change |
| Image or chart changes | No | Images carry no text to diff |
| Scanned pages without a text layer | Flagged | Page reports "no extractable text"; run OCR first |
Lawyers redline, developers diff, and everyone else squints. This tool brings the diff to PDFs: it's the same word-level comparison our text Diff Checker runs, but fed by a PDF engine that walks page structure instead of a paste box.
Two files in → pdf.js extracts the text content of every page in each (that's the same text layer copy and search use) → pages pair up by number, page 1 against page 1 → jsdiff compares each pair word by word (or line by line, if you switch granularity) → the left pane renders the original with deletions struck out, the right pane the revision with insertions highlighted → the summary counts words removed, words added, and pages that exist in only one file. Nothing renders as images and nothing is uploaded; the whole pipeline is JavaScript in the page.
An old and a new service-terms page. The old text: "The quarterly service fee is $49.00 per month, billed on the first business day. Late payments accrue interest at 1.5% per month. Support is available Monday through Friday." The new text changes the fee to $59.00, the rate to 1.75%, and the support window to "Saturday, and phone hours start at 8 a.m."
The word diff finds exactly three removals — 49, 5, Friday — and four insertions covering the new fee digits (59), the rate digits (75), and the extended support sentence. Counted as words: 3 removed, 11 added, against 28 words on the original page — a 50% churn figure the summary reports directly. The untouched runs ("...per month, billed on the first business day...") stay plain, so the eye lands only on what changed. That's the whole job: two versions in, every number that moved, out.
Load both files into a PDF diff tool. This one extracts each page's text with pdf.js, compares the pages pairwise word by word, and shows the two versions side by side with removed text struck out on the left and added text highlighted on the right, plus a count of changes per page. Everything runs in your browser, so the documents are never uploaded.
No — this is a text comparison. If version two changes a font, recolors a heading, swaps an image, or nudges a margin without touching the words, the diff shows nothing. That's the honest limit of text-based diffing; it's tuned for contracts, policies, statements, and documentation, where the words are what matter.
A scan is a picture of text, and there's often nothing to extract — pages come back with no text layer and the tool says so per page. Run the scans through OCR first if you need to diff them; once a file carries extractable text, the comparison works normally.
A text diff tool compares what you paste in; this one walks the PDF itself — page structure, page counts, and the text inside each page — so you see changes page by page and notice structural moves like inserted or dropped pages. If you already have the raw text out of both files, our Diff Checker is the lighter tool for the job.
Text-based page matching has no anchor beyond position: page 5 of the old file pairs with page 5 of the new one. When one version inserts a page early, later pairs shift and show as large delete-plus-add blocks — the summary's "pages only in one file" counters are the tell that a structural change happened near the top.
No. Both files are parsed with pdf.js and compared with jsdiff inside the page; it works offline once loaded. Nothing is sent to a server and nothing is stored.