## Jellyfin Enhanced

Help

⚠️ Highly Recommended
It is highly recommended to have the File Transformation plugin installed. It helps avoid permission issues while modifying `index.html` on any kind of installation. Learn more

### Default User Settings

⏯️ Playback Settings
Auto-pause on tab switch
Auto-resume on tab switch
Auto Picture-in-Picture on tab switch
Long press/hold for 2x speed β
Enable Custom Pause Screen
This feature is a modified version of the original script by BobHasNoSoul
↪️ Auto-Skip Settings
Auto-skip Intro
Auto-skip Outro
📝 Subtitle Settings
Disable Custom Subtitle Styles by default
Default Subtitle Style
Default Subtitle Size
Default Subtitle Font
🎲 Random Button Settings
Enable Random Button
Show unwatched only in random selection
Include movies in random selection
Include shows in random selection
🖥️ UI Settings
Show watch progress
Watch Progress Default
Choose default display for watch progress.
Watch Progress Time Format
Select how time-based progress is shown.
Show file sizes
Show available audio languages on item detail page
Enable "Remove from Continue Watching"
Enable Quality Tags
This feature is a slightly modified version of the original script by BobHasNoSoul
Enable Genre Tags
Enable Language Tags
Enable Rating Tags
Enable People Tags
Quality Tags Position
Genre Tags Position
Language Tags Position
Rating Tags Position
Tags Cache Duration (days)
How long to cache the above tags data (1-365 days, default: 30)
Show Rating in Video Player
Display TMDB and Rotten Tomatoes ratings before "Ends at" time in video player
Forces all clients to clear Language, Quality, Genre and Rating tag caches on next load
After the cache is cleared, the clients will re-fetch the tags data to build the cache again, which might cause some slowness on first load.
Disable Tags on Search Page
Prevents quality/language/genre/rating tags from showing on search results. Recommended for compatibility with Gelato plugin.
🌐 Language Settings
Default UI Language
Sets the default language for all users. Users can still override this in their own settings.
⌨️ Disable Keyboard Shortcuts
Disables all keyboard shortcuts, and hides the 'Shortcuts' tab in enhanced panel
info
This will save the current configuration and apply all the above settings to every user on this server.
Note: Users can individually customize their own settings by opening the Enhanced Panel:
• Press `?` key (default shortcut)
• Long Press on user profile picture in the top-right corner
• Through "Jellyfin Enhanced" link from the side bar
• Access via playback controls menu during video playback (only on mobile devices)

### Icons

#### Icon Settings

Use Icons
Display icons throughout the UI (toasts, settings panel headers, etc.)
Icon Style
Choose between emoji characters, Lucide icons, or Material UI icons.

### Shortcut Overrides

#### Add Override

Modifier Keys: Use `Shift+`, `Ctrl+`, or `Alt+`. Examples: `Shift+A`, `Ctrl+S`.

#### Configured Overrides

### Bookmarks

Enable Bookmarks Feature
Save custom bookmarks/timestamps while watching videos to quickly jump back to your favorite scenes or moments.
Use Plugin Pages for Bookmarks Library
Adds a "Bookmarks" link to the sidebar via Plugin Pages.
Note: Jellyfin must be restarted after enabling this option for the first time for changes to take effect.
info

#### How to Use Bookmarks:

- During Playback: Press `B` or click the bookmark icon bookmark_add in the video player controls to save a bookmark at the current time.
- Visual Markers: Bookmarks appear as location pins location_pin on the video progress bar. Click a marker to jump to that timestamp.
- Multi-Version Support: Bookmarks track by TMDB/TVDB IDs, so they work across different file versions of the same content.

#### To View & Manage All Your Bookmarks:

You can either enable Plugin Pages above to add a sidebar link, or create a custom view using the Custom Tabs plugin.

1. Install the Custom Tabs plugin and all its prerequisites.
2. Navigate to Dashboard > Plugins > Custom Tabs and add a new tab.
3. Add "Display Text" according to your preference (e.g., "My Bookmarks").
4. Copy the code below and paste it into the 'HTML Content' field.

    <div class="sections bookmarks"></div>

Already have Custom Tabs installed? Click here to configure it.

### Timeout Settings

Help Panel Autoclose Delay (in milliseconds)
How long the help panel stays open before auto-closing.
Toast Duration (in milliseconds)
How long toast notifications are displayed.

### Hidden Content

Enable Hidden Content
Enable or disable the Hidden Content feature server-wide. When disabled, hide buttons, filtering, sidebar navigation, and settings panel options are all removed. User data is preserved and restored when re-enabled.
Use Plugin Pages for Hidden Content
Replaces the default Hidden Content page with a Plugin Pages implementation.
Note: Jellyfin must be restarted after enabling this option for the first time for changes to take effect.
Use Custom Tabs for Hidden Content (instead of sidebar)
info

#### Embed Hidden Content in Custom Tabs:

Display the Hidden Content page in a Custom Tabs tab instead of the sidebar link.

You need the Custom Tabs plugin.

1. Install the Custom Tabs plugin and all its prerequisites.
2. Navigate to Dashboard > Plugins > Custom Tabs and add a new tab.
3. Add "Display Text" according to your preference (e.g., "Hidden Content").
4. Copy the code below and paste it into the 'HTML Content' field.

    <div class="jellyfinenhanced hidden-content"></div>

Already have Custom Tabs installed? Click here to configure it.

### Configuration

Enable Elsewhere
Show Streaming Provider Lookup on Item Details Page
TMDB API Key
Your API key from The Movie DB (TMDB). How to?
Shared with Seerr Settings
Default Region
The default two-letter country code for streaming provider lookup. Empty defaults to US. Full List
Default Providers
A list of default streaming providers to show. Leave blank to show all. Full List
Ignore Providers
A list of providers to ignore from the default region (supports regex).Full List

### Elsewhere Custom Branding

Custom Branding Message
Custom message to display when content is not available on any streaming providers. Leave blank to disable custom branding.
Custom Branding Icon URL
Optional URL for an icon to display next to the custom message. Leave blank for no icon.

### Extras

Show Reviews from TMDB in Item Details Page
Requires TMDB API Key to be set
Expand reviews by default
When enabled, the reviews section opens expanded by default for all users (unless they override in their session).

### Setup

Seerr URL(s)
Enter your Seerr instance URLs, one per line. The script will use the first one that connects successfully.
Seerr API Key
API key from Seerr. (Settings > General Settings > API Key)
TMDB API Key
Your API key from The Movie DB (TMDB). How to?
TMDB API key for automatic movie collection requests and Seerr Collection Results. Shared with Elsewhere Settings
Advanced URL Mappings (Optional)
Seerr URL Mappings
Map your Jellyfin URLs to specific Seerr URLs for displaying links to users. Users will get the appropriate Seerr link when using "Link result titles to Seerr instead of TMDB", based on what link they use to access Jellyfin.
Format: `JellyfinURL|SeerrURL`, one mapping per line.
If no mapping matches or this is empty, the first URL from above will be used.
info
URL Mapping Examples:
• Remote access: `https://jellyfin.mydomain.com|https://jellyseerr.mydomain.com`
• Local access: `http://192.168.1.10:8096|http://192.168.1.10:5055`
• With base URL: `https://example.com/jellyfin|https://example.com/jellyseerr`
phone_android
Make sure proper mappings are added to appropriate URLs in order for mobile clients to open Seerr links correctly.
info
"Enable Jellyfin Sign-In" must be enabled in Seerr User Settings (/settings/users)
All users must be imported to Seerr as Jellyfin users for them to be able to request content.
favorite
This plugin is not affiliated with Jellyseerr.
Seerr is an independent project, and this plugin simply integrates with it to enhance the Jellyfin experience, huge thanks to their API
Please report any issues with this plugin to the plugin repository, not to the Seerr team.

### Search

Search Integration
Show Seerr Results in Search
Enhance Jellyfin search by showing results from Seerr.
This allows users to discover and request missing movies and shows directly from Jellyfin.
Show Collections in Seerr Search Results
Display TMDB collections (e.g., Harry Potter, Marvel Cinematic Universe) in Seerr search results with an option to request the entire collection at once.
Requires TMDB API Key to be configured.
Request Options
Enable 4K Requests
When enabled, movie request buttons include a dropdown to request a 4K version.
Show advanced request options
Enable this if you want users to be able to choose between Servers, Quality and Paths while requesting.
Note: This will disregard any Override Rules set in Seerr.

### Other Features

Open result titles and posters in "More Info" modal
When enabled, clicking a Seerr result title or poster opens an in-app More Info modal.
When disabled, clicking will open the item in Seerr.
Show "Report Issue" button on item detail pages
When enabled, a small report icon will be added to item action icons allowing users to report playback/content issues to Seerr.
Exclude blocklisted movies/series from suggestions
When enabled, items marked as blocklisted in Seerr will not appear in similar/recommended suggestions.
Show Streaming Providers on Seerr Posters
Displays icons of available streaming services (from your default region) on Seerr Posters.
Requires TMDB API Key to be configured in Elsewhere Settings

### Discovery & Recommendations

Item Detail Page
Show similar items on item details page
Displays similar movies/shows from Seerr on item details pages. Limited to 20 items.
Show recommended items on item details page
Displays recommended movies/shows from Seerr on item details pages. Limited to 20 items.
Exclude items already in library
Hide similar/recommended items that already exist in your Jellyfin library from the results.
If disabled, the items that are available link to the media item in the library.
"More" Discovery
Show "More from [Network]" on studio/network pages
When viewing a network page (e.g., Netflix, HBO), displays additional content from that network available in Seerr.
Show "More [Genre]" on genre pages
When viewing a genre page (e.g., Action, Comedy), displays additional content in that genre from Seerr.
Show "More [Tag]" on tag pages
When viewing a tag page (e.g., cooking, superhero), displays additional content with that keyword from Seerr.
Show "More from [Actor]" on person pages
When viewing an actor/person page, displays their filmography from Seerr including content not in your library.
Show missing collection movies on BoxSet pages
When viewing a collection/BoxSet page, shows movies from the collection that are not yet in your library with request buttons.

### Testing / Debug

Disable server-side response cache
When enabled, all Seerr proxy requests bypass the server-side cache and are fetched fresh from Seerr every time. This is useful for testing but will increase load on your Seerr instance. Not recommended for normal use.
Response Cache TTL (minutes)
How long Seerr API responses (search, discovery, recommendations) are cached. Default: 10 minutes.
User ID Cache TTL (minutes)
How long the Jellyfin → Seerr user ID mapping is cached. Default: 30 minutes.

### Automatic Requests

Advanced Season Requests
Enable Automatic Advance Season Requests
Automatically request the next season in Seerr when a user about to finish the current season.
Require All Prior Episodes Watched
Require all episodes before the threshold to be watched. For example, if threshold is 2 and there are 10 episodes, when watching episode 8, all episodes 1-7 must be watched or marked as watched. This prevents accidentally triggering requests by jumping to later episodes.
This might cause requests to not be triggered if users skip episodes.
Episodes Remaining Threshold
Request the next season when the number of unwatched episodes is at or below this number. Default: 2 episodes.
info
• Requests are triggered when users start or complete watching episodes
• Set threshold to 2-3 episodes to give time for downloading before users finish watching
• Example: With threshold set to 2, when user starts episode 8 of 10 of season 1, season 2 will be requested
• If a user has already triggered a request for the season, it will not be requested again even if another user reaches the threshold
Movie Collection Requests
Enable Automatic Movie Requests
Automatically request the next movie in a collection based on configured triggers.
Requirements: TMDB API key must be configured.
Request Triggers:
When movie starts (within first 5 minutes)
After watching for a certain amount of time
Select one or both triggers. If both are selected, the request will be triggered if either condition is met.
Minutes Watched Before Auto-Request Check: minutes
How many minutes a user should watch before triggering a request? Must be between 1 and 180 minutes.
Only request if movie is already released
When enabled, future releases will be skipped. Only movies that have already been released will be requested.
info
• Only works for movies that are part of a TMDB collection (e.g., The Avengers Collection, Star Wars Collection, etc.)
• Automatically requests the next movie in the collection based on release order
• Movies already available or requested will be skipped

### Watchlist Integration

Automatically add requested media to user's Watchlist
When enabled, any media requested through Seerr Search through Jellyfin Enhanced will automatically be added to the requesting user's Watchlist.
Note: This feature requires KefinTweaks to be installed to actually view the watchlisted items.
Sync Seerr Watchlist to Jellyfin
When enabled, items from each user's Seerr watchlist will be automatically synced to their Jellyfin watchlist.
Configure how often the sync should run in Jellyfin Dashboard > Scheduled Tasks > "Sync Watchlist from Seerr to Jellyfin".
Prevent re-adding removed watchlist items
When enabled, items will only be added to a user's watchlist once. If a user manually removes an item from their watchlist, it won't be automatically re-added during future sync runs.
Memory retention period (days):
How long to remember that an item was processed before allowing it to be re-added.
After this period, manually removed items (if unwatched) will be automatically re-added to watchlist if they're still in Seerr requests or Seerr watchlist.
Examples:

- 30 days - Short memory, items can be re-added after 1 month
- 365 days - Remember for 1 year (recommended)
- 3650 days - Remember for 10 years (nearly permanent)

Note: This setting only applies when "Prevent re-adding removed watchlist items" is enabled.

### Configuration

Sonarr URL
Radarr URL
Bazarr URL
Note: This links to the main movies/series page as Bazarr does not support direct links.
Sonarr API Key
Find this in Sonarr under Settings > General > Security > API Key
Radarr API Key
Find this in Radarr under Settings > General > Security > API Key

### *arr Links

Enable *arr Links
Show Sonarr, Radarr, and Bazarr links of the items on item detail pages for quick access. Only for admins.
If no URL is added for a service below, links for that service are not shown.
Sonarr URL Mappings
Map Jellyfin access URLs to Sonarr URLs. Format: `jellyfin_url|sonarr_url` (one per line).
Radarr URL Mappings
Map Jellyfin access URLs to Radarr URLs. Format: `jellyfin_url|radarr_url` (one per line).
Bazarr URL Mappings
Map Jellyfin access URLs to Bazarr URLs. Format: `jellyfin_url|bazarr_url` (one per line).
These mappings are useful when accessing Jellyfin via different URLs (e.g., internal network vs. public domain) and you need *arr links to use the appropriate corresponding URL.
Show links as text instead of icons

### *arr Tags Sync

Enable *arr Tags Sync
Fetches all tags from Radarr and Sonarr instances defined above and adds them as Jellyfin tags.
Note: Run the sync task from Dashboard > Scheduled Tasks > "Sync Tags from *arr to Jellyfin" and configure how often it should run.
Tag Prefix
Prefix to add before each tag (e.g., "JE Arr Tag: " will result in "JE Arr Tag: 1 - Jellyfish")
Warning: Keep the tag prefix constant - it's used to remove old tags before syncing new ones. Having no prefix will remove ALL tags! You can change it, but make sure it's unique.
Clear old tags with prefix before syncing
When enabled, removes all existing tags starting with the prefix before adding new ones. This keeps tags in sync with your *arr applications.
Show synced tags as clickable links
Displays tags with the configured prefix as clickable links on item detail pages. Helpful if your theme hides tags.
Filter Tags to Sync to Jellyfin (Optional)
Only sync specific tags from *arr to Jellyfin. Enter one tag name per line (without the prefix).
Leave empty to sync all tags.
Example: If you only want to sync "1 - Jellyfish" and "trakt" tags, enter:
`1 - Jellyfish`
`trakt`
Filter Tags to Show as Links (Optional)
Only show specific tags as links. Enter one tag name per line (without the prefix).
Leave empty to show all tags with the prefix.
Example: If you only want "JE Arr Tag: 1 - Jellyfish" and "JE Arr Tag: trakt" as links, enter:
`1 - Jellyfish`
`trakt`
Hide Specific Tags from Links (Optional)
Hide specific tags from being displayed as links. Enter one tag name per line (without the prefix).
This filter takes priority over the "Show" filter above.
Example: To hide "JE Arr Tag: spam_tag" and "JE Arr Tag: test_tag" from links, enter:
`spam_tag`
`test_tag`

### Requests Page

Enable Requests Page
Adds a "Requests" link to the navigation showing active downloads and requests.
Show Seerr Issues Section
Shows open/resolved Seerr issues beneath Requests.
Use Plugin Pages for Requests Page
Replaces the default Requests page with a Plugin Pages implementation.
Note: Jellyfin must be restarted after enabling this option for the first time for changes to take effect.
Use Custom Tabs for Requests (instead of sidebar)
info

#### Embed Requests in Custom Tabs:

Display the Requests page in a Custom Tabs tab instead of the sidebar link.

You need the Custom Tabs plugin.

1. Install the Custom Tabs plugin and all its prerequisites.
2. Navigate to Dashboard > Plugins > Custom Tabs and add a new tab.
3. Add "Display Text" according to your preference (e.g., "Requests")
4. Copy the code below and paste it into the 'HTML Content' field.

    <div class="jellyfinenhanced requests"></div>

Already have Custom Tabs installed? Click here to configure it.
Enable Auto-Refresh for Downloads
Poll Interval (seconds)
How often to refresh download status automatically. Minimum is 30 seconds and applies only when auto-refresh is enabled.
info
Requests Page shows a Requests Button in sidebar with a dedicated view of active downloads from Sonarr/Radarr and requests from Jellyseerr.
Requirements: Configure Sonarr/Radarr and Seerr URLs and API keys.

### Calendar Page

Enable Calendar Page
Adds a "Calendar" link to the navigation showing upcoming releases from Sonarr/Radarr.
Use Plugin Pages for Calendar Page
Replaces the default Calendar page with a Plugin Pages implementation.
Note: Jellyfin must be restarted after enabling this option for the first time for changes to take effect.
Use Custom Tabs for Calendar (instead of sidebar)
info

#### Embed Calendar in Custom Tabs:

Display the Calendar page in a Custom Tabs tab instead of the sidebar link.

You need the Custom Tabs plugin.

1. Install the Custom Tabs plugin and all its prerequisites.
2. Navigate to Dashboard > Plugins > Custom Tabs and add a new tab.
3. Add "Display Text" according to your preference (e.g., "Calendar").
4. Copy the code below and paste it into the 'HTML Content' field.

    <div class="jellyfinenhanced calendar"></div>

Already have Custom Tabs installed? Click here to configure it.
First Day of Week
Time Format
Highlight Favorites/Watchlist
Show a golden border on calendar entries for items in your Jellyfin favorites.
Highlight Watched Series
Show a border on calendar entries for series you have watched episodes from.
Show Requested Items Only by Default
When enabled, the calendar will load showing only Requested items by default, but users can still change filters.
calendar_today
Calendar Page adds a Calendar Button in sidebar with a dedicated view that displays upcoming releases from Sonarr and Radarr in a calendar view.
Requirements: Configure Sonarr and/or Radarr URLs and API keys.

### n00bcodr's Personal Scripts

Enable Colored Ratings
Applies color-coded backgrounds to media ratings.
View Screenshot
If you notice missing or incorrect ratings, please submit a PR to Jellyfin-Enhanced.
Enable Theme Selector
Adds a theme selector to quickly switch between Jellyfish color themes.
View Screenshot
note
Only changes the color theme of Jellyfish when used natively, not through KefinTweaks.
Enable Colored Activity Icons
Replaces Dashboard Activity Icons with Material Design icons and background color.
View Screenshot
info
Currently works with English activity logs only. PRs welcome for additional languages.
Enable Login Image
Displays the user's profile picture on the manual login screen instead of the name. When a user is selected, their avatar appears above the password field.
View Screenshot
warning
Only use this script if all your users are visible on the login screen. This completely hides the username text input field, making it difficult to manually login.
Enable Plugin Icons
Replaces default plugin folder icons with custom icons on the Dashboard sidebar.
View Screenshot
note
Currently replaces icons for (if installed): Jellyfin Enhanced, JavaScript Injector, Intro Skipper, Reports, JellySleep, Home Screen Sections, and File Transformation.

#### Custom Plugin Links

Add custom plugin links to the Dashboard sidebar. Each link should be on a new line in the format: `Configuration Page Name | icon_name`
Custom Plugin Links
Format: `Configuration Page Name | Material Icon Name`
Important: Use the exact name that appears in the configuration page URL (e.g., "Jellyfin%20Tweaks" becomes "Jellyfin Tweaks")
Browse Material Icons
Use "Test Links" to preview your custom plugin links in the sidebar.
Test links will appear immediately and disappear on page refresh.

### External Links

Enable Letterboxd External Links
Adds Letterboxd links to item details page.
Show Letterboxd link as text instead of icon
When enabled, shows "Letterboxd" as text instead of the Letterboxd icon.
Enable Metadata Icons (by Druidblack)
Shows metadata icons instead of text. From Druidblack/jellyfin-icon-metadata.
When enabled, links from the plugin will also use icons instead of text (Letterboxd, *arr Links.).

### Custom Branding

info
Requires the File Transformation Plugin to be installed and enabled. Upload custom PNG images to replace Jellyfin's default web logos.
Icon Transparent The icon in the top-left beside the server version
Jellyfin Default: 536x536px (square)
Format: PNG with transparency
image
Drop image here or click to upload
Max 10MB
Favicon Favicon in the browser tab
Jellyfin Default: 16x16px, 32x32px, or 48x48px
Format: ICO, PNG, or SVG
image
Drop image here or click to upload
Max 10MB
Banner Light Splash Screen Banner for Dark Mode
Jellyfin Default: 1302x378px
Format: PNG, JPG, or WebP
image
Drop image here or click to upload
Max 10MB
Banner Dark Splash Screen Banner for Light Mode
Jellyfin Default: 1302x378px
Format: PNG, JPG, or WebP
image
Drop image here or click to upload
Max 10MB
Apple Touch Icon Icon shown when adding to iOS Home Screen
Jellyfin Default: 180x180px
Format: PNG
image
Drop image here or click to upload
Max 10MB

###

Enable Custom Splash Screen
Splash Screen Image URL
URL for the splash screen image. Defaults to Jellyfin banner.
info
Might cause strange behaviour if jellyfin-plugin-media-bar is installed.
If you are on Jellyfin version 10.11 and you want the default Jellyfin Banner - Change the splash screen URL to "/web/banner-light.b113d4d1c6c07fcb73f0.png"
info
All changes require a page refresh to take effect.
If old settings persist, please force clear browser cache.