You go back and forth in a huge diff, hunting for the one line that actually changed. Plain git diff shows you the whole line, whether you changed one token or forty. delta fixes that — not by hiding anything, but by making the change obvious.
delta is a syntax-highlighting pager for git and diff output, written in Rust by Dan Davison. The project lives at dandavison/delta on GitHub under an MIT license, and it has been around since mid-2019 — roughly 2,200 commits of polish. There are prebuilt binaries for Linux, macOS, and Windows, and you can also cargo install --locked delta if you have Rust 1.76 or newer.
Why people love it
The headline feature is word-level highlighting. delta points out exactly which characters changed inside a line — it uses a Levenshtein edit-inference algorithm to align the old and new text — so a three-word rename reads as three highlighted words instead of a recycled line. It also applies language syntax highlighting with the same themes you can get in bat, so reading a diff feels like reading code.
There's more, and it turns out to matter:
- Line numbers and a side-by-side view with wrapping, for when you want to compare columns.
- Press
nandNto jump between files in a long diff, or between commits ingit log -p. - Better merge-conflict display — including
conflictStyle = zdiff3, which shows you just the base version of the conflicting region. - Syntax-highlighted output from
rg,git grep, and plaingrep, not just git. - Copy-paste from the diff: the
-and+markers are stripped by default, so a copied line is usable code. - Support for git's
--color-movedfeature, so moved blocks are flagged instead of read as deletions. --hyperlinksturns commit hashes into clickable links to your hosting provider (GitHub, GitLab, SourceHut, Codeberg).
delta also dials git blame up: hashes get syntax highlighting, and with hyperlinks on, every commit becomes a link straight to its page on the provider.
Setting it up
delta reads configuration from your .gitconfig. The quick start is four lines:
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true
git config --global merge.conflictStyle zdiff3
After that, every command that prints a diff — git diff, git show, git log -p, git stash show -p, git add -p — is paged through delta. You can tweak a one-off with git -c delta.line-numbers=false show when you want plain output on the spot.
delta is not wedded to git. It reads standard unified diff format, so it works as the pager for Mercurial and for jujutsu (set pager = "delta" and diff-formatter = ":git" in jj's config). If you already use diff-so-fancy or diff-highlight, there are emulation modes so you keep your muscle memory.
One honest caveat
delta changes nothing about how git stores data — it is purely a display layer, so removing it costs you nothing. That's the quiet strength of the whole category: a tool you can drop in, tune, and drop out.
Start with the defaults, turn on navigation and line numbers, and let it grow on you. The first time a two-line fix shows up as two clean characters instead of a wall of red, you won't want to go back.