About CrossWatch
Self-hosted watchlist, history, ratings, and resume progress sync plus real-time scrobbling for Plex/Jellyfin/Emby and Trakt/SIMKL/MDBList/AniList/TMDb.
CrossWatch (CW) is a self-hosted tool for syncing watch state between services.
It runs locally in Docker, stores its state on disk, and is managed through a web UI.
CW can feel overwhelming at first. The default settings are good enough for most users. Start with one pair and one feature. Then expand. Keep it easy!
CrossWatch is not meant for very large libraries.
Before you invest time in setup, check Limitations.
Common workflows
Sync Plex watch history to Trakt, including watched status and timestamps.
Keep a Plex, Jellyfin, or Emby watchlist aligned with SIMKL or MDBList.
Sync resume position, or “Continue Watching,” between Plex, Emby, and Jellyfin.
Scrobble “now playing” events and completions in real time with Watcher.
Connect multiple accounts or servers by using profiles.
What you can do
Sync watchlists, history, ratings, and progress (resume position).
Scrobble plays in real time with Watcher.
Improve matching with TMDb metadata.
Use local state and snapshots for safer planning and rollback.
The mental model
Providers are the services CrossWatch connects to, such as Plex, Jellyfin, Emby, Trakt, SIMKL, MDBList, AniList, and TMDb.
Profiles are optional per-provider configurations for multiple accounts or servers.
For example, you might connect two Plex servers or two Trakt users.
Pairs define one source and one target, and can run in one-way or two-way mode.
Runs are the sync jobs you start manually or schedule.
State is the set of local JSON files CrossWatch uses to plan changes safely.
Where to go next
Install and run CrossWatch in Docker: Docker setup
Set up your first clean run: First-time setup
Decide between syncing and scrobbling: What do you need?
Learn how watchlist, history, and ratings syncing works: Syncing
Enable real-time Trakt, SIMKL, or MDBList scrobbling: Watcher
Connect multiple accounts or servers per provider: Profiles
Start with safer defaults: Best practices
Check whether your library size is a good fit: Limitations
Browse supported integrations: Providers
If something breaks, file an issue:
Summary
CrossWatch syncs watchlists, history, ratings, and resume progress between supported services.
It can also scrobble Plex, Jellyfin, and Emby playback in real time through Watcher.
Start small with one pair, one feature, and a dry run.
Next steps
Install and run it: Docker setup
Do your first clean run in the UI: First-time setup
Choose between periodic syncing and real-time scrobbling: What do you need?
Use safer defaults before trying two-way sync: Best practices
Last updated
Was this helpful?