Windows 0.29, macOS (Apple Silicon) 0.28.3, macOS (Intel) 0.28.3 - see Releases for older versions.
Not sure which Mac download you need? Apple Silicon (M1/M2/M3/M4) covers every Mac sold since late 2020; pick Intel if your Mac predates that, or check the Apple menu > About This Mac.
⭐ If Track Tidy is useful to you, consider starring the repo - it's free and helps other DJs find it.
Point it at a folder and it:
- Looks up the correct artist, title, and cover art for each track (iTunes, SoundCloud, and audio fingerprinting as a last resort for badly-named files).
- Writes the tags directly into the file - no more blank covers or "Track_Name (1).mp3" showing up in Rekordbox/Serato/etc.
- Optionally renames the file to a clean "Artist - Title" and converts WAV to AIFF (so cover art actually shows up for software that doesn't read it from WAV).
- Flags tracks worth a second look: no cover match found (
⚠️ ), or an identification made from the audio itself rather than the filename (🎧). - Flattens a messy folder of nested subfolders back into one flat folder (Extractor tab).
- Scans a library for low-quality files - low bitrate, clipping, overly quiet masters (Quality tab).
- Keeps a permanent history of every file it processes (browsable/restorable from Settings), so it never re-touches a file it's already tagged.
- Checks for updates on startup and can download/install them directly.
- Dark mode.
![]() Extractor - flattens nested subfolders |
![]() Quality - flags low-bitrate/clipped/quiet files |
![]() Settings - theme, conversion, history, updates |
Fair question for a random installer from someone you don't know - completely understand the hesitation. A few things that should help:
- Track Tidy talks to the services it needs to do its job - iTunes and SoundCloud (to look up artist/title/cover art), AcoustID (audio fingerprinting, only used as a last resort when the filename alone doesn't give enough to search with), and GitHub (checking for updates). It never touches files outside the folder you point it at, and never uploads your actual audio anywhere.
- It also sends the developer small usage pings (your OS username, no other machine info) on install, on uninstall (Windows only), and after each scan/extraction/quality analysis. Separately, the in-app "Report track" button (only when you press it) sends that one track's info (title/artist/filename + its cover) to help fix mismatches - see PRIVACY.md for the full breakdown of what's sent and when.
- The source code below is the real thing that gets built into the installer
- nothing hidden.
- The Windows installer is scanned with VirusTotal on every release: 3/75 security vendors flag it, all generic/heuristic detections (no real signature match) - click through for the full vendor-by-vendor report.
Windows
- Go to Releases
- Download
Track-Tidy-Setup-*.exe - Run it and follow the prompts
macOS (Apple Silicon)
- Go to Releases
- Download
Track-Tidy-Setup-*.dmg - Open it and drag Track Tidy into Applications
- First launch: right-click the app → Open (it's not notarized yet, so Gatekeeper will warn about an "unidentified developer" the first time)
Open an Issue, or use the in-app "Report track" button on a specific track that got tagged wrong.
- Choose a folder
- Click Scan — each file appears as it's analyzed, with a suggested pre-checked "Apply" state
- Unchecked: shows the file's current tags
- Checked: shows the suggested tags (inferred from the filename + fetched cover)
- Click a checkbox/cell to toggle it, or double-click Title/Artist to edit manually
- Click Apply
| File | Purpose |
|---|---|
src/track_tidy.py |
Core logic: filename parsing, tag reading/writing, format conversion, cover search (see the module docstring for the full breakdown) |
src/interface.py |
Tkinter GUI on top of track_tidy.py |
iTunes, SoundCloud, and AcoustID all work out of the box - no accounts or API
keys to set up. The shared SoundCloud app relies on the developer's own
registered credentials, which aren't included in this source - building from
source gives you an app with no shared defaults, same as an unconfigured
user. See
load_default_credentials()'s docstring in track_tidy.py if you want to
supply your own via a local default_credentials.json.
It also relies on ffmpeg/fpcalc (format conversion, AcoustID
fingerprinting) being present at the project root - not included here, see
find_ffmpeg()/find_fpcalc().
python -m venv venv
venv\Scripts\pip install -r requirements.txt
venv\Scripts\python src\interface.pyGNU General Public License v2 or later (GPL-2.0-or-later) - see
LICENSE. This is required by mutagen, a GPL-2.0-or-later
dependency imported directly into the app. The bundled ffmpeg (invoked as a
separate process, not linked in) is GPLv3. See
THIRD-PARTY-NOTICES.md for every
dependency's license.




