Find duplicate audio files by how they sound, not by filename or tags.
dupsonic uses acoustic fingerprinting to detect duplicates regardless of format, bitrate, or metadata — the same MP3 and FLAC of a track will be matched, even if their tags differ completely.
dupsonic scan ~/Music # fingerprint your library (only once, ~6s for 2000 files)
dupsonic find-dupes # show duplicate groupsOr just:
dupsonic scan # auto-detects your Music folder on first run
dupsonic find-dupesOutput:
── Duplicate Group a6bacb6d (2 files, 97% similar) ──
~/Music/Artist/Album/track.flac (3:18)
~/Music/Downloads/track.mp3 (3:18)
── Duplicate Group 759f5320 (2 files, 97% similar) ──
~/Music/Artist/Album/song.flac (2:52)
~/Music/Old/song.ogg (2:52)
Summary: 2 duplicate groups, 2 redundant files
Files are sorted by quality (best first). Remove duplicates with:
dupsonic find-dupes --exec "mv {} /tmp/dupes/" --keep best # preview
dupsonic find-dupes --exec "mv {} /tmp/dupes/" --keep best --apply # executeSee ADVANCED.md for the full command reference, --keep strategies, output formats, and configuration.
From crates.io (requires Rust toolchain):
cargo install dupsonicPre-built binaries from GitHub Releases:
# Linux
curl -LO https://github.com/zas/dupsonic/releases/latest/download/dupsonic-linux-x86_64.tar.gz
tar xzf dupsonic-linux-x86_64.tar.gz
sudo mv dupsonic /usr/local/bin/
# macOS (Apple Silicon)
curl -LO https://github.com/zas/dupsonic/releases/latest/download/dupsonic-macos-aarch64.tar.gz
tar xzf dupsonic-macos-aarch64.tar.gz
sudo mv dupsonic /usr/local/bin/Windows: download dupsonic-windows-x86_64.zip from the releases page, extract dupsonic.exe, and place it in your PATH.
Existing tools fail at cross-format duplicate detection:
- Czkawka, dupeGuru — compare metadata or file hashes only. Same song in FLAC and MP3? Not detected.
- Duplicate Cleaner — claims audio comparison but struggles with cross-format matching.
- Manual comparison — impossible with 10k+ files.
dupsonic fingerprints the actual audio using Chromaprint (the same technology behind MusicBrainz Picard) and compares fingerprints to find duplicates.
MP3, FLAC, OGG/Vorbis, Opus, WAV, M4A/AAC, WMA, AIFF, APE, WavPack, Musepack, WebM/MP4 audio.
Benchmark with 2025 files (mixed FLAC/MP3 collection):
| dupsonic (15s) | dupsonic (120s) | soundalike (15s) | |
|---|---|---|---|
| Scan | ~6s | 36s | 2m 38s |
| Find dupes | 0.04s | 0.04s | (included in scan) |
| Total | ~6s | 36s | 2m 38s |
| Duplicates found | 33 groups | 33 groups | 32 groups |
Designed for 100k+ file collections: parallel scanning, incremental cache, LSH-based O(n) matching, batched database writes.
For headless servers (NAS, Raspberry Pi), dupsonic includes a built-in web interface:
dupsonic serve # http://127.0.0.1:8080 (localhost)
dupsonic serve --bind 0.0.0.0:8080 # expose on network
dupsonic serve --bind 0.0.0.0:8080 --allow-ip 192.168.1.0/24 # restrict to LANOpen from any browser on your network. Features: scan, find duplicates, view quality details, delete (moves to system trash with undo), exclude.
See ADVANCED.md for access control options (--allow-ip, DUPSONIC_BIND, DUPSONIC_ALLOW_IP).
soundalike by Daniel Erat — a mature Go tool using Chromaprint. Lightweight, has built-in move/delete commands. Requires external fpcalc, defaults to 15s fingerprints, no MusicBrainz integration.
See CONTRIBUTING.md for build instructions, architecture overview, and development workflow.
GPL-2.0-or-later