Overview
A client-side text and code diff with four independent ignore rules, word-level highlighting inside changed lines, side-by-side and unified views, synchronised scrolling, a live change summary, and a unified-diff patch export that applies cleanly with git apply — all computed locally with no upload.
How It Works
Paste the original on the left and the changed version on the right; the diff recomputes as you type. Four ignore toggles — whitespace, case, blank lines, and trailing whitespace — each reshape the comparison independently. Side by side shows matched rows in two synchronously scrolling columns (one scroll container, so panes can never drift apart); Unified shows a single +/- column like a patch file. Blue highlights inside a changed line mark exactly which words or characters moved. The summary bar counts added, removed, modified, and unchanged lines plus a similarity percentage.
Step-by-Step Usage Guide
- Paste the original and modified text into the two input panes.
- Toggle ignore rules if formatting noise is hiding the real changes.
- Read the diff in side-by-side or unified view, with in-line word highlights on changed lines.
- Copy or download the unified patch, then apply it with git apply.
Technical Specifications & Standards
The engine splits input into lines while preserving each line's original terminator, so a CRLF-versus-LF file does not mark every line changed — it is reported in a separate banner as a line-ending-only difference, including a missing trailing newline. Alignment uses an LCS dynamic program on small inputs; when a middle section is too large the engine switches to patience-style unique-line anchoring, and if it still cannot converge within a fixed deadline it emits coarse delete/insert blocks and says so rather than hanging the tab. The export produces real unified diff hunks — ---/+++ headers, @@ -start,count +start,count @@ hunk headers with three lines of context, and \ No newline at end of file markers — and was verified to apply byte-exactly with git apply, including CRLF files. Note that patches generated with ignore options enabled describe the filtered comparison and may not apply to the raw files.
Targeted Use Cases
- Comparing a config file between staging and production to find the one differing value.
- Reviewing what a formatter, codemod, or AI edit actually changed before committing.
- Diffing two API responses captured minutes apart while debugging.
- Producing a patch file to hand to a colleague who applies it with git apply.
Notes & Gotchas
- If every line is marked changed, line endings are usually why — check the line-endings banner before scrolling the diff.
- Ignore options change what counts as a difference, so the summary and patch reflect the filtered comparison, not the raw bytes.
- Very large or wholly different files degrade to coarse blocks with an explicit warning instead of freezing the page.
- Format both sides with the same formatter before diffing generated code, otherwise you are comparing formatting rather than logic.
Frequently Asked Questions
Can I apply the exported file with git apply?
Yes. The export is a standard unified diff with hunk headers and context lines, verified against git apply — including files with CRLF endings or a missing trailing newline.
Does my code leave the browser?
No. The diff engine runs entirely in the page; there is no server and nothing is uploaded, which is what makes it usable for proprietary source.
What do the ignore options affect?
Only the comparison. Whitespace-only, case-only, blank-line, or trailing-whitespace differences stop marking lines as changed, and the summary and patch are computed from that filtered view.
How large can the inputs be?
Exact alignment is capped deliberately: past a cell budget the engine anchors on unique lines, and past a deadline it falls back to coarse blocks with a visible warning. The tab stays responsive.