A collaborative list of great tools that show differences between files and folders. Feel free to contribute to this list.
The most commonly used tools to display changes between two versions of a source code.
- GNU Diffutils - Popular set of tools to compute unified diffs between files, supports two-way and three-way diffs.
- git (diff) - Popular version control system, can compute unified diffs between commits, workings trees, branches, etc.
Programming language aware diffs that provide additional features like hiding syntax-only changes.
- diffsitter - Terminal utility to generate unified diffs, hides style changes, but doesn't detect moved code.
- difftastic - Terminal utility to generate side-by-side diffs, hides style changes and supports many languages, but doesn't detect moved code.
- gumtree - Web/GUI/Text frontend to generate side-by-side diffs, hides style changes and detects moved code.
- SemanticDiff - VS Code extension/GitHub App to generate side-by-side diffs, hides style changes, detects moved code blocks and simple refactorings.
- zograscope - Terminal utility to generate side-by-side diffs, hides style changes, mostly focused on C/C++.
Wrappers that enhance the output of an existing diff tool.
- delta - Pager for (git) diff, adds syntax highlighting, inline and side-by-side view, support for git blame and merge conflicts.
- diff-so-fancy - Pager for (git) diff, changes colors and highlights inline changes, various options to customize output format.
- diffr - Pager for git diff, changes colors and highlights inline changes.
- dunk - Postprocesses the output of git diff to generate side-by-side diffs, supports syntax highlighting and highlights inline changes.
- git-split-diffs - Pager for (git) diff, displays changes like GitHub split diffs (side-by-side diffs) with syntax highlighting.
- icdiff - Standalone application for side-by-side diffs with syntax highlighting.
- riff - Wrapper around (
git
)diff
highlighting which parts of lines that changed. - ydiff - Pager for git diff, supports unified and side-by-side view, highlights inline changes.
Diff utilities for non-code based text formats.
- daff - Library for comparing tables format such as csv files.
- dyff - Pager for git diff (or standalone) for YAML/JSON, enhances display of changes and their location.
- Graphtage - Semantic diff for JSON, JSON5, XML, HTML, YAML, CSV.
- jd - Creates diffs for JSON/YAML files, also supports patching.
- JSON Diff - Online tool to compute a semantic diff for JSON files.
- nbdime - Diffing and merging of Jupyter Notebooks.
- OpenAPI-diff - Utility for comparing two OpenAPI specifications.
- prettier-diff - Wrapper around git diff for JavaScript/JSON, preprocesses the data with a prettifier.
- xcdiff - Terminal utility to find differences between two .xcodeproj project files.
Diff utilities to compare the schema or content of databases.
- Another PostgreSQL Diff Tool - Compares the schema of PostgreSQL dumps.
- migra - Compares the schema of PostgreSQL databases and generates migrations.
Diff utilities to compare the content of PDF files.
- diff-pdf - Generates a PDF file with visually highlighted differences based on the input PDFs.
- DiffPDF - Interactive GUI for comparing two PDF files.
Diff utilities to compare binary data.
- diffuse - Compares the content of APKs, AABs, AARs, and JARs.
- multidiff - Utility to diff multiple binary objects or streams of data.
- VBinDiff - Side by side comparison of binary data in hex and ascii format.
Diff utilities that can compare the content of whole directories.
- WinMerge - Supports code (with syntax highlighting), text, image and CSV files.
- Meld - Supports text based files, also integrates with version control systems.
Contributing is greatly welcomed! Please read the Contribution Guidelines before taking any action.