Find what changed between two versions
Paste or import the original and updated text, then choose Compare texts. Changed lines appear together with their line numbers. In exact comparison, short paired lines have grapheme highlights, which keep an emoji or combining character together. Additions and removals carry + and − labels as well as color. On a narrow screen each original/updated pair stacks vertically.
Use Next change to move between groups. The default view includes three neighboring comparison rows around changes. Turn it off to see every line, including details matched by ignore options. Results are paginated at 100 comparison rows; exports always contain the complete comparison.
Undo replacement restores both inputs, their source filenames, the comparison rules and the display choices from before a replacement. Imported filenames follow Swap and Undo; editing a side changes its source label to pasted or typed text.
Whitespace and line endings stay explicit
Exact comparison detects indentation, letter case, CRLF/LF/CR differences and a missing final newline. Imported line endings are retained until editing; a textarea displays them as LF. Visible labels show each line ending, and Show spaces and tabs makes ordinary spaces · and tabs ⇥. BOM and nonprinting control characters have explicit markers.
Optional comparison rules ignore Unicode lowercase differences, leading/trailing ASCII spaces and tabs, or line-ending style. Case comparison is not locale-specific full case folding: ß and SS do not become equal. Interior whitespace and the presence of a final newline remain significant. Reports retain both original strings even when options consider lines equivalent.
Review report or applicable patch?
The JSON report contains your original and updated text, options, numbered comparison rows, change groups and counts. It is a review artifact, not a program to execute. Copy and Download use the complete report even when only a page of rows is visible.
The unified patch targets text.txt and uses three lines of context. Patch export is available only with exact comparison and LF/CRLF line endings; it is disabled for ignored differences and bare-CR input. A patch is unnecessary for identical texts. Renames, binary files and automatic merging are not supported. Review a patch before applying it to a real file.
Recover work and keep processing local
Import, example, swap, clear and large paste provide one Undo replacement for both inputs. Undo restores the saved comparison and display options; ordinary typing clears the saved replacement. Changed inputs or options hide stale results. Invalid files preserve useful input. Nothing is uploaded or saved automatically.
Each input is limited to 256 KiB of valid UTF-8 and 5,000 lines. NUL and isolated surrogates are rejected. Line comparison runs in a local worker with a four-second algorithm limit; patch creation has two seconds and the whole operation has a ten-second cancellation deadline. Reports are limited to 8 MiB. Ignore options use whole-line highlights. Inline grapheme detail covers up to 200 paired changed lines of at most 2,000 UTF-16 units per side; very complex or longer lines use whole-line highlighting. Comparison can stop early for very different inputs rather than freeze the page.
Line matching uses jsdiff, distributed under its BSD license. This tool compares text; it does not evaluate code or perform a semantic JSON comparison. Use the JSON formatter first if you want consistent JSON layout.