{"repo":"arabcoders/watchstate","free":true,"listed":false,"github":"https://github.com/arabcoders/watchstate","clone":"git clone https://github.com/arabcoders/watchstate.git","description":"Self-hosted service to sync your plex, jellyfin and emby play state. without relying on 3rd-party external services.","language":"PHP","stars":1525,"topics":["emby","plex","jellyfin","watchstate","webhook","matched","mismatched","misidentified","backup","docker"],"license":"MIT","category":"deployment-docker-iac","readme_excerpt":"WatchState This tool primary goal is to sync your backends users play state without relying on third party services, out of the box, this tool supports Jellyfin , Plex and Emby media servers. Updates 2026-07-20 Media Health is now the central place to audit media record problems. It replaces the old separate parity, duplicate-reference, and file-integrity views with one report for backend metadata coverage, GUID conflicts, duplicate GUIDs, duplicate file references, structural metadata disagreement, path disagreement, weak matches, and optional local file checks. See the Media Health guide for details. 2026-05-25 Path matching is now available in v1.8.5+. It lets items match using a GUID source derived from the media path, which helps when your backends share the same media files but have unreliable or inconsistent external IDs. See the path matching guide for setup and backfill instructions. Please refer to NEWS for the latest updates and changes. ------ Features Multi-users support via identities . Sync backends play state ( many-to-many or one-way ). Backup your backends play state into portable format. Receive webhook events from media backends. Find record issues with Media Health. Search your backend metadata. Sync your watch progress/play state via webhooks or scheduled tasks. If you like my work, you might also like my other project YTPTube, which is simple and to the point yt-dlp frontend to help download content from all supported sites by yt-dlp. Install If you pre","default_branch":null,"files":null,"tree":[],"storefront":"/r/arabcoders","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/arabcoders/watchstate/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}