Skip to content

zas/dupsonic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

103 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dupsonic

Crates.io License: GPL-2.0-or-later CI

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.

Quick start

dupsonic scan ~/Music       # fingerprint your library (only once, ~6s for 2000 files)
dupsonic find-dupes         # show duplicate groups

Or just:

dupsonic scan               # auto-detects your Music folder on first run
dupsonic find-dupes

Output:

── 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  # execute

See ADVANCED.md for the full command reference, --keep strategies, output formats, and configuration.

Install

From crates.io (requires Rust toolchain):

cargo install dupsonic

Pre-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.

Why dupsonic?

Existing tools fail at cross-format duplicate detection:

dupsonic fingerprints the actual audio using Chromaprint (the same technology behind MusicBrainz Picard) and compares fingerprints to find duplicates.

Supported formats

MP3, FLAC, OGG/Vorbis, Opus, WAV, M4A/AAC, WMA, AIFF, APE, WavPack, Musepack, WebM/MP4 audio.

Performance

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.

Web UI

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 LAN

Open 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).

Similar projects

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.

Contributing

See CONTRIBUTING.md for build instructions, architecture overview, and development workflow.

License

GPL-2.0-or-later

About

Find duplicate audio files using acoustic fingerprinting (chromaprint/AcoustID)

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors