Tautulli

Monitoring and analytics for Plex media servers

Media Servers ★ 6.6k stars Easy setup GPL-3.0

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.

Similar media servers apps