Your music library, built for DJs. Import tracks, analyse BPM and key automatically, build playlists, download from anywhere, and prepare sets — all stored locally on your machine.
Grab the latest build for your platform from Releases.
FFmpeg and the audio analyser download automatically on first launch — no manual setup required.
| Platform | File |
|---|---|
| Linux | DJ.Manager-x.x.x-Linux (AppImage — just run it) |
| Windows | DJ.Manager-x.x.x-Setup.exe |
| macOS | DJ.Manager-x.x.x.dmg |
If you use Chocolatey, you can install and keep DJ Manager up to date with a single command:
choco install djmanagerPackage page: community.chocolatey.org/packages/djmanager
Library — Import audio files once; DJ Manager copies them into managed storage and deduplicates by content hash. Sort and filter by any column. Select multiple tracks with click, Shift+click, Ctrl+click, or Ctrl+A.
Advanced search — Type a query into the search bar to filter your library with precision. Filters can be stacked with AND:
GENRE is Psytrance AND BPM IN RANGE 140-145
KEY matches 8A AND BPM > 130
ARTIST contains Burial AND YEAR > 2010
TITLE contains intro AND LOUDNESS > -10
Supported fields: TITLE, ARTIST, ALBUM, GENRE, BPM, KEY, YEAR, LOUDNESS.
Supported operators vary by field — is, is not, contains, in range, >, < for numbers; is, matches, adjacent, mode switch for keys (Camelot notation: 8A, 8B, etc.).
The search bar shows field and operator suggestions as you type, and completed filters appear as removable chips above the track list.
Analysis — Every track is analysed automatically on import for BPM, musical key (Camelot notation), loudness (LUFS), replay gain, and intro/outro markers. Right-click any track to re-analyse, or halve/double the detected BPM if the analyzer picked the wrong grid.
Find Similar — Right-click a track to find others with a matching or adjacent Camelot key, or within a close BPM range. Results are applied as a live search filter.
Auto-tag — Right-click any track and choose Auto-tag to look up metadata from MusicBrainz and Discogs simultaneously. A side-by-side diff shows the current value next to every candidate found; pick the value you want per field (Title, Artist, Album, Label, Year, Genres) from a dropdown and apply in one click.
URL Import — Paste a URL from YouTube, SoundCloud, Bandcamp, Spotify, or 1000+ other sources into the Download tab. DJ Manager fetches the track list first so you can review and deselect anything before downloading. Tracks are imported into the library one by one as they finish — no waiting for the full playlist. A dual progress bar tracks both the current download and overall playlist progress, and a status table shows each track's state (pending → downloading → importing → done / failed).
Playlists — Create colour-coded playlists in the sidebar, drag tracks in from the library, reorder by drag-and-drop, and sort by any column. Track count and total duration are shown at all times. Exporting a playlist to M3U is one click. Playlists imported via URL remember their source link.
Player — Full playback with seekbar, shuffle, repeat, previous/next, and hardware media key support. Intro and outro zones are shown visually on the seekbar so you know exactly when to mix. Double-click any track to play.
Settings — Move your library to any location, including an external drive. Update FFmpeg and the audio analyser in-app without reinstalling. Clear the track library, all playlists, or all user data from the Advanced tab.
git clone https://github.com/Radexito/DjManager.git
cd DjManager
npm install
cd renderer && npm install && cd ..
npm run devFFmpeg and mixxx-analyzer are downloaded automatically to ~/.config/dj_manager/bin/ on first run.
| Command | What it does |
|---|---|
npm run dev |
Start Electron + Vite dev server together (default for development) |
npm run react |
Start the Vite renderer only (UI dev without Electron) |
npm run build |
Build the renderer for production |
npm run electron-prod |
Run Electron against the production build |
npm run dist |
Build + package for the current platform |
npm run dist:linux |
Build + package for Linux (AppImage) |
npm run dist:win |
Build + package for Windows (NSIS installer) |
npm run dist:mac |
Build + package for macOS (DMG) |
npm run lint:all |
Lint main process + renderer |
npm test |
Run unit tests (Vitest) |
npm run test:e2e |
Run E2E tests (Playwright) |
Upcoming work is tracked on the Issues page.
Right-click any playlist in the sidebar and choose Export Rekordbox USB to write a Pioneer CDJ-compatible USB drive — no Rekordbox software required. DJ Manager writes the binary formats CDJs read directly: export.pdb (track database), ANLZ0000.DAT/.EXT/.2EX (waveforms and beat grids), and PIONEER/MYSETTING.DAT (player settings).
Each export to the same USB folder merges with whatever was previously exported there. A manifest (PIONEER/rekordbox/export-manifest.json) records all tracks and playlists on the USB; subsequent exports read it and inject new content into the existing database without removing anything.
| What gets written | Behaviour |
|---|---|
Audio files (/music/) |
Skipped if already present — existing files are never overwritten |
| ANLZ files (waveform / beatgrid) | Regenerated for new tracks only — existing ANLZ files are left untouched |
export.pdb (track database) |
Rebuilt from all tracks — current export merged with previous exports |
PIONEER/MYSETTING.DAT etc. |
Always regenerated |
export-manifest.json |
Always updated — records the full set of tracks and playlists on the USB |
You can export playlists to the same USB one at a time — each export adds its tracks and playlists to the CDJ database without touching the ones already there.
Audio is stored at ~/.config/dj_manager/audio/<xx>/<hash>.<ext> (configurable via Settings → Library). The two-character hash prefix keeps directory sizes manageable. Playlists reference tracks by ID — no duplicates, no copies.
Logs are written daily to ~/.config/dj_manager/logs/app-YYYY-MM-DD.log.
