Semantic JSON, XML & SQL diff tool with a native GTK4 + Libadwaita desktop UI.
Language: English | Espanol
- Semantic JSON, XML & SQL diff (objects, arrays, XML nodes, attributes, text, and SQL statements)
- Welcome screen with guided comparison flow (single editor initially)
- Side-by-side editors with syntax highlighting
- Busqueda en editores (
Ctrl+F) con navegacion siguiente/anterior y wrap-around - Auto compare while typing (debounced) + manual compare
- Difference table with filters and click-to-jump navigation
- Export to
.txtand styled.html - Session history stored in SQLite (paginated, searchable)
Install Flatpak:
# Arch / Manjaro
sudo pacman -S flatpak
# Fedora
sudo dnf install flatpak
# Ubuntu / Debian
sudo apt update && sudo apt install -y flatpak
# openSUSE
sudo zypper install flatpakEnable Flathub:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepoInstall and run RustDiff from Flathub:
flatpak install flathub com.digitalgex.RustDiff
flatpak run com.digitalgex.RustDiffUpdate or remove:
flatpak update com.digitalgex.RustDiff
flatpak uninstall com.digitalgex.RustDiffNotes:
- If software centers do not show Flathub apps immediately, log out and back in.
- If
com.digitalgex.RustDiffis not available yet, build the Flatpak locally from this repo (seecom.digitalgex.RustDiff.yaml).
curl -fsSL https://raw.githubusercontent.com/jereok91/rustdiff/main/install.sh | bashcargo install rustdiffInstall from a downloaded .deb (from GitHub Releases):
sudo apt install ./rustdiff_*.debInstall from the GitHub-hosted APT repository:
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 rustdiffAPT repository builds are published for amd64 and arm64 (e.g. Raspberry Pi 5, ARM servers).
Remove the package and repository:
sudo apt remove rustdiff
sudo rm -f /etc/apt/sources.list.d/rustdiff.list /usr/share/keyrings/rustdiff-archive-keyring.gpg
sudo apt updateEvery release ships a self-contained .dmg per architecture (Apple Silicon
arm64 and Intel x86_64): no Homebrew required, nothing to compile.
With Homebrew Cask (picks the right architecture automatically):
brew install --cask jereok91/rustdiff/rustdiff-appOr manually: download RustDiff-<version>-macos-<arch>.dmg from
Releases, open it and drag
RustDiff.app into Applications.
The app is ad-hoc signed (no Apple Developer certificate). If macOS blocks the first launch: right-click the app → Open, or run
xattr -cr /Applications/RustDiff.app. (On older Homebrew versionsbrew install --cask --no-quarantineskips this step; the flag was removed in recent Homebrew releases.)
Upgrade / uninstall:
brew upgrade --cask rustdiff-app
brew uninstall --cask rustdiff-app # add --zap to also remove settings and historybrew install jereok91/rustdiff/rustdiff
cp -R "$(brew --prefix)/opt/rustdiff/RustDiff.app" /Applications/- The first command builds RustDiff from source; the GTK4 stack (
gtk4,libadwaita,gtksourceview5) is installed automatically as dependencies. The first install takes a few minutes while everything compiles. After it,rustdiffis available from the terminal. - The second command copies the
RustDiff.appbundle so the app shows up in Launchpad and Spotlight. You only need to do it once: the bundle launches the brew-managed binary, so it keeps working after everybrew upgrade rustdiffwithout copying it again.
Upgrade:
brew update && brew upgrade rustdiffUninstall:
brew uninstall rustdiff
rm -rf /Applications/RustDiff.appNote: GTK4 on macOS is functional but considered experimental upstream. Both options can be installed side by side (the cask installs into
/Applications, the formula into the brew prefix).
Rust 1.85+ (edition 2024):
rustup update stable
rustc --versionRustDiff uses native GTK libraries. You need a C toolchain (gcc/clang, make, pkg-config) and GTK development packages.
# Arch / CachyOS / Manjaro
sudo pacman -S base-devel gtk4 libadwaita gtksourceview5
# Fedora
sudo dnf install gcc make pkgconf-pkg-config gtk4-devel libadwaita-devel gtksourceview5-devel
# Ubuntu / Debian (24.04+)
sudo apt install build-essential pkg-config libgtk-4-dev libadwaita-1-dev libgtksourceview-5-dev
# openSUSE
sudo zypper install gcc make pkg-config gtk4-devel libadwaita-devel gtksourceview5-devel
# macOS (experimental)
brew install pkgconf gtk4 libadwaita gtksourceview5Verify required libs:
pkg-config --exists gtk4 && echo "gtk4: OK" || echo "gtk4: MISSING"
pkg-config --exists libadwaita-1 && echo "libadwaita: OK" || echo "libadwaita: MISSING"
pkg-config --exists gtksourceview-5 && echo "gtksourceview5: OK" || echo "gtksourceview5: MISSING"# Development
cargo run
# Open with two files
cargo run -- left.json right.json
# Optimized release binary
cargo build --releaseBinary output:
target/release/rustdiff
Install local checkout:
cargo install --path .# Open empty window
rustdiff
# Open two JSON files
rustdiff old_config.json new_config.json
# Open two XML files
rustdiff schema_v1.xml schema_v2.xml| Shortcut | Action |
|---|---|
Ctrl+O |
Open file in left panel |
Ctrl+Shift+O |
Open file in right panel |
Ctrl+Enter |
Force compare |
Ctrl+S |
Save session to history |
Ctrl+E |
Export result as .txt |
Ctrl+Shift+F |
Pretty-print both panels |
Ctrl+H |
Toggle history panel |
- History DB:
~/.local/share/rustdiff/history.db - UI settings:
~/.config/rustdiff/settings.json - Export formats: plain text (
.txt) and HTML (.html)
# Full test suite
cargo test
# Integration tests
cargo test --test parser_tests
cargo test --test diff_engine_tests- Flatpak manifest for local builds:
com.digitalgex.RustDiff.yaml - Flathub submission files:
flathub/com.digitalgex.RustDiff.yaml,flathub/cargo-sources.json - Flathub submission workflow:
flathub/README.md - Screenshot requirements (AppStream/Flathub):
data/screenshots/README.md - Debian/APT packaging and GitHub Actions setup:
docs/DEBIAN_APT.md
Useful external references:
- Flathub setup guide: https://flathub.org/setup
- Flatpak documentation: https://docs.flatpak.org/
GPL-3.0-or-later


