Lightweight YouTube client for Linux

trizen 9d64987b18 Util::normalize_filename(): replace multiple consecutive `/` with a single `%`. 9 hours ago
.github 343a608396 Create FUNDING.yml 3 years ago
bin 0479588e0a Changed the `remove-symbolic` icon name to `edit-delete-symbolic`, as it's a more common icon. 3 weeks ago
lib 9d64987b18 Util::normalize_filename(): replace multiple consecutive `/` with a single `%`. 9 hours ago
share 27e4ff09fe modified: share/ 3 weeks ago
t 6c42fb1f1a Version v3.5.4. 3 years ago
utils d8e058e76d Support for UTF-8 characters inside the config-files. 2 months ago
.gitignore ecaabe125c Make "Unicode::GCString" recommended. 2 years ago
Build.PL e244e3473b - Removed `Mozilla::CA` from `recommends`. 1 year ago
Changes 6edff6a897 Version 3.10.3 1 month ago
LICENSE 36f91117c9 modified: LICENSE 6 years ago
MANIFEST f67c1db5a6 renamed: bin/gtk3-youtube-viewer -> bin/gtk-youtube-viewer 1 year ago
MANIFEST.SKIP ab564f3a75 Version 3.5.9 3 years ago
Makefile.PL b39e68ca49 - Added in-memory memoization of `_get_video_info()`, `_extract_from_ytdl()` and `_extract_from_invidious()` methods. 2 years ago 306c42d71d Update copyright year. 7 months ago


A lightweight application for searching and playing videos from YouTube.


  • command-line interface to YouTube.



  • GTK+ interface to YouTube.




To install youtube-viewer, run:

    perl Build.PL
    sudo ./Build installdeps
    sudo ./Build install

To install gtk-youtube-viewer along with youtube-viewer, run:

    perl Build.PL --gtk
    sudo ./Build installdeps
    sudo ./Build install


For trying the latest commit of youtube-viewer, without installing it, execute the following commands:

    cd /tmp
    wget -O
    unzip -n
    cd youtube-viewer-master/bin


For youtube-viewer:

For gtk-youtube-viewer:

Optional dependencies:


To package this application, run the following commands:

    perl Build.PL --destdir "/my/package/path" --installdirs vendor [--gtk]
    ./Build test
    ./Build install --install_path script=/usr/bin


Starting with version 3.7.4, youtube-viewer provides the ~/.config/youtube-viewer/api.json file, which allows setting an YouTube API key and the client ID/SECRET values:

    "key":           "API_KEY",
    "client_id":     "CLIENT_ID",
    "client_secret": "CLIENT_SECRET"
  • Prerequisite: you must create a Google Platform project. Following the below steps should prompt you to create one if you do not already have one.
  • Enable the YouTube Data v3 API on your project: navigate here and click "Enable" (if you see a blue "Manage" button, it's already enabled).
  • Replace API_KEY with your YouTube API key. Create a new key here by clicking on "Create Credentials" > "API Key".
  • Optionally, in order to log in, replace CLIENT_ID and CLIENT_SECRET with your native client ID and client secret values, by creating a new OAuth 2.0 Client ID here: click "Create Credentials" > "OAuth client ID", then select "TV and Limited Input devices" (tutorial -- may be outdated).

The project must have the following scope enabled:

Also, in order to log in, grant access to the project in:

See also: #285, #308.


pipe-viewer is a fork of straw-viewer, which parses the YouTube website directly, and thus it does not require an YouTube API key.




After installing, you can find documentation with the following commands:

man youtube-viewer
perldoc WWW::YoutubeViewer


Copyright (C) 2012-2022 Trizen

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See for more information.