Decide what to watch on your Plex server by swiping cards based on your group's preferences.
Find a Movie or TV Show everyone wants to watch.
Self hosted with Docker. Available on the Unraid Community Apps store.
Main Features:
- Modern and user friendly UI.
- Quickly create or join a lobby as
guest, orlog in with Plexto filter out already watched items and integrateWatchlist. - Easy lobby joining via invite link or
QR code. - Swipe with one or more friends.
- Choose which libraries from your Plex server to include. Supports both
MoviesandTV Shows. - Optionally filter suggestions by
Collections.
Want to decide on which Christmas movie to watch? Select your Christmas collection and start a session! - Optionally start a session from your
watchlistitems. - Include or Exclude items based on
Labels. - Users set preferences for
Genre,EraandLanguageto narrow down the suggestions. Tap once to prefer, twice to exclude. - Flip cards over for details, Swipe left for Nope and right for Yes.
- Optionally watch
Trailersstreamed straight from your Plex server. - Use your own
custom logoon the landing page. - Admin panel for Settings and a
Session Historytab. - Choose between
RandomorFixedsuggestion order. - Three Session Modes:
Classic: Swipe until you have a match liked by everyone.Timed: Swipe for chosen amount of time and vote for the best matches. Includes a tie breaker.Match Target: Swipe until chosen amount of matches are made and vote on them. Includes a tie breaker.
- Installable as PWA
- Docker and Docker Compose installed.
- A running Plex server.
- Suggested: Set up a reverse proxy for easy external access. (Make sure Websocket Support is enabled)
- Download the
docker-compose.ymlfile from this repository. Edit the port, timezone andCORS_ORIGINSas needed.
Note
CORS_ORIGINS determines the allowed origins for accessing WTW
Add a comma-separated list of the allowed origins, e.g.:
e.g.: - CORS_ORIGINS=http://192.168.1.100:PORT,https://wtw.yourdomain.com
- Pull the latest image:
docker compose pull- Start the container:
docker compose up -dWhat to Watch on Plex is available on the Unraid Community Apps store as wtwp.
Click install and apply the default template.

Make sure to add a CORS_ORIGINS environment variable.
- Access the app at
http://localhost:3000. (or whichever port you mapped) - Open the Admin Panel and set your Admin password.
- Enter your Plex
http://IP:PORTand Plex Token - Select your libraries ==> click on
Save Settings==> click onRefresh Cacheand wait for the cache to be completed.
If you access this app through a custom domain or reverse proxy (e.g. wtw.mydomain.com), add it here.
Only requests from allowed domains will be accepted.
Equivalent to the CORS_ORIGINS environment variable, but managed at runtime without restarting the container. Setting either one is enough.
- Auto Refresh: Automatically refresh your cache at 3AM.
- Custom Logo: Upload your custom logo to be used on the landing page.
- Selection Limits: Choose how many
PreferencesandExclusionsusers can set.
Note
Preferences are seen just that. If user1 sets preference for comedy and user2 sets preference for action then the app will first try to find items with both genres, and otherwise suggests a mix of both.
Exclusions are seen as hard limits. If a user marks horror in red, then no horror will be suggested at all.
- Suggestion Order:
Random(suggestions appear randomly for each user).Fixed(everyone gets the same suggestions in the same order).
- Hard Filter Preferences: When enabled, preferred selections (green) strictly filter results. When disabled, preferences boost item priority but non-matching items may still appear.
- Collections: Enable a collection picker for the host when creating a session. Only items from selected collections will be suggested.
- Open in Plex Button: Enables a button on the match winner page to open the item in Plex. Only works by opening Plex in a browser tab.
- Lobby QR Code: Display a QR code in the lobby for easy session joining.
- Rating Display: Choose whether detail cards show
Critic Rating,Audience Ratingorboth. - Trailers: Add a
Watch Trailerbutton to cards. Trailers are streamed from your Plex server. Three modes:Off(default): no trailer button.On: trailer button on detail cardsVoting only: trailer button appears only on the voting cards at the end ofTimedandMatch Targetsessions β so swiping stays fast, but everyone can watch the trailers of the matched items before casting their final vote.
Tip
Missing trailers for certain items? Take a look at MTDP (Missing Trailer Downloader for Plex)
- Label Restrictions: Include or Exclude items based on Plex labels.
- PWA Customization: Customize the PWA name and icon.
WTWP was inspired by This post/Tweet.
Before starting development, I searched for existing options and came across Swiparr which already existed.
Swiparr at that point however did not support Plex so WTWP was created.
The current version of Swiparr meanwhile does support Plex as well, but not all features are available in both apps. Here are the most important differences listed, so you can decide which is right for you:
| (Optional) Feature | WTWP | Swiparr |
|---|---|---|
| Multi-media-server support | β (Plex only) |
β
(Jellyfin/Emby/Plex/TMDB) |
| TV show support | β | β |
| Timed mode / Match-Target session modes + tie-breaker | β | β |
| Trailer playback | β | β |
| Plex oAuth login guard | β | β |
| User Watched-items auto-exclusion | β | β |
| Group preference questionnaire filters (genre/era/language) | β | β |
| Plex Label filters | β | β |
| Streaming-availability ("where to watch") filter | β | β |
| Runtime & minimum-rating filters | β | β |
| Sort by Trending / Popular | β | β |
| Customizable (logo + PWA name and icon) | β | β |
| Suggest from Watchlist and/or Collections | β | β |
| Suggest items not owned in library | β | β |
| Serverless deployment | β (self hosted only) |
β
(swiparr.com) |
Feature sets evolve on both sides β please open an issue if anything here is out of date.
When you refresh the page, you'll most likely advance. This means your connection doesn't have websocket support.
If you are behind a reverse proxy, you need to enable websocket support. Nginx Example
You first need to build a cache in settings. See step 4 above. Don't forget to click 'Save Settings' after connecting to Plex before refreshing cache.
You need to add your hostname/ip to CORS_ORIGINS in the docker compose.
- Join the Discord.
If you like this project, please β star the repository and share it with the community!














