Tracearr vs Jellystat
Jellystat reports on what played on one Jellyfin or Emby server. Tracearr monitors Plex, Jellyfin, and Emby together, merges the same person across them, and acts on account sharing on its own.
Media server support
One Tracearr instance connects to any number of Plex, Jellyfin, and Emby servers. One Jellystat instance connects to a single Jellyfin or Emby server, chosen by a setting at startup.
Import your Jellystat history, and your Plex history with it
Tracearr reads a Jellystat backup file directly, so nothing you have already recorded is lost in the move. It also reads the Playback Reporting plugin straight off Jellyfin or Emby if you would rather not export anything.
The part Jellystat cannot do is the other direction. It reads the Playback Reporting plugin and its own backups, and nothing else. There is no Plex source, so a Plex library's history has no way in. Tracearr reads both sides, then merges the accounts so one person keeps one timeline across servers.
- 1
Export Activity from Jellystat
In Jellystat, deselect everything except Activity under Settings, Backup, then run the Backup Jellystat task.
- 2
Upload the backup to Tracearr
Drop the JSON file into Settings, Import. Files up to 500MB are accepted.
- 3
Bring your Plex history too
Point Tracearr at Tautulli with a URL and API key, then merge the accounts so both histories land on one person.
| Capability | Tracearr | Jellystat |
|---|---|---|
| SERVER COVERAGE Tracearr monitors Plex, Jellyfin, and Emby from a single instance, and receives sessions as they start through the Tracearr SSE plugin. Jellystat polls one Jellyfin or Emby server. | ||
| Media servers | TracearrPlex, Jellyfin, and Emby | JellystatJellyfin or Emby, picked by one setting at startup. No Plex. |
| Servers per instance | TracearrAny number, any mix of the three | JellystatOne. Jellystat's own README lists multi-server support under work that is not built yet. |
| How sessions arrive | TracearrJellyfin and Emby push events the moment they happen, through the Tracearr SSE plugin we build and ship. Polling stays as a fallback on an interval you set between 5 and 300 seconds. | JellystatPolling only. It calls the sessions endpoint every second while anything is playing and every five seconds when idle. There is no push path into Jellystat. |
| One person across servers | TracearrPlex, Jellyfin, and Emby accounts merge into a single identity carrying one trust score | JellystatNot applicable. One server, one user list. |
| ACCOUNT SHARING Tracearr detects account sharing and can stop the stream itself. Jellystat has no sharing detection and never sends a command back to the media server. | ||
| Detection | TracearrImpossible travel, simultaneous locations, device velocity, concurrent streams, and geo restrictions, from 31 condition fields across 18 triggers | JellystatJellystat has no sharing detection, concurrent-stream limits, or location rules |
| What happens next | TracearrThe automation acts: stop the stream, message the client, adjust trust. A policy rule records the violation itself. | JellystatNot applicable. Jellystat reads from the server and never sends a command back. |
| Trust scoring | TracearrEvery account starts at 100. Automations raise, lower, or reset it, and an admin can set it by hand. An identity scores the lowest of its active accounts. | JellystatJellystat has no trust or risk scoring |
| Stopping a stream | TracearrOn Plex, Jellyfin, and Emby, from the web UI, the mobile app, an automation, or the public API | JellystatNot possible. No Jellystat endpoint sends a playstate or stop command to the media server. |
| AUTOMATIONS Tracearr runs conditional rules that act on a stream. Jellystat has no rule engine at all. | ||
| Rule logic | TracearrConditions grouped with AND and OR, and an if action that branches into then and else arms. 31 fields, ten operators, windows up to seven days. | JellystatNone. A webhook fires on its event with nothing to evaluate first. |
| Triggers | Tracearr18, across sessions, accounts, library changes, server health, update availability, and newsletter results | JellystatWebhook events, plus a scheduled trigger on a cron expression |
| What a rule can do | TracearrStop the stream, message the client, adjust trust, send a notification, or branch with if. A kill can wait up to 300 seconds and re-check the condition before it fires. | JellystatSend the webhook. |
| Which sessions an action hits | TracearrThe triggering session, the oldest, the newest, all but one, or every session that person has open. Conditions can aggregate across every server-account belonging to the same person. | JellystatNot applicable |
| Testing and sharing rules | TracearrA live check runs a rule against currently playing sessions and shows pass or fail for each without recording anything. Any rule exports as a share code another instance pastes in, and 22 templates ship built in. | JellystatJellystat has no rule engine to test or share |
| WHERE STREAMS COME FROM Tracearr plots every stream on a world map it serves itself, with the geolocation databases bundled in the image. Jellystat returns an IP address's city as text, and only with your own MaxMind credentials. | ||
| Map | TracearrA world map Tracearr serves itself. The vector basemap ships inside the container, so there are no tile keys and no third-party requests. | JellystatJellystat has no map. There is no map library in the project at all. |
| Geolocation data | TracearrGeoLite2 City and ASN databases bundled in the image. No account, no key. | JellystatAn IP lookup returning city and country as text, and only if you supply your own MaxMind GeoLite account id and license key |
| LIBRARY AND MEDIA Tracearr matches one catalog across every connected server and reports on duplicates and storage. Jellystat browses the library of the one server it is attached to. | ||
| Cross-server catalog | TracearrOne record per title matched on IMDb, TMDB, or TVDB id, with every server's copies attached | JellystatNot applicable. Library browsing is scoped to the one connected server. |
| Duplicate detection | TracearrAcross servers, with recoverable space and match type | JellystatJellystat has no duplicate media finder |
| Storage analytics | TracearrGrowth trends with predictions, stale content, and ROI measured as watch hours per GB | JellystatJellystat reports no media file sizes and no disk usage |
| Overseerr and Jellyseerr | TracearrLinked per server. Requested-to-watched funnel, landed-and-never-played, requester follow-through. | JellystatJellystat has no request integration, including Jellyseerr |
| ALERTS AND EMAIL Tracearr delivers to nine destination types including email and mobile push. Jellystat sends webhooks, of which Discord and generic are the only two types. | ||
| Where alerts go | TracearrDiscord, JSON webhook, ntfy, Gotify, Apprise, Pushover, SMTP email, mobile push, and an in-app toast | JellystatWebhooks only. The type dropdown has exactly two options, Discord and generic. |
| Newsletters | TracearrRecently-added mail per server on a daily, weekly, monthly, or cron schedule, with unsubscribe, view in browser, and per-recipient status | JellystatJellystat has no newsletters and no email support of any kind |
| Mobile app | TracearriOS and Android, with push notifications and stream termination | JellystatJellystat has no mobile app |
| BRINGING HISTORY WITH YOU Tracearr imports watch history from Tautulli, Jellystat, and the Playback Reporting plugin. Jellystat reads the Playback Reporting plugin and its own backups, so Plex history has no way in. | ||
| Import sources | TracearrTautulli over its API, Jellystat backups, and the Playback Reporting plugin read straight from Jellyfin or Emby | JellystatThe Playback Reporting plugin and Jellystat's own backup files |
| History across platforms | TracearrImport both sides, merge the accounts, and one person keeps one timeline across servers | JellystatNo Plex source exists, so Plex history cannot come in |
| HOLDING UP AS HISTORY GROWS Tracearr pages history with a keyset cursor and a SQL LIMIT against TimescaleDB. Jellystat runs an uncapped COUNT(*) over the full query on every page request. | ||
| History pages | TracearrA keyset cursor and a SQL LIMIT, so page ten costs what page one costs | JellystatAn uncapped COUNT(*) over the full query runs on every page request |
| Indexes on playback history | TracearrA TimescaleDB hypertable on 30-day chunks with indexes on the columns history is filtered and sorted by | JellystatThe playback activity table carries no index beyond its text primary key. There are no CREATE INDEX statements across any of its 99 migrations. |
| Precomputed figures | TracearrContinuous aggregates refreshed on a schedule, every 15 minutes or hourly | JellystatThree materialized views, rebuilt without CONCURRENTLY after every bulk insert while the activity poller writes once a second during playback |
| ACCESS AND PLATFORM Tracearr signs in through any OIDC provider and ships in 30 languages. Jellystat has local username and password only, with eight locale files. | ||
| Single sign-on | TracearrAny OIDC provider, through discovery | JellystatJellystat has no OIDC, SAML, or SSO. Local username and password only. |
| Languages | Tracearr30, managed through Crowdin | Jellystat8 locale files, one of which is a second English variant |
| Price | TracearrFree, AGPL-3.0, self-hosted | JellystatFree, MIT, self-hosted |
Common questions
Does Jellystat support Plex?
- No. Jellystat talks to Jellyfin or Emby only. Tracearr monitors Plex alongside both of them from one instance, so a mixed setup does not need two dashboards.
Can Jellystat monitor Jellyfin and Emby at the same time?
- No. Jellystat picks one or the other with a single setting at startup, and one instance talks to one media server. Its own README lists multi-server support as work that has not been built. Tracearr connects to any number of servers of all three types at once.
Can I import my Jellystat history into Tracearr?
- Yes. Export a backup from Jellystat with only Activity selected, then upload the JSON file to Tracearr. Files up to 500MB are accepted. Tracearr can also read the Playback Reporting plugin straight off your Jellyfin or Emby server if you would rather skip the export.
Can Jellystat stop a stream or detect account sharing?
- No to both. Jellystat reads from your media server and never sends a command back to it, so there is no way to stop a stream from inside it. It also has no sharing detection, no concurrent-stream limits, and no trust scoring. Tracearr detects sharing with rules you configure and can stop the stream itself when one matches.
Does Jellystat have a map of where streams come from?
- No. Jellystat can look up an IP address and show the city and country as text, and only once you supply your own MaxMind GeoLite account id and license key. Tracearr ships a world map and the GeoLite2 databases inside the container, so it works with no keys and no outbound requests.
Also weighing up Streamystats or, on the Plex side, Tautulli?
Comparison checked against Jellystat 1.1.11 on 2026-09-21. Something out of date? Tell us.