The workshop · Edition No. 50 · 14 Oct 2026

Wilfred/difftastic

Compares the syntax tree of each file rather than its lines, so moved or reformatted code shows as unchanged.

← The workshopRead the whole edition →
difftastic: comparing code by structure. Shows what really changed, not which lines moved.

26,010 stars · MIT, read from the About sidebar on 2026-10-14 · 0.71.0 (2026-09-18), read from /releases/latest and settled exactly by ungh's releases endpoint at 2026-09-18T22:57:29Z · Track this in Scout

Compares the syntax tree of each file rather than its lines, so moved or reformatted code shows as unchanged.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You run it in place of the normal comparison tool. It parses both files, compares the two structures, and prints the result side by side with the real changes highlighted. It understands over 30 programming languages. A file with an extension it does not know falls back to a line-by-line comparison with word highlighting, and so does a file it cannot parse, although one setting allows a small number of parse errors before it gives up. It also understands the markers git leaves in a file when two changes collide. The newest release is 0.71.0, from 18 September 2026, and code landed this morning. What it does not do is produce a patch file. It is a viewer, not a tool for applying changes, and it does not merge anything either. The README points at a separate project for merging.

Why it matters

Who it suits. Anyone who reads code changes regularly and has lost time to a comparison full of noise: a reformatted file, a function moved from one place to another, a change in indentation after switching tools. It helps most where reviews happen alone, because there is no colleague to say "ignore the first forty lines, that is just formatting". Skip it if the files you compare are prose or data rather than code, because the structural reading is the whole value and prose has little structure to read.

Verdict. The cheapest useful change on this page. Two minutes to install, one line in a settings file, and nothing else to learn, because the commands stay the same. Two honest limits before you turn it on everywhere. It uses a lot of memory on a change with many edits in it, so a very large commit can be slow. And it treats order as meaningful, so two items swapped around still read as a change. Both are stated plainly in the README. dandavison/delta at 32,100 stars solves a different half of the same problem: it keeps the line-by-line comparison and makes it readable, with syntax colours and a side-by-side view, and Edition 43 covered it. Many people run both, because one makes the output pretty and the other makes it correct. so-fancy/diff-so-fancy at 18,100 stars is the older and simpler version of that same idea.

Stars26,010
LicenceMIT, read from the About sidebar on 2026-10-14
Latest0.71.0 (2026-09-18), read from /releases/latest and settled exactly by ungh's releases endpoint at 2026-09-18T22:57:29Z
Good
  • One command to install on every common system, with no runtime to add first.
  • Reformatting, moved code and changed indentation stop showing up as changes.
  • Turning it on and off is one setting, and the commands you already type do not change.
Watch for
  • It uses a lot of memory on a change with many edits, so a very large commit can be slow.
  • It cannot produce a patch file and cannot merge, so it only ever replaces the reading step.
  • Swapped items still read as a change, because it treats order as meaningful.
Similar repositories
Install
brew install difftastic
sudo dnf install difftastic
sudo pacman -S difftastic
nix-env --install difftastic
winget install difftastic
scoop install difftastic
Screenshots
Wilfred/difftastic: GitHub preview cardWilfred/difftastic: Screenshot 1Wilfred/difftastic: Screenshot 2Wilfred/difftastic: Screenshot 3Wilfred/difftastic: Screenshot 4

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.