Download the music and videos you can play on TIDAL, from lossless and hi-res FLAC to Dolby Atmos, using a terminal or a desktop app. Tidekeeper is a maintained fork of Tidal-Media-Downloader.
- Best available quality. FLAC up to 24-bit/192 kHz, with automatic fallback when a format is unavailable.
- Anything with a link. Tracks, albums, playlists, mixes, artists, videos, or a text file full of links.
- Tagged and organized. Metadata, cover art, and lyrics, in folders you name.
- Picks up where it left off. Interrupted downloads resume and finished files are skipped.
- Runs everywhere. Windows, macOS, Linux, Android (Termux), and Docker.
With Python 3.10 or newer (recommended):
python -m pip install -U "tidekeeper[gui]" # desktop app and terminal
python -m pip install -U tidekeeper # terminal onlyWithout Python: download the terminal or desktop app for Windows, macOS (Apple silicon or Intel), or Linux (x86-64 or ARM64) from the latest release.
Linux or Android (Termux): this script installs Tidekeeper and ffmpeg. On
Android, run termux-setup-storage first so downloads can reach shared storage.
curl -fsSL https://raw.githubusercontent.com/OpenNerdz/tidekeeper/main/install.sh | bashDocker: the image includes ffmpeg. Settings and downloads stay in the
mounted folders, which must be writable by user ID 1000.
docker build -t tidekeeper https://github.com/OpenNerdz/tidekeeper.git
docker run --rm -it -v "$PWD/config:/config" -v "$PWD/downloads:/downloads" tidekeeperAlso install ffmpeg, for example with
brew install ffmpeg, winget install ffmpeg, or sudo apt install ffmpeg.
Videos need it, and it saves lossless audio as .flac instead of .m4a.
-
Sign in. Run
tidekeeper, or opentidekeeper-guiand click Signed out → Start device login. Open the link it shows and approve the sign-in. The session is saved, so this is usually a one-time step. -
Download. Paste a TIDAL link at the terminal prompt, or run:
tidekeeper -l "https://tidal.com/browse/album/123456"In the desktop app, search for something or paste links in Links, then click Download now.
Downloads go to a download folder inside the directory you start Tidekeeper
from (Download/Tidekeeper on Android, /downloads in Docker). To choose a
permanent folder, use Settings or run tidekeeper -o ~/Music once. To set
the folder before Tidekeeper saves its first settings, for example in a script
or container, set the TIDEKEEPER_DOWNLOAD_PATH environment variable.
Run tidekeeper on its own for an interactive menu: paste a link, or pick a
number to sign in, change quality, choose a folder, or edit options. Or pass
options directly:
| Option | What it does |
|---|---|
-l, --link LINK |
Download a link, an ID, or a text file of links |
-o, --output FOLDER |
Set the download folder |
-q, --quality NAME |
Use one audio quality: Max, HiFi, High, Normal, or Atmos |
--quality-priority LIST |
Try qualities in order, for example Max,HiFi,High |
-r, --resolution NAME |
Set the highest video resolution: 1080, 720, 480, 360, or 240 |
--video-only |
Download only the videos from an artist, album, playlist, or mix |
--doctor |
Check your login, download folder, and ffmpeg |
--paths |
Show where settings, the login, and logs are stored |
--open-output |
Open the download folder |
--migrate-downloads FOLDER |
Merge downloads from an older literal-~ folder without replacing existing files |
--update |
Update Tidekeeper (--update-gui for the desktop app too) |
-c, --configPathOverride FOLDER |
Keep settings and the login in another folder |
-o, -q, --quality-priority, and -r are saved as your new defaults.
Links can be full URLs, links without https:// (such as
tidal.com/browse/track/123 or listen.tidal.com/album/456), or bare IDs.
List files can use any filename extension and hold links separated by lines,
spaces, or commas. Lines starting with # are comments, a file can include
other files, and repeated items are skipped. Tracks that fail are listed in
failed-tracks.txt in the download folder. Pass that file back to -l to retry
them.
Search the catalog or paste links, then build a queue. Download now starts right away, and Add to queue lets you line up several downloads before you click Start. You can drag links from a browser, or list files from your file manager, onto the window.
Select a queue row to see why it failed. Retry incomplete downloads only the items that did not finish. Settings apply to the next download; click Save to keep them after a restart.
| Shortcut | Action |
|---|---|
| Ctrl+F | Search |
| Enter | Add selected results to the queue |
| Delete | Remove selected queue items |
| Ctrl+Z | Undo the last removal |
| Ctrl+, | Open Settings |
| Esc | Close the side panel |
| Settings | Account |
|---|---|
![]() |
![]() |
| Quality | You get |
|---|---|
| Max (default) | FLAC up to 24-bit/192 kHz, when the track has it |
| HiFi | FLAC, 16-bit/44.1 kHz |
| High | AAC, 320 kbps |
| Normal | AAC, 96 kbps |
| Atmos | Dolby Atmos, when the release has an Atmos version |
New installs try Max → HiFi → High → Normal, so a track still downloads when
the best format is unavailable. -q picks one quality with no fallback, and
--quality-priority sets your own order. Videos download at the highest
resolution up to your setting. An old Master (MQA) setting now means lossless
FLAC, because TIDAL retired MQA in 2024.
By default, files are organized like this:
download/
└── Artist/
└── Album [123456] [2024]/
├── 01 - Artist - First Track.flac
├── 02 - Artist - Second Track.flac
└── cover.jpg
Change the layout with filename templates. Other
options, such as .lrc lyrics files, parallel downloads, request delays, and
playlist folders, are in Settings or the terminal menu's Options.
tidekeeper --update # terminal
tidekeeper --update-gui # desktop app and terminal (or click Update in Account)Standalone apps can't update themselves. Download the new version from the releases page.
Start with tidekeeper --doctor. It checks your login, download folder, and
ffmpeg, and tells you what to fix.
If another Tidekeeper process is already writing the same file, the download waits and tells you why. Local coordination uses a bounded set of lock slots in your private app-state folder, falling back to temporary storage when a home folder is unavailable. A shared download root also gets one hidden bounded lock folder so separate containers or computers can coordinate when the shared filesystem supports file locking; downloads continue with local protection if it does not.
Releases before 2026.9.29 could put album downloads in a literal ~ folder.
Tidekeeper now merges folders it can discover without replacing conflicts. For
an old folder elsewhere, run tidekeeper --migrate-downloads '/old/path/~/Music'.
I was signed out after updating or changing the TIDAL client
Sessions belong to the client that created them, so sign in again once. If you use a standalone app, make sure you downloaded the latest release.
Max downloads are only 16-bit/44.1 kHz
Max is a ceiling. Tracks that TIDAL only offers in CD quality stay 16-bit. For hi-res tracks, choose the Tidal HiRes client (desktop Settings → Advanced, or terminal menu option 7), save, and sign in again.
Playback fails with HTTP 404 / subStatus 4022
TIDAL rejected this client for that format, but your login is still valid.
Tidekeeper tries other endpoints and your fallback qualities automatically. Try
HiFi or --quality-priority Max,HiFi,High,Normal. If it keeps failing,
include the endpoint, client, country, and quality from the error in an issue.
Repeated HTTP 429 (too many requests)
TIDAL is limiting requests. Keep the request delay on and raise it to 30 or
60 seconds in Settings (terminal menu Options), then retry.
Videos fail or audio is saved as .m4a
Install ffmpeg (see Install) and run tidekeeper --doctor to confirm
Tidekeeper can find it.
macOS or Windows won't open the standalone app
The apps aren't code-signed. On macOS, run
xattr -d com.apple.quarantine tidekeeper-gui (or tidekeeper) in the folder
you extracted it to. On Windows, choose More info → Run anyway.
Termux: ffmpeg reports cannot locate symbol
Update all packages together, then reinstall ffmpeg:
pkg upgrade -y && pkg reinstall -y ffmpegIf that doesn't work, run termux-change-repo, pick another mirror, and repeat.
Still stuck? Open an issue with
the output of tidekeeper --version, how you installed Tidekeeper, your
operating system, and the full error message with any tokens removed.
Bug reports and pull requests are welcome. CONTRIBUTING.md covers setup and checks, and CHANGELOG.md lists every release. Report security issues privately as described in SECURITY.md.
Tidekeeper is released under the Apache 2.0 license. The original project was created by YaronH and contributors; see NOTICE.
Tidekeeper does not bypass access controls, subscription checks, or DRM. Download only what your account can play, where the law and TIDAL's terms allow it. This project is not affiliated with or endorsed by TIDAL or Block, Inc.



