Free · No telemetry · v1.0.0

Compare anything.
Merge with confidence.

A fast, free diff and 3-way merge tool for Windows. Text, folders and binaries, built to slot straight into TortoiseGit and git.

v1.0.0 150.7 MB Windows 10/11 x64 Portable zip

src/decoder.js: HEAD ↔ Working Tree — eMass Compare
eMass Compare text diff: two versions of decoder.js side by side, changed words highlighted in red and green, with a differences overview on the right eMass Compare text diff in the light theme: two versions of decoder.js side by side, changed words highlighted
785automated tests
20,000+fuzz cases
200kline files, virtualized
100 MB+binaries in hex view
0telemetry, accounts, ads

Four tools, one window

Every kind of compare you reach for

Text, 3-way merge, folders and raw bytes. The right view opens automatically for what you give it.

Side-by-side text diff

Line and word-level highlighting shows exactly what changed, not just which lines moved.

  • Ignore whitespace, case and blank lines
  • Copy blocks across, edit in place and save
  • Keeps encoding (UTF-8, UTF-16, BOM) and line endings
  • Virtualized rendering stays smooth on 200k-line files
Text compare
Text diff of decoder.js with word-level changes highlighted Text diff of decoder.js in the light theme

Built for daily use

The details that make it dependable

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

Saves what it read

UTF-8, UTF-16 and BOM preserved. CRLF stays CRLF. No surprise whole-file diffs after a save.

Fast on huge files

Virtualized rendering for 200k-line files, and streamed hex compare for 100 MB+ binaries.

Headless CLI for CI

Unified diff output, merges with conflict markers, and exit codes 0, 1 and 2 for scripts.

Dark & light themes

Carefully tuned diff colours in both themes, switchable with one click.

Keyboard-driven

Move between differences, copy blocks and save without touching the mouse.

F7 / Shift+F7 next / previous Alt+→ copy block right Ctrl+S save

Private by default

No telemetry, no account, no network needed. Nothing phones home, so your code stays on your machine.

No telemetryWorks offlineNo accountNo cookies on this site

TortoiseGit & git

Plugs into the workflow you already have

Right-click › TortoiseGit › Diff opens eMass Compare. 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.

  • One-command TortoiseGit setup that backs up and restores your previous diff tool
  • git difftool and git mergetool config included
  • Diff output byte-identical to git diff; merge output identical to git merge-file in cross-checks
PowerShell · from the source repo
powershell -ExecutionPolicy Bypass -File scripts\integration\install-tortoisegit.ps1 -GitConfig
~/.gitconfig
[diff]
    tool = emass
[merge]
    tool = emass
[difftool "emass"]
    cmd = \"C:/path/EmassCompare.exe\" \"$LOCAL\" \"$REMOTE\" --left-readonly
[mergetool "emass"]
    cmd = \"C:/path/EmassCompare.exe\" --merge --base \"$BASE\" --mine \"$LOCAL\" --theirs \"$REMOTE\" --output \"$MERGED\"
    trustExitCode = true

Quick start

Up and running in about a minute

No installer, no admin rights. Unzip it anywhere and point TortoiseGit at it.

  1. Download & unzip

    Extract EmassCompare-1.0.0-win-x64.zip to a folder such as C:\Tools\EmassCompare and run EmassCompare.exe once.

    Download zip
  2. Point TortoiseGit at it

    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.

  3. Right-click › Diff

    Right-click a modified file › TortoiseGit › Diff. On a conflict, Edit conflicts opens the 3-way merge.

TortoiseGit external tool settings

Replace C:\path with the folder you unzipped to. TortoiseGit adds the quotes around each %placeholder itself.

Diff Viewer › External
"C:\path\EmassCompare.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly
Merge Tool › External
"C:\path\EmassCompare.exe" /base:%base /mine:%mine /theirs:%theirs /merged:%merged /basename:%bname /minename:%yname /theirsname:%tname /mergedname:%mname

Command line

Headless mode for scripts & CI

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.

0
Identical, or merged cleanly
1
Different, or conflicts left (written with markers)
2
Error. For a merge, nothing is written

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

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

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

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

# Add the ||||||| base section to conflict markers
EmassCompare.exe --headless --merge --diff3 base.c mine.c theirs.c -o merged.c

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

# Beyond Compare positional merge order also works
EmassCompare.exe mine.c theirs.c base.c merged.c

Correctness first

Tested like it matters, because merges do

A diff tool you can't trust is worse than none. Every release is checked against git itself.

785

Automated tests

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

20,000+

Fuzz cases

Randomised inputs hammer the diff and merge engines looking for crashes and wrong output.

= git

Cross-checked against git

Diff output byte-identical to git diff, merge output identical to git merge-file.

How it stacks up

An honest comparison

Against what you typically get from free diff tools. Where we are behind, we say so.

FeatureeMass CompareTypical free diff tools
Side-by-side diff with word-level highlightingCommon
3-way merge with editable outputVaries
Per-conflict mine / theirs / both / base, auto-mergeVaries
Exit codes TortoiseGit and git mergetool can trustVaries
Accepts TortoiseGit & Beyond Compare switchesRare
Streaming hex compare of 100 MB+ filesRare
Recursive folder compare with exclude globsVaries
Preserves encoding, BOM and line endings on saveVaries
Headless CLI (unified diff, merge, exit codes)Varies
Dark and light themesVaries
No telemetry, works offline, no accountVaries
Syntax highlightingPlannedCommon
InstallerPortable zipCommon
PriceFreeFree

Roadmap

Coming next

Planned, not promised dates. Version 1.0 focuses on getting compare and merge right.

  • Syntax highlighting
  • Find & replace
  • Tabs
  • Explorer context menu
  • Installer

FAQ

Questions, answered

Is it really free?

Yes. No trial period, no licence key, no account and no nag screens.

Windows says “Windows protected your PC”. Is that normal?

Yes. EmassCompare.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).

How do I verify the download?

Run this in PowerShell in the folder you downloaded to:

PowerShell
Get-FileHash .\EmassCompare-1.0.0-win-x64.zip -Algorithm SHA256

The hash should be:

SHA-256
5d39b13ba87952b1acbf3cc5448e51f5314ce8d26c08519882118542c98600bb
Does the app collect any data?

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.)

Can it replace Beyond Compare in my existing configs and scripts?

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.

How does git know a merge is finished?

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.emass.trustExitCode = true so git relies on that instead of just checking whether the file changed.

What are the system requirements?

Windows 10 or 11, 64-bit (x64). It is a portable zip of about 150.7 MB: unzip it and run EmassCompare.exe. No installer and no admin rights needed.

How do I uninstall it?

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.

Make your next merge the easy one.

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

Download v1.0.0

150.7 MBWindows 10/11 x64No installer