OpenDeezer
An open source reimplementation of Deezer. Log in with your Deezer ARL,
browse your liked songs, playlists and search, and stream — the track is
downloaded, Blowfish stripe-decrypted, decoded and played locally (MP3, or
FLAC on HiFi). Your ARL never leaves your machine except in the requests it
makes to Deezer.
One Go engine does the whole streaming path (login, decrypt, decode, playback);
six native front-ends sit on top of it. By Cycl0o0.
Clients
| Client |
Stack |
Builds |
| Terminal (TUI) |
Go · Bubble Tea |
linux · macOS · windows (amd64/arm64) |
| macOS |
SwiftUI · Liquid Glass (macOS 26) |
universal (Apple Silicon + Intel) gui/macos |
| Linux (unified) |
auto-picks GTK4 or Qt6 by desktop |
x86_64 · aarch64 gui/linux |
| GNOME |
GTK4 · libadwaita |
x86_64 · aarch64 gui/gnome |
| KDE |
Qt6 Widgets · Breeze |
x86_64 · aarch64 gui/kde |
| Windows |
WinUI 3 · C++/WinRT · Fluent |
x64 gui/windows |
The unified Linux client is one opendeezer command that auto-selects the
native toolkit for your desktop (Qt/Breeze on KDE-family, GTK4/libadwaita
elsewhere) — LibreOffice-style. The standalone gui/gnome / gui/kde binaries
are also available if you prefer one toolkit.
Prebuilt binaries for everything are on the Releases page.
Features
- Quality tiers — Normal (MP3 128), High (MP3 320), HiFi (FLAC lossless);
HiFi auto-falls-back to MP3 when your account or the track isn't entitled.
- Liked songs, playlists, search; shuffle, repeat, seek, volume.
- OS media controls + now-playing — MPRIS on Linux (GNOME/KDE/TUI media keys
- overlays), Now Playing + media keys on macOS, SMTC on Windows.
- Background playback / close-to-tray in the GUIs.
- Shows the actual output format that's playing (e.g. "FLAC · lossless").
- Album art (truecolor half-blocks in the TUI; native everywhere else).
- Settings persisted to
~/.config/opendeezer/; ARL stays local.
Install
Download a binary from Releases, or build the TUI:
make build # -> ./opendeezer (or: go build -o opendeezer ./cmd/opendeezer)
./opendeezer -save-arl <your-arl> # writes ~/.config/opendeezer/arl.txt (0600)
./opendeezer
Or pass it inline: DEEZER_ARL=<your-arl> ./opendeezer. For the GUIs, see each
gui/<platform>/README.md for build steps.
Your ARL is the arl cookie from an authenticated deezer.com browser session.
Treat it like a password — it grants access to your account.
Requirements
- A Deezer Premium account (HiFi tier for FLAC).
- Building from source: Go 1.24+ and a working audio device.
- Linux: ALSA dev headers (
libasound2-dev); plus the toolkit dev packages
for the GUIs (GTK4/libadwaita/json-glib, and/or Qt6).
- macOS GUI: macOS 26 (Tahoe) + Xcode 26 for the Liquid Glass APIs.
- Windows GUI: Windows 10 1809+/11, Visual Studio 2022 + Windows App SDK,
and MinGW-w64 (Go cgo builds the engine DLL).
- TUI album art needs a 256-color or truecolor terminal.
TUI controls
| Key |
Action |
|
Key |
Action |
| ↑/↓ |
move |
|
z |
toggle shuffle |
| enter |
open / play |
|
r |
cycle repeat (off→all→one) |
| esc / ⌫ |
back |
|
+/- |
volume |
| space |
play / pause |
|
←/→ |
seek ±10s |
| n / p |
next / prev |
|
h |
quality (Normal→High→HiFi) |
| / |
search |
|
c |
now-playing + art |
| s |
stop |
|
? |
credits · q quit |
How it works
ARL ─login (gw-light)→ browse (gw + public REST)
→ resolve track → encrypted CDN URL (MP3 128/320 or FLAC)
→ HTTP GET → Blowfish BF_CBC_STRIPE decrypt
→ MP3 (go-mp3) / FLAC (mewkiz) decode → PCM out (oto)
internal/deezer — login, browse, track→URL resolve, the stripe decryptor.
internal/audio — decrypt + MP3/FLAC decode + seekable playback.
internal/mpris — Linux MPRIS media controls.
internal/ui — the Bubble Tea TUI.
corelib — the engine exposed as a C ABI (-buildmode=c-archive for
macOS/Linux, -buildmode=c-shared DLL for Windows) so the native GUIs link it.
Build from source
Clone the repo, then build whichever client you want — they all build the same
Go engine (corelib) underneath. Each build.sh / build.ps1 compiles the
engine first, then the native app.
Terminal (any OS) — Go 1.24+ (Linux also needs libasound2-dev):
go build -o opendeezer ./cmd/opendeezer # or: make build
macOS app — macOS 26 (Tahoe) + Xcode 26, Go:
cd gui/macos && make app # -> OpenDeezer.app (universal: Apple Silicon + Intel)
Linux — unified (auto-picks GTK/Qt) — libgtk-4-dev libadwaita-1-dev libjson-glib-dev qt6-base-dev libasound2-dev meson ninja-build cmake + gcc, Go:
cd gui/linux && ./build.sh && ./dist/opendeezer
Linux — single toolkit:
cd gui/gnome && ./build.sh && ./opendeezer-gnome # GTK4 / libadwaita
cd gui/kde && ./build.sh && ./opendeezer-kde # Qt6 / Breeze
Windows app — Windows 10/11, Visual Studio 2022 + Windows App SDK,
MinGW-w64 (Go cgo), Go:
cd gui\windows; .\build.ps1 # -> bin\x64\Release\OpenDeezer.exe
FAQ
What's an ARL?
Your Deezer session token — the arl cookie from a logged-in deezer.com
browser session. It authenticates you the same way the official app does. Treat
it like a password; it only ever lives on your own machine.
Why does it need my Deezer login (ARL) instead of an API key?
Deezer's public API doesn't allow full-track streaming. The only way to play
your music is the same authenticated path the official client uses, which needs
your session (the ARL).
Why Deezer Premium only?
Streaming full, high-quality tracks (and FLAC) is a Premium entitlement. A free
account can't stream full tracks the way OpenDeezer plays them. OpenDeezer only
plays content your own account is already entitled to.
Why can't I download / save tracks?
OpenDeezer is a player, not a ripper. It decrypts and decodes each track in
memory to play it — it never writes tracks to disk. Saving decrypted files
would be piracy; that's deliberately not what this does. Stream your own
entitled music, like the official app.
Does my ARL get uploaded anywhere?
No. Login, decrypt and decode all run on your machine; the only requests that
leave are to Deezer itself. The in-browser config generator never uploads your
token either.
Is this legal? Will my account get banned?
Grey zone. It reaches Deezer the unofficial way and decrypts your own entitled
content locally, which almost certainly breaks Deezer's terms for third-party
apps. Personal/educational use, your own Premium account, your own risk. Not
affiliated with Deezer.
Does it support HiFi / FLAC?
Yes — if your account is HiFi-entitled. Pick HiFi in settings (or press h in
the TUI); it streams lossless FLAC and falls back to MP3 when a track or account
isn't entitled.
Why not just use the official app?
Mostly because it's a reverse-engineering project and a learning exercise. You
also get lightweight, local-first native clients (including a terminal one), no
telemetry, on platforms the official app may not serve.
Is it open source?
Yes, AGPL-3.0. Read it, build it, audit exactly what it does.
The fine print
Personal/educational use, your own Premium account, your own risk. It reaches
Deezer the unofficial way and decrypts your own entitled content locally, which
almost certainly breaks Deezer's terms for third-party apps. Not affiliated with
Deezer. AGPL-3.0.