Compare PDF

Three comparisons at once between two PDFs: word by word, pixel by pixel, and pages added, deleted or moved. Both files stay inside your browser.

Open in PDF ARENA

Three comparisons at once

Text, pixels and page structure, each reported separately instead of blended into one number.

Pages get aligned first

Insert a sheet in the middle and page 5 is no longer page 5. Alignment happens before anything is compared.

Evidence, not adjectives

Every change shows what it said and what it says. Classification only sorts the list.

Comparing two PDFs without lying about it

Most comparison tools put page 1 against page 1 and carry on. Insert one sheet into the middle of a contract and every page after it shifts, so the report fills with differences that are not differences. The document did not change forty times. It changed once. So the pairing comes first. Each page gets a fingerprint from its normalised text, pages are matched by similarity, and the matching runs with a penalty for gaps. Insertions, deletions and moved sheets come out as what they are. Only then does anything get compared. After that, three passes run apart. Words tell you what the text now says. Pixels tell you which regions shifted even when the characters match. Structure tells you what happened to the sheets themselves.

How to compare two PDFs

1

Load both documents

Original on the left, revision on the right. Comparison starts as soon as the second one lands.

2

Read the change list

Sorted by weight, so figures, dates and amounts arrive before commas. Each row shows the old text and the new.

3

Look at the pages

Side by side with the pair already aligned, or overlaid with a slider to fade between them.

4

Take the evidence with you

A marked PDF with the changed regions boxed, plus the report as JSON and the changes as CSV.

How the three comparisons work

Page fingerprints use word sets and character trigrams, with digits normalised and repeated banners stripped. Similarity is a Jaccard coefficient over both. The pairing itself is an edit-distance pass with a gap penalty, and a second look at the sequence finds sheets present on both sides in a different order: those are reported as moved. Not as a deletion plus an insertion. The text pass is a word-level diff with a bounded edit budget, so a fully rewritten hundred-page document degrades to a coarse report instead of hanging the tab. Every run gets labelled: figure, date, percentage, amount, proper name. The label only assigns weight for sorting. The row always carries the literal before and after, because a label is not evidence. The visual pass renders both sheets at one scale and compares them in blocks of eight by eight pixels, with a tolerance that absorbs antialiasing noise. Differing blocks group into rectangles, and those rectangles are what you see boxed in the marked PDF. This is the pass that catches a shifted logo, a widened margin or a swapped signature image. None of which touch a character. Filters exist because two extractions of one PDF distribute whitespace differently, and because inserting a sheet renumbers every footer after it.

Why this one

Sheets are paired before comparison, so one insertion reads as one change.

Visual differences are reported apart from textual ones, never merged.

Runs entirely in your browser. Neither document is uploaded.

Questions about comparing PDFs

Short answers, limits included

What if the two files have a different number of pages?
That is the case this was built for. Sheets are matched by content, so an inserted one is reported as inserted and everything after it still lines up with its counterpart.
Does it work on scanned documents?
The visual pass does, and it often shows enough. The word pass needs a text layer, so on a pure scan it finds nothing. Run OCR first.
Is any of this done by an AI model?
No. Everything is arithmetic on text and pixels, running locally. Nothing is inferred and no model decides what counts as a change.
What comes out at the end?
A PDF of the revision with changed regions boxed, the full report as JSON with the sheet map and every change, and a CSV for a spreadsheet.
Why are some changes marked as a figure or a date?
To sort the list. A changed amount usually matters more than a changed comma, so it floats up. The literal text is shown either way.

Updated on