Compare PDFs
See what changed between two versions, in words and in pixels.
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 compares two PDFs twice and reports the results separately: a word-level diff of what the documents say, and a page-by-page pixel comparison of what they look like. What you get is an HTML report naming the changes, not a blended similarity score. If the two files turn out to be identical, the report says so in its title rather than leaving you to interpret an empty list.
When a document has come back and you need to know what moved: a contract returned by the other side, a specification revised by a supplier, a design proof against the version you approved, or two copies of a report you are no longer certain are the same file.
How it works
- Drop both PDFs onto this page. The first is treated as the original and the second as the revision, which is what the labels in the report mean.
- Choose text, appearance or both. Both is the default and costs one render of each document.
- For the appearance pass, set the resolution and the sensitivity - sensitivity is how large a pixel difference has to be before it counts as a change rather than as rendering noise.
- Leave ignore whitespace on so that a reflowed paragraph does not report as a change on every line.
- Press Compare and open the report. It lists the added and removed passages and the percentage of pixels that differ on each page.
A lawyer wants the words and a designer wants the pixels, and one blended percentage would answer neither. The text pass diffs the documents word by word, so a changed sentence reports the words that changed instead of a scatter of letters. The appearance pass renders both documents and compares page one with page one, counting the pixels that differ beyond the tolerance you set.
The text comparison treats each document as a single stream of words, so it tells you what changed rather than which page it changed on. That is deliberate - a paragraph inserted on page two would otherwise make every later page report as different - but it means the appearance pass is where you look when you need location.
The appearance pass compares by page number, which is right for a revision and misleading for an insertion: add a page at the front and everything after it differs from its counterpart. Pages present in only one document are flagged as such, and two documents on different paper sizes are compared over the region they share, with the rest counted as different.
Two renders of genuinely identical pages are not bit-identical, because anti-aliasing is not deterministic to the last channel value, so a comparison with no tolerance reports that noise as change. The default sensitivity of 20 per cent ignores small differences. The report also lists at most 200 individual changes and then says how many it has not listed, rather than truncating quietly.
What this tool cannot do
- The report lists at most 200 individual text changes, and says how many more there were. Wholesale rewrites are better compared by exporting the text and diffing it elsewhere.
- Scanned documents have no text layer, so the text pass finds nothing to compare. Run OCR PDF on both first, or compare by appearance only.
- The appearance pass compares page 1 with page 1 and so on, so an inserted or deleted page makes everything after it report as different.
- The report gives counts and percentages for each page, not a marked-up image showing where on the page the difference falls.
Questions people ask
- What is the difference between text and appearance?
- Text extracts the words from both documents and diffs them, which catches a changed number or a deleted clause wherever it moved to. Appearance renders both and compares the pixels, which catches a shifted margin, a swapped logo or a font substitution that the words alone would never reveal.
- What does the sensitivity slider do?
- It sets how different two pixels have to be before the difference counts. Rendering is not deterministic down to the last channel value, so a very low setting reports anti-aliasing as change. The default of 20 per cent is a sensible starting point: lower it to catch subtle shifts, raise it when the report is drowning in differences that mean nothing.
- Can I compare two scanned documents?
- By appearance, yes - that is what the pixel pass is for, though two separate scans of the same paper differ slightly everywhere and want a higher sensitivity. By text, no, unless the scans have been through OCR: with no text layer there is nothing to diff.
- What do I get at the end?
- An HTML report you can save, print or send on. It opens with a summary - identical or not, how many text changes, how many pages changed - then lists the added and removed passages, then gives the per-page pixel percentages. Anyone can open it without this site.
- Are both documents uploaded?
- No. Both are read, rendered and compared inside a Web Worker in your browser, which is also why comparing a fifty-page pair does not depend on your connection. The report is generated locally too.