Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diff Bro — chill about diffs, serious about security

Diff Bro

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.

Diff Bro comparing two JSON files side by side — word-level highlights and add/remove counts, with a sidebar of saved diffs, shared diffs, snippets, and colored tags

Why Diff Bro

  • 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.

Features

  • 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.

Two multi-sheet Excel workbooks compared as aligned grids: sheet tabs with per-sheet change counts, changed cells boxed, and an added row shown as a striped gap on the side without it
Excel (.xlsx) workbooks compared as aligned grids — sheet tabs, changed cells boxed, added/removed rows aligned.

The same JSON diff in the light theme — floating cards on a tinted ground

Light and dark themes, GitHub-style rendering.

Save dialog: name, tags, a Secure auto-expiring toggle, and an expiry of at most 24 hours

Saved diffs are encrypted on-device and auto-expire.

The start screen listing supported file types (Excel, JSON, XML, YAML, CSV, Markdown, and any text or code file) beside a sidebar of saved diffs, shared diffs, snippets, and tags

Drop or choose two files — Excel, JSON/XML, or any text.

Download

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.

Tech

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.

Build from source

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 + tests

No local Node? The same flow runs in Docker: make dev, make check, make e2e. See docker/README.md and make help.

Docs