address-cardAbout 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 watch state sync tool.

It syncs watchlists, watch history, ratings, and resume progress between services.

Progress is Plex/Emby/Jellyfin-only.

It connects media servers (Plex, Jellyfin, Emby) and trackers (Trakt, SIMKL, MDBList, AniList, TMDb).

It runs locally in Docker and stores state on disk.

You control it from a web UI.

circle-check

Common workflows

  • Sync Plex watch history to Trakt (watched status + timestamps).

  • Keep a Plex/Jellyfin/Emby watchlist aligned with SIMKL or MDBList.

  • Sync resume position (“Continue Watching”) between Plex, Emby, and Jellyfin.

  • Scrobble “now playing” and completion in real time with Watcher.

  • Connect multiple accounts or servers using profiles.

What you can do

  • right-left Sync watchlists, history, ratings, and progress (resume position).

  • tower-broadcast Scrobble plays in real time with Watcher.

  • camera-movie Improve matching using TMDb metadata.

  • shield-halved Use local state + snapshots for safer planning and rollback.

The mental model

  • Providers: Plex, Jellyfin, Emby, Trakt, SIMKL, MDBList, AniList, TMDb.

  • Profiles: optional per-provider configs for multiple accounts/servers.

    • Example: two Plex servers, or two Trakt users.

  • Pairs: one source + one target (one-way or two-way).

  • Runs: manual or scheduled.

  • State: local JSON files CW uses to plan changes safely.

Where to go next

Limits (quick)

CW stores state as JSON files (no database).

That keeps installs simple, but very large libraries can slow planning.

chevron-rightSoft size guidance (varies by hardware)hashtag
  • Watchlist: stable up to ~2,500 items total across providers.

  • History (plays): stable up to ~10,000 play events total.

  • Ratings: stable up to ~10,000 ratings total.

Prefer incremental windows for big backfills.

Ratings reads are not cached by design.

If something breaks, file an issue:

File issues herearrow-up-right

Summary

CW syncs watchlists, history, ratings, and resume progress between services.

It can also scrobble Plex/Jellyfin/Emby plays in real time with Watcher.

Start small: one pair, one feature, dry run.

Next steps

Last updated

Was this helpful?