invidious 0.20.1

Invidious is an alternative front-end to YouTube
  • 0.20.1 - November 19, 2019
  • 0.20.0 - November 6, 2019
  • 0.19.1 - July 30, 2019
  • 0.19.0 - July 13, 2019
  • 0.18.0 - June 6, 2019


Build Status

Invidious is an alternative front-end to YouTube

  • Audio-only mode (and no need to keep window open on mobile)
  • Free software (AGPLv3 licensed)
  • No ads
  • No need to create a Google account to save subscriptions
  • Lightweight (homepage is ~4 KB compressed)
  • Tools for managing subscriptions:
    • Only show unseen videos
    • Only show latest (or latest unseen) video from each channel
    • Delivers notifications from all subscribed channels
    • Automatically redirect homepage to feed
    • Import subscriptions from YouTube
  • Dark mode
  • Embed support
  • Set default player options (speed, quality, autoplay, loop)
  • Does not require JS to play videos
  • Support for Reddit comments in place of YT comments
  • Import/Export subscriptions, watch history, preferences
  • Does not use any of the official YouTube APIs
  • Developer API

BTC: 356DpZyMXu6rYd55Yqzjs29n79kGKWcYrY
BCH: qq4ptclkzej5eza6a50et5ggc58hxsq5aylqut2npk

Invidious Instances

See Invidious Instances for a full list of publicly available instances.

Official Instances


Player Preferences Subscriptions


See Invidious-Updater for a self-contained script that can automatically install and update Invidious.


Build and start cluster:

$ docker-compose up

And visit localhost:3000 in your browser.

Rebuild cluster:

$ docker-compose build

Delete data and rebuild:

$ docker volume rm invidious_postgresdata
$ docker-compose build


Install dependencies

# Arch Linux
$ sudo pacman -S base-devel shards crystal librsvg postgresql

# Ubuntu or Debian
# First you have to add the repository to your APT configuration. For easy setup just run in your command line:
$ curl -sSL | sudo bash
# That will add the signing key and the repository configuration. If you prefer to do it manually, execute the following commands:
$ curl -sL "" | sudo apt-key add -
$ echo "deb crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list
$ sudo apt-get update
$ sudo apt install crystal libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev postgresql librsvg2-bin libsqlite3-dev

Add invidious user and clone repository

$ useradd -m invidious
$ sudo -i -u invidious
$ git clone
$ exit

Setup PostgresSQL

$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
$ sudo -i -u postgres
$ psql -c "CREATE USER kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml
$ createdb -O kemal invidious
$ psql invidious kemal < /home/invidious/invidious/config/sql/channels.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/videos.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/channel_videos.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/users.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/session_ids.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/nonces.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/annotations.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/playlists.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/playlist_videos.sql
$ exit

Setup Invidious

$ sudo -i -u invidious
$ cd invidious
$ shards update && shards install
$ crystal build src/ --release
# test compiled binary
$ ./invidious # stop with ctrl c
$ exit

systemd service

$ sudo cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service
$ sudo systemctl enable invidious.service
$ sudo systemctl start invidious.service


$ sudo echo "/home/invidious/invidious/invidious.log {
rotate 4
minsize 1048576
}" | tee /etc/logrotate.d/invidious.logrotate
$ sudo chmod 0644 /etc/logrotate.d/invidious.logrotate


# Install dependencies
$ brew update
$ brew install shards crystal postgres imagemagick librsvg

# Clone repository and setup postgres database
$ git clone
$ cd invidious
$ brew services start postgresql
$ psql -c "CREATE ROLE kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml
$ createdb -O kemal invidious
$ psql invidious kemal < config/sql/channels.sql
$ psql invidious kemal < config/sql/videos.sql
$ psql invidious kemal < config/sql/channel_videos.sql
$ psql invidious kemal < config/sql/users.sql
$ psql invidious kemal < config/sql/session_ids.sql
$ psql invidious kemal < config/sql/nonces.sql
$ psql invidious kemal < config/sql/annotations.sql
$ psql invidious kemal < config/sql/privacy.sql
$ psql invidious kemal < config/sql/playlists.sql
$ psql invidious kemal < config/sql/playlist_videos.sql

# Setup Invidious
$ shards update && shards install
$ crystal build src/ --release

Update Invidious

You can see how to update Invidious here.


$ ./invidious -h
Usage: invidious [arguments]
    -b HOST, --bind HOST             Host to bind (defaults to
    -p PORT, --port PORT             Port to listen for connections (defaults to 3000)
    -s, --ssl                        Enables SSL
    --ssl-key-file FILE              SSL key file
    --ssl-cert-file FILE             SSL certificate file
    -h, --help                       Shows this help
    -c THREADS, --channel-threads=THREADS
                                     Number of threads for refreshing channels (default: 1)
    -f THREADS, --feed-threads=THREADS
                                     Number of threads for refreshing feeds (default: 1)
    -o OUTPUT, --output=OUTPUT       Redirect output (default: STDOUT)
    -v, --version                    Print version

Or for development:

$ curl -fsSLo- | crystal eval
$ ./sentry
πŸ€–  Your SentryBot is vigilant. beep-boop...


Documentation can be found in the wiki.


Extensions can be found in the wiki, as well as documentation for integrating it into other projects.

Made with Invidious

  • FreeTube: An Open Source YouTube app for privacy.
  • CloudTube: A JS-rich alternate YouTube player
  • PeerTubeify: On YouTube, displays a link to the same video on PeerTube, if it exists.
  • MusicPiped: A materialistic music player that streams music from YouTube.
  • LapisTube: A fancy and advanced (experimental) YouTube frontend. Combined streams & custom YT features.


  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request


Feel free to send an email to or join our Matrix Server, or #invidious on Freenode.

You can also view release notes on the releases page or in the included in the repository.


GNU AGPLv3 Image

Invidious is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

github statistic
  • 3318
  • 0
  • 239
  • 400
  • 7 days ago
  • February 7, 2018

GNU Affero General Public License v3.0

Synced at

Wed, 01 Jul 2020 23:45:19 GMT