Skip to content

Repository files navigation

YTPTube

Build Status MIT License Docker Pull gchr Pull

YTPTube is a web-based GUI for yt-dlp, designed to make downloading videos from video platforms easier and user-friendly. It supports downloading playlists, channels, live streams and includes features like scheduling downloads, sending notifications, and built-in video player.

Screenshots

Example of the regular view interface. Short screenshot

Example of the Simple mode interface. Short screenshot

The YTPTube frontend is available in English, العربية, Français, 中文, and 日本語. See the language FAQ.

Features.

  • A bundled executable version for Windows, macOS and Linux. See Native executables.
  • Multi-download support.
  • Random beautiful customizable background.
  • Handles live and upcoming streams with automatic retry when failure occurs.
  • A dual view mode for both technical and non-technical users.
  • Schedule channels or playlists to be downloaded automatically with support for creating custom download feeds from non-supported sites. See Feeds documentation.
  • Send notification to targets based on selected events. includes Apprise support.
  • Support per link options.
  • Support for limits per extractor and overall global limit.
  • Queue multiple URLs at once.
  • Powerful presets system for applying yt-dlp options. with a pre-made preset for media servers users.
  • A simple file browser.
  • A built in video player with support for sidecar external subtitles. Require ffmpeg to be in PATH in non-docker setups.
  • Basic authentication support.
  • Bundles curl-cffi for impersonation. See yt-dlp documentation.
  • Includes the pot provider plugin. See yt-dlp documentation.
  • Support using FlareSolverr or Trawl to bypass WAF protections for yt-dlp and internal http client. See related FAQ.
  • Automatic updates for yt-dlp and custom packages. Docker only.
  • Conditions feature to apply custom options based on yt-dlp returned info.
  • Custom browser extensions, bookmarklets and iOS shortcuts to send links to YTPTube instance.
  • Use playwright or selenium for extractors that require a browser. see How to use the browser extractor.

Please read the FAQ for more information.

Installation

Important

By default YTPTube runs without authentication. If you expose it to the internet, enable auth. See security recommendations.

Run using docker or podman command

# Run using docker
mkdir -p ./{config,downloads/{files,tmp}} && docker run -itd --rm --user "${UID}:${UID}" --name ytptube \
-e YTP_TEMP_PATH=/downloads/tmp -e YTP_DOWNLOAD_PATH=/downloads/files \
-p 8081:8081 -v ./config:/config:rw -v ./downloads:/downloads:rw \
ghcr.io/arabcoders/ytptube:latest

# Run using podman
mkdir -p ./{config,downloads/{files,tmp}} && podman run -itd --rm --userns=keep-id --name ytptube \
-e YTP_TEMP_PATH=/downloads/tmp -e YTP_DOWNLOAD_PATH=/downloads/files \
-p 8081:8081 -v ./config:/config:rw -v ./downloads:/downloads:rw \
ghcr.io/arabcoders/ytptube:latest

Then you can access the WebUI at http://localhost:8081.

Using compose file

The following is an example of a compose.yaml file that can be used to run YTPTube.

services:
  ytptube:
    user: "${UID:-1000}:${UID:-1000}" # change this to your user id and group id.
    # comment out the above line and uncomment the below line if you are using podman-compose.
    #userns_mode: keep-id
    image: ghcr.io/arabcoders/ytptube:latest
    container_name: ytptube
    restart: unless-stopped
    environment:
      - YTP_TEMP_PATH=/downloads/tmp
      - YTP_DOWNLOAD_PATH=/downloads/files
    ports:
      - "8081:8081"
    volumes:
      - ./config:/config:rw
      - ./downloads:/downloads:rw

Important

Make sure to change the user line to match your user id and group id in docker setups, or use userns_mode: keep-id in podman setups.

# Run using docker compose
mkdir -p ./{config,downloads/{files,tmp}} && docker compose -f compose.yaml up -d

# Run using podman compose
mkdir -p ./{config,downloads/{files,tmp}} && podman-compose -f compose.yaml up -d

Then you can access the WebUI at http://localhost:8081.

Unraid

For Unraid users You can install the Community Applications plugin, and search for ytptube it comes pre-configured.

Native executables

Standalone executables for Windows, Linux, and macOS are published on the GitHub Releases page as ZIP archives. They follow the pattern:

ytptube-{OS}-{arch}-{tag}.zip

For example: ytptube-Linux-amd64-v0.0.0.zip

Extract the archive and run the YTPTube binary (or YTPTube.exe on Windows).

If you plan to use the built-in video player, make sure ffmpeg is installed and available on PATH.

Note

1- Automatic yt-dlp and package updates are not avaliable in the native execuables.

2- You need to manually install ffmpeg and deno and have them in your PATH.

API Documentation

For simple API documentation, you can refer to the API documentation.

Disclaimer

This project is not affiliated with yt-dlp or any other service.

This is a personal project designed to make downloading videos from the internet more convenient for me. It is not intended for piracy or any unlawful use. This project was built primarily for my own use and preferences.

AI-assisted tools are used in this project. If you are uncomfortable with this, you should not use this project.

Contributions are welcome, but I may decline changes that do not interest me or do not align with my vision for this project. Unsolicited pull requests will be closed. For suggestions or feature requests, please open a discussion or join the Discord server.

Social contact

If you have short or quick questions, you are free to join my discord server and ask the question. keep in mind it's solo project, as such it might take me a bit of time to reply.

Donation

If you feel like donating and appreciate my work, you can do so by donating to children charity. For example Make-A-Wish.

About

A WebUI for yt-dlp with concurrent downloads support, presets and scheduled tasks and many more.

Topics

Resources

Contributing

Stars

996 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages