Tautulli
Monitoring and analytics for Plex media servers
Tautulli is a monitoring and tracking tool for Plex that provides detailed statistics, history, and notifications. It targets Plex administrators who want insight into usage. It is deployed via Docker or a Python install.
Key features
- Detailed Plex usage statistics
- Watch history and graphs
- Rich notification agents
- Newsletter generation
Pros & cons
Strengths
- Great Plex insights
- Flexible notifications
- Lightweight
Trade-offs
- Plex only
- Companion tool, not a server
Tautulli replaces
Last reviewed Sep 13, 2026 · 791 words
Plex's own dashboard shows you what is playing right now and forgets it the moment playback stops. Tautulli remembers everything: every stream, every user, every transcode and the reason for it, going back as far as you have been running it. If you share a Plex server with more than 2 people, it is the first companion I install, and it needs about 128 MB of RAM to do the job.
It watches Plex, it does not replace anything
Tautulli sits beside your Plex server and polls its API plus a websocket for playback events. It writes every session to its own SQLite database and builds history, per-user statistics and graphs from that. Nothing about your library changes; you can remove Tautulli tomorrow and Plex will not notice. That also means it is Plex only. There is no Jellyfin or Emby mode and there never will be; if you run Jellyfin, the closest equivalents are community projects with a fraction of the polish, and I would treat that gap as one of the real remaining arguments for staying on Plex.
The compose file is 10 lines
services:
tautulli:
image: ghcr.io/tautulli/tautulli:latest
ports:
- "8181:8181"
volumes:
- ./config:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
restart: unless-stopped
Open port 8181, sign in with your Plex account, pick the server. If Plex and Tautulli run on the same Docker network, point it at the container name rather than an IP; if Plex runs on another box, Tautulli needs the server's IP and port 32400 and, for remote servers, "Use SSL" ticked. The setup wizard finds the server through your Plex account either way. The only file that matters is /config, which holds tautulli.db and config.ini. Back it up; a 2 year watch history is not something you can regenerate.
Notifications are the feature people stay for
The statistics page is nice. The notifier system is why Tautulli ends up load-bearing. Each notification agent (Discord, Telegram, Pushover, Slack, email, a generic webhook, a shell script) can subscribe to triggers: playback start, playback stop, a transcode starting, a new item added to the library, a user's concurrent-stream limit tripped, or the Plex server going down. Two I recommend on day one:
Plex Server Down, sent to whatever you look at during the day. Tautulli notices within about a minute, which is usually before the family does.
Recently Added, sent to a shared Discord channel, with the poster and summary. This quietly ends the "did you add that film yet" messages, and it pairs with a request tool like Overseerr so the loop is request, download, notify.
The notification text is templated, with around 100 substitution variables. {transcode_decision} and {stream_video_codec} in a playback-start notification is how you learn that one relative's TV is forcing 4K HEVC to 1080p H.264 on every single play.
The transcode column is the diagnostic that pays back the install
Every history row shows Direct Play, Direct Stream or Transcode, and hovering the stream info gives the reason. I have used this to settle the two arguments every Plex admin has: whether the server needs hardware transcoding (look at how many concurrent transcodes actually happen; on my server it was 1 at a time, on a 6 user share) and whether a remote user's complaints are their bandwidth or your upload (their sessions show bitrate and the buffer warnings). Hardware transcoding itself is a Plex Pass feature; Tautulli is free and does not need a Pass.
Newsletters and the smaller wins
The newsletter module emails a "what's new this week" digest to a list of users, built from the same recently-added data. It works, it looks decent, and it needs an SMTP account configured. Beyond that: per-user statistics for finding who never watches anything (useful when pruning shared users), library statistics for spotting duplicates and unplayed bulk, and an Export feature that dumps library metadata to CSV or JSON. The broader Plex tooling this fits alongside is covered in the media server category.
What I'd do
Deploy the compose above next to Plex, mount /config on the same disk you already back up, and set 2 notifiers: server down to your phone, recently added to a shared channel. Leave it alone for a month, then read the history page before spending money on hardware transcoding or a bigger upload; the data usually says you do not need either. If you are on Jellyfin, skip this entirely and do not switch media servers for it, but if you are on Plex and sharing it, there is no reason not to run Tautulli.
Compare Tautulli
19 head-to-head comparisons.
- Tautulli vs Jellyfin
- Tautulli vs Kodi
- Tautulli vs Stremio Web
- Tautulli vs Stash
- Tautulli vs Streama
- Tautulli vs Emby
- Tautulli vs Dim
- Tautulli vs Ombi
- Tautulli vs Universal Media Server
- Tautulli vs Fladder
- Tautulli vs Gonic
- Tautulli vs Kyoo
- Tautulli vs Reiverr
- Tautulli vs Gerbera
- Tautulli vs Stremio Server
- Tautulli vs Olaris
- Tautulli vs MiniDLNA
- Tautulli vs Rygel
- Tautulli vs tinyMediaManager
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify