Free File Comparison and Differencing Tools (Diff Utilities)
Compare differences between two text/binary files visually
Free File Comparison Utilities
The file comparison tools on this page are useful in a few ways. Firstly, they can tell you whether 2 files have identical content or not. Secondly, they can also be used to pinpoint the exact differences between 2 files (especially if they are plain text files). Thirdly, for programmers, they can be used to create patch files that can be used to update one of those files to the other (useful for sending small updates to your end users without requiring them to re-download everything).
Note for non-programmers: since you're probably just looking for something to tell you if 2 files are the same, or to tell you the differences between 2 text files, just ignore any software below where I say that the tool is a binary diff or patch tool (ie, stuff like bsdiff and xdelta). Those are mostly meant for programmers. Also note that not all the utilities listed have a visual interface; some of them require you to use the command line, so if you're not comfortable with that, get a different one. (As far as possible, I've tried to note in my mini-review below if a particular program is command line based to make it easier for you, but if I miss something, and you find the program doesn't have a window for you to click on, just download a different program. They're all free, after all.)
Free File Comparison Utilities (diff tools)
This is a free diff program that compares two text files (including Unicode ones) and displays the results side by side with the differences highlighted. This is a Windows .NET program.
- bsdiff and bspatch
The command line utility bsdiff looks for differences between two binary files (that is, files that are not plain text files) and creates a patch that can be used by bspatch to change (or update) one of the binary files to the other. Such binary diff tools (as they are called) are often used by software developers to deliver updated versions of their software to their users without requiring their users to download everything all over again, just to upgrade to a new version. (They are also used for things like version control software.) In any case, bsdiff is known for its ability to create very small patch files. The program works on numerous systems, including Linux, the BSD family, Windows and probably others. Source code is available.
WinMerge is a Windows file differencing and merging tool. It has a Windows frontend over the GNU diff and merge utilities. It includes Visual SourceSafe integration, visual differencing of text files, the ability to diff entire directories, multiple level undos, an integrated editor,
- xdelta Open Source Binary Diff, Delta / Differential Compression Tool
xdelta is a command line tool that allows you to make binary diffs of two binary files. Actually, xdelta is apparently more than that - it is, according to their web page, "a complete system for managing delta-compressed storage and network transport". The latest version supports VDIFF / RFC 3284 encoding and decoding.
- Java xdelta
This is a Java version of xdelta, a program that can make binary diffs of two files.
- GNU Diff Utilities
If you need to compare two text files and get a report of which lines have changed, the GNU command line diff utilities can show you those differences. It is a standard part of Unix-type systems (like Linux and FreeBSD, etc), but if you have an operating system that does not come with a useful file or text comparison utility, you can get the source code for the program here. Note that the utilities are command line based, and come only in source form, so you have to compile them yourself.
KDiff3 compares two or three text files and shows the differences between them line by line and even character by character. It also has a merge capability, an integrated editor and the ability to diff/merge directories as well. KDiff3 works on Unix systems like Linux as well as Windows.
xxdiff is a graphical file and directory comparison and merging tool. You can compare two or three files with the differences highlighted. You can also compare two directories (useful if you are trying to synchronise two directories/disks). It also has the ability to merge files, unmerge CVS conflicts into two separate files so that you can resolve the conflicts, etc. It uses an external diff program that is compatible with GNU diff (presumably in its interface). xxdiff is released under the GNU GPL and runs on IRIX, Linux, HP/UX, and DEC Tru64.
ExamDiff shows you the difference between two ASCII text files (Unicode not supported) by displaying the two files side by side with the changes in different colours. You can configure the colours used.
- SourceGear DiffMerge: Diff / Merge utility
DiffMerge allows you to visually compare and merge files by graphically showing you the differences between them. Intra-line highlighting of differences is supported along with support for editing the files. You can also perform a side-by-side comparison of 2 folders; the folder diff facility will show you the files that are only present in one folder as well as distinguish between those that are identical and those that are different. It's Merge facility allows you to see the changes between 3 files, automatic merging when safe, and the ability to edit the resulting file. The program supports international character encoding, and works on Windows, Mac OS X and Linux. The Windows version features Windows Explorer integration.
Diffuse can compare an arbitrary number of files side by side. You can manually correct the output so that the matching lines are aligned as well as edit the files directly from the utility. It can retrieve files from a variety of source code version control management systems including Bazaar, CVS, SVN, Darcs, Git, Mercurial, Monotone, etc, for comparison and merging. Other features include syntax highlighting, Unicode (UTF-8) support, unlimited undo, etc. The program requires that you have Python and PyGTK installed.
How to Link to This Page
It will appear on your page as: