You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Pierre Rudloff 533a5b6cd2 Merge branch 'release-2.0.5' 2 days ago
classes fix: Make sure array_combine returns an array 3 months ago
config feat: Make generic formats dynamic 4 months ago
controllers fix: Fix stream download 2 months ago
css style(csslint): Remove unused CSS class 4 months ago
i18n Update Alltube.po ( 9 months ago
img Remove Google Cast support since the JS library does not seem to be maintained anymore and it frequently breaks 2 years ago
resources feat: Make generic formats dynamic 4 months ago
templates Check the stream checkbox by default to avoid surprises with non-HTTP videos 4 months ago
templates_c Add templates_c to repo 4 years ago
tests feat: Make generic formats dynamic 4 months ago
.appveyor.yml ci(appveyor): Install a specific PHP version 4 months ago
.dockerignore Docker build 3 years ago
.gitignore Generate .mo files with Grunt 2 years ago
.htaccess chore: Don't allow other websites to include the app in an iframe 3 months ago
.locales ci(heroku): Install required locales 4 months ago
.travis.yml Stop using Surge to host the documentation 4 months ago Create 2 years ago docs: Be more consistent and use "AllTube" everywhere 1 year ago
Dockerfile Fix missing gnupg program 1 year ago
Gruntfile.js fix: Don't call PlaylistArchiveStream parent constructor 4 months ago docs: Be more consistent and use "AllTube" everywhere 1 year ago
LICENSE Create LICENSE 4 years ago
Procfile Use Apache on Heroku 4 years ago Stop using Surge to host the documentation 4 months ago
app.json ci(heroku): Install required locales 4 months ago
composer.json build(composer): Upgrade youtube-dl to 2019.09.12.1 2 days ago
composer.lock build(composer): Upgrade youtube-dl to 2019.09.12.1 2 days ago
index.php fix: Wrong controller 4 months ago
package.json build(yarn): 2.0.5 release 2 days ago
phpdoc.xml style: Lint XML 1 year ago
phpstan.neon feat: Use ZIP files for playlist archives 4 months ago
phpunit.xml style: Lint XML 1 year ago
requirements.txt Use Python buildpack in order to have a recent Python version 2 years ago
robots.txt fix: Use HTTPS in robots.txt 1 year ago
runtime.txt ci(heroku): Force Python version 4 months ago
yarn.lock build(yarn): Upgrade lodash to 4.7.15 1 month ago

AllTube Download

Donate using Liberapay

HTML GUI for youtube-dl (



From a release package

You can download the latest release package here.

You just have to unzip it on your server and it should be ready to use.

From Git

In order to get AllTube working, you need to use Yarn and Composer:

yarn install
composer install

This will download all the required dependencies.

(Note that it will download the ffmpeg binary for 64-bits Linux. If you are on another platform, you might want to specify the path to avconv/ffmpeg in your config file.)

You should also ensure that the templates_c folder has the right permissions:

chmod 770 templates_c/

(You need to adapt this to your permission model. You can find more information about this in the Smarty documentation.)

If your web server is Apache, you need to set the AllowOverride setting to All or FileInfo.


When updating from Git, you need to run yarn and Composer again:

git pull
yarn install --prod
composer install

On Heroku



If you want to use a custom config, you need to create a config file:

cp config/config.example.yml config/config.yml

PHP requirements

You will need PHP 5.5 (or higher) and the following PHP modules:

  • fileinfo
  • intl
  • mbstring
  • curl

Web server configuration


You will need the following modules:

  • mod_mime
  • mod_rewrite


Here is an exemple Nginx configuration:

server {
        server_name localhost;
        listen 443 ssl;

        root /var/www/path/to/alltube;
        index index.php;

        access_log  /var/log/nginx/alltube.access.log;
        error_log   /var/log/nginx/alltube.error.log;

        types {
                text/html   html htm shtml;
                text/css    css;
                text/xml    xml;
                application/x-web-app-manifest+json   webapp;

        # Deny access to dotfiles
        location ~ /\. {
                deny all;

        location / {
                try_files $uri /index.php?$args;

        location ~ \.php$ {
                try_files $uri /index.php?$args;

                fastcgi_param     PATH_INFO $fastcgi_path_info;
                fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
                fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;

                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_intercept_errors off;

                fastcgi_buffer_size 16k;
                fastcgi_buffers 4 16k;

                include fastcgi_params;

Other dependencies

You need avconv in order to enable conversions. If you don’t want to enable conversions, you can disable it in config.yml.

On Debian-based systems:

sudo apt-get install libav-tools

You also probably need to edit the avconv variable in config.yml so that it points to your ffmpeg/avconv binary (/usr/bin/avconv on Debian/Ubuntu).

Use as library

AllTube can also be used as a library to extract a video URL from a webpage.

You can install it with:

composer require rudloff/alltube

You can then use it in your PHP code:

use Alltube\Config;
use Alltube\Video;

require_once __DIR__.'/vendor/autoload.php';

        'youtubedl' => '/usr/local/bin/youtube-dl',
$video = new Video('');

The library documentation is available on

You can also have a look at this example project.


We also provide a JSON API that you can use like this: /json?

It returns a JSON object generated by youtube-dl. You can find a list of all the properties in the youtube-dl documentation.


Please read the FAQ before reporting any issue.


This software is available under the GNU General Public License.