Sign inSign up

rgnet1/tidal-dl

By rgnet1

Updated 3 days ago

Web UI wrapper for tidal-dl

Image
7

10K+

rgnet1/tidal-dl repository overview

Tidal DL Pro

Release Docker License

Tidal DL Pro is a browser-based TIDAL downloader. Run it in Docker, sign in to TIDAL once, then search, browse your library, and download from any device on your network.

A paid TIDAL subscription is required. Audio quality goes up to Hi-Res Lossless (24-bit / 192 kHz) when available.

Features

  • Search tracks, albums, artists, playlists, and videos — or paste a TIDAL URL
  • Your TIDAL library — playlists, mixes, and favorites in the sidebar
  • Download queue with live progress over WebSocket
  • Settings for download engine, audio/video quality, lyrics, and FLAC extraction
  • Dark / light mode

Quick start (Docker Hub)

The published image is rgnet1/tidal-dl:latest on Docker Hub. You do not need to clone this repo or build anything locally.

Create a folder for persistent data, download the compose file, and start:

mkdir -p tidal-dl-pro/config tidal-dl-pro/downloads
cd tidal-dl-pro

curl -fsSLO https://raw.githubusercontent.com/rgnet1/tidal-dl/master/docker-compose.yml

docker compose pull
docker compose up -d

Open http://localhost:8001, click Login to TIDAL, complete OAuth, then search or browse your library.

To update to the latest image later:

docker compose pull && docker compose up -d
Option B — docker pull and docker run
docker pull rgnet1/tidal-dl:latest

mkdir -p config downloads
docker run -d \
  --name tidal-dl-pro-web \
  -p 8001:8000 \
  -e PUID=1000 \
  -e PGID=1000 \
  -v "$(pwd)/config:/config" \
  -v "$(pwd)/downloads:/downloads" \
  --restart unless-stopped \
  rgnet1/tidal-dl:latest

Open http://localhost:8001.

Common commands
ActionCommand
View logsdocker compose logs -f tidal-dl-pro-web
Stopdocker compose down
Update imagedocker compose pull && docker compose up -d
Check healthcurl -sf http://localhost:8001/api/status

Docker Compose file

The repo's docker-compose.yml pulls the published image — it does not build locally:

services:
  tidal-dl-pro-web:
    image: rgnet1/tidal-dl:latest   # pulled from Docker Hub
    pull_policy: always             # check for updates on every `docker compose up`
    container_name: tidal-dl-pro-web
    ports:
      - "${TIDAL_DL_PRO_PORT:-8001}:8000"
    environment:
      PUID: "${PUID:-1000}"
      PGID: "${PGID:-1000}"
    volumes:
      - ./config:/config
      - ./downloads:/downloads
    restart: unless-stopped

Image: rgnet1/tidal-dl:latest — always use the :latest tag unless you are pinning a specific version.

Port mapping: the app listens on port 8000 inside the container and is published on host port 8001 by default. Override with TIDAL_DL_PRO_PORT:

TIDAL_DL_PRO_PORT=8080 docker compose up -d

Volumes:

Host pathContainer pathWhat it stores
./config/configOAuth tokens, settings, and per-engine config mirrors
./downloads/downloadsDownloaded audio and video files

Both directories must exist (or are created with mkdir -p) before first run. Data survives docker compose down and image updates as long as these bind mounts stay in place.

Health check: Docker polls /api/status every 30 seconds. If the container is unhealthy, check logs with docker compose logs tidal-dl-pro-web.

Configuration

Set these in a .env file next to docker-compose.yml, or export them in your shell:

VariableDefaultPurpose
TIDAL_DL_PRO_PORT8001Host port mapped to the web UI
PUID1000UID the container runs as — set to id -u on Linux if files end up owned by root
PGID1000GID to run as — set to id -g on Linux
ACTIVE_ENGINE(unset)Force engine on boot: tidal-dl-ng or tiddl; overridden once you change it in Settings

On first boot the entrypoint remaps the container user to PUID:PGID and chowns /config. Your TIDAL OAuth token lives at ./config/tidal_dl_ng/token.json on the host.

Web UI settings

Open the gear icon (top-right):

  • Download enginetidal-dl-ng (default; full library + mixes) or tiddl (experimental). Tokens are mirrored so you can switch without logging in again.
  • Audio quality — Low up to Hi-Res Lossless (requires TIDAL HiFi Plus)
  • Video quality — 360p–1080p
  • Skip existing, download delay, and concurrency
  • Metadata — embed lyrics, save .lrc files, FLAC extraction (FFmpeg is bundled in the image)

API

Interactive docs: http://localhost:8001/docs

MethodPathPurpose
GET/api/statusHealth and auth state
POST/api/auth/loginStart TIDAL OAuth
POST/api/searchSearch TIDAL
GET/api/library/listsPlaylists, mixes, favorites
POST/api/download/addQueue items
POST/api/download/startStart the queue
GET/PUT/api/settingsRead or update settings
WebSocket/wsLive download progress

Troubleshooting

Port already in use

TIDAL_DL_PRO_PORT=8002 docker compose up -d

Wrong file ownership on ./config or ./downloads

PUID=$(id -u) PGID=$(id -g) docker compose up -d

Container won't start

docker compose logs tidal-dl-pro-web
docker compose pull && docker compose up -d

Pulling a stale image

Force Docker to fetch the latest from Hub:

docker compose pull --ignore-buildable
docker compose up -d

FLAC extraction failed

FFmpeg is included in the image. If extraction still fails, check the download logs in the web UI queue panel.

Building locally (developers)

Only needed if you are modifying the source code. Clone the repo and use docker-compose.build.yml:

git clone https://github.com/rgnet1/tidal-dl.git
cd tidal-dl

mkdir -p config downloads
docker compose -f docker-compose.build.yml up -d --build

Disclaimer

  • For educational purposes only.
  • Do not use this to distribute or pirate music.
  • It may be illegal to use this application in your country.

Credits

Built on tidal-dl-ng by @exislow.

Tag summary

Content type

Image

Digest

sha256:018df4dd1

Size

235.5 MB

Last updated

3 days ago

docker pull rgnet1/tidal-dl