A drop-in replacement
Understands TortoiseGit and Beyond Compare command-line syntax, so existing configs and scripts keep working.
/base:/mine:/theirs:/merged:/title1:/leftreadonly
Free · No telemetry · v1.0.0
A fast, free diff and 3-way merge tool for Windows. Text, folders and binaries, built to slot straight into TortoiseGit and git.
Four tools, one window
Text, 3-way merge, folders and raw bytes. The right view opens automatically for what you give it.
Line and word-level highlighting shows exactly what changed, not just which lines moved.
Mine, Base and Theirs side by side above an editable output. Non-conflicting changes merge themselves.
git mergetool trust
See what was added, removed or changed across two whole trees, then open any pair with a double-click.
.git; node_modules; *.ogit difftool -d
Firmware images, archives and build outputs. Files are streamed, so 100 MB+ opens without a stall.
0x1F0 or 496)
Built for daily use
Understands TortoiseGit and Beyond Compare command-line syntax, so existing configs and scripts keep working.
/base:/mine:/theirs:/merged:/title1:/leftreadonly
UTF-8, UTF-16 and BOM preserved. CRLF stays CRLF. No surprise whole-file diffs after a save.
Virtualized rendering for 200k-line files, and streamed hex compare for 100 MB+ binaries.
Unified diff output, merges with conflict markers, and exit codes 0, 1 and 2 for scripts.
Carefully tuned diff colours in both themes, switchable with one click.
Move between differences, copy blocks and save without touching the mouse.
No telemetry, no account, no network needed. Nothing phones home, so your code stays on your machine.
TortoiseGit & git
Right-click › TortoiseGit › Diff opens DiffScope. Conflicts open the 3-way merge. When you save with every conflict resolved it exits with 0, so the file is marked resolved, and never before.
git difftool and git mergetool config includedgit diff; merge output identical to git merge-file in cross-checkspowershell -ExecutionPolicy Bypass -File scripts\integration\install-tortoisegit.ps1 -GitConfig
[diff]
tool = diffscope
[merge]
tool = diffscope
[difftool "diffscope"]
cmd = \"C:/path/DiffScope.exe\" \"$LOCAL\" \"$REMOTE\" --left-readonly
[mergetool "diffscope"]
cmd = \"C:/path/DiffScope.exe\" --merge --base \"$BASE\" --mine \"$LOCAL\" --theirs \"$REMOTE\" --output \"$MERGED\"
trustExitCode = true
Quick start
No installer, no admin rights. Unzip it anywhere and point TortoiseGit at it.
Extract DiffScope-1.0.0-win-x64.zip to a folder such as C:\Tools\DiffScope and run DiffScope.exe once.
TortoiseGit › Settings › Diff Viewer: set both the diff viewer and the Merge Tool to External with the command lines below.
From the source repo, install-tortoisegit.ps1 does it for you and backs up your previous tools.
Right-click a modified file › TortoiseGit › Diff. On a conflict, Edit conflicts opens the 3-way merge.
Replace C:\path with the folder you unzipped to. TortoiseGit adds the quotes around each %placeholder itself.
"C:\path\DiffScope.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly
"C:\path\DiffScope.exe" /base:%base /mine:%mine /theirs:%theirs /merged:%merged /basename:%bname /minename:%yname /theirsname:%tname /mergedname:%mname
Command line
The same diff and merge engines, without a window. Results go to a file or pipe and the exit code tells your script what happened.
DiffScope.exe is a GUI program: redirect its output to a file or pipe it. Exit codes work everywhere.
# Unified diff, same format as git diff
DiffScope.exe --headless old\app.js new\app.js > changes.diff
# Ignore all 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
# Add the ||||||| base section to conflict markers
DiffScope.exe --headless --merge --diff3 base.c mine.c 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 positional merge order also works
DiffScope.exe mine.c theirs.c base.c merged.c
Correctness first
A diff tool you can't trust is worse than none. Every release is checked against git itself.
Diff, merge, encodings, folder scans, CLI parsing and the TortoiseGit integration scripts.
Randomised inputs hammer the diff and merge engines looking for crashes and wrong output.
Diff output byte-identical to git diff, merge output identical to git merge-file.
How it stacks up
Against what you typically get from free diff tools. Where we are behind, we say so.
| Feature | DiffScope | Typical free diff tools |
|---|---|---|
| Side-by-side diff with word-level highlighting | Common | |
| 3-way merge with editable output | Varies | |
| Per-conflict mine / theirs / both / base, auto-merge | Varies | |
| Exit codes TortoiseGit and git mergetool can trust | Varies | |
| Accepts TortoiseGit & Beyond Compare switches | Rare | |
| Streaming hex compare of 100 MB+ files | Rare | |
| Recursive folder compare with exclude globs | Varies | |
| Preserves encoding, BOM and line endings on save | Varies | |
| Headless CLI (unified diff, merge, exit codes) | Varies | |
| Dark and light themes | Varies | |
| No telemetry, works offline, no account | Varies | |
| Syntax highlighting | Planned | Common |
| Installer | Portable zip | Common |
| Price | Free | Free |
Roadmap
Planned, not promised dates. Version 1.0 focuses on getting compare and merge right.
FAQ
Yes. No trial period, no licence key, no account and no nag screens.
Yes. DiffScope.exe is not code-signed yet, so Microsoft Defender SmartScreen warns about it. Click More info › Run anyway. If you want to be sure the file is the one we published, check its SHA-256 first (next question).
Run this in PowerShell in the folder you downloaded to:
Get-FileHash .\DiffScope-1.0.0-win-x64.zip -Algorithm SHA256
The hash should be:
562d43a681d4c35bde8a56bda5260c10b79ea273b8c3c7502ae8e828eb93d31d
No. There is no telemetry, no account and it works fully offline. (This website counts page views and downloads anonymously, without cookies, so we know whether anyone is using it.)
For diff and merge, usually yes. It accepts the TortoiseGit and Beyond Compare switches (/base: /mine: /theirs: /merged: /title1:, read-only flags) and Beyond Compare's four-argument merge order mine theirs base merged. Change the exe path and keep the rest.
The merge window exits with 0 only after you save with no conflicts left, and with 1 if you cancel or leave conflicts. Set mergetool.diffscope.trustExitCode = true so git relies on that instead of just checking whether the file changed.
Windows 10 or 11, 64-bit (x64). It is a portable zip of about 150.8 MB: unzip it and run DiffScope.exe. No installer and no admin rights needed.
Delete the folder. If you set it up in TortoiseGit by hand, switch the Diff Viewer and Merge Tool back. If you used install-tortoisegit.ps1, run uninstall-tortoisegit.ps1 to restore your previous tools.

Free, portable and private. Ready in about a minute.
Download v1.0.0