Compare PDF has been rebuilt around a single engine. There is no document-type picker any more: drop any two PDFs and the tool reads each one into a structured model of its text, vector geometry, images, form fields and annotations, then compares the models to each other. Position is only used to point at a change, never to decide whether something changed.
What's new
- Moves are moves: a note that spilled into the second column, a view nudged a few millimetres to make room, a dimension line pushed away from its feature, or a paragraph that moved to another page shows as one "moved" entry with the distance printed beside it, not as a delete plus an insert. Moves are listed and painted from the start; the Moved chip hides them.
- Callouts keep their identity: a dimension or leader is recognised by its value and by the feature its arrow points at. Slide the label and it is a move; change the value and only the changed digits light up; point the arrow at a different feature and it reads "retargeted".
- Vector geometry is compared as geometry: an added hole, a removed stiffener or a lengthened outline highlights only that path, or only the segments that moved, instead of a red and green blot over the whole drawing.
- Edited images: a logo or photo that was moved and touched up shows the edited region inside the image, with a move badge.
- Pages pair by content: an inserted sheet no longer turns every later page into "changed"; reordered pages are reported as page moves, and the viewer shows the paired pages side by side ("A 1 · B 2").
- Scans are read, not just looked at: a page with no text layer goes through OCR in your browser (two engines, united), so a scanned revision compares text to text against the original. Such changes carry the OCR confidence and an OCR badge.
- Form fields on every page, not just the first, and annotations in their own category.
- Printed forms compare with live forms: a flattened copy of an AcroForm compares value to value against the original.
- Different producers, same drawing: the same sheet exported from two applications, with dashes flattened into hundreds of tiny segments by one of them, still reads as unchanged.
- Restyles are named: the same line, fill or text drawn differently where it was reads as what changed: "black line → red line", "0.25 pt line → 0.5 pt line", "dashed → solid", "10 pt → 14 pt".
- Turned, mirrored and rescaled views: a view rotated a quarter turn, mirrored, or re-plotted at another scale is one entry that says so ("turned 90°", "scaled 2:1"), not a scatter of moved and redrawn lines.
- Nothing visible goes unexplained: every page pair is also rendered and compared by eye. A visible difference that no entry explains is reported, and a difference nobody can see (white or invisible text, content outside its clip, a hidden layer) is counted in the notices instead of listed as a change.
- Scans with an OCR layer: a scanned PDF that already carries an OCR tool's text compares as the scan it shows, with its text read as words. On colour scans, a note stamped in another colour is reported.
- Tables and case: two swapped columns read as two moves, not one per cell, and a change of case ("TOTAL" → "Total") is an edit.
Improvements
- Table rows that were inserted or deleted no longer derail the rows below them; each running-balance change is its own entry.
- Headings stay separate from the paragraph under them, so a renamed heading is one small change.
- Running headers and footers are tagged as furniture instead of being dropped, so a changed footer is still reported, in its own group.
- Small edits on big sheets: a one-character edit in 5 pt text on an A1 or A0 drawing ("1.5" → "1,5", "R6" → "R8") is checked at its own scale and reported, not dismissed as invisible.
- Marks beside dashed lines: a pin stub or a "+" polarity mark next to a dashed line stays its own stroke instead of being swallowed into the line.
- Copies and near-copies: a copy of a note added above the original reads as an addition, not the note moving; a note edited in place beside a new copy elsewhere reads as an edit and an addition.
- Paragraphs across pages: a paragraph split by a page break in one version and whole in the other pairs as one paragraph. Text that inserted pages pushed two pages on is a page-break shift; paragraphs moved to another page are moves.
- Relocated labels: a label that moved and was laid out anew (one line in one version, two in the other) is one move, with the distance.
- Views and tables: a resized hole is no longer called a rescaled view, and a table that gained a row is not reported as moved.
- Reviewing: cancelling a comparison no longer shows a false "identical" result; highlights land on the right spot of rotated pages; your accept and dismiss marks stay with the same two files across updates; the phone view has the mark buttons; the change list works from the keyboard.
- Pictures however they are drawn: a picture embedded inline, repeated across a page, drawn in pieces or painted as a one-colour stencil is compared as a picture. A semi-transparent watermark over the page no longer hides the text under it.
- Two-column pages: a title that spans both columns reads before them, and each column reads top to bottom, so edits pair with the right paragraph.
- Moved and restyled at once: text set in another size or colour that also moved reads as both, with the distance. A footer that moved on every page is one move, and a date edited beside the page count is an edit, not a pagination change.
- Paragraphs a page break cut in two: each piece is highlighted on its own page, with the changed words marked.
- Drawing labels: a label centred in a box reads as a labelled figure, not a form field, and a dimension whose value only OCR could read is still recognised as a dimension.
- Fewer doubled entries: a change the structural comparison already reports is not reported again by the pixel pass, while anything beside it that no entry explains still is. A page whose dimension labels could not be read keeps its drawing compared.
- Honest failures: when a page cannot be rendered or OCR fails, the notices say which side and which page, instead of the comparison quietly reading less.
- Counts and keys: the filter chips count each change once, the same way the list does, and the phone's change list keeps the j and k shortcuts.
Under the hood
The engine is scored against a synthetic corpus of revision pairs (flex-circuit fab drawings, manufacturing change orders, mechanical sheets, contracts, statements and forms, across two PDF producers and a scanned variant) with exact ground truth, and a ratchet forbids any pair from regressing. Research briefs on tree matching, tagged-PDF reliability, vector comparison, drawing conventions, evaluation methodology and the competitive landscape informed the design.