A cross-platform file hash comparison tool with both GUI and CLI interfaces.
-
Multiple comparison modes:
- Single file to single file
- Multiple files (matched by name)
- Single folder to single folder
- Multiple folders (matched by name)
-
Folder comparison options:
- Recursive or non-recursive traversal
- Detection of missing files in origin or destination
- Detection of mismatched files
-
Multiple hash algorithms:
- MD5
- SHA-1
- SHA-256 (default)
- SHA-512
- BLAKE2b
- BLAKE2s
-
Output formats:
- Human-readable summary
- JSON for scripting and automation
- Quiet mode (only show differences)
- Verbose mode (show full hashes)
# Clone the repository
git clone https://github.com/yourusername/hashure.git
cd hashure
# Create a virtual environment (recommended)
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install the package
pip install -e .- Python 3.9 or higher
- PyQt6
Launch the graphical interface:
# Default - launches GUI when no arguments provided
hashure
# Or explicitly
hashure --guihashure file1.txt file2.txthashure -r /path/to/origin /path/to/destinationhashure /path/to/origin /path/to/destinationhashure -a sha512 origin/ destination/hashure --json origin/ destination/hashure -m files origin/a.txt origin/b.txt -- dest/a.txt dest/b.txthashure -m folders -r folder1 folder2 -- dest_folder1 dest_folder2hashure -q origin/ destination/hashure -v origin/ destination/0: All files match1: Differences found (mismatches or missing files)2: Error occurred
You can create standalone executables using PyInstaller:
# Install PyInstaller
pip install pyinstaller
# Create executable
pyinstaller --onefile --windowed --name hashure src/hashure/main.pyThe executable will be created in the dist/ directory.
Windows:
pyinstaller --onefile --windowed --name hashure.exe src/hashure/main.pymacOS:
pyinstaller --onefile --windowed --name Hashure --osx-bundle-identifier com.hashure.app src/hashure/main.pyLinux:
pyinstaller --onefile --name hashure src/hashure/main.pyhashure/
├── src/
│ └── hashure/
│ ├── __init__.py # Package initialization
│ ├── main.py # Entry point
│ ├── cli.py # Command-line interface
│ ├── gui.py # PyQt6 graphical interface
│ ├── hasher.py # Core hashing functionality
│ └── comparator.py # Comparison logic
├── pyproject.toml # Project configuration
├── requirements.txt # Dependencies
├── README.md # This file
├── LICENSE.md # GPLv3 license
└── CLAUDE.md # Development notes for AI assistants
This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for details.
Contributions are welcome! Please feel free to submit a Pull Request.