Skip to main content

logo

Tests Codecov Version Python Platform license: MIT style: ruff

Disclaimer: This project is not affiliated with Pioneer Corp. or its related companies in any way and has been written independently! Pyrekordbox is licensed under the MIT license. The maintainers of the project are not liable for any damages to your Rekordbox library.

Pyrekordbox is a Python package for interacting with the library and export data of Pioneers Rekordbox DJ Software. It currently supports

  • Rekordbox master.db database
  • Rekordbox XML database
  • Analysis files (ANLZ)
  • My-Setting files
  • Device library plus

Check the changelog for recent changes!

Tested Rekordbox versions: 5.8.6 | 6.7.7 | 7.0.9

🔧 Installation

Pyrekordbox is available on PyPI:

pip install pyrekordbox

Alternatively, it can be installed via GitHub

pip install git+https://github.com/dylanljones/pyrekordbox.git@VERSION

where VERSION is a release, tag or branch name.

Dependencies

Unlocking the new Rekordbox master.db database file requires SQLCipher. Pyrekordbox tries to install pre-built wheels with included sqlcipher binaries via the sqlcipher3-wheels package. If this fails, it can be installed manually following the installation guide.

🚀 Quick-Start

Read the full documentation on ReadTheDocs!

Configuration

Pyrekordbox looks for installed Rekordbox versions and sets up the configuration automatically. The configuration can be checked by calling:

from pyrekordbox import show_config

show_config()

If for some reason the configuration fails the values can be updated by providing the paths to the directory where Pioneer applications are installed (pioneer_install_dir) and to the directory where Pioneer stores the application data (pioneer_app_dir)

from pyrekordbox.config import update_config

update_config("<pioneer_install_dir>", "<pioneer_app_dir>")

Rekordbox master database

Rekordbox 6 and 7 use a SQLite database for storing the collection content. Unfortunatly, the master.db SQLite database is encrypted using SQLCipher, which means it can't be used without the encryption key. However, since your data is stored and used locally, the key must be present on the machine running Rekordbox.

Pyrekordbox can unlock the new Rekordbox master.db SQLite database and provides an easy interface for accessing the data stored in it:

from pyrekordbox import MasterDatabase

db = MasterDatabase()

for content in db.get_content():
    print(content.Title, content.Artist.Name)

playlist = db.get_playlist()[0]
for song in playlist.Songs:
    content = song.Content
    print(content.Title, content.Artist.Name)

Fields in the Rekordbox database that are stored without linking to other tables can be changed via the corresponding property of the object:

content = db.get_content()[0]
content.Title = "New Title"
db.commit()

So far only a few tables support adding or deleting entries:

  • DjmdContent: Tracks
  • DjmdPlaylist: Playlists/Playlist Folders
  • DjmdSongPlaylist: Songs in a playlist
  • DjmdAlbum: Albums
  • DjmdArtist: Artists
  • DjmdGenre: Genres
  • DjmdLabel: Labels

Rekordbox XML

The Rekordbox XML database is used for importing (and exporting) Rekordbox collections including track metadata and playlists. They can also be used to share playlists between two databases.

Pyrekordbox can read and write Rekordbox XML databases.

from pyrekordbox.rbxml import RekordboxXml

xml = RekordboxXml("database.xml")

track = xml.get_track(0)  # Get track by index (or TrackID)
track_id = track.TrackID  # Access via attribute
name = track["Name"]  # or dictionary syntax

path = "/path/to/file.mp3"
track = xml.add_track(path)  # Add new track
track["Name"] = "Title"  # Add attributes to new track
track["TrackID"] = 10  # Types are handled automatically

# Get playlist (folder) by path
pl = xml.get_playlist("Folder", "Sub Playlist")
keys = pl.get_tracks()  # Get keys of tracks in playlist
ktype = pl.key_type  # Key can either be TrackID or Location

# Add tracks and sub-playlists (folders)
pl.add_track(track.TrackID)
pl.add_playlist("Sub Sub Playlist")

Rekordbox ANLZ files

Rekordbox stores analysis information of the tracks in the collection in specific files, which also get exported to decives used by Pioneer professional DJ equipment. The files have names like ANLZ0000 and come with the extensions .DAT, .EXT or .2EX. They include waveforms, beat grids (information about the precise time at which each beat occurs), time indices to allow efficient seeking to specific positions inside variable bit-rate audio streams, and lists of memory cues and loop points.

Pyrekordbox can parse all three analysis files, although not all the information of the tracks can be extracted yet.

from pyrekordbox.anlz import AnlzFile

anlz = AnlzFile.parse_file("ANLZ0000.DAT")
beat_grid = anlz.get("beat_grid")
path_tags = anlz.getall_tags("path")

Changing and creating the Rekordbox analysis files is planned as well, but for that the full structure of the analysis files has to be understood.

Unsupported ANLZ tags:

  • PWV6
  • PWV7
  • PWVC

Rekordbox My-Settings

Rekordbox stores the user settings in *SETTING.DAT files, which get exported to USB devices. These files are either in the PIONEERdirectory of a USB drive (device exports), but are also present for on local installations of Rekordbox 6. The setting files store the settings found on the "DJ System" > "My Settings" page of the Rekordbox preferences. These include language, LCD brightness, tempo fader range, crossfader curve and other settings for Pioneer professional DJ equipment.

Pyrekordbox supports both parsing and writing My-Setting files.

from pyrekordbox.mysettings import read_mysetting_file

mysett = read_mysetting_file("MYSETTINGS.DAT")
sync = mysett.get("sync")
quant = mysett.get("quantize")

The DEVSETTING.DAT file is still not supported

OneLibrary

For newer generation Pioneer DJ devices, Rekordbox exports a new library format to the USB storage device (or SD card), called OneLibrary (formerly Device Library Plus). The database schema is similar to the main Rekordbox database. It contains a selection of tables from the main database, with similar columns and data types.

Pyrekordbox can unlock the Rekordbox exportLibrary.db OneLibrary database and provides an easy interface for accessing the data stored in it:

from pyrekordbox import OneLibrary

db = OneLibrary("exportLibrary.db")

for content in db.get_content():
    print(content.title, content.artist.name)

playlist = db.get_playlist()[0]
for song in playlist.songs:
    content = song.content
    print(content.title, content.artist.name)

💡 File formats

A summary of the Rekordbox file formats can be found in the documentation:

💻 Development

If you encounter an issue or want to contribute to pyrekordbox, please feel free to get in touch, open an issue or create a new pull request! A guide for contributing to pyrekordbox and the commit-message style can be found in CONTRIBUTING.

For general questions or discussions about Rekordbox, please use GitHub Discussions instead of opening an issue.

Pyrekordbox is tested on Windows and MacOS, however some features can't be tested in the CI setup since it requires a working Rekordbox installation.

♡ Sponsor

If pyrekordbox has helped you or saved you time, consider supporting its development - every coffee makes a difference!

BuyMeACoffee

  • crate-digger: Java library for fetching and parsing rekordbox exports and track analysis files.
  • rekordcrate: Library for parsing Pioneer Rekordbox device exports
  • supbox: Get the currently playing track from Rekordbox v6 as Audio Hijack Shoutcast/Icecast metadata, display in your OBS video broadcast or export as JSON.
  • Deep Symmetry has an extensive analysis of Rekordbox's ANLZ and .edb export file formats https://djl-analysis.deepsymmetry.org/djl-analysis

Metadata

Release files for pyrekordbox 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyrekordbox 0.5.0
File Size Uploaded
pyrekordbox-0.5.0.tar.gz 2.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyrekordbox 0.5.0
File Interpreter ABI Platform
pyrekordbox-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / pyrekordbox-0.5.0.tar.gz

Download URL pyrekordbox-0.5.0.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
4a5181ab2d9f0c73169ba8c04ba854b8e786251de58a6d35a610d4d04c7e5885
BLAKE2b-256 checksum
How to use checksums
f0fbd4c136615b9eab3854ec446c93467660fbb9086f24dafa3becf0a0914404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / pyrekordbox-0.5.0-py3-none-any.whl

Download URL pyrekordbox-0.5.0-py3-none-any.whl
Size 92.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b588e95a839994bef5b992ed34887dbf79233e71ebbb61c93ebb00466af423e5
BLAKE2b-256 checksum
How to use checksums
07fea00d1f669f32b88f6f48b2f4350fe94d31486215333b5a35a4406d7bd961
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page