youtube-dl-material

youtube-dl-material

Docker app from Selfhosters

Overview

ytdl-material is a full suite UI for yt-dlp. It's coded using Angular 21 for the frontend, and Node.js on the backend. See a list of features here.

ytdl-material logo ytdl-material

Docker pulls badge Docker image size badge Code coverage percentage GitHub issues badge License badge Version badge CI status badge

Download and watch video and audio from a web app you host yourself. Paste a link to download something, or subscribe to channels and playlists and new uploads show up automatically. Everything goes into a library you can watch from any browser, solo or together. It runs on yt-dlp, which it installs and updates for you. See the full feature list.

Documentation · Quick start · Troubleshooting


ytdl-material interface
More screenshots in the gallery.

Setup

Docker

  1. Download docker-compose.yml:
curl -L https://raw.githubusercontent.com/voc0der/ytdl-material/refs/heads/main/docker-compose.yml -o docker-compose.yml
  1. Start it:
docker compose pull   # if needed
docker compose up -d

Docker environment variables: reference. See the NAS and ARM host guide for host-specific instructions.

Migration

For an existing installation, follow the migration guide before replacing your Compose file or changing database engines.

Build manually

See the install and build guide.

Contributing

Review CONTRIBUTING.md for contributor guidelines; pull requests and issues for bugs or feature requests are welcome.

Contributors

Legal Disclaimer

This project is in no way affiliated with Google LLC, Alphabet Inc. or YouTube (or their subsidiaries) nor endorsed by them.

Download Statistics

144,683
Total Downloads
53,203
This Month
24,100
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
voc0der/ytdl-material:nightly
Last Updated2026-10-03
First Seen2026-04-03

Runtime arguments

Web UI
http://[IP]:[PORT:17442]/
Network
bridge
Privileged
false

Template configuration

WebUIPorttcp

WebUI Port

Target
17442
Default
17442
Audio DownloadsPathrw

Audio Downloads

Target
/app/audio/
Video DownloadsPathrw

Video Downloads

Target
/app/video/
Subscription DownloadsPathrw

Subscription Downloads

Target
/app/subscriptions/
WebUI TitleVariable

Container Variable: ytdl_title_top

Target
ytdl_title_top
Default
YoutubeDL Material
User IDVariable
Target
UID
Default
99
Value
99
Group IDVariable
Target
GID
Default
100
Value
100
AppDataPathrw

Container Path: /app/appdata

Target
/app/appdata
Default
/mnt/user/appdata/youtubedl-material
Advanced Configuration ModeVariable

Allow advanced configuration (true/false)

Target
ytdl_allow_advanced_download
Default
true|false