I bought a Lifetime Plex Pass November 29th 2014. Back then it was around $75, which felt like a reasonable bet on software I was already using every day. It turned out to be one of the better purchases I've made, I've gotten over a decade of use out of it, and until recently I had no complaints about the value.
Then Plex announced that starting July 1, 2026, a new Lifetime Plex Pass will cost $749.99.
To put that in context: in March 2025, they raised the lifetime price from $119.99 to $249.99, the first increase in over a decade. Fourteen months later, they've announced another 200% jump on top of that. The stated reason is that the pricing now "reflects the real, ongoing value of the software." Their blog post also quietly noted they had "considered eliminating the Lifetime Plex Pass in the past." Read that twice. They're telling you where this is going.
I'm not angry about it. I already own mine, and existing holders keep all their benefits. But it made me think, and thinking turned into this series.
The KTZ Systems Nudge
I'd been aware of Jellyfin for years and had half-heartedly spun it up a couple of times without committing. What finally got me taking it seriously was watching Alex over at KTZ Systems document his own migration on YouTube. He's been putting out a series covering the switch from Plex to Jellyfin — not a "just use Jellyfin, it's great" puff piece, but an actual warts-and-all process log. That's the format I want to follow here.
I'm not going to tell you Jellyfin is better than Plex. I don't know yet. I'm in the middle of figuring that out, and I'd rather write about that process honestly than pretend I have conclusions I don't have yet. One thing Alex did that I just cant do is delete Plex and then start with Jellyfin. We're going to go about this a bit slower and more deliberately with some data migration and configuration along the way
The Goal: One URL, One App, Zero Confusion
Before I get into the why, I want to be specific about what I'm actually trying to build. Because "migrate from Plex to Jellyfin" is vague, there are a dozen ways to do it and most of them still leave your family members juggling multiple apps and URLs.
Here's the experience I want for the people I share media with:
- Install Tailscale once (a five-minute ask)
- Open Jellyfin at a single Tailscale URL
- Search for something they want to watch if it's not there, hit Request
- It shows up when it's ready
- Watch it
That's it. No separate Seerr tab to remember. No "go to search.whatever.ts.net to request things." No explaining what Sonarr and Radarr are. Just one app, one URL, and a request button that works.
For me on the admin side, all the plumbing — Seerr, Sonarr, Radarr, SABnzbd — still runs exactly as it does today. I can still access each service directly by its Tailscale hostname when I need to. None of that changes. The difference is that family members never need to know those services exist.
The way this actually works is through the Jellyfin Enhanced plugin, which embeds Jellyseerr's search and request interface directly into the Jellyfin UI. Users request media without ever leaving Jellyfin. Jellyseerr runs in the background handling the actual orchestration to Sonarr and Radarr. It's still there, it's just invisible to anyone who doesn't need to see it.
That's the target. This series is about getting there.
My Current Stack
Quick inventory, since this series is going to get specific:
- Unraid server running Docker containers for the full *arr stack: Sonarr, Radarr, Lidarr, Bazarr, SABnzbd
- Plex (binhex-plexpass) — still running, still what family uses right now
- Jellyfin — running alongside Plex, pointing at the same media directories, being evaluated
- Seerr — already connected to Jellyfin and the *arr stack, accessible at search.mytail-net.ts.net for my own use
- Tautulli — still monitoring Plex; the Jellyfin equivalent is an open question
- Quadro P620 — hardware transcoding, configured (mostly) in both servers
- Tailscale — the access layer; every service I care about has a Tailscale hostname
- Cloudflare Zero Trust — for services that don't stream media and can live behind a tunnel without latency concerns or throwing red flags to Cloudflare, they dont like your streaming more than 100mb with them.
Both Plex and Jellyfin are currently reading from the same /data/media tree. They coexist fine. The question is how long I keep maintaining two of them.
The Pricing Pattern That Made Me Pay Attention
Here's the full Plex lifetime pricing history, because the arc matters:
| Date | Lifetime Price |
|---|---|
| Launch through early 2025 | $75 → $119.99 |
| April 2025 | $249.99 (first increase in a decade) |
| July 1, 2026 | $749.99 |
Two major price increases in fourteen months, after a decade of stability. And the language in the announcement, "we've considered eliminating the Lifetime Plex Pass", is Plex telling you that the lifetime option exists on borrowed time.
Again: I'm not affected. My pass is grandfathered. But if I were standing at the entry point today, like a friend of mine is, looking at $750 for a media server that increasingly pushes streaming service integrations I don't want, I would not buy it. I would look at Jellyfin, which is free, open source, and has no monetization model to drift toward.
That's the lens I'm evaluating this through.
What Plex Is Becoming (vs. What I Actually Want)
The price is the obvious thing, but the more meaningful signal is the product direction. Every major Plex update in the last few years has pushed the "Plex as a streaming service" angle harder: the Discover tab, Plex Movies, Live TV integration, the Watchlist pulling from external sources. The UI keeps making these features more prominent.
None of that is for me. I self-host because I want to control my own media library, the files I've acquired, organized the way I like them, served to people I choose. I don't want a streaming service with a Plex badge on it.
Jellyfin's entire existence is built around the thing I actually want. There's no venture capital pressure to monetize the user base. There's no "eventually we'll need to justify this to investors" lurking underneath the roadmap. It's a community project that does one thing: serve your media.
What's Holding Me Back
Honest accounting of the friction, because these posts are useless if I skip this part:
Family inertia. My family members know Plex. The apps are polished. The TV app ecosystem is mature, we run ours on Apple TV but Roku and Fire Stick exist as well. Asking people to switch apps and install Tailscale is a real cost, even if it's a one-time one.
PlexAmp. I use it for music. Finamp exists on the Jellyfin side. It's not PlexAmp. If you listen to music through your media server, this is probably your biggest loss.
Tautulli. I genuinely love Tautulli for play statistics, notification triggers, and history granularity. There's no settled Jellyfin equivalent that satisfies me yet. This needs its own investigation.
App quality gap. Jellyfin's official clients have improved significantly. Infuse supports Jellyfin now. Swiftfin on iOS is solid. But Plex's apps are still more polished for people who don't want to think about it — and those are exactly the people I'm trying to serve.
Prologue. I liste to my audiobook collection using Prologue and it conencts to plex to do the listening. I think this one is going to suck the most.
The Series Plan
Here's what I'm planning to cover, in roughly this order:
Part 2 — Setting Up Jellyfin on Unraid and Connecting the *arr Stack Getting the Docker container right, library configuration, and making sure Sonarr/Radarr/Lidarr are all talking to Jellyfin instead of (or alongside) Plex. Look we have a lot of Linux distros to watch on our media server so we need to make sure we get this right 😉
Part 3 — Hardware Transcoding: Getting the Quadro P620 Actually Working There's more nuance here than "enable NVENC and you're done." I've already hit this once and it's worth its own post. This video card is getting old in the tooth but I'm still going to use it since its in my Dell server and it works just fine for the minimal transcoding that I do.
Part 4 — The One URL Goal: Embedding Seerr Inside Jellyfin The practical walkthrough of configuring Jellyfin Enhanced's Seerr integration, setting up user accounts so family members can request from inside Jellyfin, and testing the full request-to-watch flow. This is the post where the goal from Part 1 either works or it doesn't.
Part 5 — Remote Access via Tailscale: No Port Forwarding, No Relay How the Tailscale setup works for Jellyfin, why it's actually simpler than Plex's remote access model once it's configured, and what the family onboarding experience actually looks like. Plexpass gives you this ability and Tailscale is going to fix this for me when using Jellyfin.
Part 6 — The UI Plugin Ecosystem (Honest Edition) Jellyfin's plugin story is powerful and messy in equal measure. I've already survived a database-corrupting version rollback trying to get CustomTabs working. That story deserves to be told.
Part 7 — What About Tautulli? The Stats and Monitoring Problem The hardest unsolved piece. What exists on the Jellyfin side, what's missing, and whether "good enough" is actually good enough.
Part 8 — The Verdict Writing this last, after I've actually been through it. Either I cut over or I run both indefinitely — but either way I'll have real reasons rather than speculation.
If you're mid-migration yourself or running a similar setup, I'd genuinely like to hear what broke and how you fixed it. That ground truth is worth more than any feature comparison chart.
Next up: Part 2 — Setting Up Jellyfin on Unraid and Connecting the *arr Stack
Comments