PasteDiff

Paste two texts, see what changed — instantly, entirely in your browser. Nothing is uploaded.

Paste text above and hit Compare (or just type — it updates live).

FAQ

Is my text uploaded anywhere?

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.

What kinds of text does it handle?

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.

How do I compare two files without installing anything?

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.

Why do two "identical" texts show differences?

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 vs unified view?

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.

Can I jump between changes with the keyboard?

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.

Can I diff two JSON files?

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.

Can I compare two lists?

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.

Can I ignore timestamps when comparing log files?

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.

Can I ignore a column when comparing CSV files?

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.

Can I export the diff as a patch file?

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.

How do share links work — is the diff stored on a server?

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.