A diff tool for YAML and JSON files that shows only the changed parts with compact, clear output.
dyff is a command-line diff tool specialized for YAML and JSON files. It highlights only the changed parts between two files, using a compact output format that references changes by their location within the document. It solves the problem of noisy, hard-to-read diffs in structured data files common in DevOps and configuration management.
DevOps engineers, platform engineers, and developers working with YAML/JSON configuration files, Kubernetes manifests, or deployment pipelines who need to quickly understand changes between file versions.
Developers choose dyff because it provides a cleaner, more focused diff output than generic tools, preserving key order and supporting multiple input sources. Its integration with Git and kubectl makes it a versatile tool for modern infrastructure workflows.
/ˈdʏf/ - diff tool for YAML files, and sometimes JSON
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Only displays changed parts of YAML/JSON files with location references (e.g., dot-style syntax), reducing noise and making it easier to understand modifications, as inspired by BOSH v1 deployment output.
Supports local files, remote files via URI, and stdin, allowing flexible comparisons across different sources, demonstrated in examples using GitHub raw URLs for cf-deployment YAMLs.
Maintains original key order in hashes during processing and output, ensuring structural integrity when converting between YAML and JSON formats.
Integrates seamlessly with Git and kubectl for enhanced diff visualization in commits and Kubernetes resource comparisons, with specific setup instructions provided for both.
Exclusively designed for YAML and JSON, with no support for other structured formats like XML or TOML, requiring additional tools for broader use cases.
For kubectl versions older than v1.20.0, users must wrap dyff in a helper shell script, adding overhead and potential for errors, as admitted in the README.
Optimized for dark terminal backgrounds with color-coded output, which may not render well in all environments or for users with color vision deficiencies, and neat output is disabled in pipes.