unsubbed.co

YT-DLP Web Player

YT-DLP Web Player is a self-hosted media servers replacement for Amazon Prime Video, Disney+, and more.

Self-hosted video playback for everything YouTube, Vimeo, and 1,800 other sites, honestly reviewed. No marketing fluff.

TL;DR

  • What it is: A self-hosted web player that wraps yt-dlp and ffmpeg behind a browser UI — paste a URL from almost any video site, it streams or downloads the video right in your browser [README].
  • Who it’s for: Privacy-conscious users who want to watch videos from YouTube or other platforms without running ads, without a Google account, and without the YouTube interface. Also useful for watching videos on devices or networks where the official site is unreliable [README].
  • Cost savings: There’s no paid tier to compare against — this is GPL-2.0 software with no cloud offering. The comparison is against YouTube Premium ($13.99/mo) for ad-free watching, or against paying for a streaming platform whose content you can access for free through yt-dlp [README].
  • Key strength: Plays from 1,800+ sites that yt-dlp supports. HLS delivery for fast start times, resolution picker, subtitle selection, SponsorBlock integration on YouTube, PWA support for Android — all in a clean single-page UI [README].
  • Key weakness: 125 GitHub stars, 3 forks — this is a one-developer hobby project. No official public instances exist due to platform anti-bot policies. Google periodically breaks yt-dlp at the infrastructure level, and when that happens, this player breaks too until yt-dlp releases a fix [3][README].

What is YT-DLP Web Player

YT-DLP Web Player is a Python-based web application that sits in front of yt-dlp and exposes it through a browser interface. The pitch in the README is three words: “Arbitrary internet video player powered by yt-dlp” [README]. That’s about as precise as you can get.

The core flow is simple: you visit the web app, search for a video or paste a URL, and the server calls yt-dlp to fetch the stream, converts it to HLS via ffmpeg for low-latency delivery, and serves it through video.js in your browser. You can pick resolution, toggle subtitles, adjust aspect ratio, and use SponsorBlock to skip sponsored segments on YouTube — all from the same page [README].

What separates this from just running yt-dlp in a terminal is the delivery layer. Because it transcodes to HLS, the video starts playing within seconds rather than waiting for a full download. The REST API backend means it can be embedded via iframes, and there’s a browser extension (experimental, and the developer openly admits it’s “vibe-coded”) that lets you redirect links from any site to your player instance [README].

The project runs as a Docker container, gets daily automatic yt-dlp updates, and supports HTTPS through its own self-signed cert setup [README]. It has a PWA manifest so you can install it as an app on Android with “share with” support — meaning you can share a link from the YouTube app and it opens in this player instead.

The developer is one person (Matszwe02). The project has 125 stars, 3 forks, and 2 watchers on GitHub. That’s the full picture of the community behind it [README].


Why people choose it

There are no third-party reviews of YT-DLP Web Player specifically. What exists is a broader context: people are increasingly frustrated with platform surveillance, ad density, and the degraded experience of official video clients.

The closest comparison point with actual community data is YTPTube [1], a similar project (web UI for yt-dlp with a built-in player) that has 892 GitHub stars vs. YT-DLP Web Player’s 125 — roughly 7x the adoption. YTPTube adds download management, scheduled downloads, playlist support, and notifications, which explains the gap. YT-DLP Web Player’s value proposition is narrower: it’s a player, not a download manager. If you want to watch without saving, YT-DLP Web Player is simpler. If you want to archive, schedule, and manage a library, YTPTube is more mature [1].

The underlying yt-dlp CLI that both tools depend on is the most actively maintained video downloader in existence, with 156,000+ GitHub stars [2]. The trade-off is platform volatility: Google intermittently breaks yt-dlp at the infrastructure level by mandating new JavaScript requirements, and when that happens, every tool in this ecosystem breaks until a fix ships [3]. The yt-dlp maintainers have so far fixed every breakage, sometimes within hours [3], but this is real operational risk for anyone running a production instance.

The practical reasons to choose this specific player over alternatives:

Over running yt-dlp in the terminal. Most people who want to watch a video don’t want to SSH into a server, find a URL, run a command, and wait for a download. The web UI reduces that to a paste-and-play workflow. The HLS delivery means you’re not waiting for a 1GB file to finish before playback starts [README].

Over Invidious. Invidious is a YouTube front-end that proxies YouTube’s own streams. It’s more polished and has more users, but it’s YouTube-only. YT-DLP Web Player works with anything yt-dlp supports — Vimeo, TikTok, Twitch, Twitter/X, Bilibili, SoundCloud, and hundreds more [README][4].

Over Jellyfin or Plex. Media servers are for content you own and have already downloaded. YT-DLP Web Player is for content you want to watch once without saving it. Different problem.


Features

Based entirely on the README and source code — no third-party reviews verify these independently:

Playback controls:

  • Resolution selection (all formats yt-dlp reports for the URL)
  • Closed captions / subtitle selection
  • Video aspect ratio adjustment
  • Video repeat toggle
  • Download option (save the current video locally)
  • Media Session API integration — system-level playback controls (pause/skip from lock screen on Android) [README]

Platform integration:

  • SponsorBlock integration for YouTube — skips sponsored segments automatically [README]
  • Search functionality built in (searches YouTube via yt-dlp’s ytsearch prefix) [README][5]
  • PWA with “share with” target on Android — share a link from any app and it opens in this player
  • Browser extension with /iframe endpoint embedding (experimental, self-described as “vibe-coded”) [README]

Technical stack:

  • HLS delivery via ffmpeg for fast start times [README]
  • video.js for the player UI [README]
  • Daily auto-update of yt-dlp via Docker — always on the latest version to handle site changes [README]
  • HTTPS support via self-signed cert in the Docker setup [README]
  • REST API backend [merged profile]
  • Themes (configurable) [README]

Planned but not available at time of writing:

  • Livestream support
  • Video quality changing without playback interruption [README]

Pricing: SaaS vs self-hosted math

There is no cloud version. There are no tiers. No official public instances exist — the README explicitly states this is due to “anti-bot policies of popular video sharing platforms” [README]. You run it yourself or you don’t run it.

The cost comparison here isn’t SaaS-vs-self-hosted; it’s self-hosted-vs-nothing or self-hosted-vs-paying-platforms:

YouTube Premium: $13.99/mo ($167.88/yr) for ad-free YouTube and background play. If your main use case is ad-free YouTube, this player achieves the same result for the cost of a VPS.

Self-hosting cost:

  • A $4–6/mo Hetzner or Contabo VPS runs Docker fine for this use case
  • Bandwidth: you’re not downloading files to the server (HLS streams go direct to your browser), but initial stream fetching does consume server egress. On a small VPS plan, watch for bandwidth caps.
  • Total: ~$5–6/mo

Savings math: If YouTube Premium is the counterfactual, self-hosting saves roughly $100/year. That’s real money but not the dramatic Zapier-tier savings you see in the automation category. The stronger case is for users who want to watch content from sites that have no legitimate paid option — that’s where yt-dlp’s 1,800+ supported sites matter [4].


Deployment reality check

The Docker path is the only sane path. The README shows two options: Docker Compose and running locally [README]. The local path requires Python virtualenv, ffmpeg in PATH, and optionally Deno or Node — that’s fine for developers, but Docker is both faster and what gets you automatic yt-dlp updates.

Minimum setup:

docker compose up

The compose file handles Python, ffmpeg, and yt-dlp. App listens on port 5000 (HTTP) or 5001 (HTTPS with self-signed cert) [README].

What you need before starting:

  • A Linux VPS or any machine that runs Docker
  • Docker and docker-compose installed
  • A domain name + reverse proxy (Caddy or nginx) if you want a public HTTPS URL
  • You do NOT need a database — this has no persistent storage beyond the running container

Things that can break your setup:

  1. Google anti-bot breakage. This is the biggest real-world risk. In late 2025, Google mandated JavaScript runtime execution for YouTube downloads, briefly breaking all yt-dlp-based tools [3]. The yt-dlp team fixed it by requiring Deno, and the YT-DLP Web Player README explicitly mentions deno or node as optional PATH dependencies for the local setup [README][3]. The Docker image handles this automatically via daily updates, but if you’re on a static image version, you can be caught out.

  2. HTTPS is required for PWA and iframe features. If you try to install the PWA or use the browser extension without HTTPS, it won’t work. The Docker setup includes a self-signed cert path, but your browser will warn you about it and you’ll need to manually accept the exception [README].

  3. Bandwidth. This is a streaming application. If your VPS has a 1TB/mo bandwidth cap, heavy use will eat into it. The HLS approach means the server is transcoding and serving segments, not just proxying — budget accordingly.

  4. Platform bans. Running this on a datacenter IP exposes you to platforms blocking your server’s IP range. YouTube and others have history of flagging cloud provider IP ranges as bot traffic. This is why no official instances exist [README].

Realistic setup time: 15–30 minutes for someone comfortable with Docker Compose. If you’ve never touched a Linux server, plan for 2+ hours including domain and reverse proxy setup.


Pros and cons

Pros

  • GPL-2.0 license. Truly free software — fork it, modify it, redistribute it [README].
  • yt-dlp backend means 1,800+ supported sites. Not just YouTube [4]. Any site yt-dlp supports works here.
  • HLS delivery. Videos start playing fast. You’re not waiting for a full download [README].
  • SponsorBlock on YouTube. Built-in, automatic sponsor segment skipping [README].
  • Daily yt-dlp auto-updates in Docker. When platforms break compatibility, the fix ships automatically without you doing anything [README].
  • PWA + Android “share with.” Genuinely useful mobile workflow — share a YouTube link and it opens in your player [README].
  • Zero cost, zero SaaS dependency. No account, no subscription, no data leaving your server.
  • Clean, simple UI. No feature bloat — it does one thing: play a video from a URL.

Cons

  • 125 stars, 1 developer. This is not a community project. If the developer loses interest, the project is effectively unmaintained. No enterprise backing, no foundation, no bus factor above 1 [README].
  • No official instances. You must self-host. There’s no “try it first” option [README].
  • Browser extension is vibe-coded. The developer’s own words: “I do not guarantee that no LLMs were harmed in the process” [README]. Don’t deploy this extension to non-technical users.
  • Livestream support missing. It’s on the roadmap but not available [README]. If you want to watch live streams, look elsewhere.
  • No download management. This is a player, not an archiver. If you want to save videos, organize them, schedule downloads of a channel — YTPTube [1] has all of that; this doesn’t.
  • Platform instability is structural. Google will break yt-dlp again. YouTube’s anti-bot escalation is ongoing [3]. Every tool in this category lives with this uncertainty.
  • Self-signed cert friction. HTTPS works, but through a cert your browser won’t trust, requiring manual exception acceptance [README].
  • No authentication. The README doesn’t mention user auth. If you expose this to the internet, anyone who finds the URL can use it.

Who should use this / who shouldn’t

Use YT-DLP Web Player if:

  • You want a lightweight, paste-and-play video interface that works with YouTube plus hundreds of other sites without navigating their official UIs.
  • You’re comfortable with Docker and want something minimal — a player, not a media server.
  • You want SponsorBlock without the browser extension, on any device on your network.
  • You’re running a personal homelab and want the simplest possible yt-dlp web UI.

Use YTPTube instead [1] if:

  • You want download management — queues, scheduled downloads, channel archiving, notifications.
  • You want something more actively maintained with a larger community (892 vs. 125 stars) [1].
  • You need a built-in file browser and persistent library.

Use Invidious instead if:

  • You only care about YouTube (not other sites).
  • You want something with public instances you can try without self-hosting.
  • You want a feed-based interface that replaces the YouTube homepage, not just a player.

Skip this entirely if:

  • You need livestream support — it’s not ready [README].
  • You’re deploying for other people to use — the lack of auth and the experimental browser extension make this a personal tool, not a shared service.
  • You’re not comfortable troubleshooting Docker or the periodic yt-dlp breakage that Google causes [3].
  • You want a maintained, community-backed project — at 125 stars and 1 developer, the longevity risk is real.

Alternatives worth considering

  • YTPTube [1] — Most direct alternative. Web UI for yt-dlp with download management, scheduling, playlist support, built-in player, notifications. 892 stars (vs. 125 here), MIT license. If you want more than just playback, this is the better-maintained option.
  • Invidious — YouTube-only front-end proxy. More polished, has public instances, larger community. Doesn’t help for non-YouTube sites.
  • Stacher — Desktop GUI for yt-dlp (Windows/Mac). Not self-hosted, but the most user-friendly yt-dlp wrapper for non-technical users.
  • Metube — Another web UI for yt-dlp, focused on downloading rather than streaming. More stars than YT-DLP Web Player, active community.
  • Jellyfin — Full media server with a built-in player. If you want to watch downloaded content and manage a library, Jellyfin is the right category. Different use case but often mentioned alongside these tools.
  • youtube-dl — The original CLI tool yt-dlp forked from, now largely superseded [2][4]. Slower updates, fewer features.

Bottom line

YT-DLP Web Player solves one specific problem cleanly: you want to paste a URL from YouTube or one of 1,800 other video sites and watch it in a browser without ads, without accounts, and without the official platform UI. For that narrow use case, the HLS delivery, SponsorBlock integration, and PWA support make it genuinely useful. The daily yt-dlp auto-updates in Docker mean you’re mostly insulated from the periodic Google breakage events that affect this whole category [3].

The honest caveat is the project’s scale. At 125 stars with one developer, this is personal software that happens to be public — not a community project with any guarantee of longevity. If that’s acceptable for your use case (personal homelab, single user), the deployment is straightforward and the tool does what it says. If you want something with more community backing, YTPTube at 892 stars and significantly more features is the more durable bet [1].


Sources

  1. AlternativeTo — YTPTube: A WebUI for yt-dlp with concurrent downloads support, presets and scheduled (alternativeto.net). https://alternativeto.net/software/ytptube/about/
  2. RelatedRepos — transmission/transmission alternatives and similar packages (relatedrepos.com). https://relatedrepos.com/gh/transmission/transmission
  3. Lemmy.org — Google just broke all third-party YT clients, including yt-dlp; a full JS implementation is now required (lemmy.org). https://lemmy.org/post/1872634
  4. Codeberg.org — Sergey_Paradox/yt-dlp: yt-dlp is a youtube-dl fork (codeberg.org). https://codeberg.org/Sergey_Paradox/yt-dlp
  5. Linux.org — yt-dlp: more advanced options (linux.org). https://www.linux.org/threads/yt-dlp-more-advanced-options.62806/

Primary sources:

Features

Integrations & APIs

  • REST API

Customization & Branding

  • Themes / Skins

Mobile & Desktop

  • Browser Extension
  • Mobile App
  • Progressive Web App (PWA)