An offline-only desktop diff viewer for Windows and macOS. GitHub-style side-by-side comparison, syntax highlighting, and encrypted local history — with a hard promise: it never touches the network.
- Truly offline. No account, no telemetry, no auto-update, no CDN. The app makes zero network requests — enforced by a session-level kill switch, a strict CSP, and a sandboxed renderer, not just a promise. Your files never leave your machine.
- Private by default. Anything you keep — saved diffs, snippets, keys — is encrypted on-device (AES-256-GCM), with the key held by your OS keychain. Saved diffs auto-expire.
- Fast and familiar. The Monaco editor that powers VS Code, with GitHub-style rendering you already know.
- Diff two files or pasted text — split or inline, word-level highlights, syntax highlighting, in-view search, and a live re-diff when a file changes on disk. Copy the result as a git-style unified patch.
- Excel (.xlsx) comparison — a structured grid diff with sheet tabs and cell / row-level highlighting, aligned so an inserted row doesn't cascade. Parsed entirely offline by a small custom reader (no heavyweight dependency).
- Paste mode for quick throwaway comparisons, including pasted text against a real file — or just hit Ctrl/Cmd+V to paste straight into a comparison.
- Drag & drop files onto the window; it warns before discarding unsaved work.
- Saved diffs — encrypted, optionally auto-expiring, and tagged.
- Share a diff as a sealed, signed file only its intended recipient can open.
- Snippets — an encrypted, tagged text library with per-language highlighting and live Mermaid diagram rendering, in a viewer you can drag bigger from any corner (and that fills the window when the app goes fullscreen). The Markdown and Jira / Confluence syntaxes each add a formatting toolbar (bold, headings, lists, quote, code, links) and a live rendered preview, with a Rendered/Plain toggle.
- Quick look-up — a global shortcut summons a floating search over your snippets and saved diffs without raising the app; ↑/↓ to browse, → to step into a preview or the tools, ← to step back out (and to close it once there is nothing left to leave), Enter to open, Ctrl/Cmd+C to copy a snippet straight to the clipboard. + captures a quick plaintext snippet without raising the app. Rebind the shortcut in Settings.
- Uniform snippet names — every name is sentence-cased as it is saved, so a library grown over months still reads consistently.
- Resizable dialogs — the snippet editor and the tool windows resize from any edge or corner and remember their size between sessions (or a one-click setting maximizes them all). Existing snippets open read-only until you press Edit.
- Tools — rich panels, not blank text boxes: JSON (pretty / minify /
sort keys, a JSONPath filter, and a syntax-coloured collapsible tree),
Base64 (live encode/decode, URL-safe, MIME wrap, byte counts), UUID
(generate v1/v4/v5/v6/v7, inspect, and reverse-convert), JWT (decode and
inspect claims), Epoch (date ⇄ timestamp with a picker), URL (encode /
decode with an editable query-param table), Lines (split, sort, dedupe,
and build lists — e.g. a CSV row into a quoted SQL
IN (…)list), plus XML format + validate, find & replace, and passphrase text encryption (AES-256-GCM) with an opt-in raw-key AES-256-CBC decrypt for external payloads. Your recent tools sit on the sidebar shelf; the rest are one search away. - Yours to arrange — fourteen themes (incl. Nord, Sepia, Solar, a playful Nyan with a reward cat, a Matrix digital-rain theme, and accessibility-grade Contrast and Beacon), one tag namespace shared across diffs and snippets, a sidebar that filters by section and tag, and adjustable limits, all remembered between sessions.
Excel (.xlsx) workbooks compared as aligned grids — sheet tabs, changed cells boxed, added/removed rows aligned.
Light and dark themes, GitHub-style rendering. |
Saved diffs are encrypted on-device and auto-expire. |
Drop or choose two files — Excel, JSON/XML, or any text. |
Grab the latest installer from the latest release:
| OS | Download |
|---|---|
| Windows (10/11) | diff-bro-Setup-v<version>.exe |
| macOS (Apple silicon, 12+) | diff-bro-v<version>.dmg |
macOS via Homebrew:
brew tap mindaugaskasp/tap
brew install --cask diff-bro
xattr -dr com.apple.quarantine "/Applications/Diff Bro.app"Builds are currently unsigned, so Windows SmartScreen and macOS Gatekeeper
will warn on first launch (the xattr line above clears it on macOS). Full
details in docs/packaging.md.
Electron · Vue 3 · Pinia · Monaco. Text first, with an adapter registry for richer formats to come. Security and offline guarantees are non-negotiable — see the security model.
Needs Node 22.12+ (the version Docker and CI use — nvm use picks it up
from .nvmrc). Older majors install but warn, and the build toolchain no
longer supports them.
nvm use # or install Node 22.12+ yourself
npm install
npm run dev # run locally
npm run check # lint + testsNo local Node? The same flow runs in Docker: make dev, make check,
make e2e. See docker/README.md and make help.
- Architecture — processes, trust boundary, directory map.
- IPC & security — how renderer↔main talk, and what the sandbox blocks (with diagrams).
- Security model — offline guarantee, sharing, keys, backup.
- Packaging & releasing — installers, signing notes, CI.
- Chocolatey release — plan + package skeleton for
choco install diffbro. - Glossary — every term and abbreviation (IPC, CSP, GCM, …).
- Coding standards live in CLAUDE.md.



