#cli #terminal #youtube #tui

bin+lib youtube-tui

An aesthetically pleasing YouTube TUI written in Rust

17 releases (5 breaking)

new 0.6.2 Jan 29, 2023
0.6.0 Dec 24, 2022
0.5.3 Nov 28, 2022
0.4.4 Jul 14, 2022

#187 in Command-line interface

Download history 11/week @ 2022-10-16 20/week @ 2022-10-23 18/week @ 2022-10-30 31/week @ 2022-11-06 46/week @ 2022-11-13 79/week @ 2022-11-20 56/week @ 2022-11-27 14/week @ 2022-12-04 18/week @ 2022-12-11 24/week @ 2022-12-18 24/week @ 2022-12-25 38/week @ 2023-01-01 10/week @ 2023-01-08 10/week @ 2023-01-15 9/week @ 2023-01-22 43/week @ 2023-01-29

87 downloads per month



Read more in the user manual (including installation gude and documentation).


Written in Rust, the YouTube TUI is a lightweight and user friendly TUI for browsing YouTube content from the terminal.

It is like an app launcher, it launches other programs to do the heavy lifting (for example, mpv for playing videos).


The YouTube TUI can be customised through config files, they are located in ~/.config/youtube-tui and are in the YAML format.

Here's an example of the config file:

mouse_support: true
invidious_instance: https://vid.puffyan.us
max_watch_history: 50
allow_unicode: false
images: Sixels
refresh_after_modifying_search_filters: true
provider: YouTube
  browser: firefox
  video-player: mpv
  youtube-downloader: yt-dlp
  terminal-emulator: konsole -e

Anything from layouts to colours and keybindings can be customised, more on that later.


The YouTube TUI does not work on its own, it is instead like a TUI frontend for programs like mpv or yt-dlp/youtube-dl.

However, the programs to launch can be changed, and therefore the YouTube TUI does not rely on any specific dependencies to run.


The YouTube TUI allows you to browse YouTube with (almost) all of it's features, functions including:

  • View popular/trending videos
  • View information about channels, playlists and videos
  • Use search filters to sort and filter search results
  • Save browsing history

It also includes features like:

  • Vim-like commands
  • Mouse support
  • Entensible keybindings system

What it doesn't have

  • Subscriptions (first priority)
  • Download library (will implement)

How to contribute

You will need a general knowledge of the Rust programming language, and the ability to understand my spaghetti.

  1. Open an issue to make sure nobody else is working on the same feature
  2. Write code
  3. Open a pull request
  4. Get merged?

Or just fix that typo in README -_-


~398K SLoC