Frequently Asked Questions

Find answers to common questions about RCompare

RCompare is a fast, free, and open-source file and directory comparison toolkit written in Rust. It includes a CLI, a Slint desktop GUI, a PySide6 desktop GUI, and a C FFI for patch/diff integration.

Yes! RCompare is completely free and open-source under the MIT and Apache-2.0 licenses. You can use it for personal or commercial purposes without any cost. There are no premium features, subscriptions, or hidden fees.

RCompare runs on:

  • Windows - Windows 10 and 11 (64-bit)
  • macOS - macOS 11 (Big Sur) and later, both Intel and Apple Silicon
  • Linux - Ubuntu 20.04+, Fedora 35+, Arch Linux, and most modern distributions

RCompare uses BLAKE3 for hashing, which achieves speeds of approximately 3GB/s on modern CPUs - significantly faster than MD5 or SHA-256. Combined with parallel directory traversal and a persistent hash cache, RCompare can compare millions of files efficiently while using minimal memory (~100-200 bytes per file).

No. RCompare operates 100% offline and never collects any data, telemetry, or usage statistics. Your files and comparison results never leave your computer. This is a core principle of the project.

RCompare supports:

  • Directories - Full recursive comparison
  • Text files - With whitespace, case, and regex normalization options
  • Images - Pixel comparison with optional EXIF metadata checks
  • Binary files - Byte-level and hex-oriented comparison
  • Archives - ZIP, TAR, TAR.GZ, TGZ, 7Z, RAR (read-only)
  • Structured data - CSV, Excel, JSON, YAML, and Parquet formats

Yes! RCompare supports cloud and remote storage:

  • S3/S3-Compatible - AWS S3, MinIO, DigitalOcean Spaces, Wasabi
  • WebDAV - Nextcloud, ownCloud, Apache mod_dav
  • SFTP - Any SSH server with SFTP support

RCompare maintains a persistent cache of file hashes to avoid re-computing them for unchanged files. The cache stores the BLAKE3 hash along with the file's size and modification timestamp. On subsequent comparisons, if a file hasn't changed, the cached hash is used instead of reading the entire file again. This dramatically speeds up repeated comparisons.

Cache locations:

  • Linux: ~/.cache/rcompare/
  • Windows: %LOCALAPPDATA%\rcompare\cache\
  • macOS: ~/Library/Caches/rcompare/

In CLI output:

  • == - Files are identical
  • != - Files are different
  • << - File exists only on the left side
  • >> - File exists only on the right side
  • ?? - Same size but not verified (use --verify-hashes)

Yes. The CLI is designed for automation and supports multiple workflow commands:

rcompare_cli scan /left /right --json > scan.json rcompare_cli sync /left /right --direction bidirectional --dry-run --json > plan.json rcompare_cli diff-file /left /right --path src/main.rs --mode text --json > diff.json

You can also use --no-color for cleaner logs and copy/read commands for file-level automation.

Use the -i or --ignore flag with glob patterns:

rcompare_cli scan /project /backup -i "*.o" -i "target/" -i "node_modules/"

RCompare also automatically respects .gitignore files in the directories being compared.

RCompare supports text-oriented diff workflows with configurable matching behavior:

  • Whitespace handling modes (all, leading, trailing, changes)
  • Case-insensitive comparison mode
  • Regex-based normalization rules
  • Line-level reports in CLI/JSON outputs

These options are available in both full scans and focused diff-file command workflows.

Contributions are welcome! You can:

  • Report bugs or request features on GitHub Issues
  • Submit pull requests with improvements
  • Improve documentation
  • Help with translations
  • Spread the word about RCompare

Check out the GitHub repository for contribution guidelines.

RCompare currently has:

  • rcompare_gui (Slint) - Native Rust desktop frontend focused on core compare workflows
  • rcompare_pyside (PySide6) - Advanced desktop frontend with multi-session tabs, profiles, and richer session management

Yes. The rcompare_ffi crate provides a libkomparediff2-compatible C API for parsing and manipulating patch/diff data, including apply/unapply and serialization workflows.

Still Have Questions?

Can't find what you're looking for? Open an issue on GitHub and we'll help you out.

Ask on GitHub