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.
Example of the regular view interface.

Example of the Simple mode interface.

yt-dlp options. with a pre-made preset for media servers users.Require ffmpeg to be in PATH in non-docker setups.curl-cffi. See yt-dlp documentation. In docker only.pot provider plugin. See yt-dlp documentation. In docker only.yt-dlp and custom pip packages. In docker only.yt-dlp returned info.MacOS version is untested.Please read the FAQ for more information.
[!IMPORTANT] By default YTPTube runs without authentication. If you expose it to the internet, enable auth. See security recommendations.
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
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 \
arabcoders/ytptube:latest
Then you can access the WebUI at http://localhost:8081.
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
userline to match your user id and group id in docker setups, or useuserns_mode: keep-idin podman setups.
mkdir -p ./{config,downloads/{files,tmp}} && docker compose -f compose.yaml up -d
Then you can access the WebUI at http://localhost:8081.
For Unraid users You can install the Community Applications plugin, and search for ytptube it comes
pre-configured.
For simple API documentation, you can refer to the API documentation.
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.
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.
If you feel like donating and appreciate my work, you can do so by donating to children charity. For example Make-A-Wish.
$ claude mcp add ytptube \
-- python -m otcore.mcp_server <graph>