unsubbed.co

YoutubeDL-Material

YoutubeDL-Material handles youTube downloader built on Material Design as a self-hosted solution.

A Material Design wrapper for yt-dlp, honestly reviewed. Not for everyone — but for the right use case, nothing else comes close.


TL;DR

  • What it is: A self-hosted web UI for youtube-dl/yt-dlp — download videos from YouTube and 1,700+ other sites through a browser, without touching the command line [README][1].
  • Who it’s for: Home labbers and small teams who want a persistent, always-on video downloader with a clean interface — not a CLI tool they have to babysit.
  • Cost savings: Desktop apps like 4K Video Downloader Plus cost $15–30/year. Cloud-based download services add recurring fees. YoutubeDL-Material is MIT-licensed, runs on a $5/mo VPS, and has no per-download pricing [README].
  • Key strength: One of the few self-hosted yt-dlp frontends with a genuinely polished Material Design UI, Docker support, MongoDB for download history, a REST API, and mobile app compatibility out of the box [README].
  • Key weakness: The project shows signs of stagnation — still targeting Node.js 16 (EOL) and Angular 15 (2022), with no major releases visible in recent history. For a tool that downloads video from sites that change their formats constantly, that’s a meaningful maintenance risk [README].

What is YoutubeDL-Material

YoutubeDL-Material is a self-hosted web application that wraps yt-dlp (the successor to youtube-dl) in a Material Design interface. You paste a URL, pick a format, and the download runs on your server — not your laptop. The result sits in a folder you control, organized and searchable through a web UI that works from any browser including mobile.

The underlying engine — yt-dlp — supports over 1,700 websites including YouTube, TikTok, Instagram, Twitter/X, Vimeo, and BBC iPlayer [1]. YoutubeDL-Material is not the engine; it’s the UI layer that makes the engine accessible without a terminal.

The tech stack is Angular 15 on the frontend, Node.js on the backend, with optional MongoDB for storing download history and metadata. Docker support is first-class — the recommended deployment path — and a REST API is available for automation [README]. The project sits at 3,138 GitHub stars and 324 forks, with an MIT license meaning you can self-host, modify, or deploy it for clients without restriction [README][2].

The honest framing: this is a weekend project that got polished enough to be genuinely useful. It is not backed by a company, not YC-funded, and not trying to be an enterprise product. It does one thing — provide a browser UI for downloading videos — and it does that thing reasonably well.


Why people choose it

Most people arrive at YoutubeDL-Material from one of two directions: they’re already running yt-dlp from the command line and want something their non-technical family members can use, or they want a persistent download queue running on a server rather than tied to their laptop being open.

The yt-dlp case. The underlying engine is exceptional. yt-dlp — the fork that replaced the slower-developing youtube-dl — handles 1,700+ sites, supports advanced format selection down to specific codecs and containers, manages entire playlists and channels, downloads subtitles, and ships weekly updates to keep pace with site changes [1]. The problem is that yt-dlp is a command-line tool. YoutubeDL-Material is the answer to “what if yt-dlp had a GUI you could access from your phone.”

Self-hosting vs. desktop apps. The alternative to a self-hosted downloader is usually a desktop app like 4K Video Downloader or ClipGrab. These work, but they run on your local machine, they don’t maintain a download history you can browse from elsewhere, and the better ones cost money. A server-hosted instance of YoutubeDL-Material runs 24/7, accepts downloads from any device, and costs nothing beyond the VPS [README][2].

Privacy argument. Web-based “YouTube download” services are everywhere — paste a URL, get a file. The problem is you’re routing your download requests through a third-party server of uncertain provenance. Your viewing habits, downloaded content, and IP address all pass through their infrastructure. YoutubeDL-Material keeps the entire pipeline on hardware you control [1][2].

The catalog factor. Because YoutubeDL-Material uses yt-dlp as the download engine, it inherits support for every site yt-dlp handles — not just YouTube [1]. That includes TikTok, Instagram Reels, Twitter/X videos, Twitch VODs, Vimeo, and hundreds of others. A separate optional dependency (Twitch Downloader CLI) adds chat download support for Twitch VODs [README].


Features

Based on the README and project repository:

Core download functionality:

  • Paste any URL supported by yt-dlp (1,700+ sites) [1][README]
  • Format selection — pick video quality, resolution, audio-only [1][README]
  • Playlist and channel downloads [1][README]
  • Subtitle download and embedding [1][README]
  • Thumbnail embedding via optional AtomicParsley dependency [README]
  • Twitch VOD chat download via optional Twitch Downloader CLI [README]

UI and interface:

  • Material Design web interface — dark mode included [README]
  • Mobile-compatible UI (mobile app support listed in features) [README]
  • Download history browsing via MongoDB integration [README]

Deployment and integration:

  • Docker and Docker Compose support (primary recommended path) [README]
  • Heroku one-click deploy button in README [README]
  • REST API (documented in Public API v1.yaml in the repository) [README]
  • Reverse proxy friendly — documented wiki entry for reverse proxy setup [README]
  • Helm chart available for Kubernetes deployments [README]

Developer features:

  • Angular 15 frontend (TypeScript) — modifiable if you have frontend skills [README]
  • Node.js backend — straightforward to extend [README]
  • devcontainer configuration for local development [README]
  • e2e test setup [README]

What’s not there: No built-in scheduler for recurring channel/playlist syncs. No media server integration (Plex, Jellyfin). No automatic metadata tagging beyond what yt-dlp provides natively. For those use cases, Tube Archivist or Pinchflat are purpose-built and worth comparing.


Pricing: SaaS vs self-hosted math

There’s no direct SaaS equivalent to YoutubeDL-Material — “hosted yt-dlp as a service” isn’t a real product category for obvious legal reasons. The comparison is against the adjacent options:

Desktop download apps:

  • 4K Video Downloader: free tier (limited), Plus plan ~$15/year, Business ~$45/year
  • ClipGrab: free (ad-supported)
  • Downie (Mac only): ~$20 one-time

Self-hosted alternatives:

  • YoutubeDL-Material: $0 software license (MIT) [README]
  • VPS to run it: $5–6/month on Hetzner or Contabo
  • MongoDB: bundled or free tier on Atlas

Annual cost comparison:

  • 4K Video Downloader Plus: ~$15/year per device, doesn’t run on a server, no shared access
  • YoutubeDL-Material self-hosted: ~$60–72/year for the VPS, shared access from any device, unlimited downloads

For a household or small team, the math is clear. The caveat is setup time — you’re paying in hours, not dollars, to get it running.


Deployment reality check

The Docker path is genuinely straightforward. The repository ships a docker-compose.yml and a Dockerfile. For most users, it’s clone → edit config → docker-compose up. The default port is 17442.

What you actually need:

  • A Linux VPS with 1–2GB RAM minimum (MongoDB adds overhead)
  • Docker and docker-compose
  • A domain and reverse proxy (nginx or Caddy) if you want HTTPS and a real URL
  • MongoDB — either bundled via docker-compose or external

Where it can go sideways:

Node.js 16 dependency is a real problem. The README still lists Node.js 16 as a requirement [README]. Node 16 reached End of Life in September 2023. If you’re building from source rather than using Docker, this is a friction point. The Docker image handles this for you, but it signals the project hasn’t been updated to match current Node LTS versions.

Angular 15 is two major versions behind. Angular 15 was released in November 2022. As of 2026, Angular is at version 19. This doesn’t break functionality, but it suggests the frontend hasn’t been actively maintained [README].

yt-dlp vs youtube-dl. The README references “youtube-dl” throughout, but yt-dlp is the actively developed fork [1]. In practice, the Docker image likely ships yt-dlp (since youtube-dl development stalled and many sites stopped working with it), but the documentation doesn’t make this explicit. Worth verifying which binary is actually running in your instance.

No scheduler built in. If you want to automatically sync a YouTube channel every day, that requires external tooling — a cron job calling the REST API, or running yt-dlp separately alongside the app.

Legal gray area. Downloading copyrighted content without permission is illegal in most jurisdictions. YoutubeDL-Material itself is neutral tooling, but the README opens with “download YouTube videos” framing [README]. Use it for content you own, have permission to download, or that falls under personal archival fair use in your jurisdiction.

Realistic time estimate: 20–40 minutes to a working Docker instance for anyone who has deployed a Docker app before. First-timer with a VPS but no Docker experience: 2–3 hours including reverse proxy setup.


Pros and cons

Pros

  • MIT license. Deploy it anywhere, modify it freely, use it commercially — no licensing lawyer required [README][2].
  • Inherits yt-dlp’s site coverage. 1,700+ sites via the underlying engine [1]. This is the main reason to use this over a YouTube-specific tool.
  • Material Design UI. Notably cleaner than most self-hosted download tools, which tend to be minimal or visually dated [README].
  • Docker-first. The primary deployment path is containerized and well-documented [README].
  • REST API included. Enables automation, integration with other self-hosted tools, and programmatic download queuing [README].
  • Mobile compatible. Works from a phone browser; listed mobile app support in feature set [README].
  • MongoDB history. Download history persists across restarts, searchable and browsable [README].
  • Zero per-download cost. No rate limits, no monthly caps, no usage-based pricing [README].

Cons

  • Maintenance signals are weak. Node.js 16 EOL, Angular 15 from 2022, no recent major releases visible in the commit history — for a tool that depends on a constantly-updated underlying library (yt-dlp), this is a genuine risk [README].
  • Not actually an archivist tool. No automatic channel sync, no Plex/Jellyfin integration, no NFO metadata generation. If you want to build a searchable video library, Tube Archivist does more [README].
  • yt-dlp breaks regularly. YouTube and other platforms frequently change their APIs and formats. yt-dlp releases updates weekly to compensate [1]. If YoutubeDL-Material ships an outdated yt-dlp binary, downloads will silently fail or error until you update manually.
  • MongoDB is overkill for personal use. Running a full MongoDB instance for download history adds memory overhead and operational complexity. Lighter alternatives could use SQLite. You can skip MongoDB, but you lose history [README].
  • No scheduler. Automated recurring downloads require external cron setup, not built in [README].
  • Documentation is thin. The README covers installation and Docker setup. Advanced configuration, troubleshooting, and API documentation are sparse [README].
  • 3,138 stars is modest for the category — Tube Archivist, MeTube, and similar tools all have larger and more active communities [README].

Who should use this / who shouldn’t

Use YoutubeDL-Material if:

  • You want a browser UI for yt-dlp that the whole household can use without touching a terminal.
  • You already run a home server or VPS and want to add a download queue accessible from any device.
  • You need one-off downloads across many different sites, not a full media archival pipeline.
  • You want MIT-licensed software you can modify and deploy without restriction.

Skip it (use MeTube instead) if:

  • You want something minimal and actively maintained. MeTube is a simpler yt-dlp frontend with a smaller footprint and regular updates.
  • You don’t need MongoDB, mobile apps, or an API — just a queue UI.

Skip it (use Tube Archivist instead) if:

  • You specifically want to archive and organize YouTube channels over time, with automatic syncing, search, and Jellyfin integration. Tube Archivist is purpose-built for that use case where YoutubeDL-Material is not.

Skip it (use yt-dlp directly instead) if:

  • You’re comfortable with the command line and don’t need a persistent server-side queue. yt-dlp’s CLI is more powerful, more actively updated, and has no overhead [1].
  • You have a single machine and don’t need remote access to a download queue.

Skip it (stay on a desktop app) if:

  • You want something that just works without server maintenance. The Node.js 16 dependency and maintenance pace mean you may eventually hit a broken state that requires debugging [README].

Alternatives worth considering

  • MeTube — Simpler, lighter yt-dlp frontend. No MongoDB, no mobile app, no REST API — but actively maintained and smaller resource footprint. Good for users who want yt-dlp in a browser with minimal overhead.
  • Tube Archivist — Full YouTube channel archiver with search, metadata, Jellyfin integration. Much heavier (requires Elasticsearch), but purpose-built for building a video library rather than one-off downloads.
  • Pinchflat (iOS/macOS focus) — Excellent for Mac users who want scheduled YouTube channel syncing. Not cross-platform in the same way.
  • yt-dlp directly — The command-line engine behind YoutubeDL-Material. If you’re comfortable with CLI, you get more control, weekly updates, and no UI overhead [1].
  • Jellyfin + plugin ecosystem — For users who want media server integration from day one, combining yt-dlp with Jellyfin plugins handles both download and playback in one system.
  • 4K Video Downloader (desktop app) — If you want point-and-click simplicity on a single machine and don’t need remote access, the free tier covers basic use without any server setup.

Bottom line

YoutubeDL-Material is a solidly built tool for a specific niche: people who want a persistent, browser-accessible yt-dlp frontend on a server they control. The Material Design UI is genuinely good, Docker deployment is clean, and the REST API and MongoDB history make it more than a toy. The catch is maintenance pace — Node.js 16, Angular 15, and limited recent activity are real concerns for a downloader that depends on a weekly-updating underlying engine. If yt-dlp ships a breaking change and YoutubeDL-Material hasn’t been updated, your downloads stop working until you fix it manually. For a home lab setup where you can tolerate occasional maintenance, it’s a worthwhile deploy. For production use or a set-and-forget install, MeTube or Tube Archivist have more active maintenance tracks and are safer long-term bets.


Sources

  1. addROM“The Complete Guide to yt-dlp: Download YouTube Videos Easily and for Free”. https://addrom.com/the-complete-guide-to-yt-dlp-download-youtube-videos-easily-and-for-free/
  2. Shaynly“A Catalog Of Self-Hosted Free Software Network Services And Web Applications”. https://shaynly.com/self-hosted-free-software/

Primary sources:

Features

Integrations & APIs

  • REST API

Mobile & Desktop

  • Mobile App