Skip to main content

Tidekeeper

Tidekeeper

Tidekeeper is an unofficial maintained fork of yaronzz/Tidal-Media-Downloader, with a reliable terminal workflow and optional desktop GUI. The primary command is tidekeeper; tidal-dl remains available for compatibility.

CI Build Release License Python

Install

Tidekeeper requires Python 3.10 or newer.

ffmpeg is recommended for video downloads and optional FLAC remux (tidekeeper --doctor reports whether it is available).

From Git (recommended)

python -m pip install -U "git+https://github.com/OpenNerdz/tidekeeper.git#subdirectory=TIDALDL-PY"
tidekeeper --help

GUI extras:

python -m pip install -U "tidekeeper[gui] @ git+https://github.com/OpenNerdz/tidekeeper.git#subdirectory=TIDALDL-PY"
tidekeeper-gui

One-line installer (Linux / Termux)

curl -fsSL https://raw.githubusercontent.com/OpenNerdz/tidekeeper/main/install.sh | bash

For Android shared storage, run termux-setup-storage and optionally set:

export TIDEKEEPER_DOWNLOAD_PATH="/storage/emulated/0/Download/Tidekeeper"

Prebuilt binaries

Terminal and desktop GUI executables for Windows, macOS, and Linux are attached to each GitHub Release.

Docker

Build the image from the repository, then persist account configuration and downloads with bind mounts. The image includes ffmpeg.

docker build -t tidekeeper .
docker run --rm -it \
  -v "$PWD/config:/config" \
  -v "$PWD/downloads:/downloads" \
  tidekeeper
docker run --rm \
  -v "$PWD/config:/config" \
  -v "$PWD/downloads:/downloads" \
  tidekeeper -l "https://tidal.com/browse/track/70973230"

The container runs as non-root UID 1000. Ensure both host directories are writable by that user. A GUI is not included in the container image.

Usage

tidekeeper --help
tidekeeper --doctor
tidekeeper --paths
tidekeeper --open-output
tidekeeper --update
tidekeeper -l "https://tidal.com/browse/track/70973230"
tidekeeper --video-only -l "https://tidal.com/browse/artist/123456"

Dolby Atmos downloads are opt-in with tidekeeper -q Atmos.

Failed downloads are saved to failed-tracks.txt in the download folder and can be retried with:

tidekeeper -l "/path/to/downloads/failed-tracks.txt"

Customizability

Custom filename formats are supported:

Tokens Description Album Track Video Playlist
{ArtistID} Comma separated list of each artists' ID for that media (i.e: 123, 456) :white_check_mark: :x: :x: :x:
{ArtistName} Comma separated list of each artists' name for that media (i.e: ABC, DEF) :white_check_mark: :x: :x: :x:
{ArtistName} Primary artist's name for that media :x: :white_check_mark: :white_check_mark: :x:
{ArtistsName} Comma separated list of each artists' name for that media (i.e: ABC, DEF) :x: :white_check_mark: :white_check_mark: :x:
{AlbumArtistID} Primary artist's ID for that media :white_check_mark: :x: :x: :x:
{AlbumArtistName} Primary artist's name for that media :white_check_mark: :x: :x: :x:
{Flag} Quality/content flags: M (Master), A (Dolby Atmos), E (Explicit) :white_check_mark: :x: :x: :x:
{AlbumID} :white_check_mark: :x: :x: :x:
{AlbumYear} :white_check_mark: :white_check_mark: :x: :x:
{AlbumTitle} :white_check_mark: :white_check_mark: :x: :x:
{AudioQuality} Audio quality reported by TIDAL (e.g. LOSSLESS, HI_RES) :white_check_mark: :white_check_mark: :x: :x:
{DurationSeconds} :white_check_mark: :white_check_mark: :x: :x:
{Duration} Duration formatted as MM:SS (or H:MM:SS) :white_check_mark: :white_check_mark: :x: :x:
{NumberOfTracks} :white_check_mark: :x: :x: :x:
{NumberOfVideos} :white_check_mark: :x: :x: :x:
{NumberOfVolumes} :white_check_mark: :x: :x: :x:
{ReleaseDate} :white_check_mark: :x: :x: :x:
{RecordType} :white_check_mark: :x: :x: :x:
{TrackID} :x: :white_check_mark: :x: :x:
{TrackNumber} :x: :white_check_mark: :x: :x:
{TrackTitle} :x: :white_check_mark: :x: :x:
{ExplicitFlag} :x: :white_check_mark: :white_check_mark: :x:
{StreamQuality} :x: :white_check_mark: :x: :x:
{Codec} :x: :white_check_mark: :x: :x:
{VideoID} :x: :x: :white_check_mark: :x:
{VideoNumber} :x: :x: :white_check_mark: :x:
{VideoTitle} :x: :x: :white_check_mark: :x:
{VideoYear} :x: :x: :white_check_mark: :x:
{PlaylistUUID} :x: :x: :x: :white_check_mark:
{PlaylistName} :x: :x: :x: :white_check_mark:

Desktop GUI

The GUI provides login, search, queueing, downloads, settings, diagnostics, and updates. After installing with the GUI extra above, launch it with tidekeeper-gui or tidekeeper --gui. Update GUI installs with tidekeeper --update-gui.

Search Queue
Search screen Queue screen
Settings Account
Settings screen Account screen

Troubleshooting

Run diagnostics first:

tidekeeper --doctor
tidekeeper --paths

For repeated HTTP 429 errors, keep Use request delay enabled and raise Request delay seconds to 30 or 60 before retrying.

If doctor warns that ffmpeg is missing, install it from your OS package manager (or use the Docker image). Video downloads and FLAC remux may otherwise be limited.

If Termux reports cannot locate symbol "x265_api_get_216", refresh its media packages with pkg upgrade -y && pkg reinstall -y ffmpeg x265. If that fails, change mirrors with termux-change-repo and retry.

Development

See CONTRIBUTING.md for setup and checks, CHANGELOG.md for release history, and SECURITY.md for private vulnerability reporting.

git clone https://github.com/OpenNerdz/tidekeeper.git
cd tidekeeper/TIDALDL-PY
python -m pip install -e .
python -m unittest discover -s tests

Build release artifacts with ./build.sh from the repository root.

Project policy

Tidekeeper does not aim to bypass access controls, subscription checks, or DRM. Use it only where permitted by law and applicable service terms. This project is not affiliated with or endorsed by TIDAL or Block, Inc.

The original project was created by YaronH and contributors. See NOTICE and LICENSE for attribution and licensing.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tidekeeper-2026.7.30.0.tar.gz (116.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tidekeeper-2026.7.30.0-py3-none-any.whl (123.0 kB view details)

Uploaded Python 3

File details

Details for the file tidekeeper-2026.7.30.0.tar.gz.

File metadata

  • Download URL: tidekeeper-2026.7.30.0.tar.gz
  • Upload date:
  • Size: 116.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.13

File hashes

Hashes for tidekeeper-2026.7.30.0.tar.gz
Algorithm Hash digest
SHA256 ec34a46a2a1e8468420750fc8187f46f5469ee7cd9fe0793390543e8473086a7
MD5 a10990fc78756005ebf6d3fa040909b2
BLAKE2b-256 f6df6f9e27f4b3e49e97431bfb0fb7c07d70bb002e2c232780b80f0df66ad484

See more details on using hashes here.

File details

Details for the file tidekeeper-2026.7.30.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tidekeeper-2026.7.30.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc71dd75aebcd5bf63cf273d946de51b51fc57f5b03e45e947fb629c9c3c1837
MD5 344f5ceb3b8227a2d27fd2c26f1813e7
BLAKE2b-256 f54cd9f5b92b851c54b6d24dd53e455a1d8abba1e33d09b8b9e8e4782d7c21e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page