Skip to content
RustDiff
1.0.6 · stable release

Semantic diff for JSON , XML & SQL

A desktop comparator that reads structure — keys, array items, XML nodes, attributes, SQL statements — instead of raw lines. It runs offline: no account, no tracking, and nothing leaves your machine.

Flatpak · Flathub · .deb · APT · macOS · GPL-3.0-or-later

Install in one command

$ flatpak install flathub com.digitalgex.RustDiff

Any distribution. Updates with flatpak update.

Every channel, from Flathub to building from source, is further down. See all install options

Why offline

Your documents never leave your machine

Comparing credentials, tokens, certificates or customer data in an online diff means uploading them to someone else’s server. RustDiff never does that: there is no server, no upload and no telemetry.

No tracking, no account

No analytics, no sign-in, no “create a project first”. Install it, open two files, compare. That is the whole flow.

Sensitive data stays sensitive

API keys, connection strings, private keys, personal data: the document only moves between your disk and the app window.

The interface cannot read your files

The React interface calls typed Rust commands only, so it never touches the filesystem. Parsing, history and settings live in the Rust core.

History on your own disk

Saved sessions live in a local SQLite file (~/.local/share/rustdiff/history.db). Delete the file and the history is gone; nobody else holds a copy.

Open source under GPL-3.0-or-later: read every line before you trust it.

Features

A diff engine that understands documents

JSON, XML and SQL are compared as structure, with a line-by-line fallback for plain text. The viewer around it is built to be driven from the keyboard.

Semantic diff

Keys, array items, XML nodes, attributes, text and SQL statements are matched by meaning. A reordered key is not a whole-file change.

Side-by-side editors

CodeMirror 6 with syntax highlighting and character-level highlighting on the exact span that changed.

Differences panel

Ctrl+D

Filter by added, removed or changed, click a row to jump to the document, and step through with previous and next.

Graph view

Ctrl+G

The left document as an interactive node graph on a canvas: pan, zoom, fit, search a node and inspect it.

Search in documents

Ctrl+F

Find text with a match counter, next and previous, and wrap-around at the end of the document.

Compare while you type

Debounced auto-compare keeps the result current, and Ctrl+Enter compares immediately when you want it now.

Export

Ctrl+E

Plain .txt for a log or a ticket, styled .html to share or archive the difference report.

Session history

Ctrl+H

Saved sessions in local SQLite: searchable, paginated, restorable, with per-entry and bulk deletion.

Viewer options

The options you already expect from a code review tool

RustDiff is opinionated where it matters and configurable where you work. These are real menus and real shortcuts, not a wishlist.

Document format

  • Auto-detect, JSON, XML, SQL or plain text from the toolbar
  • Manual override when a document starts with something ambiguous
  • Pretty-print both panels with Ctrl+Shift+F

Views

  • Theme: follow the system, light or dark
  • UI text size from 60% to 200% (Ctrl++, Ctrl+-, Ctrl+0), remembered between sessions
  • Language switched live between English and Español

Differences

  • Filters for added, removed and changed items
  • Path column with click-to-jump navigation
  • Previous and next difference; the panel is resizable and collapsible

Graph

  • Zoom in, zoom out and fit the graph to the view
  • Search a node and inspect its detail
  • Arrow keys pan, + and − zoom, 0 fits, Escape closes the detail

Escaped JSON

  • Detects JSON whose quotes carry a backslash, like {"a":1}
  • Offers “Unescape and compare” instead of changing a valid document
  • Dismissing the suggestion keeps it away for that text

Export and history

  • Export the result as .txt or styled .html
  • Search history, load more, delete one entry or clear everything
  • Unsaved-changes dialog on exit: save to history, export, or close

Every option is local. Nothing in this list asks you to sign in.

A look inside

What comparing actually looks like

RustDiff main window comparing two JSON documents side by side
Two documents, one semantic diff: added, removed and changed are marked where they happen.
Difference table with type filters and a path column
The differences panel filters by type and jumps to the exact path with one click.
Session history sidebar listing saved comparisons
History stays in a local SQLite file: search it, restore a session, delete what you no longer need.

Install

Pick the channel you already use

Linux and macOS ship the same binary with the same engine. Windows is not supported yet.

Flatpak · Flathub

Recommended on Linux
$ flatpak install flathub com.digitalgex.RustDiff

Bundles its own GNOME runtime with WebKitGTK, so your distribution’s library versions do not matter. Update with flatpak update.

Open on Flathub ↗

Debian package · .deb

Ubuntu 24.04+ · Debian 13+
$ sudo apt install ./rustdiff_*.deb

amd64 and arm64. Download the package from the releases page, or add the APT repository below to upgrade with plain apt upgrade.

Download the .deb ↗

APT repository

Signed, hosted on GitHub Pages
$ curl -fsSL https://jereok91.github.io/rustdiff/KEY.gpg | sudo tee /usr/share/keyrings/rustdiff-archive-keyring.gpg >/dev/null
$ echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/rustdiff-archive-keyring.gpg] https://jereok91.github.io/rustdiff stable main" | sudo tee /etc/apt/sources.list.d/rustdiff.list >/dev/null
$ sudo apt update && sudo apt install rustdiff

Add it once, then upgrade with the same apt upgrade you use for everything else.

macOS · Homebrew cask

Apple Silicon and Intel
$ brew install --cask jereok91/rustdiff/rustdiff-app

Every release also ships a .dmg. The app is ad-hoc signed, so on first launch use right-click → Open, or run xattr -cr /Applications/RustDiff.app.

Download the .dmg ↗

One-command installer

Debian/Ubuntu installs the package, other distros build from source
$ curl -fsSL https://raw.githubusercontent.com/jereok91/rustdiff/main/install.sh | bash

Needs Rust 1.85+, Node.js 20+ and pnpm when it builds from source; on Debian and Ubuntu it only installs the release .deb.

Build from source

Rust 1.85+ · Node.js 20+ · pnpm 10
$ cd desktop && pnpm install && pnpm tauri build

On Linux you also need WebKitGTK 4.1 development packages and a C toolchain. The binary lands in target/release/rustdiff.

Build requirements ↗

cargo install rustdiff is retired: crates.io still serves the old GTK 0.4.x. Use any channel above instead.

1.0.6 · GPL-3.0-or-later

Keyboard first

Shortcuts for every main action

Press Ctrl+? inside the app to see this list without leaving the keyboard.

  • Open the left document Ctrl+O
  • Open the right document Ctrl+Shift+O
  • Compare now Ctrl+Enter
  • Pretty-print both documents Ctrl+Shift+F
  • Search in the documents Ctrl+F
  • Toggle the graph view Ctrl+G
  • Toggle the differences panel Ctrl+D
  • Save the session to history Ctrl+S
  • Toggle the history panel Ctrl+H
  • Export as .txt Ctrl+E
  • Increase, decrease or reset the UI text size Ctrl++ / Ctrl+- / Ctrl+0
  • Show every shortcut Ctrl+?