One-pass migration from VirtualDJ database.xml + Favorite Folders into Serato crate files. Crate folders (%% separator) preserved end-to-end, format gotchas handled on both sides, nothing leaves your machine.
Moving from VirtualDJ to Serato DJ normally means an XML round-trip: export from VirtualDJ, hope Serato DJ parses it correctly, manually rebuild crate folders (%% separator), discover cues didn't translate. VirtualDJ has portable and shared install modes that put database.xml in different locations — tools that hardcode the path miss portable setups entirely. And on the destination side: Every write must update both the main DB and each affected .crate atomically, or Serato shows ghost entries.
Supported today
Rekordbox · Serato DJ · VirtualDJ (incl. Favorite Folders) on Windows 10+ and macOS (Apple Silicon + Intel). No DJ software? Folder Library mode audits plain music folders too.
VirtualDJ playlists opened in Serato with the folder structure intact.
More walkthroughs on our YouTube channel.
A VirtualDJ collection with 2,705 playlists and 206,378 tracks moved into Serato DJ in four seconds. That is the developer's own library, on a MacBook Pro M1 with the music on the internal drive — not a benchmark rig, and not a customer's machine.
What the number is really about is what survived it. The crates arrived with the nesting and the order they had in VirtualDJ. Nothing was exported to XML and nothing was re-imported, which is where the usual route loses the structure.
One thing that run turned up: 57 of those playlists were pointing at a drive that had been moved. Not empty — aimed at a path that no longer existed. That is a different problem from the transfer, and it is the one Fix Missing Tracks exists for. Worth running before the move, so Serato receives a library that already knows where its files are.
VirtualDJ and Serato DJ speak completely different languages: VirtualDJ database.xml + Favorite Folders (Favorite Folders (the ★ tree) are filesystem-rooted shortcuts that don't fit the standard playlist model — most migration tools strip them entirely) versus Serato crate files (Smart Crates are rule-based queries, not static lists — they have no direct equivalent in most other apps and need to be snapshotted at transfer time). XML export-import is the usual bridge — and it's lossy on both ends. MLD treats both formats as first-class, reads VirtualDJ's structure natively, and writes Serato DJ's native format directly, so crate folders (%% separator) survives and the target app doesn't re-import anything. A timestamped backup of each app's library is taken before any write.
Yes. MLD reads both libraries locally, so both apps (or at least their library files) must be accessible on the same computer. Nothing uploads anywhere — all scanning is local.
Yes. MLD reads regular playlists plus a separate Favorite Folders (★) tree and writes crate folders (%% separator) natively so the structure survives the migration.
Run Fix Missing Tracks for VirtualDJ first. MLD scans your drives, matches moved/renamed files, and repairs links in VirtualDJ before the transfer — so Serato DJ receives a clean library.
Yes. VirtualDJ and Serato DJ libraries are both copied to timestamped backups before any write. Rollback is always one folder away.
Yes — see the Serato DJ to VirtualDJ guide. MLD supports every direction between supported apps.
Yes. MLD tracks VirtualDJ version compatibility and updates with each new release. See the changelog for the version matrix.
Free tier covers scanning and detection. Pro is a one-time lifetime license, or a monthly plan if you prefer. Current pricing is on the homepage.
It finds Rekordbox, Serato and VirtualDJ on its own, and reads plain music folders when you use none of them. Nothing to configure before the first scan.
macOS 10.15+ or Windows 10+. Notarized and code-signed. See pricing