How to use this tool
- Paste the earlier passage into Original text and the later one into Revised text.
- Choose which differences to ignore and whether the report includes unchanged lines. Read the live line totals and +, − or two-space prefixes.
- Copy or download the report. Swap texts reverses additions and removals; Clear both empties the inputs and Undo last clear restores them.
Understanding the output
Totals count lines in the chosen alignment, not changed words. Plus marks additions, minus marks removals and two spaces mark unchanged lines. Changes-only output hides unchanged rows without changing their count. Blank-line exclusion removes whitespace-only lines before alignment. Optional NFC normalization changes comparison keys only; matched output still displays the original spelling and spacing.
If line order is irrelevant and you need shared or missing entries, use List Compare to compare unique items instead of passage revisions.
Replacing the middle line
Original lines red, blue, green compared with revised lines red, yellow, green produce two unchanged lines, one removed line (blue), and one added line (yellow). The displayed lines are prefixed with two spaces, a minus, a plus, and two spaces respectively.
Line comparison keeps the surrounding context
Line boundaries matter here. Reflowing the same paragraph into different lines can create a large comparison even when its words barely change. For prose copied from a PDF, first decide whether the original wrapping should be preserved. A reordered line can appear as a removal and an addition; this tool does not identify a separate move operation.
Alignment favors nearby matching lines
Repeated lines make more than one alignment possible. The comparison searches ahead for the next match on each side and takes the nearer match, preferring a removal when distances tie. This keeps large inputs bounded, but it does not promise the shortest possible edit script. Use a version-control diff when you need a patch suitable for automated application.
Method and supported input
CRLF and CR become LF and each input is limited to 100,000 UTF-16 code units. Empty inputs have zero lines. Trailing newlines create final empty lines unless blank-line exclusion is enabled.
Matching applies the selected trimming, NFC and lowercase transformations. Indexed positions support greedy look-ahead without a quadratic matrix. Counts cover the full selected alignment, while changes-only display omits matched rows.
- The inputs are plain text, and line order is meaningful.
- Ignore case uses JavaScript lowercase conversion rather than language-specific case folding.
Limitations
- The output is an annotated comparison, not a unified diff patch.
- There is no word-level highlight, move detection, or minimum-edit guarantee.
- Ignoring differences changes the matching criteria; it does not rewrite the pasted passages.
Common questions
Why does a blank final line appear?
A final line break is retained as an empty last line. Adding or removing that ending therefore appears in the comparison.
Will this compare formatting in Word or PDF files?
No. Paste their text first. Fonts, tracked changes, images, and document formatting are outside this comparison.
Can matching lines have different visible capitalization?
Yes, when Ignore letter case is selected. The unchanged output displays the original line, while the revised spelling remains in the input.
Does changes-only output change the totals?
No. It hides unchanged rows, while Unchanged lines still counts matching lines in the full alignment. Ignoring blank lines is a separate option that does change the compared inputs.
Sources and further reading
Reviewed on