No description
Find a file
2026-05-18 22:20:31 +03:00
.github fix: native build could fail due to cache restore 2026-04-11 19:48:48 +03:00
.vscode refactor: use static width for table cells. 2026-03-31 18:34:59 +03:00
app fix: recent change made fetch_info unpicklable 2026-05-18 22:12:13 +03:00
ui refactor: adjust width and shrink behavior of filter input 2026-05-18 22:20:31 +03:00
var Refactor: swap sqlite to aiosqlite and add queued db updates 2025-12-18 16:31:15 +03:00
.dockerignore improve build process include linux/arm64 2025-01-23 18:03:24 +03:00
.editorconfig updated some type checks 2024-12-19 22:58:33 +03:00
.gitignore [FEAT] add custom download fields to simple mode. Closes #437 2025-10-16 16:41:59 +03:00
API.md refactor: removed thumbnail proxying 2026-05-18 12:28:06 +03:00
app.spec Refactor: switch native builds to onedir 2025-12-27 20:46:05 +03:00
CONTRIBUTING.md Refactor: streamline contributing guidelines 2026-01-02 21:04:43 +03:00
Dockerfile refactor: switch from pnpm to bun 2026-02-20 22:46:30 +03:00
entrypoint.sh Fix: Dont crash on download_path being set to root 2025-12-27 22:52:51 +03:00
FAQ.md feat: thumbnail generation 2026-05-14 23:22:27 +03:00
healthcheck.sh Fix healthcheck when used with base_path 2025-06-09 20:18:45 +03:00
LICENSE Add docs to footer 2025-09-14 19:43:52 +03:00
pyproject.toml feat: implement patch to make Windows Popen support stopping live stream 2026-04-11 23:31:48 +03:00
README.md feat: add generic browser extractor 2026-05-08 01:08:08 +03:00
sc_short.jpg chore: update screenshots 2026-03-25 23:28:27 +03:00
sc_simple.jpg chore: update screenshots 2026-03-25 23:28:27 +03:00
uv.lock feat: add rename to history items. 2026-05-04 20:29:34 +03:00
yt-dlp Add yt-dlp wrapper to keep it in sync with user installed yt-dlp. Ref #469 2025-11-01 17:22:16 +03:00

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

YTPTube Features.

  • Multi-download support.
  • Random beautiful background.
  • Handles live and upcoming streams.
  • 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.
  • Supports curl-cffi. See yt-dlp documentation. In docker only.
  • Bundled pot provider plugin. See yt-dlp documentation. In docker only.
  • Support using flaresolverr/flaresolverr to bypass Cloudflare protections for yt-dlp and internal http client. See related FAQ.
  • Automatic updates for yt-dlp and custom pip packages. In 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.
  • A bundled executable version for Windows, macOS and Linux. MacOS version is untested.
  • Use playwright or selenium for extractors that require a browser. see related FAQ.

Please read the FAQ for more information.

Installation

Run using docker command

mkdir -p ./{config,downloads/files,downloads/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

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

Note

If you are using podman instead of docker, you can use the same command, but you need to change the user to 0:0 it will appears to be running as root, but it will run as the user who started the container.

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.
    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.

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

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

Note

you can use podman-compose instead of docker-compose, as it supports the same syntax. However, you should change the user to 0:0 it will appears to be running as root, but it will run as the user who started the container.

Unraid

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

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.

Its a personal project designed to make downloading videos from the internet more convenient. Its not intended for piracy or any unlawful use.

AI-based tools may have been used to assist with parts of this project. Regardless of how a change is produced, every change is reviewed and approved by the human maintainer before it is included.

This project was built primarily for my own needs and preferences. The UI might not be the most polished or visually refined, but Im happy with it as it is. You can, however, create and load your own UI for complete customization.

Contributions are welcome, but I may decline changes that dont align with my vision for the project. Unsolicited pull requests may be ignored. 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.