Skip to main content

A full-featured YouTube Music TUI client for the terminal

Project description

ytm-player — YouTube Music in your terminal — synced lyrics, vim keys, mpv backend. Runs on Linux, macOS, Windows. Free-tier supported.

Visit ytm-player.com

PyPI Python 3.10+ CI License

Install  Quickstart  Documentation  Contributing  Changelog


ytm-player demo

Available on PyPI, AUR, NixOS, and Gentoo — actively maintained with cross-platform support.

Features

  • Vim-style keybindings — j/k movement, multi-key sequences (g s for search, g l for library), count prefixes (5j)
  • Synced lyrics — live-highlighted with LRCLIB fallback for tracks YouTube doesn't have, with title sanitization for better LRCLIB matches
  • mpv backend — gapless audio, stream prefetching, broad codec support
  • Cross-platform native integrations — MPRIS (Linux), Now Playing (macOS), media keys (Windows)
  • Theming — 18+ Textual themes plus per-app color overrides in theme.toml
  • Spotify import — pull playlists in via API or scraper fallback
  • CLI + IPC — control a running TUI from another terminal (ytm play, ytm pause, etc.)
  • Free-tier support — works without YouTube Music Premium
  • Session resume — last-playing track + queue restored on launch
  • Local cache — LRU audio cache for offline-like replay of previously heard tracks
  • Discord + Last.fm — Rich Presence and scrobbling

Requirements

  • Python 3.10+
  • mpv (audio playback backend, must be installed system-wide)
  • A YouTube Music account (free or Premium)

Install

# PyPI (Linux / macOS / Windows)
pip install ytm-player

# Arch / CachyOS / Manjaro (AUR)
yay -S ytm-player-git

For NixOS, Gentoo, Windows-specific mpv DLL setup, source builds, and optional extras (Discord, Last.fm, Spotify import, etc.), see docs/installation.md.

Quickstart

ytm setup    # one-time auth (auto-detects browser cookies)
ytm          # launch the TUI

Windows: replace ytm with py -m ytm_player.

Documentation

Topic Link
Per-platform install + optional extras docs/installation.md
config.toml + theme.toml reference docs/configuration.md
Full keyboard + mouse keybindings docs/keybindings.md
All ytm CLI subcommands docs/cli-reference.md
Spotify playlist import docs/spotify-import.md
Troubleshooting (mpv / auth / MPRIS / macOS / cache) docs/troubleshooting.md
File layout + stack docs/architecture.md
Contributing CONTRIBUTING.md
Security policy SECURITY.md

Contributors

Thanks to @dmnmsc, @Villoh, @valkyrieglasc, @dsafxP, @Thayrov, @glywil, @Kineforce, @CarterSnich, @Tohbuu, @nitsujri, @uhs-robert, @moschi, @firedev, @wgordon17, @gitiy1, @hanandewa5, @aimar-a, @Gimar250, @Wiibleyde, @szx19970521, @aaguilar-hub, @TheoBassaw, @holstvoogd, and @ProfessionalGriefer for bug reports, fixes, packaging, and platform support.

Changelog

See CHANGELOG.md for the full release history.

Project details


Download files

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

Source Distribution

ytm_player-1.9.4.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

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

ytm_player-1.9.4-py3-none-any.whl (240.5 kB view details)

Uploaded Python 3

File details

Details for the file ytm_player-1.9.4.tar.gz.

File metadata

  • Download URL: ytm_player-1.9.4.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ytm_player-1.9.4.tar.gz
Algorithm Hash digest
SHA256 8a7cad29588bd71db25fe051153d50290ac347439c9069709b05648d096f637a
MD5 d4defa9a9be8f2530ecf637361746f95
BLAKE2b-256 51db7a77b87d29056eb223218c30286da3f55c1b95568824e65dc59a76f0e4da

See more details on using hashes here.

Provenance

The following attestation bundles were made for ytm_player-1.9.4.tar.gz:

Publisher: publish.yml on peternaame-boop/ytm-player

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

File details

Details for the file ytm_player-1.9.4-py3-none-any.whl.

File metadata

  • Download URL: ytm_player-1.9.4-py3-none-any.whl
  • Upload date:
  • Size: 240.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ytm_player-1.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aae00a896fa7563257e9dfe9d1f2fc1161021a901eef3b143bb6760453fda72d
MD5 cf88ba17a63e21259bb3208dd3308484
BLAKE2b-256 514f0c12298277969c73dcc9152f158462a12e205359567a4b4e21dc7f562ac2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ytm_player-1.9.4-py3-none-any.whl:

Publisher: publish.yml on peternaame-boop/ytm-player

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

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