How to compare two PDFs side-by-side (free tools)

A practical 2026 walkthrough for diffing two PDFs and getting a clean report of what changed.

10 min read

How to compare two PDFs side-by-side in 2026 (free tools)

By ScoutMyTool Editorial Team ยท Last updated: 2026-05-18

Introduction

A vendor sent me "the final version" of a 42-page master services agreement, then six hours later sent "the actually final version" โ€” same filename, no cover note explaining what they had changed. Reading both end-to-end was a two-hour job I did not have. Adobe Acrobat Pro has a beautiful PDF compare view; it is also $22.99 / month. The two free "compare PDF" sites I tried first either uploaded both files to their server (a master services agreement โ€” no thanks) or quietly truncated my 42-page diff to the first three pages on the free tier. The workflow below is what I now run every time someone sends me a "v2" without a changelog.

Why a text-level diff beats a visual diff for contracts

The first instinct is "I want to see the two pages side-by-side and spot what looks different." That works for short, visually-distinctive changes (a logo moved, a header colour changed), but it falls apart on the most common case: paragraphs of legal text where the meaningful change is one altered clause buried in dense prose. A visual diff highlights every pixel that differs, which includes font-substitution noise, kerning differences from a different PDF rasteriser, and reflow caused by an inserted word three paragraphs earlier. You drown in red, and miss the one sentence that matters.

A text-level diff strips the visual noise. It extracts the words from both files, ignores how they happen to be rendered, and tells you exactly which lines were added, removed, or unchanged. The same algorithm Git uses for "git diff" โ€” Longest Common Subsequence (LCS), originally formalised by Hunt & McIlroy at Bell Labs in 19761 โ€” has been the standard for textual diff for half a century because it produces the minimum-change report consistent with the two inputs.

Step-by-step: compare two PDFs and get a report

The ScoutMyTool Compare Two PDFs tool implements the LCS diff client-side and emits a polished report PDF. Both input files stay on your device.

  1. Open the tool. Go to scoutmytool.com/pdf/pdf-comparison (one of the most common search queries for it is the short form "scoutmytool.com/pdf/pdf-compare" โ€” the canonical URL is the "pdf-comparison" one above). Static HTML, no account screen, no upload bar. The dropzone is visible immediately.
  2. Decide the "old" vs "new" order before you drop. The tool sorts the two files alphabetically by filename and treats the first as the older version (A), the second as the newer (B). To control the order, rename your files with a "1-" / "2-" prefix (or "old-" / "new-") before dropping. The cover page of the output report names which file was treated as A and which as B so you can sanity-check.
  3. Drop both PDFs at once. Drag-and-drop into the zone or click to choose. The tool requires exactly two files; if you drop one or three, it asks you to fix the count rather than guessing.
  4. Verify both files registered as PDFs. The dropzone shows file name and size for each. If either file looks wrong (a docx, the wrong version, a placeholder), remove and re-drop โ€” the diff cannot un-mix the comparison once it starts.
  5. Click "Compare Two PDFs". The tool extracts the text of each page with pdf.js, runs the line-level LCS diff page-by-page, builds a fresh report PDF with pdf-lib, and starts a download. On a typical 40-page contract the whole pipeline takes 2โ€“4 seconds; on a 300-page filing, 15โ€“30 seconds.
  6. Open the downloaded report. Page 1 is the cover: filenames, page counts, total lines unchanged / added / removed, and a per-page summary so you can immediately see which pages have the changes (skip to page 6 if pages 1โ€“5 show 0 / 0 / 0). Following pages are the per-page diffs: monospaced text with each line prefixed + (added, green), โˆ’ (removed, red), or two spaces (unchanged, grey).
  7. Skim by colour, not by line. Because unchanged text is greyed out, your eye is drawn to the green and red lines. On a 40-page contract with three altered clauses, you will spot the three change clusters in under a minute โ€” way faster than reading both files in parallel windows.
  8. If you prefer track-changes style, switch tools. The side-by-side report is great for an exec summary. For a legal review where the convention is inline track-changes (strikethrough on deletions, underline on insertions), run the same two files through PDF Redline Comparison instead โ€” same diff engine, classic redline presentation.
  9. If both PDFs are scans. The diff will come back empty because there is no extractable text. Run both through PDF OCR first (Searchable PDF output), then feed the OCR-processed copies into the compare tool. OCR character errors will show up as spurious + / โˆ’ lines, so account for some noise.

How ScoutMyTool compares to Smallpdf, iLovePDF and PDF2Go

"Compare PDF" is one of the most aggressively paywalled features on the big three PDF SaaS sites. The free tier of Smallpdf and iLovePDF do not expose a text-level compare at all; PDF2Go has a visual overlay tool but not a text diff. The free options below it (DiffPDF, draftable.com on the trial) work but require a desktop install or a signup.

FeatureScoutMyToolSmallpdfiLovePDFPDF2Go
Free unlimited comparisonsYesCompare in Pro onlyCompare in Premium onlyFree annotation diff, no text diff
No signup requiredYesRequiredRequired for files >50 MBYes
Diff algorithm disclosedLCS (git-diff equivalent)Proprietary (undisclosed)Proprietary (undisclosed)N/A on free tier
Files leave your deviceNo (client-side)Yes (uploaded)Yes (uploaded)Yes (uploaded)
Per-file size limitDevice RAM5 GB Pro / 100 MB free200 MB free100 MB free
Side-by-side report PDFYesYes (Pro)Yes (Premium)Visual overlay only
Inline redline (track-changes)Yes (separate tool)NoNoNo
Per-page summary on coverYesPartialNoNo
Works on OCR-processed scansYes (with OCR first)YesYesPartial

Third-party tier gating, size caps, and feature availability taken from each vendor's public pricing pages as of May 2026 and may change.

When a text-level diff is the wrong tool

  • Pixel-perfect brand QA. If you are comparing two brochure exports to catch a misplaced logo, a colour-profile drift, or a wrong-font substitution, you need a visual diff. Use DiffPDF (desktop, free, GPL) or diff-pdf (CLI, GitHub).
  • Comparing data inside tables. Text extraction from PDF tables is unreliable across tools โ€” the same table can come out as column-major or row-major depending on which extractor reads it. For table-cell-level diff, convert both PDFs to CSV / XLSX first via PDF to Excel and diff the spreadsheets in a tool built for tabular data.
  • Diffing scanned documents without OCR. Skip the diff entirely โ€” OCR both files, then diff the OCR output. OCR error patterns are different on each file (lighting, scan angle), so expect some noise in the diff even after OCR.

Related PDF tools on ScoutMyTool

  • Compare Two PDFs โ€” the tool this guide is about: side-by-side text diff report.
  • PDF Redline Comparison โ€” same diff, classic legal track-changes presentation.
  • PDF OCR โ€” required prerequisite if either input is a scan.
  • PDF to Text โ€” extract raw text from a single PDF for manual diffing.
  • PDF to Excel โ€” for tabular content; diff the spreadsheets instead.
  • PDF Editor โ€” apply the changes you spotted in the diff back into the document.
  • Merge PDF โ€” bundle the report PDF with the originals for reviewers.

Frequently asked questions

Does it compare images, layout, or only text?
Text only. The Compare Two PDFs tool extracts the text stream of each page and runs a line-level diff; differences in image placement, font rendering, kerning, or visual layout are not detected. If you specifically need a visual / pixel-level diff (e.g. comparing two exports of the same brochure to catch a misplaced logo), use a desktop tool like DiffPDF or a CI-friendly tool like diff-pdf. For 95% of real-world "what changed in this contract" use cases, text-only is what you actually want โ€” visual diffs flood you with noise from font substitution and pixel-rounding.
Which file is treated as "old" and which is "new"?
The file whose name sorts first alphabetically is treated as the older version (A); the second file is the newer version (B). Additions (in B but not in A) show in green with a +; removals (in A but not in B) show in red with a โˆ’. If you want to force the order, prefix one filename with "1-" and the other with "2-" (e.g. "1-draft.pdf" and "2-final.pdf") so the alphabetical sort matches your intent. The cover page of the report makes the assignment explicit so you can sanity-check before sharing.
My scanned PDF gives an empty diff. Why?
Scanned PDFs are images of pages โ€” there is no text stream to extract. The diff comes back empty because both "sides" of the comparison return zero text. The fix is to OCR both files first: open each one in PDF OCR, choose "Searchable PDF" as the output, save the OCR-processed versions, then feed those into Compare Two PDFs. After OCR each page has an invisible text layer that the diff can read.
How big can the input PDFs be?
No hard size cap โ€” the comparison runs entirely in your browser, so the only limit is device RAM. Practically, files under 100 MB and 500 pages compare in seconds. The diff algorithm is O(n ร— m) in lines per page (LCS), so a single page with several thousand lines (a giant terms-and-conditions block) can take a few seconds; multi-page docs with normal line counts (50โ€“80 lines per page) are essentially instant.
Is the diff actually accurate, or just a heuristic?
It is the same line-level Longest Common Subsequence algorithm Git uses for "git diff", with the same correctness guarantee โ€” every line in the output is either present-in-both, added-in-B, or removed-from-A. The one place "accuracy" gets fuzzy is when a single sentence is reformatted across line breaks: the diff sees two different sets of lines and reports several removals + additions even though no semantic content changed. For that reason, compare the rendered text not the literal whitespace whenever possible.
Are my PDFs uploaded to your server?
No. Both PDFs are loaded into a sandboxed memory buffer in your browser, the text is extracted with pdf.js, the LCS diff runs in JavaScript, the report PDF is built with pdf-lib, and the file is delivered as a download. Nothing leaves your device โ€” you can confirm in the browser network tab. Close the tab and both files are gone.
What is the difference between Compare Two PDFs and PDF Redline Comparison?
Same underlying diff, different presentation. Compare Two PDFs produces a side-readable diff report โ€” a cover page with totals plus one section per page showing + / โˆ’ lines, useful when you want a clean summary or are reviewing changes in a meeting. PDF Redline Comparison produces a legal-style inline track-changes report โ€” deleted text struck through in red, inserted text underlined in green, useful when you want the visual familiarity of a Word "track changes" review. Pick whichever your reviewer is used to.

Compare two PDFs now โ€” no signup, no upload

Free, unlimited, browser-only. Drop two PDFs, get a clean side-by-side report with per-page totals and colour-coded line diffs. Same LCS algorithm git diff uses.

Open the free PDF compare tool at scoutmytool.com/pdf/pdf-comparison โ†’

References

  1. Hunt, J. W., & McIlroy, M. D., An Algorithm for Differential File Comparison, Bell Laboratories Computing Science Technical Report #41 (1976). The original formalisation of the Longest Common Subsequence approach to file diff, still the basis of "git diff" and most modern diff tools. Bell Labs archive PDF: www.cs.dartmouth.edu/~doug/diff.pdf (Doug McIlroy maintains this canonical copy as part of his teaching materials at Dartmouth).
  2. ISO 32000-1:2008, Document management โ€” Portable document format โ€” Part 1: PDF 1.7 โ€” ยง9.4.3 ("Text-Showing Operators") defines Tj, TJ and related operators that emit text inside a page content stream, which is what the diff extractor reads. Adobe public copy: opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf.