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
- A media server that indexes YouTube pulls the same way it indexes a movie file.
- A downloader that respects channel updates and pulls only new videos, not the full backlog every night.
- A player that skips SponsorBlock segments and hides Shorts.
- Offline playback for the last few weeks of a channel, so a train ride is not dead time.
- Clean metadata (thumbnails, descriptions, upload dates) so YouTube videos look like real library entries.
- No hard dependency on YouTube’s official API, which caps at unpredictable rates.
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:
- Free: Full app, no premium tier.
- Paid: Not applicable.
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:
- Free: Full app.
- Paid: Not applicable.
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:
- Free: Full app.
- Paid: Not applicable.
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:
- Free: Full app.
- Paid: Not applicable.
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:
- Free: Full app.
- Paid: Not applicable.
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:
- Free: Full app.
- Paid: Not applicable.
Platforms: Windows, macOS, Linux.
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:
- Free: Full app.
- Paid: Not applicable.
Platforms: Windows, macOS, Linux, Docker.
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
Is it legal to download YouTube videos for personal use?
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.