Jellyfin Helper

A Jellyfin plugin that provides automated cleanup tasks, media library statistics, ML-powered smart recommendations, user activity insights, health checks, and Arr stack integration - all from a single, multi-tab dashboard.
Live Demo
Explore the full 8-tab dashboard with realistic sample data - no Jellyfin server required.
Features
| Feature | Description |
|---|---|
| 8-Tab Dashboard | Overview, Codecs, Health, Trends, Discover, Settings, Arr, Logs - all accessible directly from the Jellyfin sidebar as a single plugin page |
| Trickplay Cleaner | Automatically finds and removes orphaned .trickplay folders whose corresponding media file no longer exists. Frees disk space from stale image extraction data |
| Empty Folder Cleaner | Deletes now-empty media folders that no longer contain video files (e.g. after manual cleanup). Skips known placeholder folders (Radarr/Sonarr), metadata-only folders, and music libraries |
| Subtitle Cleaner | Detects and removes orphaned .srt/.ass/.vtt subtitle files that no longer have a matching video. Uses ISO 639 language-code detection to avoid false positives |
| Link Repair | Scans for broken .strm files and broken symlinks, then automatically repairs them by locating the renamed or moved target media file in the parent directory of the original target |
| Seerr Cleanup | Connects to your Overseerr/Jellyseerr/Seerr instance and removes media requests whose underlying files are no longer available. Keeps your request list clean and in sync with actual media |
| Seerr Discovery | Personalized external content discovery via your Seerr instance. Scores TMDb candidates per user using the ensemble ML strategy, suggests not-yet-in-library media with one-click request submission, parental rating enforcement, and automatic exclusion of items already in Radarr/Sonarr. It can optionally be displayed on the Jellyfin home screen as a Custom Tab when used with the Custom Tab and File Transformation plugins |
| Statistics & Trends | Per-library disk usage, video codec, audio codec, resolution, dynamic range, and container format analysis - extracted from Jellyfin MediaStream metadata. |
| Growth Timeline | Cumulative media growth visualization with daily/weekly/monthly/quarterly/yearly bucketing. Hover any point to see the exact file count and size delta since that date |
| Library Insights | Top-10 largest media directories and recently added/changed items (last 30 days) per library, with per-library size breakdown. Displayed in the Trends tab with 15-min in-memory cache |
| Health Checks | Detects videos without subtitles (including embedded streams), missing artwork, missing NFO files, and orphaned metadata directories |
| Arr Integration | Compare your Jellyfin library with up to 3 Radarr + 3 Sonarr instances to find items only in Arr, only in Jellyfin, or in both |
| Backup & Restore | Export/import the full plugin state (configuration, growth timeline, baseline data, Arr instances) as a validated JSON file with XSS/injection protection |
| Log Viewer | Plugin-specific logs with level/source filtering, auto-refresh (10s), and download as .log file. Isolated from Jellyfin's main log to reduce noise |
| Trash / Recycle Bin | Cleanup tasks move files to a timestamped trash folder instead of permanently deleting them. Configurable retention period auto-purges expired items |
| 8 Languages | Full UI translations: English, German, French, Spanish, Portuguese, Chinese, Turkish, Swedish |
| Smart Recommendations | ML-powered per-user recommendations using ensemble scoring (heuristic + learned + neural MLP blend). Analyses watch history to build genre, actor, director and studio affinity profiles, then scores unwatched candidates using 31 features - children with restricted profiles only see age-appropriate recommendations. Incremental training runs only when TaskMode=Activate, with ranking-based evaluation and pre-computed collaborative filtering pipeline - pure C# implementation with zero external ML dependencies |
| User Activity | Per-item and per-user watch activity tracking with play count, completion percentage, favorites detection, and genre distribution - displayed in the new Discover tab |
| Security | 5-min statistics cache, 30s rate limiting, path traversal protection, XSS escaping, backup payload validation with size limits and injection detection, parental rating enforcement in recommendations |
| Unsaved Settings Alert | Warns before navigating away when the settings form has unsaved changes (dirty-tracking via snapshot comparison), with Discard / Save & Continue / Cancel options |
All tasks default to Dry Run mode - nothing is deleted until you explicitly activate them.
Compatibility: Jellyfin 10.11.10+ · .NET 9.0
Installation
From Repository (Recommended)
- In Jellyfin, go to Dashboard → Plugins → Repositories
- Add this repository URL:
https://raw.githubusercontent.com/JellyPlugins/jellyfin-helper/main/manifest.json - Go to Catalog and install Jellyfin Helper
- Restart Jellyfin
Manual Installation
- Download the latest release package from Releases
- Extract the package and copy all files into your Jellyfin plugin directory (e.g.
/config/plugins/JellyfinHelper/) - Restart Jellyfin
Quick Start
- Open Jellyfin Helper from the sidebar - the last scan loads automatically
- Go to the Settings tab to configure tasks, libraries, trash, and language
- Review Dry Run results in the Jellyfin scheduled tasks log
- Switch tasks to Activate when ready
- The Helper Cleanup scheduled task runs weekly (Sunday 3:00 AM) or trigger it manually
Documentation
| Resource | Description |
|---|---|
| CONTRIBUTING.md | Architecture, design patterns, build system, API reference, configuration, testing |
| CHANGELOG.md | Detailed version history |
| Live Demo | Interactive dashboard demo |
Origin
Based on jellyfin-trickplay-folder-cleaner by @Noir1992, inspired by this community script. This fork evolved into an independent project with significant additions.
License
GNU General Public License v3.0 - see LICENSE.
Acknowledgements
| Who | Contribution |
|---|---|
| @Noir1992 | Original plugin author |
| @K-Money | Initial testing |
| @n00bcodr | Jellyfin-Enhanced – inspiration for plugin features |