Jellyfin unified media server

Cord-cutters end up with two separate rituals: opening Jellyfin for the movies they own, and switching to a browser for the YouTube channels they actually watch. The switching is where the friction lives. Every hop back to youtube.com is a fresh dose of ads, sponsored intros, and a recommendation feed pulling you off what you meant to watch.

The workaround is to pull the YouTube channels you care about into the same library shelf your Jellyfin server manages. The result is one homepage with your own shows and the creators you follow, no ads on either, and the same “keep watching” behavior across both. We tested seven tools that make the setup practical on Windows, macOS, and Linux.

What to look for in a unified media stack

Quick comparison

App Best for Platforms Free plan Starting price/mo License
Jellyfin The library itself Windows, macOS, Linux Full app Free GPLv2
yt-dlp Pulling channels reliably Windows, macOS, Linux Full app Free Unlicense
FreeTube Watching without a browser Windows, macOS, Linux Full app Free AGPLv3
Invidious Self-hosted YouTube front-end Web (Linux server) Full app Free AGPLv3
Tubesync Auto-sync channels into Jellyfin Docker Full app Free AGPLv3
MPV Playing anything with sponsor skip Windows, macOS, Linux Full app Free GPLv2
Sonarr Same UX for shows and channels Windows, macOS, Linux, Docker Full app Free GPLv3

The apps

1. Jellyfin, best media server for the setup

Jellyfin is the free, community-run media server that reads whatever folder tree you point it at and serves a Netflix-style UI to every device on your network. Add a YouTube folder next to Movies and it treats channel dumps as first-class library entries with thumbnails, descriptions, and per-user “keep watching” state.

Where it falls short: hardware transcoding on an Intel N100 or Raspberry Pi 5 works but needs the right driver; live TV setup is fiddlier than Plex’s.

Pricing:

Platforms: Windows, macOS, Linux, Docker, plus clients everywhere.

Download: jellyfin.org · GitHub

Bottom line: The library that makes the rest of this stack meaningful. No lock-in, no license servers.

2. yt-dlp, best downloader for the ingest

yt-dlp is the actively maintained fork of youtube-dl that keeps up with YouTube format changes and handles hundreds of other sites too. Pointed at a channel with --dateafter now-7day, it grabs the last week’s uploads and writes the metadata files Jellyfin needs to shelf them properly.

Where it falls short: it is a CLI, and getting the invocation exactly right for channel-in-Jellyfin takes a couple of tries. Config files and cron are your friends.

Pricing:

Platforms: Windows, macOS, Linux, Docker.

Download: GitHub (yt-dlp/yt-dlp)

Bottom line: The most important tool on this list. If any project you build here stops working, it will still be running.

3. FreeTube, best client for browser-free viewing

FreeTube is a desktop YouTube client with no ads, no tracking, and no Google login. It uses Invidious or Piped as its backend and can import subscriptions from a Google Takeout export. Sponsor segment skipping is built in.

Where it falls short: the backend can go stale for a day at a time when YouTube ships a breaking change; keeping the app on the latest release matters.

Pricing:

Platforms: Windows, macOS, Linux.

Download: freetubeapp.io · GitHub

Bottom line: The right client when the video is on YouTube and you do not need it in the library.

4. Invidious, best self-hosted YouTube front-end

Invidious is a small web app that scrapes YouTube pages and serves them through a clean, no-tracking interface. Run it on the same box as Jellyfin and you get a browser-facing YouTube that respects your privacy, plus a JSON API that FreeTube, Piped, and NewPipe can point at.

Where it falls short: single-instance operators have taken the network down before; running your own is the reliable path but adds ops work.

Pricing:

Platforms: Web (Linux server, typically Docker).

Download: invidious.io · GitHub

Bottom line: The privacy layer under any long-term YouTube-in-library setup.

5. Tubesync, best glue between YouTube and Jellyfin

Tubesync is a Docker service that subscribes to YouTube channels or playlists, downloads new videos on a schedule, and writes files and NFO metadata in exactly the layout Jellyfin expects. Add a channel URL through the web UI and it appears as a “show” in your library the next scan.

Where it falls short: the disk usage climbs quickly if you subscribe to daily uploaders; set retention rules early.

Pricing:

Platforms: Docker.

Download: GitHub (meeb/tubesync)

Bottom line: The one purpose-built tool that turns “download this channel” into a set-and-forget subscription.

6. MPV, best player when you need to open a single file

MPV is a scriptable video player that plays anything, skips SponsorBlock segments with the right script, and can even stream a YouTube URL directly through yt-dlp. On a fast box it feels weightless compared to VLC.

Where it falls short: no menus. Configuration lives in text files. The learning curve is real for anyone used to clicking through settings.

Pricing:

Platforms: Windows, macOS, Linux.

Download: mpv.io · GitHub

Bottom line: The player that ends up as your default once you install it.

7. Sonarr, best UX for treating channels as shows

Sonarr manages TV libraries, but with a custom indexer plugin you can point it at YouTube channels and get the same “add show, monitor, download, notify” workflow. The result is that new videos land in your library with correct episode numbering.

Where it falls short: the YouTube path is community-driven; setup is not one-click. Officially, Sonarr targets TV series from usenet and torrent indexers.

Pricing:

Platforms: Windows, macOS, Linux, Docker.

Download: sonarr.tv · GitHub

Bottom line: Overkill for two channels, exactly right for a library that treats YouTube like a season pass.

How to pick the right one

If you already run Jellyfin and want the smallest possible add-on, install Tubesync in Docker and point it at your channels. Add MPV on the desktop for playback. That is a working setup in an evening.

If Docker is not your world, run yt-dlp on a cron job with a simple template and let Jellyfin pick up the files. Less UI, less to break.

If you want to watch YouTube without pulling it into a library, FreeTube with a self-hosted Invidious backend is the private, ad-free browser replacement. Nothing goes into Jellyfin; nothing goes back to Google.

If you already own a Sonarr and Radarr stack, adding channels as “shows” keeps every download under one UI. It is the power-user answer.

Skip the setup entirely if you subscribe to fewer than five channels; a plain FreeTube install is a better ratio of effort to result.

FAQ

The YouTube ToS forbid it; personal-use downloading is a gray area depending on your jurisdiction. Nothing on this list circumvents DRM. Content creators who prefer viewers watch on youtube.com should be respected.

Does Jellyfin have hardware transcoding on a Pi 5?

Yes, with the right driver. The Jellyfin docs cover the exact config; expect real gains for h.264 and HEVC, less for VP9.

Can I mix downloaded YouTube channels with my Netflix ripped movies?

Jellyfin does not care what is in a folder. Keep them in separate libraries so the metadata scrapers do not confuse a channel for a movie.

How much disk do I need?

A hundred 20-minute videos at 1080p is roughly 30 GB. Tubesync’s per-channel retention rules keep the number bounded.

What about SponsorBlock on the file itself, not the player?

Yes: yt-dlp can strip SponsorBlock segments during download with --sponsorblock-remove. The video that lands in Jellyfin is already trimmed.