Comparison of file comparison tools

This article compares computer software tools which 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.

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:

  • Revisions of texts, plans, or drawings.
  • Edit changes in media.
  • Omission of credit for quotes, citations, extracts, or exemplars.
  • Plagiarism.
  • Alteration of legal documents.
  • Fraud.
  • Forgery.
  • Fakery, or “deepfake” to impersonate.
  • Disputes over ownership or credit for cooperative efforts.
  • Chronology of evolution of a project or effort.
  • Detect steganography (the practice of hiding data in plain sight).
  • Uncover removal of watermarks.
  • Intentional defacement.
  • Identification of graffiti, tattoo, or other cultural mark with a signature style.
  • Unintentional or incidental damage.
  • Changes in health of living being.
  • Risk evaluation of propagation of structural damage.
  • Evaluation for restoration.
  • Degradation due to effects of environmental exposure over time, including natural entropy (decline over time):
    • Oxidation.
    • Rain exposure.
    • Abrasion from wind-driven sand.
    • Weathering from environmental changes in temperature, such as caused by freeze-thaw cycles.
    • Fugitive (i.e. no permanent) pigments in paintings or printed materials from exposure to ultraviolet light.
    • Exposure to vibration, such as industrial processes are from vehicular traffic.

General[edit]

Basic general information about file comparison software.

Compare features[edit]

Name Show in-line changes Directory comparison Binary comparison Moved lines 3-way comparison Merge Structured comparison[24] Manual compare alignment Image compare
Beyond Compare Yes Yes Yes No Yes (Files and Folders) Yes (Pro only) Yes Yes
Compare++ Yes Yes Yes Yes Yes (C/C++,C#,Java,Javascript,CSS3)
diff No Yes partly No No No
diff3 No No Yes (non-optional)
Eclipse (compare) Yes No (only ancestor) Yes No
Ediff Yes Yes Yes Yes Yes
ExamDiff Pro Yes Yes Yes Yes[25] Yes (ExamDiff Pro Master only)[26] Yes manual synchronization
Far Manager (compare) Yes (Via plugin) [27] Yes Yes Yes (Via plugin) [27] No No
fc No No Yes No No
FileMerge (aka opendiff) Yes Yes Yes Yes (optional ancestor) Yes
Guiffy SureMerge Yes Yes Yes Yes Yes Yes Yes
IntelliJ IDEA (compare) Yes Yes Yes No Yes Yes Yes Yes
jEdit JDiff plugin Yes No Yes
Lazarus Diff
Meld Yes Yes No No Yes Yes line alignment, unlink scroll
Notepad++ (compare) Yes No No Yes No No No
Perforce P4Merge Yes No No Yes Yes Yes
Pretty Diff Yes Yes No No No No Yes No
Tkdiff Yes No No No No No
Total Commander (compare) Yes Yes Yes No No Yes No resync comparison No
vimdiff Yes Yes (via DirDiff plugin) Yes Yes
WinDiff Yes Yes Yes Yes No No
WinMerge Yes Yes Yes Yes (via Options) Yes Yes Yes Yes
UCC Yes Yes Yes Yes No Yes
Name Show in-line changes Directory comparison Binary comparison Moved lines 3-way comparison Merge Structured comparison[24] Manual compare alignment Image compare

API / editor features[edit]

Name GUI CLI Scripting Horizontal / vertical Syntax highlighting Reports
Beyond Compare Yes Yes Yes Both Yes XML, HTML, CSV, Text, Unix Patch
Compare++ Yes Yes Both Yes HTML, Text(combined or side-by-side)
diff No Yes Horizontal Yes pipe to diff-highlight[28]
diff3 No Yes Horizontal
Eclipse (compare) Yes Vertical Yes
Ediff Yes Yes elisp Both Yes
ExamDiff Pro Yes Yes optional Yes UNIX, HTML, Diff
Far Manager (compare) Yes Yes Yes Yes No
fc No Yes Horizontal
FileMerge (aka opendiff) Yes Yes Vertical Yes No
Guiffy SureMerge Yes Yes Java API Both Yes HTML, Text, Unix Patch
IntelliJ IDEA (compare) Yes Yes Vertical Yes
jEdit JDiff plugin Yes Both Yes
Lazarus Diff Yes Yes
Meld Yes No Yes No
Notepad++ (compare) Yes Yes Both Yes No
Perforce P4Merge Yes Yes Vertical Yes No
Pretty Diff Yes Yes JavaScript Both Yes XHTML
Tkdiff Yes
Total Commander (compare) Yes Both No No
vimdiff Yes Yes vim script Both Yes HTML
WinDiff Yes Yes Horizontal No Text
WinMerge Yes Yes Both Yes CSV, Tab-delimited, HTML, XML
UCC Yes Yes Vertical Yes Text, CSV
Name GUI CLI Scripting Horizontal / vertical Syntax highlighting Reports

Other features[edit]

Some other features which did not fit in previous table

Name ZIP support FTP support SFTP support Version control browsing Patch creation Patch application Patch preview Unicode support XML-aware
Beyond Compare Yes Yes Yes SVN Yes Yes Yes Yes
Compare++ SVN, CVS, Git, Microsoft TFS, Perforce, VSS using command line Yes
diff No No No Yes Yes with patch Yes with patch No No
diff3 No No No
Eclipse (compare) Yes CVS, Subversion, Git, Mercurial, Baazar Yes
Ediff Yes Yes RCS, CVS, SVN, Mercurial, git (anything supported by Emacs’ VC-mode)[29] Yes Yes Yes
ExamDiff Pro Yes[30] Yes[31] normal diff only Yes
Far Manager (compare) No No No No No No Yes No
fc No No No
FileMerge (aka opendiff) No supported by OS No No No
Guiffy SureMerge Yes Yes Yes Yes Yes[32]
IntelliJ IDEA (compare) Yes Yes Yes Yes Yes Yes Yes Yes
jEdit JDiff plugin Yes Yes Yes Yes Yes Yes Yes
Lazarus Diff
Meld CVS, Subversion, Git, Mercurial, Baazar Yes Yes
Notepad++ (compare) No Yes[33] Git, Subversion (compare against base) No No No Yes No
Perforce P4Merge No Yes
Pretty Diff No No No No No No No Yes Yes
Tkdiff No No CVS, RCS, Subversion No No No No No
Total Commander (compare) Yes Yes Yes No No No No Yes No
vimdiff Yes Yes Yes Yes
WinDiff No No No No
WinMerge Yes No Mercurial,[34] Subversion,[35] Visual Source Safe, Rational ClearCase[36] Yes Yes
UCC Yes No Yes
Name ZIP support FTP support SFTP support Version control browsing Patch creation Patch application Patch preview Unicode support XML-aware

Aspects[edit]

What aspects can be / are compared?

Time zone effects[edit]

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.[37] Software known to have daylight-saving compensation is marked in the Aspects table.

See also[edit]

References[edit]