Text Difference Checker

Your editor returns draft 3 of a contract with tracked changes switched off. Paste draft 2 on the left and draft 3 on the right. Inserted, deleted and reworded lines line up side by side, with the changed words marked inside each line.

Older
0 lines
Newer
0 lines

Differences

Paste the older version on the left and the newer one on the right. The result builds as you type. No text handy? Press Load sample.

Reading the result

Press Load sample. Both boxes fill with two drafts of a remote work policy. The result shows five change blocks. Each row type means one thing:

Reworded lineRed on the left, green on the right, same row. Only the words with a darker mark changed. Item 1 went from three days to four.
Inserted lineGreen on the right, hatched on the left. The Reviewer line exists only in draft 3.
Deleted lineRed on the left, hatched on the right. The home internet rule is gone from draft 3.
Unchanged lineNo color. With Hide unchanged lines ticked, long runs fold into a bar you click to expand, with three lines of context kept around each change.

Item 2 reads the same on both sides yet sits in a red and green row. A dot marks the spot: draft 3 has a trailing space after the full stop. Tick Ignore spacing and the row turns plain. The counters above the result tell the same story in numbers: 1 added, 1 removed, 6 reworded, 4 unchanged.

Inline view stacks each removed line above its replacement, the way a code review shows a patch. Phones open in Inline view because two columns of text get cramped below 640 pixels.

One new line at the top should not flag the whole file

A naive checker compares line 1 with line 1, line 2 with line 2, and so on. Add a heading to a 200-line file and every line below shifts down by one, so all 200 rows come back as changed. This page worked the same way until the October 2026 rebuild.

The checker now runs the Myers diff algorithm, the method behind git diff and GNU diff. The algorithm finds the longest sequence of lines both versions share in order, then reports only the lines outside the sequence. In the 200-line test, the result is 1 added line and 200 unchanged ones.

Reworded lines get a second pass. When a removed line and an inserted line share at least 40% of their words, the pair goes on one row with a word-level diff. Below 40%, the two count as one removal plus one addition, since marking every word of an unrelated line tells you nothing.

Which ignore option to tick

What you seeTickWhat gets ignored
A row is marked, but both sides read the sameIgnore spacingTrailing spaces, tabs versus spaces, double spaces, non-breaking spaces copied from a web page
SQL, HTML tags or config keys differ only in capitalsIgnore caseSELECT versus select, TRUE versus true
Text exported from Word or a PDF has empty lines between paragraphsIgnore blank linesEmpty lines, plus lines holding only whitespace, on both sides

Ignore options change the matching, never the display. A line matched under Ignore case still shows each side's own capitals. Line numbers keep pointing at the real lines in your text, blank ones included.

Sending the changes to someone else

Copy diff puts a unified diff on your clipboard. Download .diff saves the same text as changes.diff. For the sample, the export reads:

--- policy-draft-2.txt
+++ policy-draft-3.txt
@@ -1,11 +1,11 @@
-Remote Work Policy, draft 2
+Remote Work Policy, draft 3
 Owner: Priya Nair
-Last reviewed: March 2026
+Reviewer: Tomasz Kowalski
+Last reviewed: May 2026

-1. Staff work remotely up to three days per week.
-2. Core hours run from 10:00 to 15:00 in your local time zone.
-3. Requests go to your line manager at least one week ahead.
+1. Staff work remotely up to four days per week.
+2. Core hours run from 10:00 to 15:00 in your local time zone.
+3. Requests go to your line manager at least two weeks ahead.
 4. Equipment stays the property of the company.
-5. Home internet claims are capped at 30 per month.

-Questions go to hr@toolexe.com.
+Questions go to people@toolexe.com.

Lines starting with a minus come from the original. Lines starting with a plus come from the changed version. The header names the files you opened, or original.txt and changed.txt for pasted text. Each @@ line gives the line range on both sides.

With every ignore option off, patch original.txt changes.diff turns the original into the changed version. We ran the sample export through GNU patch and the output matched draft 3 byte for byte. With an ignore option on, the export leaves out the ignored differences and stops being a valid patch, so treat the file as a reading copy.

Where this checker falls short

Text difference checker questions

What people ask after the first comparison.

Is my text uploaded anywhere?

No. The comparison runs in JavaScript inside your browser tab, files opened with Open file included. Nothing reaches a Toolexe server. Closing the tab clears both boxes.

Why is a line marked as reworded when both sides look the same?

The difference sits in characters you do not see: a trailing space, a tab in place of spaces, or a non-breaking space copied from a web page. The changed spot shows as a dot, or an arrow for a tab. Tick Ignore spacing to drop those. A row still marked with Ignore spacing on holds a look-alike character, such as a curly quote against a straight one.

Which version goes in which box?

Older on the left, newer on the right. Red means gone from the older version, green means new in the newer one. Pasted them backwards? Press Swap instead of pasting again.

Does Open file read Word documents or PDFs?

No. Open file reads plain text: .txt, .md, .csv, .log, .json, .html, source code and similar formats. A .docx or .pdf is a compressed binary container, and the checker rejects one with a message. Copy the text out of the document and paste the text here.

How is the lines in common figure worked out?

Unchanged lines on both sides, divided by all lines on both sides. Two 100-line files sharing 90 lines score 90%. A reworded line counts as different, even with a single word changed, so a lightly edited draft where every line was touched scores low.

Should I use this for code?

For a quick look at two versions of a script or config file, yes. Inside a git repository, git diff gives the same line matching with history attached. For JSON and XML, the structure-aware tools below ignore key order and formatting.