Skip to main content

Ticli

An unofficial terminal music player for TIDAL. Search, browse, queue, and play music — all from your terminal. Not affiliated with TIDAL.

Ticli connects directly to TIDAL's API using your premium account. No desktop app needed. Just authenticate, search, and play.

Works on macOS and Linux.

╭──────────────────────── Ticli ────────────────────────╮
│                                                        │
│  ▶ ♥ Arlo Parks - Sophie                               │
│     Super Sad Generation                               │
│     1:47 ━━━━━━━━●━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3:28    │
│     Queue: 3/12  16/44.1 FLAC                          │
│     Next: Cola • Arlo Parks                            │
│                                                        │
│  [space] play/pause  [n/→] next  [←] prev             │
│  [s] search  [q] queue  [p] playlists                  │
│  [l] like  [r] radio  [t] mini  [m] more               │
│                                                        │
╰────────────────────────────────────────────────────────╯

Features

  • Search — Find tracks, albums, artists, and playlists
  • Browse — Navigate album and playlist tracklists
  • Queue — Manage your playback queue, reorder, remove tracks
  • Playlists — Browse and play your saved playlists
  • Likes — Toggle favorites on any track
  • Radio — Generate a station from any track
  • Mini mode — Condensed single-line display
  • Session restore — Picks up where you left off
  • Lossless & Hi-Res — Stream up to 24-bit/192kHz FLAC
  • Downloads — Keep tracks in your own music folder, tagged
  • Secure auth — OAuth tokens stored in your OS keychain

Install

Requires Python 3.10+ and mpv.

# macOS
brew install mpv
pip install tidal-cli

# Ubuntu / Debian
sudo apt install mpv python3-pip
pip install tidal-cli

For secure token storage in your OS keychain (recommended):

pip install "tidal-cli[keyring]"

Usage

ticli

On first run you'll get a URL to authorize with your TIDAL account. After that, your session is cached and you go straight to the player.

Quality

ticli --quality MAX     # FLAC, up to 24-bit/192 kHz
ticli --quality HIGH    # FLAC, 16-bit/44.1 kHz — the default
ticli --quality MEDIUM  # AAC 320 kbps
ticli --quality LOW     # AAC 96 kbps

The names follow TIDAL's own app. FLAC (HIGH and MAX) requires the PKCE sign-in: ticli --login-flow pkce, or press u on the settings page later. The old spellings LOSSLESS and HIRES still work as aliases.

Keybindings

Player

Key Action
space Play / pause
n Next track
Previous track
s Search
q Queue
p Playlists
l Like / unlike track
r Start radio from track
t Toggle mini player
m Show more controls
esc Quit

Search

Key Action
Navigate results
enter Play track / open album or artist
backspace Delete character
esc Back

Queue

Key Action
Navigate
enter Jump to track
x Remove track
esc Back

How it works

Ticli uses tidalapi to authenticate and fetch audio stream URLs. Audio is played through mpv. The TUI is built with Rich.

┌─────────┐     OAuth      ┌───────────┐    stream URL    ┌───────────┐
│  Ticli  │ ──────────────► │  TIDAL    │ ──────────────►  │    mpv    │
│  (TUI)  │ ◄────────────── │  API      │                  │           │
└─────────┘    metadata     └───────────┘                  └───────────┘

Requirements

  • macOS or Linux
  • Python 3.10+
  • TIDAL Premium subscription
  • mpv

Credits

Created and maintained by odonald.

Contributors:

  • Garrett Simko — lossless/hi-res playback (PKCE login, segmented DASH streams), album artwork, metadata and audio caching, scrubbing, scoped search, the artist page, and macOS media keys.

Support

If you enjoy Ticli, consider buying me a coffee.

License

MIT

Download files

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

Source Distribution

tidal_cli-1.0.3.tar.gz (359.4 kB view details)

Uploaded Source

Built Distribution

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

tidal_cli-1.0.3-py3-none-any.whl (381.2 kB view details)

Uploaded Python 3

File details

Details for the file tidal_cli-1.0.3.tar.gz.

File metadata

  • Download URL: tidal_cli-1.0.3.tar.gz
  • Upload date:
  • Size: 359.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tidal_cli-1.0.3.tar.gz
Algorithm Hash digest
SHA256 7ac0ce07339e265b8220d27871f2eb3b2aaec58e02a7523251f05006a813a33b
MD5 e69e86f064b84c6a93865a4cb6bfc544
BLAKE2b-256 7e1340bc3e37936d34fa218ea7cb7668c3601160148052b65a24b527542592ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for tidal_cli-1.0.3.tar.gz:

Publisher: publish.yml on odonald/ticli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tidal_cli-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: tidal_cli-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 381.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tidal_cli-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 708d46c811a0c83d076c207a2510c52167f15420b57acc94012072809e2035c5
MD5 af23e414faf54b368787c5702dd67860
BLAKE2b-256 3d60f7c4155b1726e654d522f4b030ea468a63395ea1510b1abb6b58651f789a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tidal_cli-1.0.3-py3-none-any.whl:

Publisher: publish.yml on odonald/ticli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 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