English | 中文 | Русский | العربية | فارسی | 日本語 | Deutsch | Français
The Next Generation of Configuration and System Backup Comparison.
Built for the modern DevOps era: Semantic, Secure, and Blazingly Fast.
Standard POSIX diff has served us for 50 years, but it was designed for source code, not for the complex, order-agnostic configuration files and massive system backups of today.
Qaren (Arabic for "Compare") is a multi-paradigm tool that understands your data.
- Semantic Key-Value Parsing: Order doesn't matter. Formatting doesn't matter. Only the data matters.
- Zero-Trust Security: Secrets like API keys, passwords, and connection strings are masked by default (
***MASKED***). - Blazingly Fast: Optimized in Rust to handle GB-scale backups and 100k+ keys up to 200x faster than traditional diff pipelines.
- ANSI-Aware: Automatically cleans terminal color codes from "polluted" files (like
pm2 envoutput) for clean comparison. - Intelligent Patching: Generate production-ready
.envpatches to synchronize environments in seconds.
For detailed guides, API reference, and advanced configuration, visit our documentation:
Understand .env, .yaml, and .ini files regardless of key order.
Qaren provides much clearer line-by-line diffs than POSIX diff, specifically optimized for system backup analysis.
Comparing JSON-based backups in KV mode? Qaren automatically suppresses duplicate key and permission warnings by default to keep your terminal clean. If you need assistance debugging, run qaren config advisor toggle to enable helpful alerts.
| Platform | Command |
|---|---|
| Linux / macOS | `curl -sSfL https://qaren.me/install |
| Windows | `irm https://qaren.me/install.ps1 |
| Homebrew | brew tap qaren-cli/qaren && brew install qaren |
# Via Cargo
cargo install qarenQaren's kv mode is designed for real-world DevOps tasks. All the following examples are tested using the data shown in these two environment files:
Compare two files semantically, ignoring line order.
qaren kv -Q --d2 ":" dev.env staging.envGet a high-level overview of differences without detailed line changes.
qaren kv -Q --d2 ":" dev.env staging.env -sExport results in machine-readable format for automation.
qaren kv -Q --d2 ":" dev.env staging.env -o jsonBypass automatic masking to see raw sensitive values.
qaren kv -Q --d2 ":" dev.env staging.env -SExclude known dynamic or irrelevant keys from comparison.
qaren kv -Q --d2 ":" dev.env staging.env -x API_KEYExclude all keys containing a specific substring.
qaren kv --ignore-keyword MAX ...Check compatibility in scripts via exit codes only.
qaren kv -Q --d2 ":" dev.env staging.env -qCreate a patch file to synchronize missing keys.
qaren kv ... -g missing.envGenerate patches with sensitive data automatically masked.
qaren kv ... -g missing.env --mask-patchesStandard line-by-line comparison with enhanced readability.
qaren diff file1.txt file2.txtPOSIX-compliant unified diff output.
qaren diff file1.txt file2.txt -uCompare entire directory structures, identifying orphan files and differences in existing ones.
qaren diff -r old-backup/ new-backup/# Strip ANSI colors from system snapshots before diffing
qaren diff backup_polluted.txt backup_clean.txt -A
# Ignore whitespace and blank lines
qaren diff f1.txt f2.txt -w -B
# Only show which files differ (recursive mode)
qaren diff -r old-backup/ new-backup/ --files-onlyQaren remembers your preferences.
# Toggle pipeline-friendly mode (always exit 0)
qaren config exit toggle
# Toggle color output
qaren config color toggle
# Toggle advisor (warnings)
qaren config advisor toggle
# Toggle secret masking
qaren config masking toggle
# View current settings
qaren config show| Scenario | Winner | Margin |
|---|---|---|
| Large Backups (100MB) | Qaren | 200x+ |
| Recursive Directory | Qaren | 3x |
| Massive Changes (1M Lines) | Qaren | 50x+ |
We are Open for Contributions! Please read our Contributing Guide before submitting a Pull Request.
- Fork the repo.
- Improve or Add features (avoid deletions).
- Ensure Zero Warnings (
clippy&tests). - Update Docs and --help for new flags.
Please star the project if you find it useful!
- Official Website: https://qaren.me/
- Full Documentation: https://qaren.me/docs
- Bug Reports: Go to https://qaren.me/community and click "Open Issue".
This project is licensed under the MIT License. See the LICENSE file for details.