Traktor Bridge

Install

Windows, installer (64-bit)

  1. Download TraktorBridge-3.5.2-setup.exe from the releases page.
  2. Run it. It installs for your user only, with no admin rights, a Start menu entry and an optional desktop icon.

Windows, portable (64-bit)

  1. Download Portable_TraktorBridge-3.5.2-win64.zip from the releases page.
  2. Unzip it anywhere: desktop, another drive, a USB stick. No installer, no admin rights.
  3. Run TraktorBridge.exe.

Settings (traktor_bridge.json) and the log (traktor_bridge.log) are written next to the program. The folder can move between computers with its settings.

Windows may warn about an unsigned program the first time, with either build: More info, then Run anyway.

From source (Windows, macOS, Linux)

git clone https://github.com/bsm3d/Traktor-Bridge.git
cd Traktor-Bridge
pip install -r requirements.txt
python main.py

Python 3.11 or newer. macOS and Linux run from source. They have been tested less than Windows.

Your first CDJ key

  1. Plug a USB key. If it is not FAT32 or exFAT, use Format... (see Formatting a key). Nothing else to prepare: no rekordbox, no file to import.
  2. Ctrl+O and open your collection: Traktor, rekordbox XML, VirtualDJ, Serato, Mixxx or an M3U playlist (see Collections). For Traktor, Traktor Bridge finds the newest collection.nml on its own the first time.
  3. Tick the playlists you want. Nothing ticked exports everything.
  4. Export: CDJ/USB. Output: the key itself (E:\ for example).
  5. Convert. The report tells how many tracks went in and lists any missing file.
  6. Leave Verify the copy ticked: the key is read back and compared to the source.
  7. Accept the offer to eject the key, plug it into the player, press the USB button.
Main window A CDJ USB export in progress, with speed and time left

What it is, and what it is not

Traktor Bridge was designed for users of Traktor, the DJ software from Native Instruments. It is a central hub: the leading DJ programs exchange playlists through it, and with them the hundreds of hours of work it takes to build those playlists.

It imports your collections into Traktor, and it takes your Traktor collection out to the other programs and to Pioneer CDJ players. It is a true Swiss army knife for managing your music.

It is not a competitor of Traktor. It is not a DJ program, it does not mix, and it does not replace any of the programs it connects. It works alongside them.

It also works on its own. It builds playlists from a music library, reorders them and places cues and loops (drag and drop in real time, a precise cue editor, keys A-H). It formats USB keys for the players and copies with checksums.

Collections

SourceFileRead
Traktor Pro 3 / 4collection.nml or an exported playlist .nml tracks, playlists and folders, hot cues, memory cues, loops, grid, key, rating, colour, play count, dates. Smartlists are listed but empty (their query is not run).
rekordboxXML from File > Export Collection in xml format tracks, playlists, position marks, tempo anchor, colours
VirtualDJDocuments/VirtualDJ/database.xml, or a single .vdjfolder / playlist tracks, hot cues 1-8 (A-H), saved loops, beatgrid (classic and fluid), rating, play count. Playlists from Playlists/ and Folders/, the folder tree kept.
Serato DJMusic/_Serato_/database V2 (or _Serato_ at the root of a drive), or a single .crate tracks, crates and sub-crates, hot cues with colours and names, saved loops (as memory loops), beatgrid. Cues come from the tags Serato writes in the files: mp3, aiff, wav and flac (not m4a yet).
Mixxxmixxxdb.sqlite playlists, crates (in a Crates folder), cues, keys
Any player.m3u / .m3u8 the list of files, artist and title from EXTINF
A folder of musicFile > Open a music folder each folder becomes a playlist, the folders around it are kept. Title, artist, album, genre, BPM and key come from the tags (mp3, aiff, wav, flac, m4a). No beatgrid yet: detect it with Detect grids, or set the first beat in the cue editor.
A CDJ USB keyFile > Open a CDJ USB key (Ctrl+Shift+K) the playlists of a key made by Traktor Bridge or by rekordbox, with their cues and beat grids. Pick the root of the key, or any folder inside it. It never writes to the key. You can look at the playlists, edit them, save a project or export them again.

A track shared by several playlists is one track. A fix made in one place (a relocation, a cue) shows everywhere.

Moved files

A collection remembers where each file was. If your music moved (new drive, other computer), set the Music folder to where it is now. Every missing track is looked up there, and in its sub-folders, by file name.

After loading, Traktor Bridge offers to pick that folder when files are missing.

Tools > Check collection (Ctrl+K) lists every track with its status. Relocate all missing searches a folder and asks when a name matches several files. Locate selected points one track to a file by hand.

Relocations live in memory. The next export uses them, and your original collection file is never modified.

Export formats

FormatWritesUse it for
CDJ/USBContents/, PIONEER/rekordbox/export.pdb, analysis files, artworkplaying on Pioneer players straight from the key
Rekordbox XMLrekordbox.xmlimporting into rekordbox (Preferences > View > rekordbox xml, then the xml tree)
M3UPlaylists/**/*.m3u8other players and software, folders kept as sub-folders
Traktor NMLcollection.nmlbringing a rekordbox or Mixxx collection into Traktor, or a cleaned copy of your own

Copy audio (XML, M3U, NML) copies the files to Contents/Artist/Album/ in the output and points the export at the copies. CDJ/USB always copies: the players only read what is on the key.

Verify the copy reads each copy back and compares its SHA-256 with its source's.

A Traktor NML export is a collection Traktor can import, cues and loops included. M3U8 carries neither cues nor beat grids.

CDJ keys

Before a gig: test the key once on a player or in rekordbox (plug it in, it should open without complaining). Keep your original collection backed up, see Backup.

Formatting a key

Formatting a USB drive: everything on the selected drive is erased

The Format... button next to Output (or Tools > Format a USB drive (FAT32)...) erases a USB key or SD card and formats it as FAT32 with an MBR partition table. That is the layout every CDJ and XDJ reads.

It works whatever the key was before: Mac, Linux, NTFS, exFAT, GPT, more than 32 GB. Only removable drives are listed, never the system disk. Pick the drive, check the label and confirm. Everything on the key is erased.

Windows asks for administrator rights, Linux uses pkexec and macOS diskutil. When the format is done, the program offers to use the key as the Output.

When an export to a removable drive is finished, the program offers to eject it. You can also do it at any time with Tools > Eject the output drive (Ctrl+E). The key is flushed and dismounted, so you can unplug it.

Checking a key

Every export writes traktor_bridge_checksums.json at its root: the size and a SHA-256 checksum of each file it wrote.

Tools > Verify an export (Ctrl+Shift+V) asks for the key (or the output folder), reads it back and lists anything damaged or missing. A USB key that has been through a few gigs can lose a file without saying so. This is the way to know before the booth. The result shows counts for audio, artwork, Pioneer database and analysis files, and other files. The file names go to the log.

With Verify the copy ticked (it is by default), the check runs right after the export. The files are read from the key itself, not from the system cache, so what is checked is what the player will read. A file that cannot be read counts as damaged.

The end of the export lists the files at fault. Export again to the same place and only the files that differ are written again.

Other safeguards:

After CDJ use

A CDJ can update export.pdb and the analysis files on a key. When you verify the key later, a readable Pioneer file that changed is reported as modified, integrity unconfirmed. It is not counted as damaged, but nothing proves the player made the change.

Changed audio or artwork, and missing or unreadable files, are still problems. Right after an export the check stays strict. The checksums file is never updated for you.

One exception: the analysis files an export keeps as they are. If a player changed them, the end of the export says how many, and it is not an error.

Back up the key before you export to it again: the new export replaces what the player changed. From the command line, --verify exits with 1 for a modified file like for any other difference.

Backup

Tools > Backup opens one panel with three buttons: Save backup..., Load / restore backup... and Verify backup....

Save backup writes a ZIP with all the loaded playlists (ticked or not), their applied edits and their audio, plus M3U8 copies. Audio shared by several playlists is stored once. A missing audio file prevents a complete backup. ID Tag fields you have not applied are not included. The ZIP can need as much disk space as your audio.

Next to the ZIP you get a .zip.sha256 file. Keep both together, with their names unchanged. After saving, the program offers to verify the new archive.

Verify backup checks the whole archive against its checksum.

Load / restore backup checks the archive and the audio hashes, then extracts into a new folder: you pick the parent folder and the name. It never overwrites an existing folder. When it is done it offers to open the restored project. Cancelling removes the unfinished extraction.

Restore refuses archives that look like ZIP bombs, unsafe paths, encrypted entries and unsupported compression. A matching checksum shows the bytes are intact. It does not show that the author can be trusted.

A backup does not replace saving your project (see Projects).

Audio check

Audio check of eight demo files, nothing is modified

Tools > Verify audio files... checks the audio of the loaded collection, or of any folder and its sub-folders. It never changes a file, and you can cancel it.

Two modes. Quick reads the headers and metadata and decodes nothing. Full (the default) decodes the whole stream and is slower.

StatusMeaning
Headers readableQuick mode: the headers are fine, the audio was not decoded.
DecodedFull mode: the whole stream was read without a decoder error.
SuspectEmpty file, truncated container, incomplete decode or decoder error.
Missing, UnreadableThe file is not there, or it cannot be read.
Not checkedThe decoder does not support the format (M4A and ALAC may not be), or the check hit a limit or crashed. This is not a pass.

Each file is checked in a separate process, with a time limit and a memory limit that you can change. A stream that decodes is not proof that the file is intact: some decoders tolerate damage.

ClamAV and antivirus

This is an audio check, not an antivirus scan. The panel only says whether ClamAV is installed. It does not run it and does not update its signatures.

Install and update ClamAV yourself, then scan your music folder outside Traktor Bridge:

clamscan --recursive --infected "D:\Music"

This command deletes nothing. Exit code 0 means nothing found, 1 a detection, 2 an error. Use the full path to clamscan if it is not on your PATH.

No antivirus catches everything. Traktor Bridge has no detector for steganography in MP3 files.

Playlist details

Double click a playlist in the main window.

Playlist details

The whole window works from the keyboard. Tab goes from the player to the filter, the list and the buttons. Up and Down choose a track, Enter plays it. Ctrl+F goes to the filter, and Esc there empties it.

Changes made here (order, removed tracks, cues) are part of the next export. They are not written back to your DJ software.

Cue timeline

Cue timeline

Every cue of the track on its waveform, with the grid anchor dashed. Filter hot cues, memory cues and loops. Click the waveform to listen from there.

Edit (or a double click on the list) changes the time, the name, the slot (memory or hot A-H) and the loop length. Add cue and Add 4-beat loop place a cue at the needle. The loop takes the first free hot slot, or a memory slot when the 8 are taken. Copy list puts the cue list in the clipboard as text.

Keys A-H, right click on a pad (1, 2, 4 or 8 beat loops) and drag work as in the player. Space plays and Del deletes. A double click on the waveform adds a cue. Ctrl+Z and Ctrl+Y undo and redo any cue change.

Beat grid and metronome

Detecting a grid

Detect grids in the playlist window finds the tempo and the first beat. It analyses the selected tracks, or the tracks without a grid when nothing is selected. It asks before it starts.

A reliable result replaces the BPM and the first beat. Unreliable results are skipped, and so are tracks you edited during the analysis. Errors name the files. Cancel detection applies nothing. One Ctrl+Z undoes the whole batch.

A result is reliable when the pulse stands out clearly and the tempo is the same in every part of the track. A live recording whose tempo drifts is never reliable, and neither is a track without a steady beat. A quiet or sparse track can be correct and still be skipped: use Detect in the cue timeline, which shows you the numbers and lets you decide.

In the cue timeline, Detect (Ctrl+D) does the same for one track and asks you to confirm, with a warning when the result is unreliable.

Detection assumes a constant tempo. It finds an audible pulse, which is not always the first beat of a bar. Always check the result against the waveform and the metronome.

Editing a grid

In the cue timeline, type the Tempo and the First beat (in ms) and press Apply. Set at cursor puts the first beat at the needle, Clear removes the grid.

The Nudge buttons move the first beat by -10, -1, +1 or +10 ms. Alt+Left and Alt+Right do 1 ms, with Shift 10 ms. You can also drag the first beat marker on the waveform (Esc cancels).

Changing the grid does not move existing cues. Projects, NML and rekordbox XML keep the edited timing. On the CDJ, beat times are written in whole milliseconds and the BPM to hundredths.

Metronome

The metronome button sits next to S in the player and in the timeline. It plays a click on every beat, stronger on the first beat of each bar. It needs a BPM and a first beat.

Vol sets the click volume, independent of the track. Offset shifts the click from -250 to +250 ms: positive delays it, negative advances it, to make up for your audio device.

The click follows playback, seeks and loops, and is muted during crossfades. The device latency still affects how it sounds, so judge the grid by ear on your own output.

ID Tag editor

ID Tag editor with demo metadata

The ID Tag button at the end of a row (Ctrl+I) edits the metadata of a track: title, artist, album, album artist, genre, label, remixer, composer, comment, year, track, disc, rating, BPM and key. A second tab shows the file information, and the artwork is on the side.

There are two ways to save.

The write goes through a checked temporary copy. The first backup is kept next to the file, named after it with .tb-tags.bak added. Artwork and unrelated DJ data are preserved. Empty fields clear the matching tags. Rating stays in the project.

Undo and Reload cannot reverse a write to an audio file. Cues and beat grids are not written by this editor. A BPM change moves the spacing of the grid, not the existing cues.

Projects

File > Save the project (Ctrl+S, Save the project as with Ctrl+Shift+S) writes your work in one JSON file: playlists and folders, track order, metadata, file paths, cues and loops, beat grids and the export settings.

File > Open project / collection (Ctrl+O) brings it back, with files that moved looked up in your music folder.

The title bar shows a * when something is not saved. The program asks before replacing or closing unsaved work. Save before you reload the collection.

MenuItems
FileOpen project / collection, New playlist, Open a music folder, Open a CDJ USB key, Save the project, Save the project as, Convert, Exit
ToolsReload, Check collection, Verify audio files, Verify an export, Backup, Format a USB drive (FAT32), Eject the output drive
OptionsPreferences
HelpView log, Usage, About

Help > Usage (F1) opens the help inside the program.

Quit is blocked while the program is writing, analysing, decoding waveforms or scanning a folder. Wait for the end, or use the Cancel button of the operation. Closing the window does not cancel a job. Do not unplug a key before the end of the write and the safe eject.

Options

Options > Preferences (Ctrl+,).

TabSetting
Exportdefault format, key notation, copy audio, verify the copy (SHA-256)
CDJanalysis processes (Auto uses up to 8, more rarely helps), cache size and Clear analysis cache
Playerwaveform colours (RGB, Blue, IR), crossfade length, preview volume
Applicationload the last collection on start, ask before quitting, log level

Shortcuts

Main window

Ctrl+Oopen a project or a collection
Ctrl+Shift+Oopen a music folder
Ctrl+Shift+Kopen a CDJ USB key
Ctrl+Nnew playlist
Ctrl+S / Ctrl+Shift+Ssave the project / save it as
Ctrl+Returnconvert
Ctrl+Qquit
Ctrl+Rreload
Ctrl+Kcheck collection, relocate missing files
Ctrl+Shift+Vverify an export
Ctrl+Eeject the output drive
Ctrl+,preferences
Ctrl+Llog
F1usage

Playlist details

Space / Pplay / pause
Enterplay the selected track
Ctrl+Ffilter
Delremove the selected tracks from the playlist
Alt+Up / Alt+Downmove the selected tracks (no sort, no filter)
Ctrl+Left / Ctrl+Rightback or forward 5 seconds
Ctrl+IID Tag of the current track
Ctrl+Tcue timeline of the current track
Ctrl+Shift+Dremove duplicates
A - Hset a hot cue at the needle, again: play from it, Shift: delete
Ssnap on or off
Ctrl+Z / Ctrl+Yundo / redo
Esccancel a cue being dragged

Cue timeline

Space / Pplay / pause
A - Hset a hot cue at the needle, again: play from it, Shift: delete
Deldelete the selected cue
Ctrl+Ddetect the tempo and the first beat
Alt+Left / Alt+Rightmove the first beat by 1 ms (Shift: 10 ms)
S / Ctrl+Bsnap on or off
Ctrl+Z / Ctrl+Yundo / redo a cue or grid change
Esccancel a cue or the first beat being dragged

Command line

For scripts, without the window:

start /wait TraktorBridge.exe --export "D:\Traktor\collection.nml" E:\
start /wait TraktorBridge.exe --export collection.nml D:\out --format "Rekordbox XML" --music D:\Music
start /wait TraktorBridge.exe --verify E:\

Formats: CDJ/USB (default), Rekordbox XML, M3U, Traktor NML. The whole collection is exported. The report goes to traktor_bridge.log and the exit code is 0 when nothing failed.

When the key already holds playlists, --keep (the default) adds the export to them and --replace overwrites the key. --help prints the usage. An option the program does not know is refused with exit code 2, and so are --keep, --replace, --format and --music without --export.

--verify checks an export against its checksums. It exits with 0 for an exact match and with 1 when a file is damaged, missing or modified.

start /wait makes the prompt wait for the end, because the program has no console of its own. From source: python main.py --export ....

What maps to what

TraktorCDJ / rekordbox
Hot cue 1-8hot cue A-H
Cue without hot cue slotmemory cue
Looploop (hot or memory), same length
Load markermemory cue
Grid marker + BPMbeatgrid, bar starts on the marker
Fade in / fade outkept in XML and NML, not on CDJ keys
Keykey (C, Db ... Bm), shown in the notation you choose
Rankingrating 0-5 stars
Colourtrack colour (red, orange, yellow, green, blue, purple, pink)

Privacy and safety

Your audio, playlists, cues, metadata and analysis stay on your computer. Nothing is uploaded. There is no telemetry, no account and no automatic log sharing. Loading, editing, analysis, backup and export work offline.

This website counts visits. The program does not. The count is anonymous: no cookie, no IP address stored. It shows which pages are read, from which site people come, which country (guessed from the time zone of the browser), and how many click a download button or a link that leaves the site. A visitor is a one-way hash that changes every day, so nobody can be followed from one day to the next. The data is deleted after 400 days.

Links to my websites open in your browser. The log can contain paths and track names: read it before you send it to me. Antivirus tools and cloud-synced folders have their own privacy settings.

The source code is public, so you can check all of this.

The checks in this guide protect your files, they do not make an export bulletproof. A power cut or a failing drive can still damage a key, and a matching checksum does not tell you a file is safe. Test the key on a player before a gig.

The packaged program checks its own native modules when it starts. This is not publisher signing. The XML readers refuse declared entities and external references.

Troubleshooting

SymptomWhat to do
The end of the export lists damaged filesThe key or the port is failing: export again to the same place (only those files are rewritten), try another port or key.
Verify an export reports modified Pioneer filesA player probably updated them, see After CDJ use. Back up the key before exporting to it again.
Traktor Bridge says files were changed or damaged and will not startThe program folder is not the one that was built: a file was altered, removed, or left over from an older version. Run the installer again, it replaces the whole program folder. If the message lists files marked unexpected, an older copy left them: delete those files from the runtime\traktor_bridge folder and start again. For the portable version, the clean way is to unzip it to a new folder, not over an old one.
Playlists of an earlier export are missing on the playerUp to 3.5.1 every export wrote a new database, so earlier playlists were no longer listed although their audio stayed on the key. From 3.5.2 an export asks to keep them. Export the missing playlists again and choose Keep them and add this export.
The player does not show the new playlists on a key made by rekordboxThe key also holds exportExt.pdb and exportLibrary.db, which an export leaves as they are. A player that reads those files instead may not show them. Test the key on your player.
A playlist is empty on the playerNone of its files was found when you exported, so up to 3.5.1 it was written empty. From 3.5.2 such a playlist is left out and named in the result. Set the music folder or use Tools > Check collection, then export it again.
Player shows NO DISKThe key is NTFS: reformat it FAT32 or exFAT.
Player sees the key but no playlistPIONEER is not at the root of the key: export to the key itself, not to a sub-folder.
Tracks missing from the exportTheir files were not found: set the music folder or use Tools > Check collection. The log (Ctrl+L) lists them.
Flat waveformsM4A / AAC in the portable build: not decoded yet. Other formats: the file could not be read, see the log.
Audio check says Not checkedThe format is not supported by the decoder, or the file hit a time or memory limit. See Audio check.
Old cues or waveforms after a changeOptions > Preferences > CDJ > Clear analysis cache, then export again.
The program will not quitA job is running. Wait, or use its Cancel button.
The collection won't openClose Traktor first, it may be writing the file.

For anything else, open an issue on GitHub with the log and the player model.

Changes in 3.5.2

3.5.2 changes one thing for CDJ keys and fixes several problems. Exports of ordinary tracks are otherwise unchanged: playlists, cues, grids and keys are written as before.

Changes in 3.5.1

3.5.1 is a fix release. Exports are unchanged.

Changes in 3.5

Changes in 3.4

Changes in 3.1

Changes in 3.0

Author

Benoit Saint-Moulin is a Belgian multi-faceted artist, DJ, producer, and founder of the electronic music micro-festival "Green Mayday". Clearly inspired by the Belgian electronic music scene, he travels through melodic and sometimes brutal musical universes while ensuring a rigorous selection of tracks.

The adventure began in the 80s with vinyls and his father's 4-track recordings. Quickly passionate about electronic music, he bought a Commodore 64 to learn music creation and started playing at local parties combining vinyl turntables and cassette player. As an active member of the Amiga demoscene, he developed his skills in digital creation, combining music and visual arts. As part of the original Arkaos team, he contributed to democratizing VJing and the beginnings of video mapping. This pioneering work led to collaborations including visual effects for Jean-Michel Jarre, prototypes for the Nintendo Dolphin, and work with artists like Jean-Marc Lederman (Front242), and projects with Moby, Moloko, St Germain through SONY music and PIAS records.

As someone working in VJing and audiovisual production, I often needed to move between different software ecosystems. I prefer Traktor for organizing music, but was missing a tool for the nights I have to play on CDJ setups. Traktor Bridge is that tool, developed during my free time and offered free of charge to the DJs facing the same problem.

License. PolyForm Noncommercial 1.0.0: free for personal, educational and any other noncommercial use, modification included. Commercial use requires prior authorization from the author, ask through the GitHub repository. Copies must keep the license and the copyright notice.

A non-commercial project. Traktor Bridge is made by one person in his free time. It is not a company product and there is no support contract. The source code is public on GitHub: everyone is free to read it and check what the program does.

No warranty, no liability. Tested, but provided as is, without warranty of any kind. I am not responsible for any loss of data (collections, music files, cues, playlists, the content of a USB key), for a key a player refuses to read, or for any other damage resulting from the use of the program. Formatting a key erases it. Keep backups of your original data and test your key on a player before playing out.

Trademarks. Pioneer DJ, rekordbox and CDJ are trademarks of AlphaTheta Corporation. Native Instruments and Traktor are trademarks of Native Instruments GmbH. VirtualDJ is a registered trademark of Atomix Productions Inc. Serato and Serato DJ are registered trademarks of Serato Limited. Mixxx is the name of the Mixxx open source project. All other trademarks belong to their respective owners. Traktor Bridge is an independent tool, not affiliated with or endorsed by any of them, written for interoperability.

Thanks to Deep Symmetry (crate-digger, beat-link) for documenting the rekordbox formats, and to the openboxxx project. Their research is what made it possible to write Traktor Bridge from scratch.