Private recommendation rows for every Plex user

Shortlist is a free, open-source, self-hosted tool that gives each person on your Plex server their own rows (Picked for You, Because you watched, seasonal picks, the titles they asked for), built from what they watched and hidden from everyone else.

Sarah's Plex Home. Movies Picked for You: Fight Club, Parasite, Whiplash, Forrest Gump. Footer: Not on this Home: Jess's 2 rows, Mike's row.

SarahBecause you watched GoodFellas

Mike's Plex Home. TV Shows Picked for You: The Expanse, Peaky Blinders, Ted Lasso, Sherlock. Footer: Not on this Home: Jess's 2 rows, Sarah's 2 rows.

MikeBecause you watched Breaking Bad

Same server, same night. Neither can see the other’s row.
docker-compose.yml
services:
  shortlist:
    image: ghcr.io/stevezau/shortlist:latest
    ports: ["5959:5959"]
    volumes: ["./config:/config"]
    environment:
      - TZ=Etc/UTC
      - PUID=1000
      - PGID=1000
    restart: unless-stopped

One file, one container. Save it as docker-compose.yml, run docker compose up -d, then open http://your-host:5959. The setup wizard connects Plex and builds the first rows in about ten minutes.

Add SHORTLIST_DRY_RUN=1 to see every change it would make while writing nothing to Plex. Other ways to install are in the install guide.

GitHub
  • v1.12.2
  • released 21 Oct 2026
  • MIT
  • needs Plex Pass and PMS 1.43.2+
  • running nightly on a 40-user server

Rows you can add

Start from a template or build your own. Each is built per person, except Popular on this server.

  • ✨ Movies Picked for You

    Picked for You. Their whole recent history, blended into one set.

  • 🎯 Because you watched Heat

    Because you watched… One recent title, and things like it. The title says why.

  • ☕ TV Shows you’ve already seen

    Watch it again. Favourites they’ve finished, back in front of them.

  • 👥 Popular TV Shows on this server

    Popular on this server. What several people here watched. Nothing personal in it.

    shared
  • 🎃 Halloween picks

    Seasonal. Halloween, Christmas, Valentine’s and your own dates. Hidden between seasons.

  • 📬 TV Shows you asked for

    Your requests. What they asked for in Overseerr, once it’s on Plex.

Also as templates:
  • 🌱 New Movies to try
  • 🕰️ Movies from the vault
  • 🍿 Tonight’s Movies
  • 📺 More TV Shows to watch
Rows and templates How a row is filled AI and cost

How it stays private

Plex can’t share a collection with one person. It can hide things by label. So Shortlist labels each row, tells every other account to hide that label, and only then puts the row on Home.

How the hiding works
  1. Send the row in hidden It exists in Plex now, but it isn’t on anyone’s home screen yet.

    On nobody’s Home

  2. Hide it from everyone else Every other account is told to hide that row’s label. Their own settings are left as they were.

    On nobody’s Home

  3. Now show it Only after the sharing filters are applied is the row promoted onto Home.

    On the intended viewer’s Home

The first two steps keep a new row off Home. An unpromoted row can still appear in the library’s Collections tab until its sharing filters apply. Plex cannot hide collections from the server owner, and restriction profiles can prevent the filters from working. Read the visibility exceptions.

What it writes to your server, and how to undo it

Creates

  • One Plex collection per row, labelled shortlist_<person> so it can always tell its own from yours.
  • One hide entry, label!=shortlist_<person>, merged into every other account’s sharing filter.
  • Home and Recommended placement for its own rows, after the hide entries exist.

Never touches

  • Collections it didn’t make. Kometa, Agregarr and the rest keep their items, names and artwork.
  • Your own sharing-filter entries. It reads the filter, adds its line, and leaves the rest exactly as written.
  • The server owner’s account, which Plex can’t restrict, and managed users’ parental-control profiles.

Uninstall restores

  • Every sharing filter, from a snapshot taken before Shortlist’s first change to it.
  • A preview first. The in-app uninstall shows the restores and the collection deletes, then names any account it couldn’t restore.
  • Run it before removing the container. Deleting the container alone leaves Plex as it is.

One exception to “never touches”: placing rows on the Recommended shelf can move other shelves, keeping their order relative to each other.

Common questions

Read the full FAQ
Does it need an AI key?

No. Shortlist picks the titles itself, and the suggestions come from TMDB, which is free. An AI model is optional: Claude, GPT, Gemini, or one you run yourself such as Ollama, llama.cpp, LM Studio, vLLM or LocalAI. If you add one, it can search the web for recent titles TMDB doesn’t return and build AI rows from a description. Shortlist writes the reason next to each pick itself. That web search is off until you turn it on.

Is it Plex-only?

Yes, and it will stay that way. Each row is kept private with a Plex feature for hiding things by label, and Jellyfin and Emby have nothing equivalent to build it on.

Can I give each Plex user recommendations based on what they watched?

Yes, that is exactly what Shortlist does. It reads each person’s own Plex history, finds films and shows in your library they haven’t seen but are likely to want, and puts them in rows on that person’s Plex home screen: “Picked for You”, “Because you watched”, “Watch it again”, seasonal picks and more. Everyone gets different rows. Sharing filters hide them from other accounts, with exceptions for the server owner and Plex restriction profiles. It runs on a schedule you set, usually overnight.

Can you make a Plex collection visible to only one user?

Not directly, but you can get there. Plex has no per-user collections. What it does have is the ability to hide things by label. Give the collection a label, then set every other account to hide that label, and one person is left able to see it. You need Plex Media Server 1.43.2.10687 or newer, because older versions ignore that setting on the Home and Recommended shelves. Shortlist applies the sharing filters before promoting the row to Home. An unpromoted collection can still appear in Collections until those filters apply; the server owner and Plex restriction profiles have exceptions.

Will the AI recommend films I don't actually have?

No. The AI only ever chooses from titles already confirmed to be in your library and not yet watched by that person. Anything else it suggests is thrown away and logged, so a made-up title can’t reach anyone’s row.

Does Shortlist conflict with Kometa?

No, they are built to run side by side. Shortlist changes collection contents, names and artwork only for collections it made itself, which carry its own shortlist_* label. Everything else on your server, including every Kometa collection, keeps those properties. Row placement can move other shelves while preserving their relative order. It is the same story with your sharing settings: Shortlist reads what is there and adds only its own entries, leaving the rest alone.

What can the server owner see?

Not everyone’s rows on your own Home screen — Shortlist puts each person’s row only on their side, so nobody else’s row lands on yours. Where you do see them all is the library’s Collections tab, and the Recommended shelf if you leave that on for a row, because Plex cannot hide anything from the account that owns the server. That is a Plex limitation rather than a Shortlist choice. If it bothers you, take the rows off the Recommended shelf, or watch on a Plex Home user and keep the admin account for admin.

What happens to my Plex settings if I uninstall?

Use Shortlist’s in-app uninstall flow before removing the container. It previews restoring saved sharing settings and deleting Shortlist collections, then reports any accounts it could not restore. Deleting the Docker container alone does not clean up Plex. You can also try the whole thing first without touching anything: set SHORTLIST_DRY_RUN=1 and it will show you every change it would make while writing nothing.

What do I need to run it?

Plex Media Server 1.43.2.10687 or newer, Plex Pass on the admin account, a free TMDB key, and somewhere to run one Docker container. Tautulli, Radarr, Sonarr, Trakt, MDBList and an AI key are all optional. Images run on both Intel and ARM machines.

Install it tonight

The same file as above. Save it, run docker compose up -d, open port 5959. If something breaks, open an issue.

GitHub
docker-compose.yml
services:
  shortlist:
    image: ghcr.io/stevezau/shortlist:latest
    ports: ["5959:5959"]
    volumes: ["./config:/config"]
    environment:
      - TZ=Etc/UTC
      - PUID=1000
      - PGID=1000
    restart: unless-stopped