Please log in
Administrator account
This account controls the local Plekt instance and is created only once.
Dashboard
OverviewControls
Dashboard
Now Playing
Up Next
TV Shows - Recently watched
Movies - Recently watched
Playback Platforms
by watch eventsWatch Activity
Monthly archive volumeSearch
Account
Account - Help
Website guide- User name Change the name used to sign in. This is the local administrator name for this Plekt instance. It is used with the password to protect the dashboard and settings.
- Password Change the password used to sign in. Enter the current password, then enter and confirm a new password of at least 8 characters. Leave the new password blank if you only want to change the user name.
System Integrity
Refresh Sync Health
Loads a fast snapshot of database row counts, disk storage usage, and outbound media server request pressure.
Run System Diagnostic
Runs nine live diagnostic checks in sequence and provides actionable fix recommendations for any warnings or errors.
System Integrity - Help
Website guide- Refresh Sync Health A quicker, lighter check than the full diagnostic. Shows row counts, database size, and how hard Plekt is hitting each media server. Useful before running a large Force Sync, to spot rate-limiting or an oversized database first.
-
Run System Diagnostic
Runs nine live checks. Each one is marked Online, Warnings Detected, Failed, or Not Configured.
Anything unhealthy gets a fix tip and a link to the right settings page.
- Watch History API - checks the local database responds.
- Server Configuration - checks saved settings can be read back.
- Webhook Listener Endpoint - pings the webhook URL and shows the last event received.
- Scheduled Cron Job - checks the background worker ran recently.
- Outbound Playstate Sync - checks the 5 most recent watches synced without errors.
- Plex / Emby / Jellyfin Media Server - tests the connection to each configured server.
- Plex Realtime Notifications - checks the live Plex connection works (falls back to periodic polling if not).
- Cross-Platform Library Matching - lists current "no matching item found" failures per platform.
Image Cache
Image Cache
Locally stored artwork from Plex, TMDB, and other sources
Image Cache - Help
Website guide- Image Cache Stores locally fetched posters, backdrops, cast profiles, logos, and other artwork used throughout the movie and TV detail pages. Clearing the cache removes only the local image files. Plekt fetches them again automatically as you browse.
Plex
Plex
Not configured
Sync watch history with a Plex server
Plex - Help
Website guide- Plex Plekt connects to Plex to read watched status, match media correctly, and push plays to your other connected servers. The server URL and token stay on the server. Use Test before saving to check reachability, credentials, and account access.
Emby
Emby
Not configured
Sync watch history with an Emby server
Emby - Help
Website guide- Emby Plekt connects to Emby to read watched status, match media correctly, and push plays to your other connected servers. The server URL and API key stay on the server. Use Test before saving to check reachability, credentials, and account access.
Jellyfin
Jellyfin
Not configured
Sync watch history with a Jellyfin server
Jellyfin - Help
Website guide- Jellyfin Plekt connects to Jellyfin to read watched status, match media correctly, and push plays to your other connected servers. The server URL and API key stay on the server. Use Test before saving to check reachability, credentials, and account access.
Webhooks
Webhooks - Help
Website guide- Plex No webhook setup is required. Plekt connects to Plex's WebSocket notification channel automatically to capture watched and unwatched changes in real time. It also checks playback progress every minute, so Plex activity continues to feed the normal watched-state and sync workflows.
- Emby Webhook Setup Guide Expand the matching setup box on the left to see the webhook URL and the event selections required in Emby. Once saved, Emby sends playback and watched-state events to Plekt so changes can be recorded and passed to the other connected services.
- Jellyfin Webhook Setup Guide Expand the matching setup box on the left to see the webhook URL and the event selections required in Jellyfin. Keep the webhook pointed at this Plekt instance and enable the playback and library events used by the guide.
Webhook Secret
Webhook Secret
View or rotate the token used by your media servers
Not available
Each platform's setup guide above includes the full webhook URL with this secret already in it.
Automation clients can also pass the secret in an X-Plekt-Webhook-Secret or Authorization: Bearer header.
Webhook Secret - Help
Website guide-
Webhook Secret
The listener receives play, pause, stop, scrobble, and watched events from Plex, Emby, and Jellyfin, updating live session tracking as media plays.
Use the generated secret in the webhook URL or in an
X-Plekt-Webhook-SecretorAuthorization: Bearerheader. Rotating it invalidates old webhook URLs without changing admin login. The background scheduler still checks playback every minute, applies the watched threshold, records completed watches, and dispatches cross-platform sync.
Metadata Providers
Metadata Providers - Help
Website guide- TMDB Provides core movie and TV metadata, posters, backdrops, cast bios, trailers, release dates, and recommendations. A personal key is used when configured; otherwise the built-in project access is used.
- YouTube Provides trailer descriptions and duration details for media pages when a YouTube Data API key is configured.
- Fanart.tv Supplies fallback posters, backdrops, logos, clearart, and disc art when TMDB does not have the artwork. The built-in project key works without a personal key; your own key raises rate limits.
- TheTVDB Provides TV series names, season and episode ordering, air dates, and artwork. The built-in project key works without a personal key; your own key gives you your own quota.
- OMDb Adds IMDb ratings and Rotten Tomatoes comparisons to movie pages when configured. Ratings are cached for seven days and the free tier allows 1,000 requests per day.
Refresh Metadata
Refresh All TMDB Metadata
Idle
Pre-cache trailers, posters, cast, and summaries locally
Refresh All TVDB Metadata
Idle
Fetch episode schedules, series details, and artwork from TVDB
Refresh Metadata - Help
Website guide- Refresh All TMDB Metadata Scans local history items and fetches missing trailers, posters, overview descriptions, and cast information from TMDB to keep the local metadata cache current.
- Refresh All TVDB Metadata Scans local TV shows, resolves their TVDB series IDs, and pre-caches extended series metadata, season episode lists, air dates, and artwork.
Trakt - Live Sync
Live Trakt Connection
Checking
Keep watched and unwatched state synchronized in both directions
Disable Trakt plugins/tasks in Plex, Emby, and Jellyfin first - Plekt must be the sole Trakt bridge.
Manual Connection
Advanced fallback using personal Trakt API credentials
Trakt History Importer
Idle
Bulk import records from a Trakt.tv export
[idle] Waiting for files.
Trakt - Help
Website guide-
Live Trakt Connection
Keeps Trakt and Plekt in sync automatically in both directions. New watches, rewatches, and unwatches are shared across Plex, Emby, Jellyfin, and Trakt.
Sync Now also checks older Trakt watches and repairs anything that has drifted out of sync.
- Start from current state is the safe default when your media servers already have watch history, or you are unsure which service is complete. It records Trakt's current state as a baseline without sending existing Trakt watches to the media servers; future changes still sync.
- Import all existing Trakt watched state is for migrations or when Trakt is the trusted source and the other servers are new or empty. It queues matching existing Trakt watches for the connected servers.
- Manual Connection Uses personal Trakt API client credentials instead of Plekt's built-in device application. Keep Plekt as the only Trakt bridge and disable other Trakt plugins to prevent competing writers or loops.
- Trakt History Importer Imports watch history from Trakt.tv CSV or JSON exports into the local Plekt database without making outbound Trakt API calls.
Tautulli - One time import
Tautulli
Not configured
Import completed movies and episodes without changing Tautulli
Connect Tautulli
Test the connection to load users, then save it for this importer.
Choose and preview history
The date is optional. Leave it blank to preview the complete available history.
See what will be imported and resolve possible matches first.
[idle] Connect Tautulli and choose a user to preview history.
Each of these plays matches more than one record Plekt already has, so it cannot be imported automatically. Choose what to do with each one. Anything left undecided is not imported.
Create a local backup
Recommended: create a restore point before importing. You can skip this if you already have a recent backup.
Import Tautulli history
Import the reviewed history into Plekt. This is additive; existing watches are not deleted.
[idle] Complete the preview and backup steps first.
After completion, Plekt queues the selected targets for background syncing.
Tautulli - Help
Website guide-
Tautulli
Tautulli is the source for this one-time import. Plekt reads one user's completed movie and episode plays, then sends imported history to the media servers you select.
- Connect Tautulli with its address and API key, test the connection, and choose the user to import. A browser address ending in
/homecan be used as the base address. - Choose and preview with an optional date. Leave it blank for all available history, or import plays from that date onward. Preview requires a selected user and shows the record count before reading the history.
- Back up, then import after reviewing the preview. A local watch-history backup is recommended and can be skipped, followed by a separate import step. Plekt merges by identity and watch date so rewatches remain separate, then queues the selected targets for background syncing.
- Connect Tautulli with its address and API key, test the connection, and choose the user to import. A browser address ending in
Seerr - Live connection
Seerr
Not configured
Optional request integration for movie and TV detail pages
Seerr - Help
Website guide- Seerr Connects Overseerr or Jellyseerr to show live request status pills and Request on Seerr actions on movie and TV detail pages. Enter the Seerr base URL and an API key from its Settings → General page. The integration enables one-click requests without leaving Plekt and can be disabled without removing the saved credentials.
Database Repairs
Repair History Rows
Idle
Fill in missing media types and backfill missing posters on recent history rows
Audit Phantom Watches
Idle
Finds suspicious duplicates and malformed imported episode rows
Remove Duplicate Watches
Idle
Keeps only the oldest watch date for each movie or episode across the whole library
Restore Missing Episode Names
Idle
Backfill real episode names onto watch rows that only stored a coordinate like “8”
Watch-State Aliases
Idle
Decide which show the episode watch states the automatic repair could not place belong to
Database Repairs - Help
Website guide- Repair History RowsChecks the 300 most recent history rows for a missing media type or poster, inferring episode types from titles and filling artwork from the cache, media server, or TMDB in small batches.
- Audit Phantom WatchesRuns a read-only scan for suspicious duplicates or broken imported episode data. Results are marked high-confidence or review-only; nothing is changed.
- Remove Duplicate WatchesFinds repeated movie or episode watches and keeps the oldest date. The other rows are deleted and the correction is pushed to connected platforms after you confirm the exact count. This cannot be undone.
- Restore Missing Episode NamesFinds episode rows with a missing or coordinate-only name and restores the real title using stored rows, cached season metadata, and a metadata lookup when needed. Read-only audit results are kept separate from retryable failures.
- Watch-State AliasesLists unresolved episode watch states stored under episode ids or a title only, including newer conflicting entries. Per show, choose Belongs to this show (the newest watch state wins and the entries join the show) or Different show (they are left alone and hidden until restored from the Dismissed list). Only Plekt's local watch state changes; nothing is sent to connected platforms.
Library Rebuilds
Rematch All TV Shows
Idle
Resolve each show title against TVDB (primary) and update episode IDs
Backfill Trakt Imports
Idle
Fetch missing posters for imported Trakt events
Rebuilds & Backfills - Help
Website guide- Rematch All TV ShowsLooks up each show on TVDB and saves corrected TVDB and TMDB IDs onto local episode rows. If TVDB's cross-reference is out of date, Plekt falls back to a TMDB title search.
- Backfill Trakt ImportsFetches missing posters and metadata for imported Trakt watch-history events. Batch size and request delay control the pace.
Wipe Data
These actions delete rows from the local database. There is no undo. Take a watch history or Plekt backup first if you might want this data back.
Watch History
Idle
Watch history, playstate, resume progress, and live sessions
Loading row counts…
Personal Watchlist
Idle
Canonical rows, provider ledger, queue, runs, and activity
Loading row counts…
Sync History & Logs
Idle
Sync history, watch audit events, and diagnostic logs
Loading row counts…
Everything Tracked
Idle
Watch history and sync history/logs together
Loading row counts…
Wipe All / Fresh Start
Idle
Resets Plekt to a brand-new install
Deletes every table above, plus settings, connections, cached artwork, and the admin login. You'll land back on the first-run setup screen and need to claim the account again. There is no undo.
Loading row counts…
Wipe Data - Help
Website guide- Watch HistoryDeletes every watched item, resume position, and live session Plekt has recorded. Back up first if you want a way back. Wiping local data does not unwatch anything on Plex, Emby, or Jellyfin.
- Personal WatchlistDeletes the canonical local watchlist, provider observations, tombstones, queued work, sync runs, activity, and Plekt-owned playlist identifiers. It does not remove items from Plex, Emby, or Jellyfin.
- Sync History & LogsDeletes the sync history list, audit trail, and diagnostic logs. Your actual watch history remains untouched.
- Everything TrackedRuns Watch History, Personal Watchlist, and Sync History & Logs together. Settings, connections, API keys, and the admin login remain untouched.
- Wipe All / Fresh StartDeletes everything above, plus settings, media-server and Trakt connections, cached artwork, and the admin login. Plekt returns to first-run setup; a full Plekt backup is the only way back.
Local
Local Watch History Backups
Checking
Enable scheduled local snapshots of watched state, playstate, and resume progress
Local Plekt Backups
Checking
Create an encrypted full Plekt backup and download it to your computer
Remote
Remote Destinations
Checking
Configure cloud destinations for remote backups
Remote Watch History Backups
Checking
Upload daily watch history backups to remote destinations
Remote Plekt Backups
Checking
Store encrypted Plekt backup files off-server automatically
Backup - Help
Website guide- Local Watch History BackupsCreates daily snapshots of watched state, playstate, and resume progress on the server. No passphrase is needed; scheduling and Back Up Now work when enabled.
- Local Plekt BackupsCreates a full encrypted export of the database and saved settings, including credentials and API keys. The browser encrypts it with your passphrase and Plekt never stores the plaintext. Use at least 12 characters; a lost passphrase cannot be recovered.Saving the passphrase lets scheduled backups run without an open browser. If it is not saved, only Back Up Now works.
- Remote DestinationsConfigures Backblaze B2 upload targets with their endpoint, bucket, and scoped application key. Every enabled destination receives remote backup copies.
- Remote Watch History BackupsMirrors watch-history snapshots to enabled remote destinations on their configured schedule and retention.
- Remote Plekt BackupsMirrors encrypted full backups remotely using the same passphrase and saved-passphrase setting as the local full backup. Set the remote retention count here; it is independent of local retention.
Local
Local Watch History Restore
Restore a watch-history backup stored on this server or upload one
Local Plekt Restore
Idle
Restore an encrypted full Plekt backup
Restore log will appear here.
Remote
Remote Watch History Restore
Restore a watch-history backup mirrored to Backblaze B2
Remote Plekt Restore
Restore an encrypted full Plekt backup mirrored to a remote destination
Restore - Help
Website guide- Local Watch History RestoreRestores watched state, playstate, and resume progress from a watch-history file stored locally or uploaded from your computer. The selected backup becomes the source of truth, preserves watch dates, and pushes the restored state to Plex, Emby, and Jellyfin.During the restore, scheduled sync and incoming webhooks are paused so the restored state cannot be overwritten mid-run.
- Local Plekt RestoreRestores an encrypted full Plekt backup containing database data and saved settings, including credentials and API keys. Enter the same passphrase used when the backup was created.
- Remote Watch History RestoreRestores a watch-history backup mirrored to a configured Backblaze B2 destination. It uses the same source-of-truth restore process and preserves the recorded watch dates.
- Remote Plekt RestoreRestores an encrypted full Plekt backup from remote storage. The original encryption passphrase is required before the saved data can be read.
Sync Tuning
Sync Tuning - Help
Website guide-
When you manually mark an item as watched in Plex / Emby / Jellyfin
Choose how app-marked watches are dated or reviewed. Require review is the default and recommended option: it holds the item for a decision in Manual Watch review, where it appears above Sync - Idle.
- Mark as watched now - Use the time the scanner sees the watched flag.
- Mark as watched on release day - Use the movie or episode release date.
- Mark as watched at the same time as other episodes - Use the before/after timing from the media pages.
- Sync historical watched items to Plex Controls whether older watched items are sent to Plex. On is recommended when you want a Plex library to match Plekt; new watches continue to sync normally either way. Off can leave older items unwatched in Plex, make Plex counts and badges differ, and keep imported or restored watches out of Plex activity.
- Watched Threshold (%)Sets the playback percentage at which a play counts as watched. Default: 90%. Valid range: 50-100.
- Minimum Resume Position (sec)Sets the minimum playback position saved as a resume point. Default: 60 seconds. Valid range: 0-3600.
- Active Session TTL (min)Sets how long an inactive now-playing session remains valid. Default: 5 minutes. Valid range: 1-120.
- Outbound Request Timeout (sec)Sets how long Plekt waits for a media server response before giving up. Default: 10 seconds. Valid range: 2-120.
- Fast Local-Network Sync Off by default. When enabled, bulk sync operations use more concurrent requests and shorter gaps. Only enable it when Plex, Emby, and Jellyfin are all self-hosted on the same trusted local network as Plekt.
- Sync Up Next to media apps On by default. Keeps Plekt's Up Next queue aligned with Plex Continue Watching, Emby Continue Watching, and Jellyfin Next Up. Turn it off to leave those app lists unchanged; Plekt's own Up Next view remains available.
Sync Tools
Repair Recent Items
Check recent watched and part-watched items for missing Plekt records
Checks for missing recent records without scanning the full libraries.
When to use: Run this when a recent watch was not picked up automatically.
Personal Rating Sync
Two-way sync for personal movie, show, and episode ratings across Plekt and connected services
Plex Watchlist Sync
Add or remove an item in Plekt or Plex and keep both watchlists aligned
Force Sync
Push Plekt's recorded state to connected servers, or import watched status from them
[idle] Waiting for force sync.
Nothing is checked or pulled in first. If Plekt's own record is wrong, this sends that wrong state out too.
When to use: Use this when you've confirmed Plekt's record is correct and want every connected app to match it.
Purely additive: never sends anything back out, and never marks anything unwatched or removes existing history.
When to use: Use this to bring watched status in from a server without changing anything else.
Sync Tools - Help
Website guide- Repair Recent ItemsPerforms a rapid incremental scan of recent watch activity and active sessions across Plex, Emby, and Jellyfin.
- Personal Rating SyncExchanges personal ratings through the durable rating queue without mixing them into watched-state synchronization.
- Plex Watchlist SyncReconciles the Plekt watchlist with Plex using the canonical local list and provider observations.
- Force SyncRuns a deliberate library-wide sync with live progress. Set Plekt as Source of Truth pushes Plekt's watched status and resume positions out; Import Watched Status only adds missing server watches; stop/reset cancels a run or clears a stale lock after a restart.
Sync History
Sync History - Help
Website guide- Sync HistoryShows recent watched-state propagation attempts with their source, action, timestamp, and target results. It is a log only; it does not control or change sync.Watched state and resume positions normally propagate to configured servers on the scheduled cycle. Use Sync Tools when you need a deliberate library-wide operation.
Server Logs
Logs - Help
Website guide- All LogsShows server and browser activity together in time order. Use Download Logs to save the full stream as a
.logfile for troubleshooting. - Plex WebSocketsShows live events pushed from Plex, including playback updates, pause/resume, and unwatched detection.
- Outbound SyncShows everything Plekt sends to Plex, Emby, and Jellyfin: watched-state calls, resume syncs, loop checks, and each server's response.
- Scheduled PollsShows the background worker running each minute, checking recent watches, applying the watched threshold, and working through the sync queue.
- System LogsShows general app events such as startup, database setup, config changes, scheduled tasks, errors, and warnings.
Changelog
Plembfin is now Plekt
- Docker installsChange the image to ghcr.io/lasikiewicz/plekt or plembfin/plekt.
- Keep your settingsKeep your existing tag, volumes and settings.
- Old image namesBoth receive updates for at least six months after the rebrand release.
- Web portThe default is now 5056 (it was 5055).
- WebhooksIf Jellyfin, Emby or Plex webhooks point at port 5055, update them to 5056, or keep your old port mapping.
About Plekt
The local brain for your media stack.
Version v2.1.1 · Channel Latest
Links
Project, documentation, support, and release links.
Artwork & metadata: Artwork and metadata can come from TMDB, TheTVDB, Fanart.tv, OMDb, and YouTube. Plekt is not endorsed or certified by those services.