About | Modes | Technologies | Requirements | Starting | Scripts | License
Tired of duplicate files eating your disk? 😩 Same photo saved three times, the same song in two folders, installers you forgot you downloaded? Say no more! 💪
DupeCleaner finds the duplicates hiding on your computer — and helps you get rid of them safely. ✨ It's a cross-platform GUI tool for Linux, macOS, and Windows, written mostly in Python 3 with a Qt5 interface. It's built for real libraries — tens of thousands of photos and songs — not a demo folder.
This is my own edition of dupeGuru by Hardcoded Software, with the delete engine hardened: files are re-checked before they're deleted, big files are matched on their full contents (not just samples), and photo matching handles rotated phone photos. 🚀
Don't let duplicates pile up. Give it a try and see how fast your library gets clean! 😉
- Standard mode — scans filenames or file contents. The filename scan uses fuzzy matching, so it finds duplicates even when the names aren't exactly the same.
- Music mode 🎵 — scans audio tags and shows music-specific info (artist, album, bitrate, …) in the results, so you can tell versions apart.
- Picture mode 🖼️ — scans pictures fuzzily, so it finds photos that are similar but not exactly the same: different sizes, recompressed copies, rotated shots.
- Fast. ⚡ The fuzzy matching engine finds duplicates in minutes, even across a big library.
- Customizable. 🛠️ Tweak the matching engine to find exactly the kind of duplicates you want. Every scanning setting is listed on the Preference page of the help file.
- Safe. 🔒 The reference-directory system and the grouping system keep you from deleting files you didn't mean to delete. And before anything is deleted, the file is re-checked to make sure it hasn't changed since the scan.
- Flexible. 🔀 Delete duplicates, or move or copy them elsewhere instead. Filter and sort the results to weed out false positives, especially on low-threshold scans.
Planned features, roughly in priority order. Ideas welcome — open an issue to suggest one.
- Faster scans — parallel hashing for Standard mode and parallel photo preparation for Picture mode. (in progress)
- NAS-aware scanning — detect network volumes and cap parallel workers, so scans over a NAS don't thrash. (next, after faster scans)
- macOS packages as single items —
.appbundles and other packages are fingerprinted as a whole instead of scanning every file inside them. (next) - Big Files finder — list the largest files in a location. (easy)
- Empty Files finder — list zero-byte files. (easy)
- Empty Folders finder — list folders that are empty, including ones that only contain empty folders. (easy)
- Bad Extensions checker — flag files whose contents don't match their extension. (medium)
- Broken Files finder — flag photos and audio that fail to decode. (medium)
- Folder priority — give a folder a priority so its files are always kept over duplicates elsewhere. (medium)
- File-type filter per scan — scan only certain file types, or exclude some. (medium)
- Operation History — keep a record of past cleanups: what was deleted and how much space came back. (easy-medium)
- Similar Videos — find near-duplicate videos by comparing frames. (hard — needs ffmpeg)
English, French, German, Chinese (Simplified), Czech, Italian, Armenian, Russian, Ukrainian, Brazilian Portuguese, Vietnamese.
See more
- PyQt5 — the Qt5 UI toolkit
- xxhash — fast file hashing
- mutagen — audio tag reading for Music mode
- Send2Trash — safe deletion to the recycle bin
Before starting 🏁, make sure you have Python 3.7+ and PyQt5 installed on your system.
On Linux you also need the system packages to build: python3-pyqt5, pyqt5-dev-tools (on some systems), python3-venv, python3-dev, build-essential. To create packages you also need python3-setuptools and debhelper.
Don't want to build it yourself? GitHub Actions builds the macOS and Windows apps on every push to master — grab the latest from the Build app workflow (dupecleaner-macos and dupecleaner-windows artifacts).
The Mac app is unsigned, so open it with right-click → Open the first time.
# Clone this project
$ git clone https://github.com/Salcedoandrew/DupeCleaner
$ cd DupeCleaner
# Set up a virtual environment
$ python3 -m venv --system-site-packages ./env
$ source ./env/bin/activate
# Install dependencies
$ pip install -r requirements.txt
# Build and run
$ python build.py
$ python run.py
Or build and run in one go with Make:
$ make && make run
For Windows instructions see the Windows Instructions. For macOS instructions (Qt version) see the macOS Instructions.
make/make run: builds the app and runs it;python build.py --modules: builds the C extensions;python build.py --loc: builds the translations;python build.py --doc: builds the help files;python package.py: packages the app (macOS.app, Windows installer, Debian/Arch package — installrequirements-extra.txtfirst);pytest core hscommon: runs the test suite (installrequirements-extra.txtfirst, or runtox).
This project is licensed under the GPLv3 License. For more details, please refer to the LICENSE file.
Made with ❤️ by Andrew Salcedo
