Free online text comparison
Text compare that marks the words, not the lines
This text comparison tool is free and needs no account: paste two drafts and it lines them up, then marks every word that was added, removed or swapped inside each changed line. It finishes with a sentence in plain English — “42 words added, 17 removed and 6 lines rewritten” — so you know the size of an edit before you read a single column. Spacing and capitalisation can be set aside, which stops a re-wrapped paragraph from looking like a rewrite, and either box will hold a 5 MB manuscript.
- 100% free
- No signup
- Word and character level
- Plain-English summary
- 5 MB per draft
Put one draft in each box. Nothing is sent anywhere — press Ctrl+V on the page to drop the clipboard into the first empty box.
How to compare two drafts
Two boxes, one glance, and no button in between.
Put the earlier draft on the left
Paste the version you started from into the first box. A paste that lands on the page instead of in a box — ⌘V on a Mac, Ctrl+V everywhere else — goes to whichever box is still empty, so you can load both drafts without clicking. Each box holds 5 MB, roughly 38,000 lines or a 200-page manuscript.
Paste the later draft on the right
The comparison runs as you type, so there is no button to press. Leave “Ignore spacing” ticked while you are looking at prose — it keeps a paragraph that was re-wrapped from reading as a rewrite — and tick “Ignore capitalisation” when a style change from Title Case to sentence case is not what you are hunting for.
Read the sentence above the columns
It says something like “42 words added, 17 removed and 6 lines rewritten”, and underneath it every changed word is marked in place: struck through in red on the left, highlighted in green on the right. Switch to “Character by character” when the change is a single digit or a swapped letter, and use Copy change list to take the edits into an email or a review note.
Technical specifications
| What you can paste | Any plain text — a chapter, an email, a policy, a Markdown file, text lifted from Word or Google Docs. Up to 5 MB a side, which is around 38,000 lines or 850,000 words |
|---|---|
| How the comparison works | Lines are matched first, then the words inside each rewritten line are matched against each other; character mode splits on Unicode code points, so an emoji or an accented letter stays whole |
| The plain summary | Words added, words removed, lines rewritten, whole lines added, whole lines deleted, and the number of words carried over untouched |
| Options that change the counts | Ignore spacing (every run of spaces, tabs and newlines counts as one) and ignore capitalisation — both are applied before anything is counted, not after |
| Speed | Two 5,000-line drafts with 250 rewritten lines settle in under 2 ms; a full 5 MB manuscript of 38,073 lines takes 166 ms to line up and 278 ms more to count the words |
| Limit on marking inside a line | 6,000 words or characters. A longer line is shown as replaced rather than marked word by word |
| Rows drawn | The first 4,000 pairs of lines; everything past that is still compared and still counted in the summary, and Copy change list holds all of it |
| Price and processing | Free, no account, no daily limit; both drafts stay inside this tab |
Frequently asked questions
How do I compare two versions of a document?
Paste the earlier version into the left box and the later one into the right, and the differences appear immediately. There is no upload step, no account and no button — the two columns fill in as you type, with the changed words marked inside the lines they belong to rather than the whole line flagged as different.
Why does a whole paragraph light up when I only changed one word?
Because the paragraph is stored as one very long line, and inserting a word near the beginning re-wraps everything after it. Editors that hard-wrap at 72 or 80 characters make this worse: change “the” to “a” in the first sentence and every subsequent line shifts by two characters, so a line-based comparison reports the entire paragraph. This page marks the changed words inside the line, so a re-wrapped paragraph shows one green word rather than forty red lines. If you write in a plain-text editor and expect to compare often, keeping one sentence per line removes the problem at the source.
Does it ignore capitalisation and double spaces?
Only when you ask it to, and the two toggles do different jobs. “Ignore spacing” treats every run of spaces, tabs and line breaks as a single space, which is what you want after a paragraph has been re-flowed or after someone converted double spaces after full stops to single ones. “Ignore capitalisation” lowercases both sides before comparing, so a heading restyled from Title Case to sentence case stops registering. Both change the counts in the summary, not just the colours, so the numbers always describe what you chose to care about.
What counts as a word in the summary?
Anything made of letters or digits, including hyphenated compounds and words with apostrophes — “well-known” and “didn’t” are each one word. Spacing and standalone punctuation are compared and shown but not counted, so moving a comma does not inflate the total, and a sentence rewritten in place is counted twice over: once for the words that left and once for the words that arrived.
Can I paste text copied out of Word or Google Docs?
Yes, and the invisible characters that come with it are exactly what this comparison is good at finding. Word processors autocorrect straight quotes to curly ones, hyphens to en dashes and ordinary spaces to non-breaking spaces, so a passage that looks identical to a passage typed in a code editor is not. Those substitutions show up here as marked characters — switch to “Character by character” to see precisely which one changed, since at word level a curly-quoted word simply reads as a different word.
Should I compare word by word or character by character?
Word by word for prose, character by character when the change is inside a word. Word level is how an editor thinks — a replaced phrase reads as one edit — but it cannot show you that a reference number went from 4417 to 4471, because it just reports one word swapped for another. Character level splits on code points rather than UTF-16 units, so an accented letter or an emoji is one unit and never breaks in half. Lines longer than 6,000 words or characters are shown as wholly replaced instead, because marking inside them costs more time than the answer is worth.
Is my writing uploaded anywhere?
No. Both drafts stay in the browser tab: the comparison is JavaScript running on your own machine, nothing is posted to a server and nothing is stored, which is what makes it safe to paste an unpublished chapter or an internal memo in here.
About comparing drafts of writing
Comparison tools were built for programmers, and it shows. The line is their unit of meaning because a line of code usually is one, but a line of prose is an accident of where the text happened to wrap. Reword the opening of a paragraph and every line after it shifts, so a line-based tool paints the paragraph solid red and green and leaves you to find the two words that actually moved. The fix is to keep matching lines as the outer step — that is what keeps two long documents aligned — and then run a second comparison over the words inside each line that changed. That is why the marks here sit around phrases rather than around paragraphs, and why the summary can honestly say how many words moved rather than how many lines were touched.
The other thing that trips up prose comparison is characters that are not the ones you think you typed. Word processors quietly replace straight quotes with curly ones, double hyphens with em dashes and ordinary spaces with non-breaking spaces; a passage pasted out of a document and a passage typed into a text editor can read identically and differ in a dozen invisible places. Those substitutions are real differences and this page reports them, which is a feature when you are chasing why a headline will not match a database record and a nuisance when you only wanted to read the edit. Switching to character mode shows exactly which character changed; if you would rather see the underlying bytes, expanding the text as a JSON string makes every escape visible.
Two habits make every future comparison easier. Write one sentence per line in plain-text drafts: the paragraph still reads as a paragraph in Markdown, and a comparison then shows you a changed sentence instead of a re-flowed block. And compare in the same direction every time — earlier on the left, later on the right — because the labels “added” and “removed” are only meaningful with respect to a starting point. When the two things you are comparing are files rather than drafts, and you want line numbers and a patch you can hand to someone else, the general diff checker is the same engine with a developer’s output; the code version adds syntax awareness on top.
What happens to the drafts you paste
Both drafts are held in this browser tab and nowhere else. The comparison is JavaScript running on your own machine, so nothing is uploaded, logged or kept after you close the page — and once the page has loaded it keeps working with the network off, which is a reasonable way to check that for yourself.