Compare two documents and instantly see what changed. Everything runs locally — nothing leaves your browser.
🚀 How to use it
Load Document 1 and Document 2 — upload a file or switch the Input Mode to Paste Text.
Click "🔍 Compare Documents" — a side-by-side diff appears below.
Read the results — red strikethrough means removed, green means added.
💡For scanned pages or image-only PDFs, the tool automatically runs OCR before comparing. You can also use the ✂️ Crop button to OCR just a specific region, or highlight live text and click ➕ Add to Selection to compare only the portions you choose.
📂 Supported file types
📄 PDF
📝 DOCX
📊 PPTX
🖼️ JPG / PNG / TIFF / WebP
🌐 HTML
📃 TXT
📄PDFs and PPTX files show a Pages to compare field after loading. Leave it empty to use all pages, or enter a range like 1-3, 5, 8. You can also use the ← Prev / Page [N] / Go / Next → nav bar to jump to a specific page — navigating automatically sets that page as the one to compare. Bold, italic, and underline formatting in DOCX files is preserved in the document viewer.
➕ Selecting live text to compare
If a document has selectable text you can pick exactly which parts to compare — including non-contiguous paragraphs.
Upload a document with live text (PDF, DOCX, TXT, etc.).
Click and drag to highlight any paragraph or passage in the viewer. An ➕ Add to Selection button appears in the pane header showing the count of chunks so far.
Click ➕ Add to Selection. A blue panel lists the captured chunk. Repeat for any other paragraphs you want — skip the ones you don't need.
When done, click 🔍 Compare Documents. Only your selected chunks are used — the rest of the document is ignored.
💡Each chunk shows a preview in the blue panel with an ✕ to remove it individually, or ✕ Clear all to start over. Multiple chunks are joined in the order you added them.
🎛️ Results toolbar
After comparing, a toolbar appears above the diff with these toggles:
Highlight by: Words / Characters
— Controls diff granularity. Words shows whole-word changes; Characters shows letter-level edits.
🎯 Diffs Only
— Hides all unchanged text so only the highlighted differences are visible. Dashed lines mark where content was skipped.
🔤 Ignore Spacing
— Collapses all whitespace (extra spaces, line breaks, tabs) before comparing, so formatting differences don't show up as copy changes. The original text with its original spacing is always displayed — only the comparison logic is adjusted. Each document's own whitespace is preserved in its column.
🔗 Sync Columns
— Scrolling either diff column scrolls the other to the same relative position. Clicking an item in the Differences List temporarily overrides sync so the item can be found.
🔍Use the Search field to find specific words in the diff. Type your term and click 🔍 Search (or press Enter). Use Prev / Next to step through matches. Clear All removes all highlights in one click.
📋 Differences list
After comparing, scroll below the diff viewer to see the Differences List — a numbered table of every removed/added pair.
Click any − red or + green cell to jump directly to that change in the diff viewer. The span is briefly highlighted in amber.
If 🔗 Sync Columns is on, clicking a list item temporarily disables sync so the scroll-to works correctly, then re-enables it automatically.
🔎 Validate All Instances
Use this when Doc 1 is a single master/reference copy and Doc 2 is a full document containing multiple copies of that same content — for example, a page with several certificates. The tool finds every instance and diffs each one against the master.
Crop or select the master (reference) copy and send it to Doc 1.
Upload the full target document (containing multiple copies) as Doc 2 — do not crop it, so the scanner can see the whole page.
Click 🔎 Validate All Instances. Each found instance is shown as a card with its similarity score and a diff against the master.
Cards with a score at or above the threshold show ✅ passed; those below show ❌ failed. Adjust the threshold to tighten or loosen the match requirement.
💡Passing cards are collapsed by default — click any card header to expand its diff. Failing cards open automatically so you can see exactly what differs.
🔗 Synchronized scrolling
Sync Scroll
— (above the document viewers) keeps Document 1 and Document 2 at the same relative vertical position as you scroll either one.
🔗 Sync Columns
— (in the results toolbar) keeps the left and right diff columns scrolled together. Both can be on at the same time independently.
✨ What it can do
🔦
Live HighlightMarks extracted text on the document so you can verify coverage before comparing.
➕
Multi-chunk SelectionHighlight non-contiguous passages and add them one by one — skip paragraphs you don't need.
✂️
Crop ToolDraw a box around any region and OCR just that area.
🗂️
Crop QueueQueue multiple regions across pages, then extract them all at once. The queue stays active so you can send the same regions to both Doc 1 and Doc 2.
📑
Page rangesCompare only the pages you need. Navigate with ← Prev / Go / Next → and the compare range updates automatically.
🔎
Validate All InstancesUse Doc 1 as a master copy to find and validate every instance of it in Doc 2.
📝
Rich text preservedBold, italic, and underline from DOCX files show correctly in the document viewer.
📋
Differences listClickable numbered list of every change — click any item to jump to it.
🌙
Dark modeYour preference is saved across sessions and shared with this help page.
🔒
100% localNo files or text are ever sent to a server.
✂️ Using the Crop Queue
Click ✂️ Crop on a loaded document.
Drag to draw a selection, then click ➕ Add to Queue. The canvas resets so you can draw another region.
Navigate pages or switch documents — keep adding regions.
When done, choose a destination from the dropdown and click 📥 Send to Doc. All queued regions are OCR'd and combined. The queue stays active so you can send the same regions to another doc for comparison.
Click 🔍 Compare Documents as normal.
💡Use the 📄 Extract Text (OCR) button for a quick single-region extraction without queuing. The queue is only cleared when you click Clear Queue manually.
⌨️ Crop canvas controls
Zoom in / outScroll wheel
Zoom in / out (buttons)+ / - buttons
Fit image to view📐 Fit button
Reset zoom to 100%1:1 button
Pan around canvasSpace + drag mouse
Nudge selection 1 pxArrow keys
Nudge selection 10 pxShift + Arrow
Clear selectionDelete or Backspace
Pinch zoom (touch)Two-finger pinch
💡Scroll-wheel zoom always stays centred on your cursor position. The + / - buttons zoom toward the centre of the visible area. Holding Space while the crop canvas is open prevents the page from scrolling — it's captured by the pan tool. Release Space to return to selection mode.
🔧 Common questions
Check the file format is supported (PDF, DOCX, PPTX, JPG, PNG, TIFF, WebP, HTML, TXT). Password-protected PDFs cannot be opened — remove the password first. Very large files may take a few seconds; watch the loading indicator.
The tool automatically falls back to OCR for scanned / image-only PDFs page by page. If OCR still fails, use the ✂️ Crop tool to select the text area manually and extract it, then run Compare again. If the PDF has many pages, try entering a specific page number in the Pages to compare field — or navigate to the page using the ← / Go / → nav and let the range update automatically.
Higher resolution images give much better results — 300 DPI or above is recommended. Use the Crop tool to isolate a clean text area rather than running OCR on a busy full page. The OCR model downloads once on first use; wait for it to fully load before extracting.
The tool detects multi-column layouts automatically, but very complex mixed layouts may need manual help. Use the Crop tool to select individual columns or sections and queue them in the correct reading order.
Toggle 🔤 Ignore Spacing to collapse whitespace differences so only actual copy changes are flagged.
Toggle 🔦 Live Highlight to verify both documents extracted the text you expected.
Switch granularity from Characters to Words for a cleaner view.
If using page ranges, make sure both documents cover equivalent content.
Use ➕ Add to Selection to compare only the specific paragraphs that matter.
This was a known bug that has been fixed. When Ignore Spacing is on, the diff engine collapses whitespace for comparison only — each document's column still shows its own original text with its own spacing. If you see missing content, try toggling Ignore Spacing off and on once to refresh the view.
The Pages to compare field is read when you click Compare Documents — not when the file loads. Type the page number or range, then click Compare. Alternatively, use the ← Prev / Page / Go / Next → nav bar in the viewer: navigating to a page automatically fills in the Pages to compare field and shows a brief confirmation.
Make sure Doc 1 contains the master copy text (via Crop, queue, or text selection — not the full document) and Doc 2 is the full uploaded file containing multiple copies. Try lowering the similarity threshold slider. If Doc 2 was also cropped or has a text selection active, clear it so the full document text is searched.
Use page range filtering to process only the pages you need. Close other browser tabs to free memory for OCR. For large PDFs, consider splitting the comparison into smaller page ranges across multiple sessions.