Compare line changes
- Paste or import before and after text, or any two lists.
- Choose exact line matching or explicitly ignore outer whitespace in keys.
- Compare, inspect changes or all records, and download a readable report, full JSON or either original.
A longest-common-subsequence alignment preserves matched line order and minimizes inserted plus removed line records under the selected key rule. It reports exact matches, key-equivalent matches, removed lines and added lines. A replacement appears as a removal and addition; moved lines may also appear that way. Repeated lines can admit several equally minimal alignments; ties choose removal first. This is line comparison rather than a semantic, word or character comparison. NIST subsequence reference.
Every aligned record is reachable in twenty-item pages. Changes only is the default view; unchanged records remain available through All records. Each preview is bounded to 300 code points, which can end inside a combined character. Source selection and downloads preserve full text. Optional whitespace markers help inspect spacing; they do not enter downloads and may resemble literal marker characters already in the source. The structured JSON contains all records, original values for each side, original one-based line numbers, totals, key rule, exact input equality and final-delimiter flags. It is a comparison report, not an executable patch. Labels distinguish operations without relying on color.
Whitespace and line endings
Exact matching compares complete line values, including case, accents, internal spacing and zero-width characters. The optional rule removes Unicode White_Space only at line edges for matching keys. Both raw values stay in key-equivalent records. No case folding, normalization or semantic equivalence is inferred.
Records recognize CRLF as one boundary, LF, CR, U+0085 NEXT LINE, U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR. Those separators do not become line content. Final delimiters terminate records rather than adding phantom empty lines; blank records still participate. Exact input equality compares the complete current textarea values before record parsing, while final-delimiter flags report termination independently. A delimiter-only difference may therefore show all line values matched but exact input equality false.
Import and recovery
Each side accepts a local UTF-8 TXT file up to 400 KB, subject to the same text/line limits. Import removes an initial BOM and converts CRLF/CR to LF. Invalid files keep both drafts and the current comparison. Editing a side cancels its unfinished read; the other side’s import can still finish. Large paste uses one validated replacement. Import, example, swap, large paste and Clear provide one undo step for both drafts. Typing or changing the matching rule discards this undo; Clear keeps the rule and view settings. Swapping reverses which changes are additions or removals after comparing again.
Limits and privacy
Each original TXT preserves the current textarea value. Browsers normalize textarea CR/CRLF to LF, so raw clipboard encoding cannot be recovered. No promise of file-byte comparison, grammar judgment, merge conflict resolution or plagiarism detection. Local worker only, valid Unicode up to 100,000 UTF-16 units and 2,000 records per input; the bounded alignment table has at most 4,004,001 cells (about 8 MB), plus text and report data. Ten-second timeout, Cancel terminates processing, and edits clear stale output. No uploads, storage, external APIs or executable HTML. Unpaired surrogates reject for valid UTF-8 exports.