Migrate from Plex to Jellyfin and keep your watch history
Updated ยท 6 min read
You want to migrate from Plex to Jellyfin, but nobody in the house wants to lose what they've watched or where they stopped. This page shows what carries over, what doesn't, and how to move across slowly, with Plex still working the whole time.
What moves and what doesn't
Your movies and shows don't move at all. Jellyfin reads the same files from the same folders Plex uses. What you rebuild is everything Plex keeps in its own database: who the people are, what each of them watched, and the collections you made.
- Comes across easily: the media itself, posters and descriptions (Jellyfin fetches its own), and libraries, once you point Jellyfin at the same folders.
- Takes some work: each person's watched history, half-watched resume points, and collections. Plex keeps them in its database, and Jellyfin has no built-in importer.
- Doesn't come across: anything that lives on Plex's service rather than your server. That includes Plex's free movies and live channels, your Discover watchlist, and friends who reach your server through their Plex accounts. They each need a Jellyfin account and a way to reach your server.
Do it by hand
- Leave Plex running. Nothing here changes Plex. Plex answers on port 32400 and Jellyfin on 8096, so both can run on the same computer without clashing. If Jellyfin isn't installed yet, install it first.
- Check your folder names. Jellyfin expects one folder per movie, named like
Movie Name (2019), and shows asShow Name (2019)/Season 01/Show Name S01E01.mkv. Plex expects much the same, so a library Plex matched well usually needs nothing. Where a title matches wrongly, add the ID to the folder name, for example[imdbid-tt0000000]. - Add the same folders to Jellyfin. In Dashboard > Libraries, add a Movies library and a Shows library and pick the folders Plex uses. Keep Movies and Shows apart; a mixed folder confuses both servers.
- Stop Jellyfin writing into those folders. In each library's settings, leave Save artwork into media folders off and leave the Nfo metadata saver unticked. Jellyfin then keeps its posters in its own data folder, and Plex's folders stay exactly as they were.
- Add a Jellyfin user for each Plex person. In Dashboard > Users, add one user per person, with the same libraries they had in Plex. Kids get a parental rating limit. Using the same names as in Plex makes the history tools below easier to set up.
- Bring watch history across. Pick one of the three ways in the next section, and try it on one person first.
- Install the apps and run both for a while. Put a Jellyfin app on each TV and phone, and leave Plex on for a few weeks. When nobody has opened Plex in a while, stop its service. Your files stay where they are.
On Docker, the safest way to keep Jellyfin's hands off your media is to mount the folder read-only with :ro. Jellyfin can still read every file; it just can't write to them.
services:
jellyfin:
image: jellyfin/jellyfin
ports:
- "8096:8096"
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
restart: unless-stopped
Tip: with a read-only mount, leave Save artwork into media folders off. If it's on, Jellyfin tries to write posters it isn't allowed to write, and its log fills with errors.
Your watch history, three ways
Mark it by hand. Open a show in Jellyfin, open its menu and choose to mark it played, or do it season by season. It's quick for a small library and one or two people, and slow for a family of five with years of history. Resume points don't survive this way.
Use Trakt. If your household already logged its watching to Trakt from Plex, the Trakt plugin from the Jellyfin project syncs watch states between Trakt and Jellyfin. It's in Jellyfin's plugin catalog. Each person links their own Trakt account. It only helps if Trakt already has the history.
Use a sync tool. Two community projects on GitHub copy played status between Plex, Jellyfin and Emby. JellyPlex-Watched syncs watched status and progress, one way or both, and runs as a Python script or in Docker. WatchState runs in Docker with a web page, and handles several people. Both need a Plex token and a Jellyfin API key, and both match titles by file name and IDs. Read each project's instructions, back up Jellyfin's data folder before the first run, and check one person's history before doing everyone.
Careful: two-way sync can copy mistakes back into Plex. For a move, set any tool to copy from Plex to Jellyfin only.
Plex and Jellyfin, honestly
Plex is good at a lot. Its apps are polished and on nearly every device. Remote watching is set up for you with a Plex Pass or Remote Watch Pass, and it comes with free movies and live channels of its own. Jellyfin is free, open source, and needs no account with a company, but its setup is yours to do.
| Plex | Jellyfin | |
|---|---|---|
| Cost | Free at home; Plex Pass $69.99 a year, $249.99 for five years or $749.99 lifetime; Remote Watch Pass $29.99 a year | Free |
| Watching away from home | Set up for you, with a paid pass | Yours to set up |
| Apps | Polished, on almost every device | Free apps for most devices; some less polished |
| Extras | Free movies and live channels, Discover | Plugins from the Jellyfin catalog |
| Account | A Plex account for everyone | Accounts live on your server |
| Source code | Closed | Open source |
Prices are US list prices as of October 2026. Reelhost isn't affiliated with Jellyfin, Plex or Emby.
Still deciding whether it's worth it? Plex Pass vs Jellyfin: the real cost adds up the numbers, and Jellyfin remote access covers the one part Plex does for you that Jellyfin doesn't.
Questions
Will installing Jellyfin change my Plex library?
No. Jellyfin only reads your media files. With artwork and Nfo saving turned off, or a read-only mount, it writes nothing into the folders Plex uses.
Can Plex and Jellyfin run on the same computer?
Yes. Plex uses port 32400 and Jellyfin uses 8096, so they don't clash. Running both for a few weeks is the easiest way to switch.
Does Jellyfin import Plex watch history by itself?
No. Jellyfin has no built-in Plex importer. You mark things played by hand, sync through Trakt, or use a community tool that copies played status from Plex.
The one-click way: Reelhost
Reelhost's Switch from Plex copies each person's watched history, resume points and collections from Plex into Jellyfin. It works from a read-only copy of Plex's database, so Plex itself is never changed and you can keep using it. The preview of what would be copied is free; copying needs Complete or Yearly, and one click undoes it.
The check-up is free and changes nothing. Every fix is previewed, backed up and reversible.