Plex has moved another wall in 2026: remote streaming now sits behind Plex Pass in more regions, and the free client tier keeps shrinking. If you have a NAS full of MKV files, the cost-benefit for a $120 lifetime pass is quietly getting worse, and Jellyfin keeps closing the feature gap that used to justify it.
We tested seven tools that make a Plex-to-Jellyfin migration actually finish: metadata that survives the jump, watch history that comes with, playlists that still play, and clients that do not embarrass Jellyfin in the living room. Ranked by how much you can keep and how few hours it takes.
What to look for in a migration tool
- Watch state parity. Half-watched episodes should stay half-watched. Migrations that reset every progress bar are a household morale problem.
- Metadata transfer. Poster art, custom collections, and manually-corrected episode matches are worth preserving.
- Playlist and rating migration. These are the fiddly bits.
- User account mapping. A family with four Plex users should get four Jellyfin users with matching histories, not one shared blob.
- Client story on the TV. Migration is pointless if the Jellyfin app on the TV is worse than what you had.
- Rollback path. Keep Plex installed until the migration proves itself over a week.
Quick comparison
| Tool | Best for | License | Handles | Notes |
|---|---|---|---|---|
| Jellyfin | The destination server | GPLv2 | Everything | Start here |
| Plex-to-Jellyfin Migrator | History and playlists | MIT | Progress, playlists | Community-maintained script |
| Kometa | Collections, art | MIT | Metadata bulk edit | Formerly Plex-Meta-Manager |
| Jellyfin Vue | Web client that feels modern | GPLv3 | Playback | Snappier than official web UI |
| Fin | Native macOS client | GPLv3 | Playback | The Plex-macOS replacement |
| Jellyseerr | Requests | MIT | Request UI | The Overseerr fork for Jellyfin |
| PlexTraktSync | Watch history via Trakt | AGPLv3 | Trakt bridge | Portable across servers |
The apps
1. Jellyfin, the destination server
Jellyfin is the fork of Emby that stayed open source. The 12.x line closed the last few gaps that mattered: HDR tone-mapping, DoVi passthrough on capable clients, and hardware transcoding across Intel Quick Sync, NVENC, and VA-API. The setup wizard is a copy of Plex’s, so anyone who has done a Plex install is at home in Jellyfin within a day.
Where it falls short: No first-party mobile app parity with Plex’s polish. Third-party clients (Streamyfin, Findroid) are the answer.
Pricing: Free.
Platforms: Linux, macOS, Windows, Docker, ARM.
Download: Jellyfin on GitHub and the Jellyfin website.
Bottom line: The whole exercise ends here. Install first, migrate into it.
2. Plex-to-Jellyfin Migrator, the history bridge
The community-maintained jf-migrator (formerly plex-to-jellyfin-migrator) is a Python script that reads the Plex database and writes the equivalent state into Jellyfin’s API. Watch history, in-progress positions, playlists, and per-user favourites all cross over. Run it once, check the output, run it again if you added anything on Plex in the meantime.
Where it falls short: Not a click-through tool. You edit a config file, run the script, and read the log for errors.
Pricing: Free.
Platforms: Anywhere Python 3.10 runs.
Download: jf-migrator on GitHub.
Bottom line: The one script that makes the whole migration bearable.
3. Kometa, the metadata bulk-editor
Kometa (formerly Plex-Meta-Manager) started as a Plex tool and now handles Jellyfin. Point it at a config full of collection rules (“all Studio Ghibli,” “all 2023 releases with a Rotten Tomatoes score above 90”) and it recreates them on the new server. Also good for reapplying poster packs and studio branding you spent hours on.
Where it falls short: YAML-heavy. Expect an hour of config tuning per library size.
Pricing: Free.
Platforms: Linux, macOS, Windows, Docker.
Download: Kometa on GitHub and the Kometa website.
Bottom line: The tool for anyone whose Plex library was a curated project, not a dumping ground.
4. Jellyfin Vue, the modern web client
Jellyfin Vue is the community rewrite of the Jellyfin web UI with a snappier feel and better mobile responsiveness. Not a replacement for the server. It sits alongside the built-in web client and lets you pick per browser. If the default UI felt sluggish on your last Jellyfin trial, Vue is what changes your mind.
Where it falls short: Still labelled beta. Some server-side settings pages point back at the classic UI.
Pricing: Free.
Platforms: Any modern browser.
Download: Jellyfin Vue on GitHub.
Bottom line: The web client to bookmark on the laptop. Install once, forget the classic one exists.
5. Fin, native macOS client
Fin is the AppKit-native Jellyfin client for macOS. The window looks like a native Mac app, not a stretched web page, and playback runs through AVKit for lower CPU use than the browser client. Small team, active updates, and the closest experience to the retired Plex-for-Mac app.
Where it falls short: macOS only. No iPad build.
Pricing: Free.
Platforms: macOS 12 and newer.
Download: Fin on GitHub and the Fin website.
Bottom line: The Mac client that stops you missing Plex on the desktop.
6. Jellyseerr, the request UI
Jellyseerr is the Overseerr fork that speaks Jellyfin. Family requests movies and shows through a clean web page, and the tool wires the request into Sonarr or Radarr for download. Users log in with their Jellyfin accounts, so no separate signup.
Where it falls short: Depends on Sonarr and Radarr being set up already. Not a media downloader on its own.
Pricing: Free.
Platforms: Linux, Docker.
Download: Jellyseerr on GitHub.
Bottom line: The tool that keeps the household from asking you to download things by text message.
7. PlexTraktSync, the portable watch history
PlexTraktSync pushes Plex watch history to Trakt on a schedule. Jellyfin has its own Trakt plugin that pulls the same history back down. Route both servers through Trakt and the watch state stays consistent even if you keep both running for a while during the migration.
Where it falls short: Adds a dependency on Trakt. If Trakt breaks, both servers stop syncing.
Pricing: Free.
Platforms: Linux, macOS, Windows, Docker.
Download: PlexTraktSync on GitHub.
Bottom line: The safest way to run Plex and Jellyfin side by side during the transition month.
How to pick the right one
- You want to keep watch progress: Plex-to-Jellyfin Migrator, or PlexTraktSync via Trakt.
- You have curated collections you cannot lose: Kometa. Budget a weekend.
- You want a Mac experience Jellyfin can match: Fin.
- The default Jellyfin web UI felt too web-y: Jellyfin Vue.
- You want the household to stop nagging you: Jellyseerr.
- You are still convinced Plex is easier: Try the migration for a fortnight, keep Plex installed, decide after.
FAQ
Can I run Plex and Jellyfin at the same time?
Yes. Point both at the same media library. Different ports, different service names. Run the pair for a couple of weeks before you retire Plex.
Will hardware transcoding work in Jellyfin?
On Intel Quick Sync and NVIDIA NVENC, yes and reliably. VA-API on AMD works with a config nudge. The Jellyfin 12.x line closed most of the transcoding gap with Plex.
Do I lose my Plex Pass features going to Jellyfin?
You lose Plex-cloud features (Plex TV, movies free with ads) that Jellyfin does not offer. You keep hardware transcoding, live TV via HDHomeRun, and DVR. Trailers require a plugin.
What about the TV client?
Jellyfin has apps for Android TV, Apple TV, Fire TV, Roku, LG, and Samsung. Streamyfin on Android TV and Swiftfin on Apple TV are the community picks worth trying first.
How long does the migration actually take?
For a library under 1 TB with one user, an afternoon. For a family library with four users and years of watch history, a weekend of preparation and a week of side-by-side testing.