Serato Stats Is Now Open Source

I've open sourced the Serato Stats code.  Repo can be found here:

The code has a dependency on JavaFX so you'll need to add the OpenJFX jar to your classpath before running the app.

Feel free to contribute features or bug fixes to the project.  Hope this is useful to some of you!

Serato Play Counts Migration Tool

(UPDATE 1/5/2020: it is no longer necessary to delete the serato DB file for this tool to work)

Serato DJ Pro 2.2 introduces a  new play count column that tracks the number of times a song was played.  This feature has been requested forever and it's great to see it finally added to the software.

Unfortunately though, the feature ignores all play counts prior to the update.

To help bridge the gap, I've open sourced a command line tool that will:
scan serato historical session files to tabulate the number of times each track was playedattempt to locate all session mp3s.Overwrite the id3 field serato uses to store play counts ('TXXX:SERATO_PLAYCOUNT') with the tabulated value.
I've only tested this tool on OSX Mojave against my own library and Serato DJ Pro 2.2.0. While my experience has been positive yours may not.

No warranties are given or implied. use at your own risk!

Please backup your library and serato files if you do plan on using it.  overwriting…

New and Improved Serato Crate Exporter (with m3u support)

I've gotten requests to add ability to convert Serato crates into m3u files, so without further ado here are a few screen shots of the new-and-improved Crate Exporter:

Click the 'Export' arrow to select one of the available formats:
 Click 'start' to export, and 'open' to open the last exported file with the OS's default application:

Here's the crate in text format (currently only the #, Artist, and Title column are exported):

Opening an .m3u file will also open the file in whichever player is the OS's default (iTunes on OSX):

Requirements & Limitations
* You'll need at least JRE8 (Java Runtime Environment) installed to run the jar.
* only been tested on OSX Mojave (though it should run on other OS's as well)
* nested crates not yet supported (only selected crate will be converted)
* only mp3 files currently supported (wav/mp4/etc files will be skipped)

Executable jar & source code  here:…

try out the early beta version of stats

Beta functionality is currently limited to 200 session files and only includes a few basic stats:

top 100/500/1000/5000 artists/songs/'least played'
The jar can be download from here (must have JRE 8 installed; only tested on OSX but may be windows compatible):
any and all feedback is welcomed!

Serato STATS screen shots

As usual the GUI work took much longer than expected... But not to worry progress has been made.  Here's some screenshots as proof.

The 'SETTINGS' page allows customization of where/how/which session files to process:

Once all sessions are loaded & parsed, stats can be displayed.  Select one:

(05/15): top number is now selectable

(05/15) new 'least played songs' stat (One caveat, is that a song had to be played at least once to show up here)

At this point, I think (hope) the hardest part is behind me.  I should be able to crank out more interesting statistics at a much faster pace.

Big thanks to those that reached out with comments/ideas!  And for those that requested, I'll be sending links to try out the Stats beta shortly...


Serato Stats - quick progress report!

So I finally had some downtime this past weekend to work on this project (hard to come by these days).

Here’s a quick recap:
The Stats app is built on the same ’simple event’ framework as the API & utilizes an Async event hub to concurrently process session filesCreated 2 new API services to allow locating and loading/parsing of Serato session filesparsing a large number of files can take a bit of time (350 files took me roughly ~5 mins on my 12” macbook)Added useful ways to filter session files by: age (e.g. not older than 1 year), size, maxLoader service will also save parsed sessions to disk (on Mac defaults to /home/[USER]/.sslapi/SeratoSessionsLoaderService.dataSpeeds up follow-on usage by not having to re-parse sessions againNOTE 1: data will be overwritten and possibly have to be re-parsed when given different load parameters. Will be fixed in later release.NOTE 2: 350 files take up roughly ~12mb
Also implemented and tested the following “stats” capabilities: "Top Art…