Comparison of file comparison tools

Last updated

This article compares computer software tools that are used for accomplishing comparisons of files of various types. The file types addressed by individual file comparison apps varies but may include text, symbols, images, audio, or video. This category of software tool is often called "file comparison" or "diff tool", but those effectively are equivalent terms — where the term "diff" is more commonly associated with the Unix diff utility.

Contents

A typical rudimentary case is the comparison of one file against another. However, it also may include comparisons between two populations of files, such as in the case of comparing directories or folders, as part of file management. For instance, this might be to detect problems with corrupted backup versions of a collection of files ... or to validate a package of files is in compliance with standards before publishing.

Note that comparisons must be made among the same file type. Meaning, a text file cannot be compared to a picture containing text unless an optical character reader (OCR) process is done first to extract the text. Likewise, text cannot be compared to spoken words, unless the spoken words first are transcribed into text. Additionally, text in one language cannot be compared to text in another, unless one is translated into the language of other.

A critical consideration is how the two files being compared must be substantially similar and thus not radically different. Even different revisions of the same document — if there are many changes due to additions, removals, or moving of content — may make comparisons of file changes very difficult to interpret. This suggests frequent version saves of a critical document, to better facilitate a file comparison.

A "diff" file comparison tool is a vital time and labor-saving utility, because it aids in accomplishing tedious comparisons. Thus, it is a vital part of demanding comparison processes employed by individuals, academics, legal arena, forensics field, and other professional endeavors — to identify sometimes hard-to-spot differences needed for detecting.

These uses include:

General

Basic general information about file comparison software.

NameCreator FOSS FreeFirst public release dateYear of latest stable versionWindowsMacintoshLinuxOther platformsMax supported file size
Beyond Compare Scooter Software [1] No; Proprietary No19962024-11-25 (v5.0.4)YesYesYes> 2GB (64 bits)
Compare++ Coode Software [2] No; ProprietaryNo20102016-7-17 (3.0.1.0b)Yes [3] NoNo
diff, diff3 AT&T Yes; BSD 3-clause, BSD 4-clause, CDDL, GPL, ProprietaryYes1974NoYes (Mac OS X)Yesported to most platforms as part of SCCS > 2GB but less than 64 bits
Eclipse (compare)Yes; Eclipse Public License Yes2004-07-212016-09-28 (4.6.1 (Neon.1))YesYesYesAnything with Java
Ediff Michael Kifer [4] Yes; GPL Yes19942.81.4Yes [a] Yes (Mac OS X)YesAnything with Emacs and diff
ExamDiff Pro PrestoSoft [5] No; ProprietaryNo19982024-12-14 (Build 15.0.1.19)Yes (WinXP and up)Yes (in Wine)Yes (in Wine)
Far Manager (compare)Eugene Roshal (original); FAR GroupYes; Revised BSD license Yes19962022-02-02 (v3.0 build 5959)YesNoNoThere's a beta-version of far2l, [6] a Linux fork of FAR Manager v2 which also works on OSX/MacOS and BSD.
fc Microsoft [7] No; ProprietaryYes; Part of OS 1987Yes (DOS)NoNo
FileMerge (aka opendiff) Apple Inc. No; ProprietaryYes; (part of Apple Developer Tools)1993 (part of NEXTSTEP 3.2 [8] )2014 (v2.8)NoYes (Mac OS X)No
FreeFileSync [ data missing ] Zenju Yes; GPLv3 Yes20082023-10-23 (v13.2)YesYesYes
Guiffy SureMerge Guiffy Software [9] No; ProprietaryNo20002024-05-07 (v12.3)YesYesYesAnything with Java > 2GB
IntelliJ IDEA (compare)JetBrains [10] No; ProprietaryNo20012019-08-20 (2019.2.1)YesYesYes
jEdit JDiff plugin Various [11] Yes; GPLYes19982020-09-03 (5.6.0)YesYesYesAnything with Java
Lazarus Diff Lazarus (software) Yes; GPLYes20002020-07-11 (2.0.10)YesYesYesFreeBSD
Meld Stephen Kennedy [12] Yes; GPLv2+ Yes20022024-03-24 (3.22.2)Yes [13] YesYes BSD, Solaris
Notepad++ (compare) VariousYes; GPLv3 Yes20092015-01-06 (1.5.6.6)Yes [14] NoNo
Perforce P4Merge Perforce No; ProprietaryYes2019 (2019.1/1815056)YesYesYesSun Solaris
Pretty Diff Austin Cheney [15] Yes; MIT-compatibleYes20092019-09-02 (101.2.6)Yes (Web)Yes (Web)Yes (Web) Node.js
Tkdiff Tkdiff [16] Yes; GPLv2+ Yes2003 (or before)2021-03-24 (v5.2.1)Yes (Tcl)Yes (Tcl)Yes (Tcl)Anything with Tcl
Total Commander (compare)Christian Ghisler [17] No; ProprietaryNo2020-03-25 (v9.51)YesNoNo
twdiff (TextWrangler Diff Helper)[ data missing ]Bare Bones Software, Inc. [18] No; ProprietaryYes; with TextWrangler 2012 (1.0 (v22))NoYesNoNo
vimdiff Bram Moolenaar et al.Yes; GPL-compatible [19] Yes20012016-10-03 (v8.0.0022)YesYesYesAnything with vim
WinDiff Microsoft [20] No; ProprietaryYes; Part of Platform SDK 19922010-05-14 (v6.1.7716.0)YesNoNoNo
WinMerge Dean Grimm [21] Yes; GPLYes19982024-07-28 (v2.16.42.1) [22] Yes (Win95 and up)Yes (in wine [23] )Yes (in wine [23] )2 GB
KDiff3 [ data missing ] (part of KDE SDK, [24] as well as a plug-in to KDE Dolphin file manager) [25] [26] Joachim Eibl and KDE SDK KDiff3 Team [27] Yes GPL v2Yes<2004 (v0.9.86)2023-01-13 (v1.10)Yes as part of KDevelop KDE SDK download site or from Windows store or KDE download site (most recent version) as separate application.Yes Can be downloaded from KDE SDK download site or as separate stand-alone application from KDE download site Yes Install from your Linux distribution repositories, or as AppStream, from , or as GIT project KDE Gitlab [28] or from/on . [29] Any other Unix with KDE/KF5, Qt5 and CMake, e.g. FreeBSD [30] & NetBSD [31]  ?
NameCreator FOSS FreeFirst public release dateYear of latest stable versionWindowsMacintoshLinuxOther platformsMax supported file size

Compare features

NameShow in-line changesDirectory comparisonBinary comparisonMoved lines3-way comparisonMergeStructured comparison [b] Manual compare alignmentImage compare
Beyond Compare YesYesYesYesYes (Files and Folders)Yes (Pro only)YesYes
Compare++ YesYesYesYesYes (C/C++,C#,Java,Javascript,CSS3)
diff NoYespartlyNoNoNo
diff3 NoNoYes (non-optional)
Eclipse (compare)YesNo (only ancestor)YesNo
Ediff YesYesYesYesYes
ExamDiff Pro YesYesYesYes [32] Yes (ExamDiff Pro Master only) [33] Yesmanual synchronization
Far Manager (compare)Yes (Via plugin) [34] YesYesYes (Via plugin) [34] NoNo
fc NoNoYesNoNo
FileMerge (aka opendiff) YesYesYesYes (optional ancestor)Yes
Guiffy SureMerge YesYesYesYesYesYesYes
IntelliJ IDEA (compare)YesYesYesNoYesYesYesYes
jEdit JDiff plugin YesNoYes
Lazarus Diff
Meld YesYesNoNoYesYesline alignment, unlink scroll
Notepad++ (compare) YesNoNoYesNoNoNo
Perforce P4Merge YesNoNoYesYesYes
Pretty Diff YesYesNoNoNoNoYesNo
Tkdiff YesNoNoNoNoNo
Total Commander (compare)YesYesYesNoNoYesNoresync comparisonNo
vimdiff YesYes (via DirDiff plugin)YesYes
WinDiff YesYesYesYesNoNo
WinMerge YesYesYesYes (via Options)YesYesYesYes
NameShow in-line changesDirectory comparisonBinary comparisonMoved lines3-way comparisonMergeStructured comparison [b] Manual compare alignmentImage compare

API / editor features

Name GUI CLI ScriptingHorizontal / verticalSyntax highlightingReports
Beyond Compare YesYesYesBothYesXML, HTML, CSV, Text, Unix Patch
Compare++ YesYesBothYesHTML, Text(combined or side-by-side)
diff NoYesHorizontalYes pipe to diff-highlight [35]
diff3 NoYesHorizontal
Eclipse (compare)YesVerticalYes
Ediff YesYeselispBothYes
ExamDiff Pro YesYesoptionalYesUNIX, HTML, Diff
Far Manager (compare)YesYesYesYesNo
fc NoYesHorizontal
FileMerge (aka opendiff) YesYesVerticalYesNo
Guiffy SureMerge YesYesJava APIBothYesHTML, Text, Unix Patch
IntelliJ IDEA (compare)YesYesVerticalYes
jEdit JDiff plugin YesBothYes
Lazarus DiffYesYes
Meld YesNoYesNo
Notepad++ (compare) YesYesBothYesNo
Perforce P4Merge YesYesVerticalYesNo
Pretty Diff YesYesJavaScriptBothYesXHTML
Tkdiff Yes
Total Commander (compare)YesBothNoNo
vimdiff YesYesvim scriptBothYesHTML
WinDiff YesYesHorizontalNoText
WinMerge YesYesBothYesCSV, Tab-delimited, HTML, XML
Name GUI CLI ScriptingHorizontal / verticalSyntax highlightingReports

Other features

Some other features which did not fit in previous table

NameZIP supportFTP supportSFTP supportVersion control browsingPatch creationPatch applicationPatch previewUnicode supportXML-aware
Beyond Compare YesYesYesSVNYesYesYesYes
Compare++ SVN, CVS, Git, Microsoft TFS, Perforce, VSS using command lineYes
diff NoNoNoYesYes with patchYes with patchNoNo
diff3 NoNoNo
Eclipse (compare)Yes CVS, Subversion, Git, Mercurial, Baazar Yes
Ediff YesYesRCS, CVS, SVN, Mercurial, git (anything supported by Emacs' VC-mode) [36] YesYesYes
ExamDiff Pro Yes [37] Yes [38] normal diff onlyYes
Far Manager (compare)NoNoNoNoNoNoYesNo
fc NoNoNo
FileMerge (aka opendiff) Nosupported by OSNoNoNo
Guiffy SureMerge YesYesYesYesYes [c]
IntelliJ IDEA (compare)YesYesYesYesYesYesYesYes
jEdit JDiff plugin YesYesYesYesYesYesYes
Lazarus Diff
Meld CVS, Subversion, Git, Mercurial, Baazar YesYes
Notepad++ (compare) NoYes [39] Git, Subversion (compare against base)NoNoNoYesNo
Perforce P4Merge NoYes
Pretty Diff NoNoNoNoNoNoNoYesYes
Tkdiff NoNoCVS, RCS, SubversionNoNoNoNoNo
Total Commander (compare)YesYesYesNoNoNoNoYesNo
vimdiff YesYesYesYes
WinDiff NoNoNoNo
WinMerge YesNoMercurial, [40] Subversion, [41] Visual Source Safe, Rational ClearCase [42] YesYes
NameZIP supportFTP supportSFTP supportVersion control browsingPatch creationPatch applicationPatch previewUnicode supportXML-aware

Aspects

What aspects can be / are compared?

NameFilename casingCRCFiledateDaylight savingCharacter casing
Beyond Compare YesYesYesYesYes
Compare++ YesYesYesYes
diff YesNoNoNoOptional
diff3
Eclipse (compare)
Ediff
ExamDiff Pro NoYesYesYesYes
Far Manager (compare)YesNoYesNoYes
fc NoOptional
FileMerge (aka opendiff) NoNoNoOptional
Guiffy SureMerge filesystem dependentYesYes
IntelliJ IDEA (compare)
jEdit JDiff plugin
Lazarus Diff
Meld
Notepad++ (compare) NoNoNoYes
Perforce P4Merge NoNoNoYes
Pretty Diff NoNoNoOptional
Tkdiff
Total Commander (compare)OptionalYes (in synchronize only)Optional
vimdiff NoNoNoNoYes
WinDiff NoNowhen differentYesOptional
WinMerge NoNoOptionalOptional
NameFilename casingCRCFiledateDaylight savingCharacter casing

Time zone effects

When files are transferred across time zones and between Microsoft FAT and NTFS file systems, the timestamp displayed by the same file may change, so that identical files with different storage histories are deemed different by a comparer that requires the timestamps to match. The difference is an exact number of quarters of an hour up to 95 (same minutes modulo 15 and seconds) if the file was transported across zones; there is also a one-hour difference within a single zone caused by the transition between standard time and daylight saving time (DST). Some, but not all, file comparison and synchronisation software can be configured to ignore the DST and time-zone differences. [d] Software known to have daylight-saving compensation is marked in the Aspects table.

See also

Notes

  1. Ediff requires a diff utility to function. As of December 2017, diff is not bundled with Emacs or Windows, so use of Ediff in a Windows environment requires installation of both Emacs and a diff implementation like GNU diff.
  2. 1 2 Compare logical sections (class, methods).
  3. UTF8, UTF16, MBCS, SJIS, over 150 file encoding and character set formats.
  4. Example: "Beyond Compare" help describes a user setting "timezone differences – ignores timestamp differences that are multiples of an exact hour."

Related Research Articles

In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but it is like Levenshtein distance in that it tries to determine the smallest set of deletions and insertions to create one file from the other. The utility displays the changes in one of several standard formats, such that both humans or computers can parse the changes, and use them for patching.

<span class="mw-page-title-main">KDevelop</span> Integrated development environment

KDevelop is a free and open-source integrated development environment (IDE) for Unix-like computer operating systems and Windows. It provides editing, navigation and debugging features for several programming languages, and integration with build automation and version-control systems, using a plugin-based architecture.

<span class="mw-page-title-main">Kate (text editor)</span> Text editor

The KDE Advanced Text Editor, or Kate, is a source code editor developed by the KDE free software community. It has been a part of KDE Software Compilation since version 2.2, which was first released in 2001. Intended for software developers, it features syntax highlighting, code folding, customizable layouts, multiple cursors and selections, regular expression support, and extensibility via plugins. The text editor's mascot is Kate the Cyber Woodpecker.

This article provides basic comparisons for notable text editors. More feature details for text editors are available from the Category of text editor features and from the individual products' articles. This article may not be up-to-date or necessarily all-inclusive.

The following tables compare general and technical information for a number of notable file managers.

<span class="mw-page-title-main">ExamDiff Pro</span> Commercial software utility

ExamDiff Pro is a commercial software utility for visual file and directory comparison, for Microsoft Windows.

<span class="mw-page-title-main">WinMerge</span> Open-source data software

WinMerge is a free software tool for data comparison and merging of text-like files. It is useful for determining what has changed between versions, and then merging changes between versions.

<span class="mw-page-title-main">File comparison</span>

Editing documents, program code, or any data always risks introducing errors. Displaying the differences between two or more sets of data, file comparison tools can make computing simpler, and more efficient by focusing on new data and ignoring what did not change. Generically known as a diff after the Unix diff utility, there are a range of ways to compare data sources and display the results.

<span class="mw-page-title-main">TortoiseSVN</span> Software extension for managing source code

TortoiseSVN is a Subversion client, implemented as a Microsoft Windows shell extension, that helps programmers manage different versions of the source code for their programs. It is free software released under the GNU General Public License.

The following tables describe attributes of notable version control and software configuration management (SCM) systems that can be used to compare and contrast the various systems.

A desktop environment is a collection of software designed to give functionality and a certain look and feel to an operating system.

<span class="mw-page-title-main">Geany</span> Integrated Development Environment

Geany is a free and open-source lightweight GUI text editor using Scintilla and GTK, including basic IDE features. It is designed to have short load times, with limited dependency on separate packages or external libraries on Linux. It has been ported to a wide range of operating systems, such as BSD, Linux, macOS, Solaris and Windows. The Windows port lacks an embedded terminal window; also missing from the Windows version are the external development tools present under Unix, unless installed separately by the user. Among the supported programming languages and markup languages are C, C++, C#, Java, JavaScript, PHP, HTML, LaTeX, CSS, Python, Perl, Ruby, Pascal, Haskell, Erlang, Vala and many others.

Compare++ is an auxiliary source code file comparison tool for Microsoft Windows that can structurally compare, merge, and synchronize text files or directories. It was developed by Coode Software.

Cppcheck is a static code analysis tool for the C and C++ programming languages. It is a versatile tool that can check non-standard code. The creator and lead developer is Daniel Marjamäki.

Unity Version Control is a cross-platform commercial distributed version control tool developed by Códice Software for Microsoft Windows, Mac OS X, Linux, and other operating systems. It includes a command-line tool, native GUIs, diff and merge tool and integration with a number of IDEs. It is a full version control stack not based on Git.

<span class="mw-page-title-main">Meld (software)</span> GNOME visual diff and merge tool

Meld is a visual diff and merge tool, targeted at developers. It allows users to compare two or three files or directories visually, color-coding the different lines.

Guiffy SureMerge is a data comparison utility. In addition to comparing files, the program is capable of doing side-by-side comparison of directories and archives. The program is also capable of performing automatic 3-way file merges. It is available for Windows, Mac OS, Linux, and Unix operating systems.

<span class="mw-page-title-main">KDE Gear</span> Set of applications and supporting libraries

The KDE Gear is a set of applications and supporting libraries that are developed by the KDE community, primarily used on Linux-based operating systems but mostly multiplatform, and released on a common release schedule.

<span class="mw-page-title-main">Magit</span> Emacs interface for the Git version control system

Magit is an interface to the Git version control system, available as a GNU Emacs package written in Emacs Lisp. It is available through the MELPA package repository, on which it is the most-downloaded non-library package, with over 4.3 million downloads as of September 2024.

References

  1. Scooter Software
  2. "Coode Software". Archived from the original on 2018-12-21. Retrieved 2020-12-13.
  3. Compare++ Operating system information
  4. Michael Kifer
  5. PrestoSoft
  6. "Far2l". GitHub . 26 July 2022.
  7. Microsoft
  8. NeXT Product Marketing (Fall 1993). "What's New in Release 3.2?". NEXTSTEP in Focus. 3 (4). NeXT Computer, Inc. Retrieved 18 July 2014.
  9. Guiffy Software
  10. JetBrains
  11. jedit.org
  12. Stephen Kennedy
  13. Meld/Windows
  14. Notepad++ compare plugin
  15. Pretty Diff
  16. tkdiff
  17. Christian Ghisler
  18. Bare Bones Software, Inc.
  19. vim license
  20. Microsoft
  21. Dean Grimm
  22. https://github.com/WinMerge/winmerge/releases/tag/v2.16.42.1
  23. 1 2 WinMerge in Wine
  24. "KDE SDK Project Page". KDE Invent: KDE SDK. Retrieved 2023-03-09.
  25. "KDiff3". KDE Applications. Retrieved 2023-03-09.
  26. "The KDiff3 Handbook". docs.kde.org. Retrieved 2023-03-09.
  27. "KDE KDiff3" . Retrieved 2023-03-09.
  28. "KDevelop / KDevelop · GitLab (full KDevelop project)". GitLab. Retrieved 2023-03-09.
  29. "Using KDiff3 as a Git Diff and Merging Tool". docs.kde.org. Retrieved 2023-03-09.
  30. "FreeBSD/Setup/Ports - KDE Community Wiki". community.kde.org. Retrieved 2023-03-09.
  31. "pkgsrc.se | The NetBSD package collection". pkgsrc.se. Retrieved 2023-03-09.
  32. Examdiff
  33. Examdiff
  34. 1 2 Visual Compare
  35. "Git/Contrib/Diff-highlight at master · git/Git". GitHub .
  36. gnu.org Support-for-Version-Control
  37. through a plug-in
  38. through a plug-in
  39. Notepad++ FTP plugin
  40. "tortoisehg / stable / wiki / FAQ —". Bitbucket.org. Archived from the original on 2010-07-15. Retrieved 2010-07-06.
  41. "Using WinMerge with other tools – WinMerge 2.12 Manual". Winmerge.org. Archived from the original on 2010-07-10. Retrieved 2010-07-06.
  42. "About". WinMerge. Archived from the original on 2010-07-03. Retrieved 2010-07-06.