Open-source project
WinMerge/winmerge avatar
WinMerge/winmerge

WinMerge: Visual File and Folder Differencing for Windows

WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

9,224 stars1,013 forksC++GPL-2.0

At a glance

What is it?
WinMerge is an open-source differencing and merging tool for Windows that compares two or three files or entire folder trees side by side with line-level and inline difference highlighting. It has been in active development since 2000.
Who is it for?
WinMerge is the right tool for Windows developers and system administrators who need a free, visual diff and merge application for text files and folder trees. It is not the right choice for users on macOS or Linux, since WinMerge is Windows-only.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What WinMerge Does and Who Uses It

WinMerge compares files and folders visually. It places differences in two or three files side by side, highlights changed lines in color, and marks individual word-level changes within a line. For folders, it shows which files differ, which are missing from one side, and which exist only on one side. It generates patch files in normal, context, and unified diff formats. These capabilities make it useful for developers who need to review code changes without a Git client, technical writers who compare document revisions, and system administrators who compare configuration files between environments. The README notes that WinMerge has been actively developed since 2000. The most recent release at the time of writing was v2.16.58.2 on 2026-08-27.

File Comparison Features: Three-Way Merge, Syntax Highlighting, and Ignore Rules

WinMerge supports comparing two or three text files simultaneously. When three files are involved, typically a base version and two modified branches, the tool shows which changes came from which side. Inline difference highlighting within a line shows changes at the word or character level, not just at the line level. Syntax highlighting is available for many programming languages and file formats, which helps when comparing code files. Flexible ignore options let you exclude whitespace differences, case differences, or lines matching a regular expression. This is useful when comparing files that differ only in formatting, such as auto-generated code or files with inconsistent line endings. The README describes these options without listing the specific regular expression syntax used, so consulting the documentation at docs.cleanrl.dev is necessary for the exact filter format.

Folder Comparison and Advanced Filter Expressions

WinMerge's folder comparison mode scans two directory trees and presents a list of all files with their status: identical, different, only-left, only-right, or binary. The README notes that folder comparisons support advanced filter expressions that include or exclude files and folders based on names, paths, sizes, timestamps, and other attributes. Filter definitions live in the Filters/ directory of the repository as .flt files. This means filters are separate files that can be created and shared. Shell integration through the ShellExtension/ directory adds a WinMerge entry to the Windows Explorer right-click context menu. This allows comparing two selected files or folders directly from Explorer without launching WinMerge first and navigating to the files manually.

Archive Support via 7-Zip

WinMerge can compare files inside archive formats by using 7-Zip. When 7-Zip is installed and the Merge7z DLLs from the ArchiveSupport/ directory are present, WinMerge treats ZIP, 7z, and many other archive formats as virtual folders. You can navigate inside an archive and compare its contents against another archive or a regular directory as if the archive were a normal folder. The ArchiveSupport/ directory in the repository contains the Merge7z DLLs and a standalone installer for them. This means archive support is an optional component that requires 7-Zip to be present on the system. Without 7-Zip, WinMerge compares archive files as binary blobs rather than as structured containers.

Building WinMerge from Source

Building WinMerge requires Visual Studio 2017 or 2022 with MFC and ATL support and the Windows 10 SDK. Additional tools needed are git, Inno Setup 5.x and 6.x for the installer, 7-Zip, Python, Pandoc, and MSYS2 including po4a and diffutils for translation builds. The README provides a build sequence.

bash
git clone --recurse-submodules https://github.com/WinMerge/winmerge
cd winmerge
DownloadDeps.cmd
BuildAll.cmd [x86|x64|ARM64]

For Visual Studio 2022 specifically, use BuildAll.vs2022.cmd instead. The built executable is produced at Build\X64\Release\WinMergeU.exe for a 64-bit release build. The repository also includes solution files ALL.sln and WinMerge.sln for opening the project in Visual Studio directly. Third-party libraries used by WinMerge live in the Externals/ directory, some customized for the project.

Limitations: Windows-Only and Source Build Complexity

WinMerge runs only on Windows. There is no macOS or Linux version, and the README makes no mention of cross-platform plans. Developers on other operating systems need a different tool. The source build is complex: it requires Visual Studio with specific components, several additional tools, and a multi-step build process using command-line scripts. This is a higher barrier than most open-source tools with cross-platform builds. The README also notes that the changelog is in Docs/Users/ChangeLog.md, which means you need to review that file to understand what changed between releases. The Testing/ directory contains unit tests based on the Google Test Framework, but the README does not describe how to run the test suite independently of the full build.

WinMerge versus Beyond Compare and Meld

Beyond Compare is a paid file and directory comparison tool for Windows, macOS, and Linux. It offers a broader range of comparison types, including images, tables, and registry entries, and runs on platforms WinMerge does not support. WinMerge is free and open-source; Beyond Compare requires a licence purchase. Meld is a free, open-source visual diff and merge tool that runs on Linux and Windows. It is the standard choice on Linux, where WinMerge is not available. WinMerge's advantage is its deep Windows integration: the shell extension, archive support via 7-Zip, and Visual Studio solution files are all oriented toward a Windows-native workflow. The GPL-2.0 licence means WinMerge can be freely distributed and included in developer toolkits without licence cost.

Editorial conclusion

WinMerge is the right tool for Windows developers and system administrators who need a free, visual diff and merge application for text files and folder trees. It is not the right choice for users on macOS or Linux, since WinMerge is Windows-only. Before building from source, ensure Visual Studio 2017 or 2022 is installed with MFC and ATL support, then run DownloadDeps.cmd and BuildAll.cmd to produce the WinMergeU.exe binary.

Frequently asked questions

What is WinMerge used for?

WinMerge compares two or three text files or folder trees side by side, highlights differences line by line and within lines, and lets you merge changes from one file into another. It is used for code review, configuration file comparison, and generating patch files.

Is WinMerge free?

Yes. WinMerge is free and open-source, released under the GPL-2.0 licence. Pre-built installers and portable downloads are available at no cost on SourceForge and on the GitHub releases page.

How do I use WinMerge to compare folders?

Open WinMerge, select File > Open, and enter the two folder paths you want to compare. WinMerge scans both trees and presents a list showing files that differ, files that exist on only one side, and files that are identical. Double-clicking a differing file opens the side-by-side text comparison view.

How do I use WinMerge with Git?

Configure Git to use WinMerge as its diff and merge tool by setting the appropriate git config entries that point to the WinMergeU.exe binary. After configuration, running git difftool or git mergetool will launch WinMerge to display or resolve differences. The exact git config syntax is not in the repository README but is standard Git tooling configuration.

How do I install WinMerge?

Download the installer from the GitHub releases page or from SourceForge and run it. WinMerge also has a portable download that requires no installation. A Chocolatey package and a winget package are available for command-line installation on Windows.

Official sources

  1. License: GPL-2.0
  2. Project website
  3. README
  4. Releases
  5. WinMerge/winmerge on GitHub
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/winmerge-winmerge.svg)](https://hysenlabs.com/projects/winmerge-winmerge)
Community notes

Community notes