A lightweight DJ tagging GUI that writes metadata directly into your audio files — so your tags survive re-imports, library moves, and new DJ setups.
Built for the Little Data Lotta Love tagging philosophy: tag every track richly so you can search and build sets on the fly.
DJ software like Rekordbox stores custom tags (My Tags, cue points, etc.) in its own database — not in the audio file. Switch computers, re-import a track, or share files with another DJ and those tags are gone.
This tool writes standard metadata tags directly into MP3, WAV, AIFF, FLAC, and M4A files:
| Field | ID3 formats (MP3/WAV/AIFF) | FLAC (VorbisComment) | M4A (MP4 atoms) | Rekordbox field |
|---|---|---|---|---|
| Energy level | TCON (Genre) |
GENRE |
©gen |
Genre |
| Rating | POPM (Popularimeter) |
RATING |
★ in Comment | Rating |
| Style / Mood / Vibe / etc. | COMM (Comment) |
COMMENT |
©cmt |
Comment |
After tagging, right-click any track in Rekordbox → Reload Tags and everything comes through.
⚠️ WAV limitation: Rekordbox does not read comment tags from WAV files — only Genre and Rating will show up. This is a Rekordbox limitation, not a bug in this tool. MP3, AIFF, and FLAC files work fully. Use the built-in converter (🔄 Convert WAVs) to convert to FLAC (recommended) or AIFF.Windows File Explorer also does not display ID3 comment tags reliably. Use a tool like Mp3tag to verify tags outside of DJ software.
- Folder picker on launch — point it at any music folder
- Auto-plays each track as you select it
- Waveform scrubber with click-to-seek and time display
- Volume control
- Toggle buttons for energy, rating, and all comment tags
- Keyboard-first workflow:
Spaceplay/pause ·Ssave ·Entersave + next ·↑↓navigate - Tags written to file instantly on save, no library lock-in
- Untagged tracks marked with
●in the file list for easy identification - Stats dashboard (
📊 Stats) — see how many tracks are tagged, energy/rating distribution, and top tags by frequency - Tag editor (
🏷️ Tags) — add, rename, reorder, recolor, or delete energy levels and comment tags / categories from inside the app. Load a bundled preset or shared JSON pack, export your own pack to share. Changes persist totags.jsonand apply to the live palette without restart. Tracks already tagged with a removed/renamed tag show those values in a per-track LEGACY section so you can clear them with one click. - WAV converter (
🔄 Convert WAVs) — batch convert WAV files to FLAC (recommended), AIFF, or MP3 with full tag preservation
Requires Python 3.10+ and ffmpeg (used for the WAV converter and waveform display).
Install ffmpeg:
# macOS
brew install ffmpeg
# Windows
winget install --id=Gyan.FFmpeg
# Linux (Debian/Ubuntu)
sudo apt install ffmpegThen:
pip install -r requirements.txt
python tag_manager.pyThe included DJ Tagging Reference.md documents the default tag vocabulary — feel free to customise it to your own style.
The live vocabulary is stored in tags.json (created on first launch from the defaults baked into tag_manager.py). The easiest way to edit it is the in-app 🏷️ Tags editor, which lets you add, rename, reorder, recolor, and delete energy levels and comment tags/categories without touching code. You can also edit tags.json directly if you prefer.
Default categories:
| Category | Purpose |
|---|---|
| Energy | Set position — Start / Build / Peak / Sustain / Release |
| Rating | 1★ situational · 3★ reliable · 5★ essential |
| Style | Genre the track lives in |
| Mood | Emotional feel |
| Vibe | Energy texture |
| Crowd | How it lands |
| Vocals | Vocals / No-Vocals / Rap |
| Instruments | Distinctive instruments worth searching by |
Tag vocabularies are portable. Inside the app, 🏷️ Tags → 📥 Load pack… lets you load:
- Bundled presets in
presets/— minimal, open-format/wedding, house & techno, hip-hop / R&B, multilingual / global. - Any JSON pack a friend has sent you (
Browse for file…).
Loading offers Replace (swap your vocabulary for the pack) or Merge (add the pack's tags on top of yours, preserving your customisations).
To share your own setup, click 💾 Export pack… to save your current vocabulary as a JSON file. Send it to friends, or submit it as a community pack for inclusion in presets/.
See presets/README.md for the file format, conventions, and merge rules.
| Format | Playback | Tagging | Rekordbox Comment tags |
|---|---|---|---|
| MP3 | ✅ | ✅ | ✅ |
| FLAC | ❌ (pygame limitation) | ✅ | ✅ |
| AIFF | ❌ (pygame limitation) | ✅ | ✅ |
| M4A | ❌ (pygame limitation) | ✅ | ✅ |
| WAV | ✅ | ✅ | ❌ (Genre & Rating only) |
For best Rekordbox compatibility, FLAC is the recommended lossless format — it supports full metadata including comments, and produces smaller files than both WAV and AIFF.
A typical DJ prep workflow looks like this:
Download / buy tracks → Tag & convert → Import into Rekordbox
(mixed formats) (in any order) (all tags visible)
Step 1 — Collect tracks. Download or purchase tracks into a prep folder (e.g. To Prep). These will be a mix of WAV, MP3, AIFF, and FLAC files — that's fine.
Step 2 — Tag and convert (in either order).
-
Option A: Tag first, convert after. Open the folder in DJ Tag Manager, tag every track with energy, rating, style, mood, etc. Then click
🔄 Convert WAVsto convert any WAV files to FLAC (recommended), AIFF, or MP3. Tags are preserved during conversion. -
Option B: Convert first, tag after. Convert your WAVs up front so all files are in a Rekordbox-compatible format. Then tag them — the app reads and writes tags to all supported formats.
Either order works. Tags are always preserved during conversion.
Step 3 — Import into Rekordbox. Drag the folder into Rekordbox. All tags (Genre, Rating, Comments) will be visible. For tracks already in your library, select them → right-click → Reload Tags.
Step 4 — Archive or discard originals. If you converted WAV files and kept the originals, you can safely archive or delete them — your tags live in the converted files.
💡 Tip: Tag while previewing — WAV files play directly in the app, so tagging before converting lets you listen and tag in one pass.
PRs and issues welcome — see CONTRIBUTING.md for setup and guidelines.
Open an issue with your OS, Python version, and steps to reproduce.
If you find a bug that corrupts or destroys audio files, please email the maintainer (see GitHub profile) before opening a public issue, so a fix can ship before others trip over it.
Built a vocabulary you'd like to share? Use the Submit a tag pack issue template — no Git knowledge required. See presets/README.md for details.
MIT
