A self-hosted tool that keeps watch progress and ratings synchronized between your Plex, Jellyfin or Emby library and AniList or MyAnimeList.
cenodude/CrossWatch
A self-hosted tool that syncs watchlists, ratings, history and playback progress between media servers like Plex, Jellyfin and Emby, and trackers like Trakt and SIMKL.
- Stars
- 995
- Forks
- 28
- Open issues
- 6
- Last commit
- 18 hours ago
What is it?
CrossWatch (CW) runs locally with a web UI and CLI. It tracks playback through its Watcher component and syncs watchlists, ratings, watch history, playback progress and collections between supported media servers and trackers. Sync pairs can link two media servers, two trackers, or a server and a tracker, and can run manually or on a schedule.
Watcher works without Plex Pass or Emby Premiere, using routes set up per server and user. Interactive Sync lets you review additions, updates and removals before they apply. Saved mappings fix wrong title matches, anime episode numbering, and split or combined episodes for future syncs.
The project supports Plex, Jellyfin, Emby, Kodi, Stremio, Trakt, SIMKL, AniList, MyAnimeList, Kitsu, TMDb and others, and includes a local CW Tracker that keeps snapshots of your data. Optional AI features are off until configured.
Key features
- 01Watcher routes per server and user, without Plex Pass or Emby Premiere
- 02Server-to-server, server-to-tracker and tracker-to-tracker sync where supported
- 03Interactive Sync to review changes before they apply
- 04Saved mappings for wrong matches, anime IDs and split or combined episodes
- 05Local CW Tracker with snapshots of server and tracker data
- 06Command-line run-once mode for cron or Kubernetes CronJobs
Use cases
- Keeping watch history and progress in sync between a Plex server and Trakt
- Moving ratings and watchlists from Jellyfin to a tracker like SIMKL
- Tracking anime progress across AniList, MyAnimeList and Kitsu
- Running scheduled syncs for a household with several viewers on one server
Quick start
- 1
Save the Docker Compose file from the README as compose.yaml
- 2
Change TZ to your timezone, then start CrossWatch
docker compose up -d - 3
Open the web UI, connect your accounts, then create and run a sync pair
Things to know
- Needs Docker or a self-hosted setup, and you must keep its configuration volume safe.
- Not every integration supports every feature, so check provider support before relying on a sync.
In collections
Topics
FAQ
- What is CrossWatch?
- A self-hosted tool that syncs watchlists, ratings, history and playback progress between media servers like Plex, Jellyfin and Emby, and trackers like Trakt and SIMKL. CrossWatch (CW) runs locally with a web UI and CLI. It tracks playback through its Watcher component and syncs watchlists, ratings, watch history, playback progress and collections between supported media servers and trackers. Sync pairs can link two media servers, two trackers, or a server and a tracker, and can run manually or on a schedule.
- Is CrossWatch free to use? What license does it have?
- CrossWatch is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
- Is CrossWatch still maintained?
- Actively maintained. The last commit to CrossWatch was on Nov 6, 2026.
- What can I use CrossWatch for?
- Keeping watch history and progress in sync between a Plex server and Trakt Moving ratings and watchlists from Jellyfin to a tracker like SIMKL Tracking anime progress across AniList, MyAnimeList and Kitsu Running scheduled syncs for a household with several viewers on one server
- How do I install CrossWatch?
- Save the Docker Compose file from the README as compose.yaml Change TZ to your timezone, then start CrossWatch: docker compose up -d Open the web UI, connect your accounts, then create and run a sync pair
- Where can I get CrossWatch?
- The source code and installation instructions are on GitHub: https://github.com/cenodude/CrossWatch
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Self-hosted service that syncs watch/play state between Plex, Jellyfin and Emby media servers without third-party services.
Self-hosted media tracker that syncs Jellyfin, Plex, Emby, Nuvio and Stremio libraries and watch history.
A self-hosted web app to track, rate and explore your movie watch history, with Trakt, Letterboxd and media server integrations.
Open-source web app for users to request movies and TV shows, with approval workflows for Jellyfin, Plex, and Emby libraries.
Ombi is a self-hosted media request tool that lets users ask for movies, music and TV shows and syncs with Plex, Emby and Jellyfin.