Diff and merge for Windows and macOS

See how every change connects.

BrickMerge compares files side by side and draws a line from each changed block to its counterpart, even when the two sides have different lengths. It also merges three versions, compares folders and images, understands JSON, XML and YAML, and works as your git diff and merge tool.

  • Windows 11
  • macOS on Apple Silicon
  • Free for non-commercial use
  • Light and dark theme
BrickMerge comparing two versions of a C# file side by side. Curved lines join every changed block on the left to the matching block on the right.

Everything you need to compare and merge

A fast, focused tool that keeps the changes readable, and gets out of your way.

Connected changes

Curved lines join each changed block to its match on the other side, through both panes. Insertions and deletions end in a dot where the lines would go. One click on the arrow next to a change applies it.

Three-way merge

Local, base and remote side by side, the editable result below. Take local, remote, both or the base for each conflict, and see at a glance where every part of the result came from.

Folder comparison

A tree with status per file, filters for names to skip, comparison by content or by size and date. Open any pair in a tab, copy between sides or delete to the recycle bin.

Image comparison

PNG, JPEG, GIF, BMP, WebP and ICO side by side, as a blink, with a slider or as a pixel difference. A tolerance setting ignores compression noise.

Structure-aware JSON, XML and YAML

Optionally compare the structure instead of the text: formatting and key order stop mattering, and the status bar names the path of the change, like database › pool › max.

Git, built in

Use it as git difftool and git mergetool, browse the history of a file and compare any two revisions, or resolve a file that still has conflict markers.

Precise highlighting

Changed characters inside a line, moved blocks, visible whitespace and line endings. Choose Myers, Patience or Histogram matching, and ignore whitespace, case or text that matches a pattern.

Export and share

Save a comparison as a unified patch or as a self-contained HTML page. Compare the clipboard with a file, or paste two texts into a blank comparison.

At home on your system

"Compare with BrickMerge" in the Explorer menu (directly in the Windows 11 menu) and in the Finder's Services menu. Any two files or folders are one right-click away.

A quick tour

Click a screenshot to see it in full size.

Side by side, with the changes connected

Each pane shows only its own lines. Where the two files differ in length, the lines are joined by curves, and the panes scroll in step, so you never lose your place.

  • Edit either side and watch the comparison update.
  • Apply a single change, or one line of it, to the other side.
  • Collapse unchanged regions, wrap long lines, show whitespace.
  • Fast on large files: 50,000 lines open in about a second.
Two versions of a C# class compared side by side with connecting lines between the changes.

Merge three versions without losing track

The three inputs sit next to each other with the same connecting lines between them. Below is the result, which you can edit freely. Changes only one side made are merged automatically; the rest are conflicts you resolve with one click.

  • Letters in the margin show where each part of the result came from: Local, Remote, or both.
  • Jump from conflict to conflict, or take local, remote, both, or the base.
  • As a mergetool it reports success to git only when the conflicts are resolved.
Three-way merge: local, base and remote versions of a file at the top, the merge result with a marked conflict below.

Folders at a glance

Compare two folders and see what is identical, different, or only on one side. Double-click a file to compare it in a new tab, and copy or delete entries to bring the sides in line.

  • Compare by content, or quickly by size and date.
  • Hide identical files, and skip names like .git or node_modules.
Folder comparison with a tree of files and a status for each: different, left only, right only, identical.

Images, pixel by pixel

Compare two images next to each other, or let them blink, slide over each other, or show only what differs. The status bar tells you how many pixels changed and where.

  • Zoom and pan, with a pixel readout under the pointer.
  • Set a tolerance to ignore compression noise.
Two screenshots of a dashboard side by side. The right one has a green button and a notification badge.
Side by side
The difference view highlights the changed button and the badge in red.
Difference view

Compare what a file means, not how it is formatted

Switch on the structural comparison for JSON, XML and YAML. Both files are brought into one canonical layout first, so reordered keys and different indentation disappear, and only real changes remain, with their path in the status bar.

Here a minified file and a pretty-printed one with shuffled keys differ in four values, nothing else.

A minified JSON file compared with a pretty-printed one. After normalization only four changed values are marked, and the status bar shows the path database, pool, max.

Made to be comfortable

Light and dark themes, a color-blind friendly palette (blue, orange and pink instead of green, red and blue), a German translation, and your last session reopened when you start the app.

The light theme with the color-blind friendly palette.
Light theme with the color-blind friendly palette

Your git diff and merge tool

BrickMerge ships a small brickmerge command that git can call, and a settings button that writes the git configuration for you.

difftool and mergetool

git difftool opens the comparison and waits for you; git mergetool opens the three-way merge and trusts the exit code, so a conflict you did not resolve is not marked as resolved.

Clients that follow git's settings

Clients such as SourceGit use the diff and merge tool from your git configuration, so setting it up once covers them too.

History and revisions

Open the history of a file or folder, pick one commit to compare it with its parent or with the working tree, or pick two commits to compare them. Changed files open as tabs.

Conflict markers

Got a file with <<<<<<< markers already in it? brickmerge --resolve file splits it into local, remote and base and opens the merge view. Use git's diff3 or zdiff3 conflict style to include the base.

The details

Text encodings
UTF-8 with and without byte order mark, UTF-16, and a Windows-1252 fallback. The original encoding is kept when you save.
Line endings
LF, CR LF and CR are detected and preserved. Differences can be shown or ignored.
Binary files
Recognized and not compared as text.
Syntax highlighting
For many languages and file types, in both themes.
Performance
Diffing runs in the background and can be cancelled. Two 50,000-line files compare in well under a second.
Languages
English and German. Follows your system, or choose in the settings.
Privacy
Everything stays on your computer. BrickMerge does not send data anywhere.

Free for non-commercial use

BrickMerge is source-available under the PolyForm Noncommercial License 1.0.0. You can use it for personal projects, study, research and other non-commercial purposes. Using it commercially needs the author's permission.