Paste two texts, see what changed — instantly, entirely in your browser. Nothing is uploaded.
No. The page is static; the diff algorithm (Myers line diff with word-level refinement) runs entirely in your browser. Nothing you paste or open ever leaves your machine — safe for configs, contracts, logs, and anything else you can't paste into a random website. The only network traffic is loading this page and an anonymous visit count.
Any plain text: source code, JSON/YAML/config files, SQL, CSV, logs, prose, email drafts. Drop or open files directly, or paste. Large files are fine — everything is local, so speed depends only on your machine.
Click "open file…" above each pane (or drag a file onto it), then Compare. No install, no signup, works on any device with a browser.
Usually invisible characters — trailing spaces, tabs vs spaces, non-breaking spaces, zero-width spaces, or different line endings. Try "Ignore whitespace", or run both texts through TextWash to see exactly which hidden characters differ.
Side-by-side shows original and changed text in two columns — best for widescreen review. Unified interleaves removed and added lines like a git diff — best for narrow screens and for copying a patch-style summary.
Yes — once a diff is showing, press n / p (or j / k) anywhere outside the text boxes to jump to the next or previous changed block; the ◀ ▶ buttons next to the tally do the same and show which change you're on. Handy when two long files differ in a handful of places.
Yes — paste both and click { } Format JSON. It pretty-prints each side with 2-space indentation (and optionally sorts object keys) so the diff shows real changes instead of formatting or key-order noise. Parsing happens in your browser like everything else. One honest caveat: JavaScript numbers round integers above 253, so extremely large numeric IDs may lose precision when reformatted.
Yes — paste one item per line into each pane and click ≡ Compare lists. Instead of a line diff you get three columns: items only in the first list, items in both, and items only in the second. Duplicates are collapsed (and counted), matching can ignore case, and each column has a one-click copy. Same privacy as everything else here: it all runs in your browser.
Yes — type a JavaScript regular expression into the Ignore pattern box (or click ⏱ timestamps for a ready-made one) and lines are compared with every match removed, so two log runs that differ only in timestamps show only the real changes. The pattern is fully editable: add |id=\w+ to also ignore request IDs, or |\d+ms for durations. See compare log files for a worked example. One honest note: Copy patch always exports the complete, unfiltered differences — the ignore pattern only affects what's shown.
Yes — type the columns to skip into the Ignore columns box, either by header name (updated_at, id) or by number: 5, 2,5-7, or 6- for column six onward (1-based). Names are matched against each side's own first row, case-insensitively — so if a column moved position between exports, it's still ignored correctly on both sides; quote a name ("total, gross") if it contains a comma or looks like a number. Rows are parsed with proper CSV quote handling — commas inside quoted fields don't count as column breaks — and the delimiter (comma, tab, semicolon or pipe) is auto-detected, with a manual override. Two side effects worth knowing: a quoted and an unquoted field with the same value compare as equal once a column list is set, and in changed rows the highlights become per-cell. If row order also changed between exports, switch to ≡ Compare lists with the same column list — rows are then matched as a set instead of line by line. As with the ignore pattern, Copy patch still exports the complete, unfiltered differences. See compare CSV exports for a worked example.
Yes. "Copy patch" generates a standard unified diff — the same format as diff -u and git diff, with @@ hunk headers and 3 lines of context — entirely in your browser. Paste it into a code review or ticket, or save it as a .patch file and apply it with the patch command.
No server, no storage. "Share link" compresses both texts into the link itself (the part after #), which browsers never send over the network. Whoever opens the link decompresses it locally. If the texts are too big to fit in a practical URL, the button tells you instead of silently truncating.