Features

Every compare, one fast window.

Text, 3-way merge, folders and raw bytes, plus a headless command line for scripts. DiffScope picks the right view for what you open and stays out of your way.

Free v1.0.1 Windows 10/11 x64 No telemetry

Text compare

See exactly what changed, down to the word

Two files side by side with changed lines tinted and the changed words inside them highlighted. Hide the noise, edit either side and save without touching the file’s encoding.

src/decoder.js: HEAD ↔ Working Tree — DiffScope
DiffScope text compare: two versions of decoder.js side by side, changed words highlighted in red and green, with a differences overview on the right DiffScope text compare in the light theme: two versions of decoder.js side by side with changed words highlighted

Line and word-level highlighting

Changed lines are paired up and the words that differ inside them are marked, so a renamed variable doesn’t hide in a sea of red.

Ignore what doesn’t matter

Ignore all whitespace, whitespace changes or leading/trailing spaces, plus case and blank lines. Re-indents stop drowning out real edits.

Edit, copy across, save

Double-click a line to edit it, copy a block left or right with Alt+←/→, and undo across both panes with Ctrl+Z.

Saves what it read

UTF-8, UTF-8 with BOM, UTF-16 LE/BE and Latin-1 are kept on save, and CRLF stays CRLF. If only encoding or line endings differ, a notice says so.

Smooth on huge files

Virtualized rendering keeps scrolling fluid on 200,000-line files. The overview map on the right shows every change at a glance.

Keyboard-first navigation

F7 / Shift+F7 (or Alt+↓/↑) jump between differences. Ctrl+S saves. Read-only panes protect files you shouldn’t touch.

Keyboard shortcuts

3-way merge

Resolve conflicts with the whole picture

Mine, Base and Theirs side by side above the merged result. Changes that don’t overlap merge themselves, so you only spend time on the real conflicts.

  • Automatic merge of non-conflicting changes, with the same rules as git merge-file
  • Per conflict: take Mine, Theirs, Mine + Theirs, Theirs + Mine or Base
  • Shift+click a button to resolve every remaining conflict the same way
  • A “N of M left” counter and next / previous unresolved conflict
  • Edit the result directly, with undo and redo
  • Exits 0 only when saved with no conflicts left, so git and TortoiseGit know when you’re done

Use it as your merge tool

3-way merge
3-way merge of uart.c: Mine, Base and Theirs panes above the merged output, with two unresolved conflicts and per-conflict buttons 3-way merge of uart.c in the light theme
5
ways to resolve a conflict
= git
merge output matches git merge-file
0 / 1
exit codes git can trust

Folder compare

Two whole trees, every difference

Point it at two folders to see what was added, removed or changed across the whole tree, then open any pair with a double-click.

  • Recursive compare by content, by size, or by size and date
  • Exclude globs such as .git; node_modules; *.o
  • Filter to all, differences, same or orphans
  • Tree view with expand / collapse all and live status counts
  • Double-click a pair to open it in text or hex compare
  • Works with git difftool --dir-diff
Folder compare
Folder compare of release-2.3 and release-2.4: changed files in red, a left-only build folder and right-only files such as CHANGELOG.md Folder compare of two release folders in the light theme
3
compare modes: content, size, date
4
filters: all, differences, same, orphans
CI
headless --folder report

Hex compare

Byte-level compare for big binaries

Firmware images, archives and build outputs. Both files are streamed rather than loaded, so a 100 MB+ image opens without a stall.

  • Differing bytes marked in both the hex and the ASCII columns
  • Go to any offset, in hex (0x1F0) or decimal (496)
  • Jump between differences with F7 / Shift+F7
  • Binary files are detected automatically, so the hex view opens by itself
  • Bytes past the end of the shorter file are shown as differences
Hex compare
Hex compare of two firmware images with differing bytes highlighted in both hex and ASCII columns Hex compare of two firmware images in the light theme
100 MB+
files, streamed in chunks
16
bytes per row, hex and ASCII
F7
next difference

CLI & automation

The same engines, without a window

Add --headless and DiffScope writes a unified diff, a merged file or a folder report, then tells your script what happened through its exit code.

  • Unified diff byte-identical to git diff, with -U N context
  • 3-way merge with git-style conflict markers; --diff3 adds the base section
  • Folder report with --folder, --exclude and --compare=content|size|size-mtime
  • Speaks three dialects: TortoiseGit /base: switches, GNU --long options and Beyond Compare’s four-argument merge order
  • git-bash paths like /c/Users/x/a.txt are converted automatically
0
Identical, or merged cleanly
1
Different, or conflicts left (written with markers)
2
Error. For a merge, nothing is written

CLI reference

PowerShell
# Unified diff, same format as git diff
DiffScope.exe --headless old\app.js new\app.js > changes.diff

# Ignore whitespace (-w), case (-i) and blank lines (-B)
DiffScope.exe --headless -w -i -B a.txt b.txt > changes.diff

# 3-way merge; conflicts are written with markers (exit 1)
DiffScope.exe --headless --merge --base base.c --mine mine.c --theirs theirs.c -o merged.c

# Folder compare by content, skipping build output
DiffScope.exe --headless --folder --exclude node_modules --exclude "*.o" v2.3 v2.4 > tree.txt

# Beyond Compare's positional merge order also works
DiffScope.exe mine.c theirs.c base.c merged.c

DiffScope.exe is a GUI program: redirect its output to a file or a pipe. Exit codes work everywhere.

Integration

Right-click › Diff, from TortoiseGit or git

Set DiffScope as TortoiseGit’s external diff viewer and merge tool, or as git’s difftool and mergetool. Or open it on its own and drop two files on the Home screen.

  • TortoiseGit Diff Viewer and Merge Tool (External) with pane titles from %bname, %yname…
  • git difftool, git difftool -d for whole change sets, and git mergetool
  • Honest exit codes, so trustExitCode = true works as intended
  • Accepts Beyond Compare switches, so existing configs usually only need a new exe path
  • Drag and drop two files or folders anywhere in the window

Setup guide

Home
DiffScope Home screen: a Compare panel with Left and Right path fields and a drop zone, next to a 3-way merge panel with Base, Mine, Theirs and Output fields DiffScope Home screen in the light theme with the Compare and 3-way merge panels
git config
git config --global merge.tool diffscope
git config --global mergetool.diffscope.trustExitCode true

Privacy & quality

Your code stays on your machine. Your merges stay correct.

The app makes no network connections at all: no telemetry, no update pings, no account. And because a diff tool you can’t trust is worse than none, every release is tested against git itself.

Private by design

Nothing phones home and nothing needs the internet. It runs the same on an air-gapped build machine as on your laptop.

No telemetryNo network connectionsNo accountWorks offline

Portable

A zip, not an installer. Unzip anywhere and run DiffScope.exe. No admin rights; delete the folder to remove it.

740

Unit tests

Diff, merge, encodings, folder scans, CLI parsing and integration scripts.

46

End-to-end tests

The real Electron app driven through text, merge, folder and hex views and their exit codes.

20,000+

Fuzz cases

Randomized inputs, cross-checked byte for byte against git diff and git merge-file.

Checklist

Everything in version 1.0

Every item below ships in the current release. What’s next is on the roadmap.

DiffScope 1.0 features by area
Feature1.0
Text compare
Side-by-side two-pane diff with line numbersChanged, added and removed lines aligned with filler rows
Word-level highlighting inside changed lines
Ignore whitespace, case and blank linesWhitespace: all, changes only, or leading/trailing
Edit in place, copy blocks left / rightAlt+← / Alt+→, double-click a line to edit
Undo and redo across both panes
Encoding and line endings preserved on saveUTF-8, UTF-8 BOM, UTF-16 LE/BE, Latin-1; CRLF / LF / CR
Notice when only encoding or line endings differ
Differences overview map
Virtualized rendering for 200k-line files
Read-only panes and custom pane titles/readonly, /leftreadonly, /rightreadonly, /title1..4
Unsaved-changes prompt on close
3-way merge
Mine, Base and Theirs panes above an output pane
Automatic merge of non-conflicting changesSame semantics as git merge-file
Take Mine, Theirs, Mine + Theirs, Theirs + Mine or Base
Shift+click to resolve all remaining conflicts one way
Conflict counter, next / previous unresolved conflict
Save with git-style conflict markers
Exit code 0 only when saved with no conflicts left
Folder compare
Recursive compare by content, size, or size + date
Exclude globsFor example .git; node_modules; *.o
Filters: all, differences, same, orphans
Tree view with expand / collapse all and status counts
Double-click a pair to open it
Hex compare
Streaming compare of 100 MB+ files
Differences in hex and ASCII columns
Next / previous difference and go to offset
Automatic binary detection
Command line
Headless unified diff, merge and folder report--headless, --merge, --folder, --diff3, -U N
Exit codes 0 / 1 / 2
TortoiseGit, GNU and Beyond Compare argument styles
Text, hex or folder mode detected automaticallyOr forced with --text, --hex, --folder
Integration
TortoiseGit external Diff Viewer and Merge Tool
git difftool (including -d) and git mergetool
Drag and drop files or folders
App & privacy
Dark and light themes
Keyboard navigationF7, Shift+F7, Alt+arrows, Ctrl+S, Ctrl+Z / Ctrl+Y
Portable zip, no installer, no admin rights
No telemetry, no network connections, no account

Try it on your next diff.

Free, portable and private. Ready in about a minute.

150.8 MBWindows 10/11 x64No installer