Free · no login · nothing uploaded

Playlist to Rekordbox XML.

Drop an M3U, a CSV, a Traktor collection or a Serato crate and get the XML Rekordbox will actually import. Add the folder your music is in and it arrives keyed, tempo‑stamped and beat‑gridded, so Rekordbox has nothing left to analyse.

Drop a playlist

M3U, M3U8, PLS, CSV, a Rekordbox text export, a Traktor NML or a Serato crate. Nothing is uploaded.

Or paste a tracklist+

The part that is not a conversion

A playlist can arrive already gridded.

Every other converter hands Rekordbox a list of files and leaves it to work the rest out.

Rekordbox XML is not just a list of paths. Each track can carry a <TEMPO> element — a tempo, and the position in seconds of a beat, and which beat of the bar that is — and Rekordbox honours it on import. Almost nothing writes one, because writing one means knowing where beat one actually falls, and that means listening to the audio.

This page listens to it. Point it at the folder your files are in and each track goes through the same on-device engine behind the Key & BPM Finder: tempo, key, and a beat tracker that finds the phase as well as the rate. The XML comes out with the tempo, the key and a grid anchored on the first downbeat, plus a memory cue sitting on it.

The files never leave the tab. Decoding, analysis and the XML are all happening in this browser, which is the only reason it is reasonable to point a tool at a folder of unreleased promos in the first place.

Why it is a different tempo for the grid

Two detectors, and only one of them knows where beat one is

Two things run over each file. One reads the key and a tempo; the other tracks beats and gives a tempo and a phase — the actual position of the first beat, which the first one does not produce at all.

A grid needs both from the same detector. Bpm sets the spacing between bar lines and Inizio sets where they start, so taking the rate from one and the anchor from the other gives a grid that lines up at the beginning of the track and is visibly wrong by the end. So when grids are switched on, the beat tracker owns the tempo as well, and the key detector supplies only the key.

When the two disagree by more than 2% the row is flagged rather than averaged, because an averaged tempo is wrong in a way that looks right. A disagreement almost always means one of them heard the half-time pulse — the reason a drum & bass track reads as 87 as often as 174.

What survives the trip

What each format carries

A conversion cannot invent what the source never held, and the report says which is which.

What each playlist format carries
FormatPathsTempo & keyWhat else
M3U / M3U8YesNoA title and a duration per track, in the #EXTINF line. Nothing else — the format is thirty years old and was designed for a media player.
PLSYesNoThe same three fields in a different arrangement. Written by older software and by internet radio.
CSV / tab-separatedSometimesUsuallyWhatever the exporting program chose to put in the columns. Rekordbox's own text export is the richest of these and carries eighteen.
Traktor NMLYesYesGenre, label, comment, remixer and play counts. The key is stored as an index into Traktor's own ordering, which is not the chromatic one — read it wrong and every track lands in the wrong key.
Serato crateYesNoNothing at all beyond the paths. A crate is a list of files; the metadata lives in a separate database file.
A pasted tracklistNoNoArtist and title, and a label if it is in brackets. Useful for rebuilding a set you only have the tracklist of.

Every row with a “No” in the tempo column is a row the audio step fills in. That is the whole reason the audio step exists.

Where Rekordbox fails silently

Four things that make an import vanish.

It does not report a bad XML. It shows an empty playlist and leaves you to work out why.

Common reasons a Rekordbox XML import produces nothing
What goes wrongWhat you seeWhat this tool does
A bare path instead of a URLThe playlist imports with every track greyed out as missing.Writes file://localhost/ URLs with every segment percent-encoded — including the # in a title, which otherwise truncates the path at the fragment.
An unescaped ampersandThe entire collection reads as empty.Escapes &, <, > and " in every attribute, and strips the control characters that are illegal in XML at all. A label called "Drumcode & Co" is enough to break a whole file.
Track IDs that do not matchThe playlist appears with the right name and no tracks in it.Numbers tracks from one and references the same numbers from the playlist node, so the two cannot drift.
A playlist at the top levelNothing appears in the tree.Wraps every playlist in the Type="0" root node the format requires.

Frequently asked

Common questions

How do I import a playlist into Rekordbox?+

Rekordbox will not read an M3U directly — its only import path is File → Import Collection, which takes an XML in its own format. That is what this makes. Convert your playlist here, then in Rekordbox open Preferences → Advanced → Database, point "Imported Library" at the XML, and the playlist appears under rekordbox xml in the tree. Drag it into your collection from there.

Will the tracks arrive with their tempo and key, or do I have to analyse them again?+

That depends on whether you add the audio. A playlist file on its own carries a path and maybe a title, so a plain conversion gives Rekordbox a list of files to go and analyse. Point this page at the folder your music is in and it reads the tempo, the key and the position of the first downbeat off each track and writes them into the XML — including a real <TEMPO> beat grid, which Rekordbox honours. That is the part no other converter does.

Does anything get uploaded?+

No. The playlist is parsed in this tab and the audio, if you add it, is decoded and analysed in this tab too. There is no server behind this page — open the network panel and watch it stay empty. That matters more here than on most tools, because a promo folder and a full library index are both things you should not be handing to a website.

Which formats can it read?+

M3U and M3U8, PLS, CSV and tab-separated files including Rekordbox's own text export, Traktor NML collections, Serato .crate files, and a plain tracklist pasted one line per track. It works out which it is from the contents rather than the extension, because a Rekordbox text export and a pasted tracklist are both .txt files.

My playlist has relative paths and Rekordbox cannot find the files.+

A relative path like ../Techno/track.mp3 only means something next to the playlist file it came from, and once the file is detached there is nothing honest to resolve it against. This converter leaves those relative rather than inventing a root, and shows you which ones they are. The fix is to re-export the playlist with absolute paths from whatever wrote it, or to add the audio here so the tracks are matched by name instead.

Should I write keys as Camelot or as note names?+

Note names, unless you have a specific reason. Rekordbox displays whatever string is in the Tonality field, so 8A shows up perfectly well — but its own key features, including Related Tracks and the key-shift display, read the musical name. A library tagged entirely in Camelot silently loses those. There is a switch on the export if you want Camelot anyway.

Can it go the other way, out of Rekordbox?+

Not from an XML — Rekordbox exports a full collection rather than a playlist, and that belongs in a library tool rather than a converter. What does work is exporting a playlist from Rekordbox as text (right-click a playlist → Export a playlist to a file) and dropping that here, which gets you an M3U8, a CSV or a Serato crate out the other side.

Build the set this playlist was for

DJ terms on this page: USB prep · Beatgrid · Camelot key · CDJ · Crate · Musical key · Full glossary