A fast, cross-platform terminal user interface (TUI) directory comparison tool written in Rust — align, diff, filter, and sync directories in real-time.

install.sh
$ curl -fsSL https://raw.githubusercontent.com/akunzai/duodiff/main/install.sh | bash

Detects your platform, verifies its SHA-256 checksum, and installs to ~/.local/bin — Linux, macOS & Windows (Git Bash).
More paths (Homebrew, Scoop, PowerShell, crates.io, source, duodiff --upgrade): docs/INSTALL.md

duodiff demo: pane focus, filtered file diff, and per-hunk merge
Compare directories side-by-side, filter to a file, and merge individual change blocks in the built-in diff view.

Why duodiff?

Clean, robust, and lightning-fast directory comparisons.

Side-by-Side Double-Pane Tree

Balanced view showing matching, differing, and missing folders/files side-by-side. Focus highlights and synchronized mouse scrolling keep context clear.

Asynchronous Background Scanner

All directory alignment calculations and file content MD5 streaming checksum computations run in non-blocking background tasks, keeping the UI fully interactive.

Built-in Diff, Merge & Sync

Side-by-side file diff with intraline highlights, jump to next change (N/P), per-hunk merge ([/]), or whole-file copy between panes (L/R) with confirmation. Prefer an external tool? Launch it from the same UI.

Features

A complete set of tools to explore, diff, and resolve directory differences.

Flexible Comparison

Toggle between Fast mode (size and modification time) and Precise mode (streaming MD5 content hashes) with c. Swap left and right roots anytime with s.

Built-in Diff & External Tools

In-app line-level diffs with character-level highlights, or hand off to vim, nvim, code, meld, difft, and friends — or open a file in $EDITOR/$VISUAL.

Fast Search & Filter

Slash-search the tree with /, then commit the pattern or toggle diffs-only with f while typing — zero through the noise to the files that matter.

Vim Bindings & Mouse

Arrow keys or hjkl, plus Ctrl+f/Ctrl+b page scroll. Wheel scrolls, clicks select, and double-clicks open diffs or expand folders. Focus panes with 1/2.

Palette, Help & Config

Unified menu (;) and command palette (Ctrl+p), topic-based Help (?), and a Config screen (C) for external tools and daily update checks — saved under ~/.config/duodiff.

Self-Upgrading

Standalone installs can self-update with duodiff --upgrade. A quiet daily background check surfaces newer releases without interrupting your flow.

Requirements

Zero external runtime dependencies. Runs standalone on macOS, Linux, and Windows.

Any terminal

Requires a terminal supporting truecolor or 256 colors. Unicode and emoji font support makes icons cleaner.

Rust Toolchain

Required only if building from source. Pin versions using mise or build with cargo build.

Optional: Diff Tools

For launching external diff editors from the UI, standard tools like code, nvim, or meld are supported.