[ e-networld.de ]

PlexToJellyfinSync

Cyclically reads the watch state from a Plex server and writes it into the NFO files Jellyfin imports, for movies and series. No Plex Pass needed, with a web dashboard.

MITDockerv1.4.0 · 18/09/2026
PlexToJellyfinSync status dashboard with cards for the Plex connection, last and next poll, processed items and updated NFO files

Overview

Anyone running Plex and Jellyfin side by side knows the problem: what is marked as watched in Plex is unknown to Jellyfin. PlexToJellyfinSync closes that gap by reading the watch state from Plex on a schedule and writing it into the NFO files next to the media files, which is where Jellyfin imports user data from.

The application runs as a small container and works purely by polling: it needs no Plex Pass and therefore also picks up items that were marked as watched by hand. A fast incremental pass checks the history, and a periodic full reconcile catches up on anything missed. Existing NFO files stay untouched except for the watched, playcount and lastplayed fields; missing files can be generated from the Plex metadata.

The most important setup step is the path mappings. Plex reports file paths as the Plex server sees them, while this container finds the same files under its own mount point. A mapping rewrites the Plex prefix into the local one. What matters is the path Plex returns through its API, not the folder you see in the interface. Without a matching mapping an item is skipped and logged as such, rather than written to a wrong path.

One limitation sits on the Jellyfin side: Jellyfin can only import NFO user data for exactly one user. The tool therefore works with the Plex server owner. In the Jellyfin library settings the NFO metadata reader has to be enabled, with the target user set to the one corresponding to the Plex owner.

Features

Carry the watch state over from Plex without a Plex Pass
Cover movies, episodes, seasons and series
Touch only the watch fields of existing NFO files
Optionally create missing NFO files from the Plex metadata
Fast incremental sync plus a periodic full reconcile
Items marked as watched by hand in Plex are picked up too
Path mappings between what Plex reports and your own mount points
Web dashboard with status cards and live logs, optionally token protected

Installation

docker run -d \
  --name plextojellyfinsync \
  -e PLEXSYNC__Plex__BaseUrl="http://plex:32400" \
  -e PLEXSYNC__Plex__Token="<your-plex-token>" \
  -e PLEXSYNC__PathMappings__0__Plex="/data/Movies" \
  -e PLEXSYNC__PathMappings__0__Local="/media/Movies" \
  -v /path/to/media:/media \
  -v /path/to/config:/config \
  -p 8080:8080 \
  networlddev/plextojellyfinsync:latest

The media volume has to be mounted writable. At least one matching path mapping is mandatory, otherwise items are skipped.

Releases

v1.4.0 · 18/09/2026
  • [Security] Harden dashboard auth, cookies, and container user

GitHub ↗

v1.3.3 · 17/09/2026

Dependencies updated

GitHub ↗

v1.3.2 · 10/09/2026

Dependencies updated

GitHub ↗

v1.3.1 · 23/08/2026
  • Bump the actions group with 2 updates
  • Update Reihitsu.Analyzer, suppress RH5201, fix indentation

GitHub ↗

v1.3.0 · 16/08/2026
  • Bump the actions group with 2 updates
  • Refactor code organization and update dependencies

GitHub ↗

All releases on GitHub ↗