A diff checker that runs on your machine, not on someone’s website.
Paste two versions of a text — or two JSON documents — and see line by line what was added and what was removed. It all happens locally in your menu bar: nothing is uploaded, so you can compare a contract, a production log or a config file without leaking it.
Already have Toolbox? Open this widget
Compare two texts now
Paste both versions and see what changed, line by line. It runs in your browser — nothing is uploaded.
100% local · neither text leaves this tab
Two panes, one keystroke, and the changes are marked.
Open the popover from your menu bar (macOS) or system tray (Windows), paste
the old version on the left and the new one on the right, and hit
Compare. The result lists every line with numbers from both sides:
removed lines marked −, added lines marked +, and
the unchanged ones in between for context. A summary tells you the totals at
a glance, like +2 −1.
Two switches handle the noise. Ignore case stops TIMEOUT
and timeout from counting as a change; Ignore whitespace
does the same for re-indentation, which is what turns most “everything changed”
diffs back into the two lines you actually care about. Changes only
collapses long identical stretches, leaving two lines of context around each
edit and a marker for how many lines it hid.
- Line numbers for both the before and after side
- Ignore case and ignore whitespace toggles
- Changes only — collapses unchanged runs to 2 lines of context
- Swap sides, clear both panes, or pop it out into its own window
- Tells you when both texts are identical instead of showing you nothing
Compare two JSON documents without the formatting noise.
Two API responses that mean the same thing rarely look the same: keys come back in a different order, one side is minified, the other is indented with four spaces. Compared as raw text, every single line is “changed” and the diff is useless. Tick Normalize JSON and both sides get their object keys sorted and re-indented identically before the comparison, so what surfaces is the value that actually differs.
Arrays keep their order. That is a deliberate choice, not an omission: in an array the order is part of the data, so reordering one to make the diff prettier would hide a real difference. If either side is not valid JSON, the widget says so and falls back to comparing the raw text instead of failing.
- Sorts object keys and re-indents both sides before comparing
- Arrays are never reordered — order in an array is data
- Invalid JSON is reported, then compared as plain text
- Also handy for
.envfiles, YAML, CSV rows and log excerpts
The text you compare is usually the text you shouldn’t paste online.
Think about what people actually diff: a contract draft against the signed version, two production configs, an API response with a real customer in it, a patch from a private repo. Every one of those, pasted into a public diff site, is now sitting on a third-party server — and most of those sites also run ads and trackers on the page while you do it.
This widget is the same workflow with that step removed. It is not trying to beat the web tools on features: they do word-level highlighting inside a line, file and PDF uploads, and shareable links. It is trying to beat them on the one thing they can’t change, which is that the text has to travel.
- No upload, no account, no sign-up wall, no paid tier for the basics
- Works on a plane, on a locked-down client network, or with Wi-Fi off
- Lives one keystroke away instead of in a browser tab you have to find
Installed from the catalog, in one click.
Text Diff isn’t bundled into the app — it’s a widget in the Webstarted Toolbox catalog. Download Toolbox, open the catalog tab (🧰), press the “+” next to Text Diff, and it lands in your Dev tools tab. No reinstall, no app update. Here are a few of its neighbors:
Questions, answered.
Does my text leave my computer?
No. The whole comparison runs locally in the widget — there is no upload, no account and no server involved. Turn Wi-Fi off and it works exactly the same. That is the point of it: pasting a contract, a production log or a config file into a public diff website means handing that text to someone else’s server.
How is this different from diffchecker.com?
Functionally it is the same idea: two panes, a line-by-line result. The differences are where it runs and what it costs you. This one is a widget in your menu bar (macOS) or system tray (Windows), works with no connection, has no ads, no sign-up wall and no paid tier for the basics. What the web tools do that this one does not: word-level highlighting inside a line, file uploads, PDF/image comparison and shareable links.
How large can the two texts be?
Up to 1,200 lines per side. The widget tells you when it truncates instead of silently comparing half your input. That cap is deliberate: the algorithm is a longest-common-subsequence pass, which grows with the product of both sizes, and 1,200 × 1,200 is about the point where a menu-bar popover still feels instant.
Can it compare two JSON documents?
Yes, and there is a “Normalize JSON” option for it: it sorts object keys and re-indents both sides before comparing, so two documents that differ only in key order or formatting come out identical instead of showing every line as changed. Arrays are left alone on purpose — in an array the order is data, not formatting. If either side is not valid JSON it says so and compares the raw text.
Can I get the result out of the widget?
Yes — “Copy diff” puts the comparison on your clipboard in unified diff format (the +/− style you already read in code review), so you can paste it into a ticket, a commit message or a chat. There is also “Changes only”, which collapses long unchanged stretches down to two lines of context, and a swap button to flip which side is “before”.
Is it free?
Yes. Webstarted Toolbox is free and needs no account, and Text Diff is a free widget in its catalog — you install it in one click from inside the app.
Get Webstarted Toolbox
Free to use. Download the app, then add Text Diff from the catalog in one click. macOS 12+ and Windows 10+.
One icon, many small tools
This is just one of the widgets in Webstarted Toolbox. Here are the rest: