# JellyWatch - Full Content > Complete content for AI agents. 194 blog articles, plus full documentation and Community Hub content below. --- ## Jellyfin 12.2 Is Out: 51 Server Fixes, a Web Security Fix, and Whether to Upgrade URL: https://jellywatch.app/blog/jellyfin-12-2-release-changelog-what-changed-should-you-upgrade-2026 Published: 2026-10-06T09:00:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, jellyfin-12, jellyfin-12-2, release, update, changelog, security, 2026 # Jellyfin 12.2 Is Out: 51 Server Fixes, a Web Security Fix, and Whether to Upgrade Jellyfin 12.2 was published on October 5, 2026. It is a minor release, so there are no headline features. What it does bring is 51 changes to the server and 17 to the web client, mostly fixes for things that 12.0 and 12.1 users ran into: database safety, library scanning, parental ratings, Dolby Vision on Apple devices, music metadata and a few interface annoyances. It also includes one security fix in the web client. That alone makes it worth reading before you decide to wait. This article covers what changed, what you should test after updating, and who should upgrade now. If you need background on the 12.x line, start with our [Jellyfin 12.0 overview](https://jellywatch.app/blog/jellyfin-12-release-everything-you-need-to-know) and our [12.1 changelog breakdown](https://jellywatch.app/blog/jellyfin-12-1-release-changelog-should-you-upgrade-2026). --- ## The Short Answer - **Already on 12.0 or 12.1:** upgrade. It is a bug fix release, the web client has a security fix, and several changes make the database and library scanner safer. - **Still on 10.11.x and planning the jump:** go straight to 12.2 after your usual preparation (backup, remove third-party plugins, check usernames). Our [12.0 upgrade troubleshooting guide](https://jellywatch.app/blog/jellyfin-12-upgrade-problems-migration-failed-plugins-missing-clients-cant-login-2026) covers that. - **Running a family server with no time to test:** waiting a week is reasonable, but do not wait long. The security fix is in the web client, which is the part users open every day. As always, take a full backup before upgrading. --- ## Three Releases in a Month The 12.x line is moving quickly. Minor releases now carry a single number after the major version (12.1, 12.2), which is the new scheme Jellyfin adopted with 12.0. | Version | Date | Server changes | Web changes | Focus | |---|---|---|---|---| | 12.0 | September 7, 2026 | Major release | Major release | New database work, books and comics, Modern layout, FFmpeg 8.1 | | 12.1 | September 15, 2026 | 47 | Not covered here | Bug fixes and upgrade safety | | 12.2 | October 5, 2026 | 51 | 17 | Bug fixes, one web security fix | Dates for 12.2 come from the release timestamps on GitHub, which are late in the evening in UTC. Depending on your time zone, the release may show as October 5 or October 6. --- ## Web Client Changes The web client release has 17 changes. One is a security fix, one changes a default, and the rest are fixes and polish. ### Security - **Track titles and external URLs are now escaped.** Before, these values were not escaped when displayed. That is the kind of bug that can let crafted metadata run as script in someone else's browser session. The release notes do not describe the impact or give it a severity, so we cannot say how exploitable it was. The fix is simple to apply: update. If you use shared libraries, or a plugin or metadata source that can set track titles and links, this is the item to care about. ### A default that changed - **The "still watching" prompt is disabled by default.** This prompt was introduced in 12.0. The project switched it off by default in the web client, so it only appears if you turn it on. If you liked it, look for the option in your playback settings after the update. ### Enhancements - The mixed library icon was updated. - The 40 character limit on search was removed. - The Reset Filters button was moved, and alphabet support was added. - The subtitle save path setting is now shown even if no subtitle fetcher plugin is installed. - The transition from a blurhash placeholder to the real image was fixed. ### Fixes - A race condition that affected backdrop removal was fixed. - Playlist move options are hidden from users who do not have edit access. - Embedded VobSub subtitles render again. - Live TV program badges are no longer hidden on the details page. - Navigation with multiple gamepads was fixed. - The metadata manager no longer mixes themes. - On Samsung Tizen TVs, OPUS audio in MP4, TS and HLS-TS is no longer used. The Samsung Browser is also detected correctly. If you watch on a Samsung TV, see our [Samsung TV guide](https://jellywatch.app/blog/jellyfin-samsung-tv-tizen-install-sideload-guide-2026). - Photos no longer autoplay by mistake. - The query cache is cleared when a user changes language. After updating, do a hard refresh in your browser (Ctrl+Shift+R) so you do not run old cached web files. --- ## Server Changes, Grouped by Topic The server changelog is a flat list of 51 items. Here it is sorted into the areas you are likely to notice. ### Database and startup safety These changes matter most after a big upgrade like 12.0. - **A set-up server whose database is missing or empty will now refuse to start.** The release notes do not explain the scenario, but a typical case is a data volume that fails to mount, so Jellyfin would otherwise start against nothing. If you see this message after an update, check that your data directory is mounted correctly before doing anything else. - The `OwnerId` and `ExtraType/OwnerId` indexes are now partial, so lookups for extras keep using them. - An off-by-one error in the retry backoff for optimistic locking was fixed. - The performance of the `ChangeOwnerIdToGuid` migration was improved, which helps people still moving from older versions. - A transcoding settings migration no longer fails when the encoder preset is null. - Orphan `ItemValues` are cleaned up correctly after deletion. - An item's user data rows are kept in agreement. - Custom item display preferences are replaced in a single transaction, and an issue with the display preferences item was fixed. - A failed shutdown can no longer cancel an in-process restart. - Statistics are skipped on an empty library and refreshed after every scan. If you want to keep your database healthy over time, our [database maintenance guide](https://jellywatch.app/blog/jellyfin-database-maintenance-optimization-guide-2026) covers the routine tasks. ### Library scanning and deletion - **Libraries that cannot be resolved are never treated as grounds for deletion.** This matters when a network share is offline during a scan. Jellyfin should no longer decide that the items in it are gone. - Numbered sample and trailer files are recognized as extras, and `Sample` subfolders are ignored when resolving movie folders. - Extra names are only regenerated when the scan created them in the first place, so names you edited stay. - Local image dates are compared with a one second tolerance, which avoids needless image refreshes caused by tiny timestamp differences. - Missing episodes are reconciled by episode rather than by number. - The episode season name updates after you edit the season name. - The series name parser skips optimistic expressions, which fixes some wrongly parsed names. - User preferences are kept when you rename a library. For help with naming so these parsers work for you, read our [file naming guide](https://jellywatch.app/blog/jellyfin-media-file-naming-convention-complete-guide-2026). ### Ratings and parental controls - A changed rating only propagates to children that follow it. - The parental rating score is recomputed whenever an item is saved. - More rating systems were fixed, and the Taiwanese rating file was updated. - The allowed tags filter is no longer applied to by-name items such as actors and genres. If you use ratings and tags to restrict what children can see, retest a child account after the update. ### Playback and transcoding - **Dolby Vision profile 8 now uses the `hvc1` codec tag.** Apple devices generally expect this tag for HEVC-based video. This should improve compatibility for profile 8 files on those devices. Our [Dolby Vision profiles guide](https://jellywatch.app/blog/jellyfin-dolby-vision-profiles-explained-5-7-8-direct-play-2026) explains what the profiles mean, and the [4K HDR setup guide](https://jellywatch.app/blog/jellyfin-4k-hdr-dolby-vision-setup-guide-2026) covers client settings. - Video quality at low bitrates is better when the bit depth is reduced. - The stereo downmix filter is applied consistently to progressive audio transcodes. - Graphical subtitles are served as raw files with range support. - The segment cleaner no longer deletes segments ahead of playback when remuxing MKV. - A typo when parsing `codec_tag_string` was fixed. - Trickplay generation now checks write permission on the media directory first, and a database context leak when deleting trickplay data was fixed. - "Next Up" for rewatching no longer skips past an episode you barely started. ### Music and metadata - The ATL library was upgraded to 7.18.0, which fixes hangs with malformed FLAC files. - The MusicBrainz artist name is used first, MusicBrainz requests are retried when the server is busy, and artist lookups match on the clean name. - The music library cover image is limited to that library's artists. - HTML entities in OMDb responses are decoded. - The image region is read when determining the TMDb image language. - EPUB metadata and covers load again on Windows. - The internal search provider handles multiple writing scripts better. - Person names are compared without regard to case in the letter range filters. - Playlist views were fixed. - Chapter image extraction is logged once per video instead of repeatedly. ### Not user visible A few items only affect developers and tests, such as test concurrency fixes, a formatting fix and an XML reader change in tests. --- ## What Is Not in 12.2 - **No new headline features.** This is a fix release. - **No breaking changes are listed in the release notes.** The plugin and API changes from 12.0 still apply, so third-party plugins must still be built for Jellyfin 12. If you need to recheck a plugin, see our [plugin repository list](https://jellywatch.app/blog/best-jellyfin-plugin-repositories-url-list-how-to-add-2026). - **No mention of a required full library scan.** The notes do not call for one, unlike 12.0. If you are coming from 10.11, you still need the scan that 12.0 requires. --- ## How to Upgrade Back up your data and config directories first. Then update as usual. ```bash # Docker docker compose pull docker compose up -d ``` If you pin an image tag, change it to 12.2 after checking the tag format on your registry. On Debian or Ubuntu: ```bash sudo apt update && sudo apt install jellyfin ``` For a step-by-step backup and restore routine, see our [disaster recovery guide](https://jellywatch.app/blog/jellyfin-backup-restore-disaster-recovery-guide-2026). --- ## Post-Upgrade Checklist 1. Hard refresh your browser and clear old web assets. 2. Confirm the server starts and shows your libraries. If it refuses to start with a message about the database, check your volume mounts. 3. Play a Dolby Vision profile 8 file on an Apple device and check whether it Direct Plays. 4. Open a child account and confirm parental rating and tag restrictions still behave as expected. 5. Run a library scan and check for extras, sample files and series names that were previously misread. 6. Decide whether you want the "still watching" prompt turned back on. 7. Check that your plugins are loaded, in **Dashboard > Plugins**. --- ## Verdict 12.2 is an easy upgrade to recommend. It brings a web security fix, safer behavior when a database or library is unavailable, better rating handling and a Dolby Vision tag change that should help Apple users. There is nothing exciting to chase, and that is the point of a minor release. If you are on 12.0, skip ahead and install 12.2 directly. --- > **Updating Jellyfin? Keep an eye on the server while it restarts and rescans.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, transcoding activity and server health on your phone. *Sources: [Jellyfin Server 12.2 release notes](https://github.com/jellyfin/jellyfin/releases/tag/v12.2), [Jellyfin Web 12.2 release notes](https://github.com/jellyfin/jellyfin-web/releases/tag/v12.2), [Jellyfin 12.0 announcement](https://jellyfin.org/posts/jellyfin-release-12.0), [Jellyfin 12.1 release notes via Releasebot](https://releasebot.io/updates/jellyfin/jellyfin-server). Content was rephrased for compliance with licensing restrictions.* --- ## qBittorrent 5.2.4 and 5.3.0 RC1: What Changed and Should You Upgrade? URL: https://jellywatch.app/blog/qbittorrent-5-2-4-and-5-3-rc1-whats-new-should-you-upgrade-2026 Published: 2026-10-04T11:35:00+00:00 Author: JellyWatch Team Category: Release Tags: qbittorrent, release, update, web-ui, download-client, automation, 2026 # qBittorrent 5.2.4 and 5.3.0 RC1: What Changed and Should You Upgrade? qBittorrent published two releases on September 28, 2026: a stable bug fix release, 5.2.4, and the first release candidate for the next feature line, 5.3.0 RC1. If qBittorrent is the download client in your media automation stack, here is what each one means for you. This continues our coverage of [qBittorrent 5.2.0](https://jellywatch.app/blog/qbittorrent-5-2-0-release-whats-new-2026) and the [5.2.1 security update](https://jellywatch.app/blog/qbittorrent-5-2-1-security-update-2026). --- ## The Short Answer - **Install 5.2.4** if you are on any earlier 5.2.x release. It is a low-risk bug fix release. - **Do not put 5.3.0 RC1 on your main download box.** As of this writing the project has not published a changelog for it. Test it in a separate container if you are curious. - Wait for the stable 5.3.0 and its changelog before planning a move. --- ## Release Timeline | Version | Date | Type | |---|---|---| | 5.2.3 | July 7, 2026 | Stable | | 5.3.0 beta 1 | September 5, 2026 | Pre-release | | 5.2.4 | September 28, 2026 | Stable | | 5.3.0 RC1 | September 28, 2026 | Pre-release (release candidate) | --- ## What Is in 5.2.4 The official changelog is a short list of bug fixes and Web UI changes. ### General fixes - Links in the "add torrent" comments field are now clickable. - Relative UI theme paths are resolved against the configuration folder. If you use a custom theme, this one matters. - A redefined signal warning was fixed. - A torrent source that is already being added is skipped, which avoids duplicate processing. - File descriptors are closed when starting a file manager. - Case-only renaming now applies. Before, renaming a file or folder by changing only the capital letters did nothing. - A crash when a second instance is started while the legal notice is showing was fixed. ### Web UI If you manage qBittorrent through its web interface, as most people with Sonarr and Radarr do, this is the group to read. - A shared dialog for adding multiple torrents. - Invisible rows are no longer selected in the transfer table. - The add-torrent window title is escaped, and a safe property is used when setting element titles. - Only `http` and `https` links from RSS articles and search results can be opened. - Saved column order no longer gets corrupted in place. - Manually adding peers works again. - A crash on the Preferences page with the Italian locale was fixed. Several of these, such as the escaping and the restriction on which links can be opened, look like hardening of the web interface. The project lists them as Web UI fixes and does not label them as security advisories, so we will not either. They are still a good reason to update if your web interface is reachable beyond your home network. ### Other - A harmless compiler warning was suppressed. --- ## What We Know About 5.3.0 RC1 Not much yet, and that is the point. The project's news page states that a changelog for 5.3.0 RC1 is not available, the same as it did for the beta on September 5. The library versions that come with it are: | Component | Versions listed | |---|---| | libtorrent | 1.2.20, 2.0.15 and 2.1.2 builds | | Qt | 6.10.3 and 6.11.2 | | Boost | 1.86 and 1.92 | A move to newer Qt and libtorrent builds can affect performance and behavior in ways that are hard to predict from the version numbers alone. That is a reason to wait for release notes and for community reports. Once a changelog is published, we will update this article. --- ## How to Upgrade to 5.2.4 Back up your qBittorrent configuration folder before any upgrade. It holds your settings, categories and torrent state, and restoring it is the fastest way back if something goes wrong. For Docker, pin the image tag to 5.2.4, or the equivalent tag format used by your image, then pull and recreate: ```bash docker compose pull qbittorrent docker compose up -d qbittorrent ``` Replace `qbittorrent` with your service name. Check your image's tag list first, because tag formats differ between images. If you use `latest` and have not pulled recently, the pull alone will update you. After the container restarts: 1. Open the Web UI and confirm you can sign in. 2. Check that your categories and save paths are intact. 3. Make sure your connection to Sonarr, Radarr and Prowlarr still works. In each app, use the download client's test button. 4. Confirm a small test download completes and gets imported. If you are setting up the stack for the first time, see our [Prowlarr and qBittorrent guide](https://jellywatch.app/blog/prowlarr-qbittorrent-download-client-jellyfin-guide-2026), and the [full automation guide](https://jellywatch.app/blog/jellyfin-full-automation-guide-radarr-sonarr-bazarr-jellyseerr-2026). --- ## Security Habits That Matter More Than the Version A current version helps, but a few habits do more: - **Do not expose the Web UI directly to the internet.** Put it behind a VPN or an authenticated reverse proxy. - **Change the default credentials** and use a strong password. - **Bind the interface** to the network segment that actually needs it. - **Keep the host and container runtime updated** too. Our 5.2.1 article covers an SSRF security fix from earlier this year, which is a good reminder of why. --- ## Should You Upgrade? | Your situation | Recommendation | |---|---| | On 5.2.0 to 5.2.3 | Upgrade to 5.2.4 | | On 5.1 or older | Plan an upgrade to 5.2.4. Back up first, and read the 5.2.0 article for the changes | | Curious about 5.3 | Test RC1 in a separate container with a copy of your config | | Running a production download client | Stay on 5.2.4 until 5.3.0 is stable and has a changelog | --- > **Watch your downloads land in your library.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - manage your Radarr and Sonarr queue, and monitor your Jellyfin server, from your phone. *Sources: [qBittorrent news page](https://www.qbittorrent.org/news), [qBittorrent releases on GitHub](https://github.com/qbittorrent/qBittorrent/releases). Content was rephrased for compliance with licensing restrictions.* --- ## Seerr 3.5: What's New and the Breaking API Change You Need to Know About URL: https://jellywatch.app/blog/seerr-3-5-release-whats-new-breaking-api-change-2026 Published: 2026-10-04T11:00:00+00:00 Author: JellyWatch Team Category: Release Tags: seerr, release, update, api, jellyfin, requests, 2026 # Seerr 3.5: What's New and the Breaking API Change You Need to Know About Seerr 3.5.0 was released on September 28, 2026. It is a minor version by number, but it includes a change that can break scripts and third-party tools: the way Seerr's own Plex and Jellyfin library settings endpoints behave. If you only use the web interface, the upgrade is routine. If you have anything that calls the Seerr API, read the next section first. --- ## The Breaking Change: Library Endpoints Before 3.5, two settings endpoints did double duty. A simple `GET` on the library list could also sync libraries or change which ones were enabled, through query parameters. That meant that reading libraries could change their state. In 3.5, that is no longer true. - `GET /settings/plex/library` and `GET /settings/jellyfin/library` no longer accept the `sync` or `enable` query parameters. - Reading libraries no longer changes their enabled state. Use these endpoints instead: | Task | Old way | New way | |---|---|---| | Sync Plex libraries | `GET /settings/plex/library` with a sync parameter | `POST /settings/plex/library/sync` | | Sync Jellyfin libraries | `GET /settings/jellyfin/library` with a sync parameter | `POST /settings/jellyfin/library/sync` | | Enable or disable a Plex library | `GET /settings/plex/library` with an enable parameter | `PUT /settings/plex/library/{libraryId}` | | Enable or disable a Jellyfin library | `GET /settings/jellyfin/library` with an enable parameter | `PUT /settings/jellyfin/library/{libraryId}` | Check the Seerr API documentation for the exact request body each `PUT` expects. The web interface already uses the new endpoints, so only direct API consumers are affected. The Seerr team shipped this in a minor release for that reason. **Who should check:** anyone with automation that triggers library syncs, a dashboard or script that toggles libraries, or a third-party app that talks to Seerr settings. If you are not sure, search your scripts for `settings/jellyfin/library` and `settings/plex/library`. --- ## New Features - **Hide already requested media.** A new setting lets you hide titles that are already requested, which keeps the discover pages cleaner. - **User search.** The user list has a search box, so you can find a person by username or email instead of scrolling. - **Override rules for advanced requests.** Override rules are now applied to advanced requests too, not only standard ones. - **ntfy tags.** Notifications sent through ntfy.sh can carry tags. - **Gotify poster option.** Gotify notifications can embed the poster image. - **A Seerr user agent on outbound requests.** Seerr now identifies itself when it calls other services, which helps when you read proxy logs. - **A demo feature.** - **Custom Plex metadata provider GUID scheme** support in the scanner. If you use ntfy or Gotify, see our comparison of [notification options for Jellyfin](https://jellywatch.app/blog/jellyfin-notifications-ntfy-gotify-apprise-webhook-2026). --- ## Fixes Worth Knowing About The release has a long list of bug fixes. These are the ones most likely to matter in daily use. ### Requests - Requests for the same title are serialized, and request creation is serialized per user. This addresses cases where duplicate or conflicting requests could be created at the same time. - Editing a request no longer re-requests seasons that are already covered, no longer takes a season that belongs to another request, and now enforces the user quota. - Orphaned season statuses are reset when a request is deleted. - Pending and failed states are enforced on the request routes. - Requesting "all seasons" skips seasons that have no episodes, and phantom specials no longer block season requests. - Download status on request cards is scoped to the seasons that were requested. ### Jellyfin and Emby - The authorization headers used for Jellyfin were updated. - The avatar is refreshed when you sign in with Quick Connect. - The Quick Connect button is hidden for Emby servers, since Emby does not offer it. ### Sonarr and Radarr routing - The configured series type is applied to non-anime requests. - Anime root folder routing no longer depends on the series type. - Override rules now match the default *arr server by its ID, and values set by advanced requesters are kept. ### Database - Leftover Overseerr `DELETED` status values are remapped after migration. - Several database issues on SQLite and Postgres were fixed, including timestamp handling and a stale unique constraint on push subscriptions. ### Server - The server now responds instead of hanging when a proxy route errors. --- ## How to Upgrade Back up your Seerr configuration directory first. Then pull the new image and recreate the container: ```bash docker compose pull seerr docker compose up -d seerr ``` Replace `seerr` with the name of your service if it is different. If you pin a tag, change it to 3.5.0 before pulling, or you will get the image you already have. The migration from older versions is automatic. For a fresh install, see our [Seerr installation guide](https://jellywatch.app/blog/seerr-installation-guide-docker-linux-unraid-windows-2026). If you are still running Jellyseerr or Overseerr, those projects were merged into Seerr and are discontinued. Our [migration guide](https://jellywatch.app/blog/jellyseerr-overseerr-to-seerr-migration-guide-2026) and [Seerr FAQ](https://jellywatch.app/blog/seerr-jellyseerr-faq-common-questions-answered-2026) explain the move. --- ## After Upgrading: A Short Checklist 1. Open the web interface and confirm that your libraries are still enabled in **Settings**. 2. Run a manual library sync once from the UI. 3. Send a test notification if you use ntfy or Gotify. 4. Check any scripts that call the settings API, using the table above. 5. Request one title and confirm it reaches Sonarr or Radarr with the right root folder and series type. --- ## Should You Upgrade Now? For most people, yes. The fixes to request handling in particular reduce the chance of odd duplicate or lost requests, and the web UI needs no changes on your side. The only reason to wait is if you have API automation that you cannot update right away. In that case, update the scripts first, then upgrade. --- > **Manage media requests from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) to approve, reject and track requests natively on Android. *Sources: [Seerr 3.5.0 release notes on GitHub](https://github.com/seerr-team/seerr/releases). Content was rephrased for compliance with licensing restrictions.* --- ## Jellyfin 12.0 Upgrade Problems: Migration Failed, Plugins Missing, Clients Cannot Log In URL: https://jellywatch.app/blog/jellyfin-12-upgrade-problems-migration-failed-plugins-missing-clients-cant-login-2026 Published: 2026-10-04T10:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, jellyfin-12, troubleshooting, upgrade, migration, plugins, 2026 # Jellyfin 12.0 Upgrade Problems: Migration Failed, Plugins Missing, Clients Cannot Log In Jellyfin 12.0 is a real major release. It rewrites data on first boot, moves to .NET 10, removes old API routes and switches off an old sign-in method. That is a lot of change at once, so it is normal to hit something after upgrading. This page is a troubleshooting checklist for the problems people are most likely to see, with the cause of each and the fix. For the upgrade procedure itself, start with our [Jellyfin 12.0 overview](https://jellywatch.app/blog/jellyfin-12-release-everything-you-need-to-know). --- ## Before You Change Anything Two rules make every problem below easier to handle: 1. **You need a backup to go back.** Jellyfin 12.0 changes the database schema and rewrites data during the first start. The project is clear that the backup taken before the upgrade is the only way back to your previous version. If you have one, every scenario below is recoverable. If you do not, stop and make a copy of the current data and config directories before you try fixes. 2. **Read the log before guessing.** Most problems leave a clear message. ```bash # Docker docker compose logs -f jellyfin # Debian or Ubuntu package sudo journalctl -u jellyfin -f ``` Also check the log files in the Jellyfin log directory. On a Debian or Ubuntu package install this is usually `/var/log/jellyfin/`, and for Docker it is the `log` folder inside your mapped config directory. --- ## Quick Diagnosis Table | Symptom | Most likely cause | Jump to | |---|---|---| | Server never starts after the upgrade | A startup migration failed | Problem 1 | | Migration fails and mentions usernames | Two accounts differ only by capital letters | Problem 2 | | Plugins missing or not loading | Plugins built for 10.11 do not load on 12.0 | Problem 3 | | Movies or episodes look gone | Alternate versions were cleared, scan needed | Problem 4 | | First scan takes forever, movies appear as new | Expected after the upgrade | Problem 5 | | A TV app or old client cannot sign in | Legacy routes and old sign-in method are off | Problem 6 | | Pages look broken or buttons do nothing | Stale cached web files | Problem 7 | | Subtitles, sorting or image sizes changed | Intentional 12.0 behavior changes | Problem 8 | | A script or dashboard stopped working | Version string or removed API routes | Problem 9 | --- ## Problem 1: The Server Never Starts After the Upgrade **What you see:** The container restarts in a loop, or the service fails right after the upgrade. The log shows a migration error. **What is going on:** 12.0 runs several database migrations on the first boot. If one of them fails, it is rolled back and the server does not start. A public bug report shows the pattern. A user upgrading from 10.11.11 to 12.0 under Docker had a migration called `FixIncorrectOwnerIdRelationships` fail. The routine found hundreds of duplicate items and failed while deleting them with a SQLite foreign key constraint error. It was not caused by plugins, since the user had removed every third-party plugin and got the same result. **What to do:** 1. **Do not keep restarting the server.** Repeated attempts will not help if the data is the issue. 2. **Restore your backup** of the data and config directories, and go back to your previous version so your library is working again. 3. **Try 12.1 instead of 12.0.** The 12.1 release lists a cleanup of invalid data before migrations run, among other upgrade safety fixes. We cannot confirm that it resolves the specific case above, but it is the right version to try. See our [12.1 changelog breakdown](https://jellywatch.app/blog/jellyfin-12-1-release-changelog-should-you-upgrade-2026). 4. **Run the migration as a separate step** to watch what happens. Jellyfin accepts `--mode MigrateSystem`, which performs the upgrade and exits without starting the rest of the server. ```bash jellyfin --mode MigrateSystem ``` For Docker, pass the same argument to the container when you run it against a copy of your data. Do this on a copy, not on your only database. 5. **If it still fails, report it.** Open an issue on the Jellyfin GitHub repository and prefix the title with `[12.0]`. The project asks for this so it can triage quickly. Attach the full log. --- ## Problem 2: The Migration Fails Because of Usernames **What you see:** The upgrade fails early, or you read the release notes too late. **What is going on:** In 12.0, usernames are case insensitive. Two accounts can no longer have names that differ only by capitalization, for example `Sam` and `sam`. A server that has such a pair fails the database migration outright. **What to do:** 1. Roll back to your backup if you already started the upgrade. 2. On the old version, open **Dashboard > Users** and look through the list for names that are the same apart from capital letters. 3. Rename one account of each pair. 4. Upgrade again. A side effect worth knowing: once you are on 12.0, you can change a username between upper and lower case. --- ## Problem 3: Plugins Are Missing or Will Not Load **What you see:** A plugin shows as not supported or does not appear, or features from it are gone. **What is going on:** The server now targets .NET 10 and several plugin interfaces changed. Plugins built for 10.11 do not load on 12.0 until their authors rebuild them. Official plugins were updated for 12.0. Disabled plugins also stay disabled across restarts now, which was not true on 10.11. **What to do:** - Open **Dashboard > Plugins** and check which plugins are listed and which show an error. - For each third-party plugin, look at its repository or catalog entry for a build that supports Jellyfin 12. Some projects publish one manifest that serves both 10.11 and 12.x and lets Jellyfin pick the matching build. - If no 12.0 build exists yet, leave that plugin uninstalled and check back. Do not copy old plugin files into the plugins folder by hand. - Make sure your plugin repository URLs are still correct. See our [list of plugin repositories](https://jellywatch.app/blog/best-jellyfin-plugin-repositories-url-list-how-to-add-2026). If you depend on a plugin for something important, such as single sign-on, hold your upgrade until it has a 12.x build. Check compatibility before the upgrade, not after. --- ## Problem 4: Movies or Episodes Look Missing **What you see:** Items grouped as multiple versions seem to be gone, or some movies show up as separate entries. **What is going on:** To fix how alternate versions are stored (and to make them work for episodes), the upgrade clears versions that Jellyfin grouped automatically. Versions you merged yourself are not cleared. Until a full scan runs, the automatically grouped items look missing. **What to do:** Run a **full library scan** (Dashboard > Libraries > Scan All Libraries). This step is required after upgrading. Then check the results. The 12.1 release also includes fixes for versions that still listed separately from their group and for preserving manual merges. --- ## Problem 5: The First Scan Takes Forever **What you see:** The scan takes much longer than normal, and some movies appear as newly added. **What is going on:** This is expected. 12.0 checks every item in your library against the files on disk to clean up leftovers from earlier versions. Items that were filed incorrectly before get corrected as it goes, and that can make them look new. **What to do:** Wait. Do not stop the server while migrations are running. You can watch progress on the restyled startup page. On a large library, plan for hours instead of minutes. --- ## Problem 6: A Client or TV App Cannot Sign In **What you see:** An app that worked yesterday now shows a login error, cannot find the server, or fails to load libraries. **What is going on:** 12.0 removed support for the legacy `/emby/` and `/mediabrowser/` addresses, and the deprecated sign-in method is switched off by default, on existing servers as well as new ones. Clients that have not been updated in years are the ones at risk. **What to do:** 1. Update the client app to the latest version. This fixes the problem for most people. 2. If the app is no longer maintained, switch to a maintained client. Our [client guide](https://jellywatch.app/blog/awesome-jellyfin-clients-complete-ecosystem-guide-2026) lists current options for every device. 3. If it is a self-written script or tool, update it to use the current authorization header and documented API endpoints. 4. Rule out basic network problems with our [connection troubleshooting guide](https://jellywatch.app/blog/fix-jellyfin-not-connecting-connection-refused-cant-reach-server-2026). --- ## Problem 7: The Web Interface Looks Wrong **What you see:** Broken layouts, missing buttons or odd behavior in the browser after the upgrade. **What is going on:** Cached files from the previous web version. The project calls stale cached assets the number one cause of this kind of problem. **What to do:** Do a hard refresh (Ctrl+Shift+R, or Cmd+Shift+R on Mac) and clear the browser cache for your Jellyfin address. If you use a reverse proxy or CDN that caches static files, clear that cache too. Also note that the **Modern** layout is now the default on desktop and mobile. The previous layout still exists and is now called **Legacy**. Televisions keep the TV layout. If you use custom CSS, parts of it may not match the new theme structure, since all built-in themes now share a base built on CSS variables. --- ## Problem 8: Settings and Behavior That Changed on Purpose Some things are different in 12.0 and are not bugs: - **Subtitle settings are per library.** The old server-wide subtitle options no longer exist. Look in each library's settings. - **Sorting is more consistent.** Some libraries will sort slightly differently than before. - **Artwork is no longer stretched past its real size.** Low-resolution posters now appear smaller but sharper. - **`.ogg` files are treated as audio, not video.** If you had `.ogg` video files, they are re-sorted on the next scan. - **Symlinked media** is followed when something is played, not when the library is scanned. - **The Bookshelf plugin is deprecated.** Book and comic handling moved into the server. --- ## Problem 9: Scripts, Dashboards and Monitors Stopped Working **What you see:** A monitoring check, a deploy script or a container tag pin no longer behaves. **What is going on:** The server now reports its version as `12.0.0` instead of `10.x.y`. Anything that parses the version string or assumes a `10.` prefix needs to be updated. Some API routes were also removed, including `POST /Users/{userId}/EasyPassword`, and `GET /QuickConnect/Initiate` must now be called as a `POST`. If an endpoint is marked obsolete in the OpenAPI specification, you should stop using it. **What to do:** Update version checks and tag pins, regenerate any SDK built from the old OpenAPI document (Swashbuckle was updated to v10), and move off obsolete endpoints. --- ## Rolling Back If you cannot fix a problem and need your server working now: 1. Stop Jellyfin. 2. Restore the backup of the data and config directories you made before the upgrade. 3. Start the previous version (10.10.7 or a 10.11.x release). Do not try to run 10.11 on a database that 12.0 has already migrated. The schema has changed. For a full procedure, see our [backup and restore guide](https://jellywatch.app/blog/jellyfin-backup-restore-disaster-recovery-guide-2026). --- ## Asking for Help Effectively When you post on the forum or open an issue, include: - The version you upgraded from and to - How you installed Jellyfin (Docker, package, Windows) - The relevant lines of the log, not just a screenshot - Whether third-party plugins were removed first - The prefix `[12.0]` in the title of a bug report --- > **Watching a long post-upgrade scan?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) to check server activity, sessions and health from your phone while Jellyfin finishes its migrations. *Sources: [Jellyfin 12.0 announcement](https://jellyfin.org/posts/jellyfin-release-12.0), [Help Net Security](https://www.helpnetsecurity.com/2026/09/08/jellyfin-12-0-security-fixes/), [GitHub issue 17919](https://github.com/jellyfin/jellyfin/issues/17919), [Jellyfin 12.1 release notes via Releasebot](https://releasebot.io/updates/jellyfin/jellyfin-server). Content was rephrased for compliance with licensing restrictions.* --- ## Jellyfin 12.1 Changelog: What Was Fixed and Should You Upgrade? URL: https://jellywatch.app/blog/jellyfin-12-1-release-changelog-should-you-upgrade-2026 Published: 2026-10-04T10:00:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, jellyfin-12, release, update, changelog, bugfix, 2026 # Jellyfin 12.1: What Was Fixed and Should You Upgrade? Jellyfin 12.1 is the first point release after the big 12.0 jump, and it landed on September 15, 2026. It is a bug fix release with 47 changes, and most of them target things that 12.0 users actually hit: memory use, SyncPlay, Live TV guide data, alternate versions and the upgrade path itself. If you want the background on 12.0, read our [Jellyfin 12.0 breakdown](https://jellywatch.app/blog/jellyfin-12-release-everything-you-need-to-know). This article covers only what 12.1 changes. --- ## The Short Answer - **Already on 12.0:** upgrade. It is a minor release focused on fixes, and several of them address memory use and SyncPlay behavior. - **Still on 10.11.x and planning the move:** go straight to 12.1 rather than stopping at 12.0, after you have done the usual preparation (backup, remove third-party plugins, check usernames). 12.1 includes data cleanup before migrations and a fix to the pre-migration backup, which is exactly the part that matters on an upgrade. - **Not ready for 12.x yet:** nothing in 12.1 changes the advice. Stay on a supported 10.11 release until you can take a maintenance window. As always with Jellyfin, take a full backup before you upgrade. --- ## What Changed, Grouped by Topic The official changelog is a flat list. Here it is sorted by what you would notice. ### Upgrade safety and database - Invalid data is cleaned up before migrations run. - Database optimization no longer uses as much memory, and the backup taken before a migration has its integrity fixed. - Cleanup of alternate versions of the wrong type no longer recurses. - Deleting an item now removes its full set of owned records, and orphaned people are cleaned up when items are deleted. - Dead item data is dropped, and a few query ordering and bound parameter issues were fixed. - A failed library refresh is no longer recorded as a completed one. Why it matters: 12.0 rewrites data on first boot, and at least one Docker user reported a migration from 10.11.11 failing on duplicate records. We cannot confirm from the release notes that 12.1 fixes that specific report, but the cleanup step is clearly aimed at that kind of problem. ### Library scanning and folders - Nested unnumbered season folders no longer collapse onto the first one. - A folder's children are released once its subtree has been scanned, which helps memory during big scans. - Active scans are preserved when a background library refresh is requested. - Library items are preserved when directory enumeration fails. If a share drops mid-scan, Jellyfin should no longer treat the missing folder as deleted content. - The library monitor no longer tries to refresh against a disposed host. - Collection creation works again when the collections library was just added. - Metadata provider order changes no longer need a restart to apply. ### Alternate versions - Versions of a video that still listed separately from their group are fixed, and manual merges are preserved. - Episodes are only grouped as versions when the path is parsed with confidence. - Decimal points in version names are handled correctly. If you noticed odd grouping of episodes after the 12.0 scan, this is the group of fixes to look at. ### SyncPlay - Authentication errors in SyncPlay are handled correctly, and the time a group waits for members is limited. - Sessions that report playback at a stale position are corrected. If you watch together with friends, see our [SyncPlay guide](https://jellywatch.app/blog/jellyfin-watch-party-group-watch-guide-2026) for how the feature works. ### Users, devices and performance - Revoking a device's access now logs out sessions that are already open. Before, the existing session could keep going. - The `/UserViews` endpoint no longer exhausts memory or reports random child counts. - Live TV access is checked for a single user instead of enumerating every user. - A torn-down WebSocket no longer takes down the request handler. - A concurrency problem in similar-item lookups is fixed. - Full people scans and writes are skipped when credits are unchanged, and unused credits are no longer requested when looking up a TMDb person. ### Playback, subtitles and transcoding - "Forced only" subtitle choices now override remembered subtitle selections. - A color range problem after Vulkan tone mapping is fixed. - Trickplay no longer uses the wrong video stream. - Transcode throttling now enables on supported systems. It was affected by a race condition. - Images are not resampled or sharpened when the image library is not actually resizing them. ### Live TV, ratings and metadata - EPG issues are fixed. - Parental ratings match case-insensitively, and Norwegian, Italian and slashed ratings are handled correctly. - Image resolutions are reported for TMDb images when no size is configured, and TMDb image previews use thumbnails. - Playlist encoding recognition and a missing tags array in the filters response are fixed. - Empty ZIP comments are skipped when reading ComicBookInfo, a small fix for the new native comics support. - The series name regex is improved. --- ## Should You Worry About Anything? Nothing in the list is marked as a breaking change. A few practical notes: - **Backup first.** It is a minor release, but it still touches the database. A copy of your config and data directories costs nothing. - **Scans.** If you have just finished the long post-12.0 scan, 12.1 may trigger more cleanup work. Let it finish. - **Third-party plugins.** 12.1 does not change the plugin story from 12.0. Plugins must be built for .NET 10, so keep checking that each plugin has a build for your version. --- ## How to Upgrade ```bash # Docker docker compose pull docker compose up -d ``` If you pin an image tag, change it to 12.1 and check the tag format on your registry first. On Debian or Ubuntu, use your package manager as usual: ```bash sudo apt update && sudo apt install jellyfin ``` Then do a hard refresh in your browser (Ctrl+Shift+R) so you do not run stale web assets. --- ## Verdict 12.1 is the version to be on if you are using 12.x. There are no new features to chase, but the fixes cover memory use, SyncPlay, Live TV guide data, alternate versions and upgrade safety. If you were waiting for a few weeks of bug reports to settle before moving from 10.11, this is a reasonable point to start. --- > **Upgrading Jellyfin? Watch the server while it rescans.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) and monitor active sessions and server health from your phone during the upgrade. *Sources: [Jellyfin 12.1 release notes via Releasebot](https://releasebot.io/updates/jellyfin/jellyfin-server), [Jellyfin 12.0 announcement](https://jellyfin.org/posts/jellyfin-release-12.0), [GitHub issue 17919](https://github.com/jellyfin/jellyfin/issues/17919). Content was rephrased for compliance with licensing restrictions.* --- ## Plex Now Charges for Remote Streaming in Infuse and Other Third-Party Apps: Your Options in 2026 URL: https://jellywatch.app/blog/plex-remote-streaming-paywall-infuse-third-party-apps-jellyfin-options-2026 Published: 2026-10-04T09:00:00+00:00 Author: JellyWatch Team Category: Other Tags: plex, infuse, remote-access, jellyfin, migration, news, 2026 # Plex Now Charges for Remote Streaming in Infuse and Other Third-Party Apps: Your Options in 2026 For a while there was a simple workaround for Plex's remote streaming paywall: skip the official app and play your library through a third-party client such as Infuse. That workaround is closing. In late September 2026, Firecore, the company behind Infuse, told its users that Plex had informed them that remote streaming from a Plex server will require a paid Plex license, and that this includes playback through third-party apps. This article explains what changed, who has to pay, what still works for free, and what your realistic options are if you do not want another subscription. --- ## What Actually Changed Firecore posted its notice on September 21, 2026. According to that notice, remote streaming from a Plex server now requires a paid Plex license, including when the video is played through apps like Infuse. Playback on your local network is not affected. A few details are worth being careful about: - The announcement said the change would start "later this week", so there is no single confirmed switch-over date. - Press coverage on September 30 described the loophole as closed, but behavior can differ by platform and by whether the server owner has an active Plex Pass. - Some headlines call this the "last" free loophole. That overstates it. What is closed is free remote video playback through Plex's own remote streaming system. Local playback and self-managed network tunnels still work. If you want to know whether you are affected, test it. Leave your home Wi-Fi, play something from a third-party app, and see whether you are asked for a pass. --- ## How We Got Here This was announced long before it arrived, and the rollout has been gradual. | Date | What happened | |---|---| | March 2025 | Plex announced a price increase and a new policy for streaming outside the home network | | November 2025 | Enforcement began on Roku, with a warning that it would expand to other platforms and to third-party clients using the Plex API | | April 29, 2026 | Plex's own support post extended the requirement to Fire TV and supported TVs and consoles such as Samsung, LG, Vizio, PlayStation and Xbox | | September 2026 | Third-party apps such as Infuse are included | We covered the earlier steps in [Plex Just Paywalled Remote Access](https://jellywatch.app/blog/plex-paywall-2026-switch-to-jellyfin-migration-guide) and [Plex Lifetime Pass Triples to $750](https://jellywatch.app/blog/plex-lifetime-pass-750-dollars-migration-jellyfin-emby-2026). --- ## Who Has to Pay The rules are more specific than "everyone pays". | Situation | What covers remote video | |---|---| | The server owner has an active Plex Pass | Every account streaming from that server | | A viewer has a Remote Watch Pass | Only that viewer's own account, plus their Plex Home managed accounts | | Nobody has a pass | Local network playback only | | Music in Plexamp, photos in Plex Photos | Free, not restricted | For a family, one Plex Pass on the server owner's account is the simpler option. Individual Remote Watch Passes only make sense for a single person streaming remotely. ### What it costs At the time of the Roku rollout, Plex Pass was listed at $6.99 per month or $69.99 per year, and the Remote Watch Pass at $1.99 per month or $19.99 per year. Those were introductory numbers, and Plex has changed prices more than once since, including the lifetime pass. Check Plex's current plans page before you budget anything. ### The relay cap If your connection falls back to Plex Relay instead of a direct connection, streams are capped at 2 Mbps even for paying users. For good quality you need a working direct connection, which usually means UPnP or a port forward to TCP 32400. That may not be possible behind carrier-grade NAT. --- ## "I Am at Home and Plex Says I Am Remote" Plex treats playback as remote whenever the player cannot reach the server on the same subnet of the same local network. If a device at home suddenly asks for a pass, check these first: - **Separate subnets.** A guest Wi-Fi network, an IoT VLAN, or a mesh node running in router mode can put the TV on a different subnet from the server. - **Firewall on the server.** On Windows, make sure Plex Media Server is allowed through the firewall. - **Double NAT.** An ISP gateway plus your own router can interfere. Putting one device into bridge mode often fixes it. These are the usual culprits, not a guaranteed fix for every case. --- ## Your Options ### Option 1: Pay for Plex If you and your family are happy with Plex, a Plex Pass on the server owner's account is the cleanest route. It is a legitimate choice. Plex runs real infrastructure for authentication, discovery and relays, and its apps are polished. The cost of this option is trust, not just money. Plex has changed terms, prices and app lineups repeatedly, and it is fair to ask what moves behind the paywall next. ### Option 2: Stay local If you only watch at home, nothing changes for you. Your home network stays free. ### Option 3: Use a mesh VPN A mesh VPN such as Tailscale makes a phone or laptop behave as if it were on your home network. Firecore itself pointed to this kind of setup for people who do not want to use Plex Remote Access. The catches are real: - Every viewer needs the VPN app installed and approved on your network. - Plex decides what counts as local, and Plex has not published any guarantee that a VPN setup will pass that check. It could change how it decides. See our [Tailscale and WireGuard guide](https://jellywatch.app/blog/jellyfin-vpn-wireguard-tailscale-remote-access-2026) for how this works with a media server. ### Option 4: Move to Jellyfin and keep Infuse Jellyfin has no remote streaming fee, no account requirement and no central service that can decide to charge you. And if you like Infuse, you do not have to give it up. Infuse can connect directly to a Jellyfin server. The short version of the setup: 1. In Infuse, open **Settings** and add a files source, then choose **Jellyfin**. 2. Enter your server address and your Jellyfin username and password. 3. Turn off **Library Mode** for the Jellyfin source, so Infuse uses your Jellyfin metadata and watch progress instead of its own. 4. Play a file and confirm the playback info says Direct Play. The full walkthrough, including codec support on Apple TV, is in our [Infuse and Jellyfin setup guide](https://jellywatch.app/blog/infuse-jellyfin-apple-tv-ios-setup-2026). If you would rather use a free, open-source Apple client, see [Swiftfin for iOS and Apple TV](https://jellywatch.app/blog/jellyfin-swiftfin-ios-apple-tv-setup-guide-2026). Infuse itself has its own paid tier, so check Firecore's current pricing for the features you need. --- ## Plex vs Jellyfin for Remote Viewing | | Plex | Jellyfin | |---|---|---| | Remote video on official apps | Paid pass required | Free | | Remote video on third-party apps | Paid pass required since September 2026 | Free | | Account with a company | Required | Not required | | Who runs the remote connection | Plex infrastructure and relays, or your own direct connection | Your own reverse proxy or VPN | | Setup effort for remote access | Low | Medium | | Native Apple TV app | Yes | Swiftfin, or third-party apps such as Infuse | The honest tradeoff: Plex makes remote access easy, and Jellyfin makes you set it up yourself. In return you own the whole path. The common ways to do it are a [reverse proxy](https://jellywatch.app/blog/jellyfin-reverse-proxy-nginx-traefik-caddy-guide-2026), a [Cloudflare Tunnel](https://jellywatch.app/blog/jellyfin-cloudflare-tunnel-zero-trust-remote-access-guide-2026), or a VPN. --- ## What to Do This Week 1. Test remote playback from a third-party app on mobile data, so you know where you stand. 2. If you are affected and want to stay on Plex, decide between a server-level Plex Pass and individual passes. 3. If you want out, install Jellyfin next to Plex and point it at the same media folders. Nothing moves, so you can run both while you decide. Our [Plex to Jellyfin migration guide](https://jellywatch.app/blog/migrate-plex-to-jellyfin-guide-2026) covers watch history too. 4. Keep your Infuse subscription if you like it, and connect it to Jellyfin. --- ## Final Thoughts Plex said this was coming, and it has now followed through. Whether you pay, tunnel, or switch depends on how many people watch remotely and how much setup you are willing to do. The one thing you no longer get is a free workaround inside Plex's own ecosystem. --- > **Running Jellyfin for your family? Keep an eye on who is watching.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) and see active sessions, transcodes and server health from your phone. *Sources: [XDA Developers](https://www.xda-developers.com/plex-just-blocked-one-of-the-last-free-ways-to-stream-your-own-movies-remotely/), [MakeUseOf](https://www.makeuseof.com/plex-just-closed-the-last-free-loophole-for-streaming-your-own-movies-remotely/), [WindowsForum](https://windowsforum.com/news/plex-blocks-infuse-remote-streaming-without-a-pass-free-windows-vpn-alternatives.446615/), [Plex](https://www.plex.tv/blog/important-2025-plex-updates/). Content was rephrased for compliance with licensing restrictions.* --- ## Jellyfin 12.0 Is Here: New Versioning, Native Books, Faster Playlists, FFmpeg 8.1, and Major Security Fixes URL: https://jellywatch.app/blog/jellyfin-12-release-everything-you-need-to-know Published: 2026-09-08T14:00:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, release, update, jellyfin-12, self-hosting, upgrade-guide, performance, security, books, ffmpeg, 2026 # Jellyfin 12.0 Is Here: Everything You Need to Know Jellyfin 12.0 dropped on September 8, 2026, and it is one of the most significant releases in the project's history. Not just because of what is inside, but because the version number itself tells a story: the team has officially retired the old `10.x.x` scheme. What would have been `10.12.0` is simply `12.0`. This release continues the work started in 10.11, which rewrote the entire backend database layer. Version 12.0 polishes that foundation into real, measurable performance gains while adding native book support, rebuilt playlist storage, FFmpeg 8.1, important security patches, and dozens of quality-of-life improvements across the web interface. Let us break it all down. --- ## Why 12.0 and Not 10.12? The `10.` prefix never changed. Every release was `10.something`, and users judged each update by the middle number, which always looked minor. That caused real confusion with 10.11.0, a release that rewrote the entire library database but read like a routine patch. Starting now, the first digit is the major release number and the second digit is the minor/patch release. Major releases (12.0, 13.0, etc.) introduce significant changes and require a backup before upgrading. Minor releases (12.1, 12.2, etc.) are primarily bug and security fixes. If you maintain anything that parses Jellyfin version strings (a client, a monitoring check, a deployment script, a container tag pin), update it: the server now reports `12.0.0`. --- ## Performance: The Core Theme The 10.11 rewrite moved Jellyfin to a proper relational database backend, but it left rough edges. Version 12.0 smooths nearly all of them. ### Playlists and Collections Rebuilt Playlists and collections used to be stored as one long serialized list crammed inside the parent item. The database could not count items, render a single page, or remove a single track without loading and unpacking the entire list. Every edit meant writing the whole thing back out. In 12.0, every playlist and collection entry is its own database row in a new `LinkedChildren` table. `OwnerId` and `PrimaryVersionId` are now real GUID foreign keys. The result: - Pagination actually works - Item counts are instant - Adding or removing a track does not rewrite the entire list - Large playlists (1000+ items) no longer freeze the interface - Duplicate tracks are now allowed in playlists ### Faster Queries Across the Board - **Resume, Next Up, and Continue Watching** are significantly faster - **Latest Items for music** uses optimized queries - **Artist lookups** and **item counts** are leaner - **Item deletion** is now batched, fixing "too many SQL variables" failures when deleting large libraries - Heavy database tasks no longer run while a library scan is in progress, reducing I/O contention - The **optimize database task** now runs ANALYZE and VACUUM at shutdown and when triggered manually Note: this performance work targets how Jellyfin reads your library, not the library scanner. You may find scanning is a little quicker as a side effect, but speeding it up was not a goal this time. ### Migration on First Boot On first boot after the upgrade, Jellyfin runs several data migrations: merging duplicate music artists and people, removing orphaned extras, repairing owner relationships, and recomputing clean names and sort keys. If you would rather run this step deliberately, the server now accepts `--mode MigrateSystem`, which performs the upgrade and exits without starting the rest of Jellyfin. --- ## Native Books and Comics Support This is one of the headline features. For years, book and comic support relied entirely on the third-party Bookshelf plugin. In 12.0, most of that functionality moves directly into the server. ### Server-Side - **OPF, ComicInfo, and ComicBookInfo metadata** are parsed natively, no plugin required - **Cover generation** works for EPUBs and all supported comic archive formats - **External covers** are supported for audiobook files - **Name, index, year, and series** are read from book filenames; volume and chapter numbers from comic filenames - **Page counts** are extracted from comic archives and PDFs - **Chapters** are extracted from audiobooks (available via the API; client support is coming) - **ISBN external IDs and links** are supported - The old Bookshelf plugin has been split into separate **ComicVine** and **GoogleBooks** metadata providers - A brand-new **OpenLibrary** plugin provides additional metadata and images ### Web Client - **Modern book library layout** with view types, paging, and Authors, Collections, and Folders tabs - Books display information about their authors, and authors show their books and audiobooks - **Redesigned reading interface**, standardized across all book types with unified fullscreen behavior - **PDF swipe navigation** and improved **EPUB font size selection** - Progress indicators work again for supported eBooks - Sorting by index number, release date, and more is available - **Background audiobook playback** works on iOS devices If you have a book or comic library, this is the upgrade you have been waiting for. --- ## Better Recommendations and Extensible Search Where "more like this" and suggestion rows get their data is no longer fixed. You now choose the **similarity source per library** in the same place you pick metadata providers. One source for movies, a different one for music. **ListenBrainz** ships bundled with the server as one of those sources. Point your music library at it and similar-artist suggestions come from real listening data rather than from tags alone. **Search** works the same way now: a plugin can add its own results alongside Jellyfin's built-in search. If you have ever wanted Jellyfin to search somewhere else at the same time, that is now a plugin rather than a fork. --- ## FFmpeg 8.1 and Transcoder Improvements Jellyfin 12.0 ships with **FFmpeg 8.1**, bringing codec and performance improvements: - **Optimized CUDA transposing filter** performance - **Optimized OpenCL scaling filter** performance - **Optimized OpenCL tonemapping** on Mali GPUs - **BT.2446 Method B EOTF** for HLG tonemapping (more accurate HDR-to-SDR conversion) - **Spec-compliant `dvh1` HLS variant** for Dolby Vision Profile 5 compatibility - **SSA to ASS conversion** now goes through SubtitleEdit, preserving styles that were previously lost - **External subtitles** can be embedded into MKV when transcoding - **VobSub subtitle rendering** via libbitsub (replacing libpgs) - Fixed potential A/V desync in HLS when transcoding video while remuxing audio - Configurable subtitle extraction timeout - Fixed race conditions in concurrent subtitle conversion - **VideoRotation profile condition** for Android TV boxes that cannot handle rotated video (phone footage shot sideways now plays correctly) ### Trickplay Improvements - Existing trickplay files are discovered during a scan instead of being regenerated - Duplicates from interlaced video are fixed - Invalid PTS values from containers are normalized - The cache is cleaned up after a failed generation --- ## Security Fixes This release includes several important security patches on both the server and the web client: | Issue | Fix | |---|---| | Path traversal via crafted requests | Blocks access to files outside designated directories (HLS segments, plugin images, username paths) | | Setup wizard re-run | Prevents unauthenticated re-run on misconfigured servers | | Unsafe plugin package names | Rejected during installation | | Parental control bypass | Filtering enforced on additional endpoints; playlist visibility corrected | | Cross-site scripting (XSS) | Fixed in person roles and web client auth parameters | | Login disclaimer | Only allows common link protocol schemes | This release contains security fixes, so the Jellyfin team recommends upgrading rather than staying on an older release once you are ready. --- ## Web Interface: Modern Layout Is Now Default The **Modern layout** is now the default experience on desktop and mobile. The previous layout has been renamed to **Legacy** and remains available. TV devices are unchanged: they continue to use the dedicated TV layout. ### New Web Features - **Still Watching prompt** for long binge sessions - **Frame-by-frame scrubbing** with `,` and `.` keys - **Chapter names** appear in the preview bubble as you drag along the seek bar - **Playback info overlay** is more compact while showing more detail - **Photo slideshow** with configurable delay; screensaver suppressed while viewing photos or reading - **Audio and subtitle language filters** (Modern layout) - **Collections and playlist tab** added to all libraries - **Collections** shown on item details pages ("Included In" feature) - **Log viewer** with a live watch/follow feature - **IndexedDB caching** for TanStack Query, improving load performance - **Custom links** can be added to the Modern layout - **Crew cards** merged for actors with multiple roles; TV show creators shown on item details - **Play All and Shuffle** buttons on series libraries - **Folders can be marked as played** - **Studio search** and an extended Studios tab - **Improved Upcoming view** and a Reset Filters button - **Game controller navigation** fixes and keyboard shortcuts that work on non-Latin layouts - Artwork no longer looks blurry on high-DPI displays (card image sizes are rounded up) ### Themes and Layout All built-in themes (Dark, Light, WMC, Blue Radiance, Apple TV, Purple Haze) now derive from a shared base theme built on CSS variables. Custom themes may need minor adjustments. The library toolbar has been merged into the app bar with a sticky header and visual polish throughout. --- ## Playback Improvements - **Dolby Vision in MKV** on webOS 25 and newer - **AV1 fMP4 stream copy** on TV clients - **Anamorphic video Direct Play** on Tizen, with loosened restrictions for browser profiles - **iOS**: background playback continues when the screen is off; audio normalization fix for pitch and speed issues - **Bitrate detection** now runs directly in the web client - Screensaver suppressed while viewing photos or reading --- ## Episode Alternate Versions A frequently requested feature: episodes now support **multiple versions**, just like movies already did. If you keep both a 1080p and a 4K copy of an episode, Jellyfin groups them together with version-specific resume data. Played state is shared across alternate versions. This is also the feature behind the required post-upgrade scan: making versions work correctly for episodes meant fixing how version links are stored, so automatically resolved versions are rebuilt from the files on disk. --- ## Live TV Improvements - Live TV no longer returns unreachable "server-local" streaming URLs to clients - **XMLTV background images and episode thumbnails** are now imported - **XMLTV guide imports** skip programs whose data has not changed (using an ETag), making repeat refreshes considerably cheaper - **SchedulesDirect** now honors API error codes, preventing lockouts; image limit recognition fixed - **HDHomeRun** tuners can now Direct Play on supported clients - **M3U tuners** default to remuxing instead of Direct Play --- ## Metadata and Providers - **ListenBrainz** bundled with the server for similar artist data - **TVDB provider IDs** supported for movies (not just TV shows) - **AudioDb artist search** is now available - **ReplayGain album gain** is parsed from audio files - **TMDb missing episode provider** helps identify gaps in your TV library - **TMDb series creators** are now fetched and displayed - **WEB-DL release tags** recognized in file names - **3D format detection** works when the tag is the last token in the path - **Provider IDs** can be parsed from season and episode folder/file names - **Curly braces and parentheses** supported alongside square brackets for provider identifier values; `tmdb`, `tvdb`, and `imdb` work as aliases - Hyphenated numbers in episode titles no longer incorrectly parsed as multi-episode files - Triple-digit episode numbers (100+) now supported - Person metadata refreshes are queued instead of blocking requests - MusicBrainz lookups are more resilient --- ## Breaking Changes You Should Know About ### Legacy Routes Removed The `/emby/*` and `/mediabrowser/*` route prefixes are **gone**. Old third-party clients that still use these endpoints will stop working. If you have reverse proxy rules pointing to these paths, update them. ### Legacy Authentication Disabled The deprecated authentication method is now disabled by default, including on existing installs via a migration. Very old, unmaintained clients may lose the ability to connect. ### Plugin Compatibility The server now targets **.NET 10**. All third-party plugins built for 10.11 must be recompiled. Remove third-party plugins before upgrading and only restore them once their authors release compatible builds. Official plugins have already been updated and are available through the stable plugin repository. ### Case-Insensitive Usernames Usernames are now stored in a normalized column with a unique index. If your server has two accounts whose names differ only by capitalization (e.g., "Admin" and "admin"), the database migration will fail. Correct this before upgrading. ### Subtitle Configuration The global subtitle configuration has been removed. Subtitle settings are now configured **per library**. ### TLS/SSL Deprecation Postponed In the 10.11.0 release notes, the team announced that built-in TLS/SSL support would be removed in this release. That removal has been postponed to a future version. The recommendation remains: run Jellyfin behind a reverse proxy. If you are running an internet-facing instance on built-in TLS, this is extra time to migrate. ### Other Behavior Changes - `.ogg` is no longer treated as a video extension (audio only); `.aifc` is recognized as audio; `.aiff` is no longer treated as an image - Image endpoints no longer upscale beyond source resolution (low-res artwork appears smaller but sharper) - Sorting by name now uses `SortName` and `CleanName`, so library ordering may change compared to 10.11 - Symlinks are only resolved at playback time, not during library scan --- ## Operations and Deployment - New `--mode` startup flag with `MediaServer`, `MigrateSystem`, and `SeedSystem` options. Run migrations without starting the server, ideal for containers and orchestrated deployments - `jellyfin.db` can now be stored at a custom path - Disabled plugins no longer get re-enabled on restart - Full system backups skip corrupt keyframe rows instead of failing; warnings shown before restoring or starting a backup during a scan - The startup UI has been restyled and shows version and migration progress - **CACHEDIR.tag** support: Jellyfin marks its cache directories so backup tools automatically skip them - **Accept-Language header** support: clients can request responses in a specific language - Debian Bullseye and Ubuntu Focal packages are no longer built --- ## How to Upgrade Safely This is not a routine update. Follow these steps carefully: ### Step 1: Check Your Current Version You must be on **10.10.7** or any **10.11.x** release. If you are on anything older, upgrade to 10.10.7 first. ### Step 2: Back Up Everything Jellyfin 12.0 modifies the database schema and rewrites data on first boot. The **only way to revert** is from a backup. Stop the server and manually back up your data and configuration directories. ```bash # Docker example docker compose down tar -czf jellyfin-backup-$(date +%Y%m%d).tar.gz ./jellyfin/config ./jellyfin/data ``` ### Step 3: Remove Third-Party Plugins Third-party plugins built for 10.11 will not load on 12.0 (.NET 10 target change). Remove them before upgrading. Official plugins are already compatible via the stable repository. If you previously switched to the unstable plugin repository, switch back: **Dashboard > Plugins > Manage Repositories** and set the URL to: `https://repo.jellyfin.org/files/plugin/manifest.json` ### Step 4: Check for Duplicate Usernames Usernames are now case-insensitive. If two accounts differ only by case, rename one before upgrading or the migration will fail. ### Step 5: Upgrade ```bash # Docker docker compose pull docker compose up -d # Debian/Ubuntu sudo apt update && sudo apt install jellyfin # Controlled migration (optional, good for containers) jellyfin --mode MigrateSystem ``` ### Step 6: Wait for Migrations The first boot runs several database migrations. This can take several minutes depending on library size. **Do not interrupt the process.** You can monitor progress via the redesigned startup UI in your browser. ### Step 7: Full Library Scan After migration completes, perform a **full library scan**. This is mandatory. The scan restores alternate versions, validates items against files on disk, and may take longer than usual. Some items might briefly appear as "newly added" due to type fixes applied during the scan. ### Step 8: Hard Refresh Your Browser After upgrading, do a **hard refresh** (Ctrl+Shift+R or equivalent) and/or clear your web cache. Bad cached assets are the number one cause of post-upgrade UX anomalies. --- ## What This Means for JellyWatch Users JellyWatch is fully compatible with Jellyfin 12.0. A few things to note: - The version string reported by the server changes from `10.x.x` to `12.0.0`. JellyWatch handles this seamlessly - The removed `/emby/` routes do not affect JellyWatch, which uses the standard Jellyfin API - Improved playlist performance on the server side means faster sync in JellyWatch - The new episode alternate versions feature is visible in JellyWatch session monitoring, so you can see which version a user is streaming If you monitor your Jellyfin server with JellyWatch, the upgrade is transparent. Just update your server and everything continues working. --- ## Summary Jellyfin 12.0 is a substantial release that builds on the 10.11 database rewrite and turns it into a genuinely faster, more capable media server. The highlights: | Feature | What Changed | |---|---| | Versioning | Dropped `10.` prefix, now `12.0` | | Performance | Rebuilt playlists, faster Resume/Next Up/Latest Items, DB optimization | | Books & Comics | Native server support, redesigned web reader, OpenLibrary plugin | | Recommendations | Configurable per library, ListenBrainz bundled, extensible search | | Transcoder | FFmpeg 8.1, improved HDR tonemapping, SubtitleEdit, VobSub, trickplay fixes | | Security | Path traversal, XSS, setup wizard, parental controls, plugin names | | Web UI | Modern layout default, frame-by-frame scrub, still watching prompt, chapter preview | | Playback | DV MKV on webOS 25+, AV1 on TV, anamorphic on Tizen, iOS background play | | Episodes | Alternate version support with per-version resume and shared played state | | Live TV | Faster XMLTV refresh, HDHomeRun Direct Play, SchedulesDirect fixes | | Metadata | TVDB for movies, TMDb missing episodes, provider ID aliases, triple-digit episodes | | Operations | --mode MigrateSystem, custom DB path, CACHEDIR.tag, Accept-Language | | Breaking | Legacy routes gone, .NET 10, plugins need rebuild, TLS removal postponed | Back up before you upgrade, remove third-party plugins, run a full library scan, and hard refresh your browser. That is the entire checklist. --- > **Upgrading to Jellyfin 12.0? Monitor the migration from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) and keep an eye on active sessions, server health, and transcoding activity while your library rescans. *Sources: [Jellyfin Official Release Post](https://jellyfin.org/posts/jellyfin-release-12.0), [GitHub Release v12.0](https://github.com/jellyfin/jellyfin/releases/tag/v12.0). Content was rephrased for compliance with licensing restrictions.* --- ## JellyStat Complete Guide 2026: Features, Docker Setup, and Dashboard URL: https://jellywatch.app/blog/jellystat-complete-guide-features-setup-2026 Published: 2026-08-27T11:20:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellystat, jellyfin, statistics, docker, monitoring, guide, 2026 ## What Is JellyStat? JellyStat is a free, open source statistics and analytics dashboard built specifically for Jellyfin. It tracks playback history, watch time, and library growth, then presents everything through a web dashboard with charts and per-user breakdowns. If you have ever wanted to know which shows your users actually finish, how much bandwidth your server uses over time, or who is streaming right now without opening the Jellyfin dashboard itself, JellyStat is built for exactly that. ## Key Features | Feature | Description | |---|---| | Watch history | Per-user playback history across your entire library | | Live sessions | Real-time view of who is currently streaming | | Library statistics | Growth over time, total size, item counts by type | | Playback analytics | Most watched titles, watch time by day, device breakdown | | User activity | Individual user statistics and viewing patterns | | Backup and restore | Built in backup of JellyStat own database | Unlike a general purpose monitoring tool, JellyStat is purpose built around Jellyfin playback data specifically, which is why its dashboards read closer to a personal analytics service than a generic server monitor. ## Requirements Before You Start - A running Jellyfin server (version 10.8 or later recommended) - Docker and Docker Compose installed on your host - Administrator access to your Jellyfin server to generate an API key - A reverse proxy if you plan to access JellyStat remotely ## Step 1: Deploy JellyStat with Docker Compose ```yaml services: jellystat-db: image: postgres:15 container_name: jellystat-db environment: POSTGRES_USER: jellystat POSTGRES_PASSWORD: change-this-password POSTGRES_DB: jellystat volumes: - ./jellystat-db:/var/lib/postgresql/data restart: unless-stopped jellystat: image: cyfershepard/jellystat:latest container_name: jellystat environment: POSTGRES_USER: jellystat POSTGRES_PASSWORD: change-this-password POSTGRES_IP: jellystat-db POSTGRES_PORT: 5432 JWT_SECRET: change-this-to-a-random-string ports: - 3000:3000 volumes: - ./jellystat/backup-data:/app/backend/backup-data depends_on: - jellystat-db restart: unless-stopped ``` Replace both placeholder passwords and the JWT secret with strong, unique values before deploying. Then run: ```bash docker compose up -d ``` ## Step 2: Connect JellyStat to Your Jellyfin Server 1. Open JellyStat at `http://your-server-ip:3000` and complete the first run setup wizard. 2. In Jellyfin, go to **Dashboard > API Keys** and generate a new key for JellyStat. 3. In JellyStat settings, enter your Jellyfin server URL and paste the API key. 4. Trigger an initial sync. Depending on the size of your library and existing playback history, the first sync can take a while. ## Step 3: Understanding the Dashboard Once the initial sync finishes, the main dashboard gives you an overview of: - Total plays and total watch time across your server - Most watched movies and shows over a selectable time range - A breakdown of plays by device and by user - Library size and growth trends Drilling into an individual user shows their personal watch history and viewing patterns, which is useful both for curiosity and for spotting unusual activity, such as a shared account being used far more heavily than expected. ## Step 4: Configure Data Sync JellyStat syncs data on a schedule rather than fully real time. Check the sync interval in settings and adjust it based on how current you need the dashboard to be. A shorter interval gives fresher data at the cost of slightly more load on your Jellyfin API. ## Step 5: Expose JellyStat via Reverse Proxy If you want to check your statistics away from home, put JellyStat behind the same reverse proxy you already use for Jellyfin, with its own subdomain and valid SSL certificate. Never expose port 3000 directly to the internet without a reverse proxy in front of it. ## JellyStat vs Tautulli vs JellyWatch | | JellyStat | Tautulli | JellyWatch | |---|---|---|---| | Platform | Web dashboard | Web dashboard | Android app | | Built for | Jellyfin | Plex (Jellyfin via fork) | Jellyfin | | Deployment | Docker container | Docker container | Install from Play Store | | Best for | Deep playback analytics | Plex admins, detailed graphs | Mobile monitoring on the go | These tools are not mutually exclusive. A common setup pairs JellyStat for deep desktop analytics with JellyWatch for real-time mobile alerts and session monitoring, since each tool is optimized for a different context. ## Backup Considerations JellyStat stores its data in the PostgreSQL container defined in your Compose file. Back up the `jellystat-db` volume regularly, the same way you would back up any other database driven service. Losing that volume means losing your entire playback history inside JellyStat, even though your actual Jellyfin library and playback capability are unaffected. ## Frequently Asked Questions **Is JellyStat free?** Yes, it is free and open source. **Does JellyStat slow down Jellyfin?** No. JellyStat reads data through the Jellyfin API on a schedule and does not sit in the playback path, so it has no impact on streaming performance. **Can I run JellyStat on the same machine as Jellyfin?** Yes, this is the most common setup. Just make sure the host has enough spare resources for a small PostgreSQL instance alongside Jellyfin. **Does JellyStat support multiple Jellyfin servers?** Check the current release notes for multi-server support, as this capability has evolved across versions. Single server setups are fully supported in every version. ## Final Thoughts JellyStat fills a real gap in the Jellyfin ecosystem: detailed, purpose-built playback analytics with almost no configuration overhead once the initial Docker Compose deployment is running. If you want to understand how your library is actually being used, not just whether the server is online, JellyStat is worth the fifteen minutes it takes to set up. --- > **Pair your JellyStat dashboard with real-time mobile monitoring.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, push notifications, and server health directly on your Android phone. --- ## Jellyfin Notifications in 2026: ntfy, Discord, Telegram, and Webhooks Compared URL: https://jellywatch.app/blog/jellyfin-notifications-plugins-complete-guide-2026 Published: 2026-08-24T08:47:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, notifications, ntfy, discord, telegram, webhooks, plugins, guide, 2026 ## Why Jellyfin Notifications Matter Jellyfin does not push alerts to your phone by default. If you want to know when a new episode finishes downloading, when a user logs in from an unfamiliar device, or when a scheduled task fails, you need to wire up a notification method yourself. There are several ways to do this in 2026, ranging from a simple built in plugin to fully custom webhook pipelines. This guide compares all of them so you can pick the right one for your setup instead of installing all of them at once. ## Option Overview | Method | Setup effort | Best for | Push to phone | |---|---|---|---| | Jellyfin Notifications plugin | Low | Basic server events | Limited | | ntfy | Low | Self-hosted push alerts | Yes | | Gotify | Low to moderate | Self-hosted push alerts | Yes | | Apprise | Moderate | Sending to many services at once | Depends on target | | Discord webhook | Low | Community servers, shared households | Via Discord app | | Telegram bot | Low to moderate | Personal alerts, quick setup | Via Telegram app | | Raw webhooks | High | Custom automation, integrations | Depends on target | ## The Built In Notifications Plugin Jellyfin ships a native Notifications plugin covering common server events: new content added, playback started, and user login. It is the fastest way to get basic alerts working, but it is also the most limited in terms of formatting and delivery targets. Treat it as a starting point rather than a full solution if you need reliable mobile alerts. ## ntfy: The Simplest Self-Hosted Option [ntfy](https://ntfy.sh) is a lightweight, self-hosted (or hosted) push notification service that is extremely popular in the self-hosting community because of how little setup it requires. ### Setup Steps 1. Deploy ntfy via Docker, or use the public ntfy.sh instance for testing. 2. Install the ntfy app on your phone and subscribe to a topic name of your choice. 3. In Jellyfin, configure a webhook (via the Webhook plugin) or a script that sends a POST request to your ntfy topic URL whenever an event fires. 4. Test with a simple curl command before wiring it into Jellyfin events. ntfy is a good default choice if you want push notifications without creating accounts on a third party chat platform. ## Gotify: The Self-Hosted Alternative Gotify serves a similar purpose to ntfy but is fully self-hosted by design, with its own Docker image and app. It requires slightly more setup (deploying the server, generating an application token) but keeps every notification entirely inside your own infrastructure. Choose Gotify over ntfy if keeping the notification server itself self-hosted, rather than relying on a third party instance, is a priority for you. ## Apprise: One Config, Many Destinations [Apprise](https://github.com/caronc/apprise) is not a notification service itself, it is a unification layer that can forward a single alert to dozens of destinations (email, Discord, Telegram, Slack, ntfy, and more) using one configuration. This is the right tool if you want to fan a single Jellyfin event out to multiple channels at once, for example alerting both a Discord server and a personal phone notification from the same trigger. ## Discord Webhooks If your household or community already lives in a Discord server, a Discord webhook is the fastest way to surface Jellyfin activity there. ### Setup Steps 1. In Discord, go to your server channel settings and create a new webhook. 2. Copy the webhook URL. 3. In Jellyfin, install the Webhook plugin and add a new destination using the Discord webhook URL and the Discord payload format. 4. Select which events should trigger a message (new media added, playback started, user created, and so on). Discord webhooks work well for community servers and multi-user setups where several people want visibility into the same events. For a more advanced setup with slash commands and now playing status, see our guide on [Jellyfin Discord and Telegram bot integration](https://jellywatch.app/blog/jellyfin-discord-telegram-bot-now-playing-commands-2026). ## Telegram Bot Notifications A Telegram bot gives you a private, direct notification channel without needing a Discord server at all. ### Setup Steps 1. Message @BotFather on Telegram to create a new bot and get an API token. 2. Start a chat with your new bot and retrieve your chat ID. 3. Configure the Jellyfin Webhook plugin (or a small script) to send messages to the Telegram Bot API using your token and chat ID. 4. Choose which events trigger a message. Telegram is a strong choice if you want personal, low friction alerts without setting up a full self-hosted push service. ## Raw Webhooks for Custom Automation If none of the above fit your use case, the Jellyfin Webhook plugin can send a raw JSON payload to any endpoint you control. This is the most flexible but also the most technical option, typically used to feed events into home automation systems, custom dashboards, or scripts that trigger other actions entirely. ## Which One Should You Use? - **Want the fastest self-hosted push setup:** ntfy. - **Want everything fully self-hosted end to end:** Gotify. - **Want one alert to reach multiple services:** Apprise. - **Already live in Discord as a household or community:** Discord webhook. - **Want a private, personal channel with no server to run:** Telegram bot. - **Building custom automation or home integrations:** raw webhooks. ## Frequently Asked Questions **Can I combine several of these methods?** Yes. Many admins run a Discord webhook for the household channel and a personal ntfy or Telegram alert for admin only events like failed logins. **Do these notification methods slow down my server?** No. Notification delivery is asynchronous and has no meaningful impact on playback performance. **Which method is best for security alerts?** ntfy or Telegram tend to work best for personal security style alerts (failed logins, new devices) since they reach your phone directly without depending on a chat platform you might not check as often as your phone lock screen. ## Final Thoughts There is no single best Jellyfin notification setup, only the one that matches how you already communicate. Start with the built in plugin or ntfy to confirm the events you care about are firing correctly, then layer in Discord or Telegram once you know exactly which alerts are worth the noise. --- > **Get playback and server alerts without configuring a single webhook.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - native push notifications for new sessions, failed logins, and server status on Android. --- ## Best Jellyfin Clients for Roku and Fire TV in 2026 URL: https://jellywatch.app/blog/best-jellyfin-clients-roku-fire-tv-2026 Published: 2026-08-20T16:05:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, roku, fire-tv, clients, android-tv, jellywatch-tv, streaming-device, guide, 2026 ## Jellyfin on Roku and Fire TV: Not Quite Android TV Most Jellyfin setup guides focus on Android TV, Google TV, and Nvidia Shield because those platforms run the official app with the fewest compromises. Roku and Fire TV are different animals. Both are extremely popular streaming devices, and both can run Jellyfin, but each comes with its own quirks around installation, codec support, and hardware limitations. This guide covers both platforms side by side so you know exactly what to expect before buying a device or troubleshooting one you already own. ## Jellyfin on Roku Roku has an official Jellyfin channel available directly through the Roku Channel Store, which makes installation the easiest part of the Roku experience. ### Installing Jellyfin on Roku 1. On your Roku remote, press the Home button and go to **Streaming Channels**. 2. Search for **Jellyfin** and select **Add Channel**. 3. Launch the channel from your home screen once installation finishes. 4. Enter your server address (local IP or domain) and log in with your Jellyfin credentials. No sideloading, no developer mode, no PC required. This is the single biggest advantage Roku has over Fire TV for the official Jellyfin app. ### Roku Limitations Roku hardware is built around efficient video decoding rather than raw processing power, and the Jellyfin channel inherits real limitations as a result: - Codec support varies significantly by Roku model. Older and budget models often lack HEVC or AV1 hardware decoding. - Dolby Vision and HDR10+ support depends entirely on your specific Roku model and TV combination. - Because Roku devices have limited processing headroom, direct play is essential. Any file requiring transcoding will lean heavily on your server, not the Roku device. - The official channel is functional but basic. Roku does not currently support third party clients like JellyWatch TV, since Roku uses a closed channel model rather than an open app store. ### Best Roku Models for Jellyfin | Model | HEVC support | HDR | Recommended | |---|---|---|---| | Roku Express | Limited | No | Budget only, Direct Play SD/1080p | | Roku Streaming Stick 4K | Yes | HDR10, Dolby Vision | Good all rounder | | Roku Ultra | Yes | HDR10, Dolby Vision | Best Roku option for Jellyfin | If you are buying a Roku specifically for Jellyfin, skip the entry level models. The Streaming Stick 4K or Ultra are worth the small price difference for reliable HEVC and HDR direct play. ## Jellyfin on Fire TV Fire TV is where things get more interesting. The official Jellyfin project does not publish an app on the Amazon Appstore, but that does not mean Fire TV owners are stuck sideloading. **JellyWatch for Android TV (JellyWatch TV) is available directly on the Amazon Appstore**, which makes Fire TV a genuinely good Jellyfin platform once you pick the right client. ### The VegaOS Problem Amazon has been transitioning newer Fire TV hardware to VegaOS, a new operating system that changes how apps are distributed compared to the Fire OS devices most Fire TV owners already have. This mainly affects sideloaded apps and community APKs. It does not affect JellyWatch TV, since it is distributed through the Amazon Appstore itself rather than sideloaded, and stays subject to Amazon normal app review and distribution process on both Fire OS and VegaOS. ### Installing JellyWatch TV on Fire TV 1. On your Fire TV remote, go to **Find > Search**. 2. Search for **JellyWatch for Android TV** and select it from the Amazon Appstore results. 3. Select **Get** or **Download** to install, exactly like installing any other Fire TV app. 4. Launch JellyWatch TV, enter your Jellyfin or Emby server address, and log in. No developer mode, no Downloader app, no unknown sources setting. It installs the same way any other Fire TV app does because it is a fully listed Amazon Appstore title. ### Why JellyWatch TV Is the Better Fire TV Client JellyWatch TV is built from scratch for the Android TV and Fire TV platform using Jetpack Compose and ExoPlayer Media3, with navigation designed specifically for D-pad remotes. On Fire TV hardware this includes: - 4K, HDR10, HDR10+, and Dolby Vision playback on supported Fire TV models, with hardware decode enabled by default and FFmpeg software fallback when needed - TrueHD Atmos and DTS:X passthrough where the hardware and receiver support it - Automatic Jellyfin and Emby server detection from a single app - Seerr and Jellyseerr integration to browse and request media directly from the couch - SyncPlay, trickplay thumbnails, theme songs, and Home Screen Channels for Continue Watching and Recently Added ### Fire TV Notes - JellyWatch TV is listed on the Amazon Appstore, so it receives updates the same way any other Fire TV app does, with no risk of breaking after a system update the way sideloaded APKs sometimes do. - The official Jellyfin project app is still not on the Amazon Appstore. Community APKs for the stock app do exist and require sideloading via Downloader, but that extra step is unnecessary once JellyWatch TV covers the same use case natively. - Performance is generally strong on Fire TV Stick 4K Max and Fire TV Cube models, close to native Android TV performance when paired with a client built for the platform. For device specific codec tables and setup notes, see our dedicated [Jellyfin Fire TV Stick 4K Max setup guide](https://jellywatch.app/blog/jellyfin-fire-tv-stick-4k-max-setup-guide-2026). ## Roku vs Fire TV for Jellyfin: Which Should You Buy? | Criteria | Roku | Fire TV | |---|---|---| | Official Jellyfin app | Yes | No | | Best available client | Official Roku channel | JellyWatch TV (Amazon Appstore) | | Installation difficulty | Very easy | Very easy (Appstore, no sideload) | | Codec support (top models) | Good | Very good | | Risk of breaking after OS update | Low | Low with Appstore apps | | Best model for Jellyfin | Roku Ultra | Fire TV Stick 4K Max | ### Our Recommendation - **Already own a Roku?** The official channel on the Streaming Stick 4K or Ultra covers most needs well. - **Already own Fire TV hardware, or considering one?** Install JellyWatch TV from the Amazon Appstore. It matches or beats the official Jellyfin app on features and remote navigation, with no sideloading required. - **Buying new hardware today with no brand loyalty either way?** Android TV, Google TV, and Fire TV all run JellyWatch TV directly from their respective app stores, so the choice comes down to price and ecosystem rather than Jellyfin compatibility. ## Frequently Asked Questions **Does Jellyfin have an official Fire TV app?** No. The official Jellyfin project does not publish an app on the Amazon Appstore. JellyWatch TV fills that gap as a fully listed Appstore app. **Do I need to sideload anything to use Jellyfin on Fire TV?** No, not if you use JellyWatch TV. It installs directly from the Amazon Appstore like any other Fire TV app. Sideloading is only relevant if you specifically want the community built stock Jellyfin APK, which is not required for a full Jellyfin experience on Fire TV. **What is the best Jellyfin client for Fire TV?** JellyWatch TV. It is available directly on the Amazon Appstore, built specifically for TV remotes, and supports both Jellyfin and Emby with automatic server detection, 4K HDR direct play, and Seerr integration. **Can I direct play 4K HDR on Roku?** Yes, on higher end models like the Roku Ultra or Streaming Stick 4K, provided your file uses a codec the hardware supports and your TV handles the HDR format correctly. **Does VegaOS break Jellyfin on Fire TV?** Not for Appstore apps like JellyWatch TV, since they go through Amazon normal app distribution regardless of the underlying OS. VegaOS mainly affects sideloaded, non Appstore APKs. ## Final Thoughts Roku and Fire TV both cover Jellyfin well once you know where to look. Roku relies on its official channel, simple and reliable but limited to what Jellyfin project ships. Fire TV has no official app, but JellyWatch TV fills that gap directly through the Amazon Appstore, with better remote navigation and more features than the official app offers on other platforms. If you already own either device, there is no need to buy new hardware just for Jellyfin, the right client already covers you. --- > **The best Jellyfin and Emby experience on your TV in 2026.** > [Get JellyWatch for Android TV on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv) or search for it directly on the Amazon Appstore on your Fire TV. Native remote navigation, 4K HDR direct play, and Seerr integration built for the couch. > **Monitoring the server behind all these clients?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see active sessions, direct play status, and transcode reasons across every client connected to your server. --- ## Jellyfin Enhanced Plugin Guide 2026: Features, Installation, and Settings URL: https://jellywatch.app/blog/jellyfin-enhanced-plugin-guide-2026 Published: 2026-08-18T14:32:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, plugins, jellyfin-enhanced, ui, customization, guide, 2026 ## What Is Jellyfin Enhanced? Jellyfin Enhanced is a community plugin that injects quality of life features directly into the Jellyfin web client. The stock web interface is functional but minimal, and Jellyfin Enhanced closes that gap without requiring you to switch to a third party client or maintain custom CSS by hand. Unlike a full theme, Jellyfin Enhanced focuses on behavior and usability rather than pure visual styling. Think of it as the set of small conveniences long time users of commercial streaming platforms expect by default. ## Key Features | Feature | What it does | |---|---| | Keyboard shortcuts | Navigate, play, pause, and skip using your keyboard instead of the mouse | | Auto skip intro and credits | Works alongside Intro Skipper to automatically skip detected segments | | Quality toggle | Quickly force a specific resolution or bitrate from the player controls | | Pause screen info | Shows technical playback details (codec, bitrate, direct play status) when paused | | Random item button | Jump to a random unwatched title in your library | | Subtitle style presets | Save and switch between subtitle appearance presets | | Auto next episode | Configurable auto play behavior between episodes | Not every installation needs every feature. Most admins enable the shortcuts, pause screen info, and auto skip integration, then leave the rest at their defaults. ## Before You Install Jellyfin Enhanced depends on your Jellyfin server exposing its plugin catalog correctly. Confirm the following first: - Your Jellyfin server is on a reasonably recent 10.x release - You have administrator access to the Dashboard - If you plan to use the auto skip feature, Intro Skipper is already installed and has finished its initial analysis ## Installation Steps 1. Open the Jellyfin Dashboard and go to **Plugins > Repositories**. 2. Add the Jellyfin Enhanced repository URL from the project page. 3. Go to **Plugins > Catalog**, find Jellyfin Enhanced, and click **Install**. 4. Restart your Jellyfin server so the plugin registers correctly. 5. Reload the web client in your browser. A new settings icon or menu entry for Jellyfin Enhanced should appear. If the plugin does not appear after a restart, clear your browser cache. The web client aggressively caches its JavaScript bundles, and a stale cache is the most common reason a newly installed client side plugin appears to be missing. ## Configuration Walkthrough Once installed, open the Jellyfin Enhanced settings panel from the user menu: - **Shortcuts:** review the default key bindings and remap anything that conflicts with your browser or OS shortcuts. - **Playback:** toggle auto skip, auto next episode, and the quality switcher. - **Pause screen:** choose which technical details to display (codec, container, bitrate, direct play or transcode status). - **Subtitles:** create a style preset (font size, background, edge style) so every session opens with your preferred look. Settings are typically stored per browser profile, so if you use Jellyfin from multiple devices, expect to configure each one separately unless the plugin supports server side sync in your version. ## Common Issues **The plugin installed but nothing changed in the web UI.** Hard refresh the page and make sure you are not viewing a cached service worker version of the client. Some browsers need a full cache clear, not just a refresh. **Auto skip is not triggering.** Auto skip in Jellyfin Enhanced relies on data from Intro Skipper. If Intro Skipper has not finished analyzing a title yet, there is nothing for Jellyfin Enhanced to act on. Check the Intro Skipper dashboard for analysis progress. **Keyboard shortcuts do not work on my TV client.** Jellyfin Enhanced only affects the web client running in a browser. Android TV, Samsung Tizen, LG webOS, and other native apps use their own separate codebase and are not affected by this plugin. **Settings reset after a server update.** This is usually a browser storage issue rather than a server side one. Confirm your browser is not set to clear site data automatically on close. ## Jellyfin Enhanced vs a Full Custom Theme | | Jellyfin Enhanced | Custom CSS theme | |---|---|---| | Changes layout and colors | No | Yes | | Adds new functionality | Yes | No | | Setup complexity | Low | Low to moderate | | Combine with other plugins | Yes | Yes | The two are not mutually exclusive. Many admins run Jellyfin Enhanced for functionality alongside a Netflix style CSS theme for visuals. If you want to go further on the visual side, see our guide on [custom CSS snippets and themes](https://jellywatch.app/blog/jellyfin-custom-css-snippets-netflix-theme-guide-2026). ## Frequently Asked Questions **Is Jellyfin Enhanced free?** Yes, it is a free, community maintained plugin. **Does it work on mobile apps?** No, it only affects the browser based web client, not native mobile or TV apps. **Will it break with a Jellyfin update?** Client side plugins can occasionally lag behind major Jellyfin releases while maintainers catch up. Check the plugin repository for compatibility notes before updating your server to a new major version. **Can I use it alongside Intro Skipper and Skin Manager?** Yes. These three plugins are commonly used together and do not conflict. ## Final Thoughts Jellyfin Enhanced is one of the fastest ways to make the stock Jellyfin web client feel closer to a commercial streaming platform without touching a single line of CSS. If you already run Intro Skipper, adding Jellyfin Enhanced on top takes only a few minutes and immediately improves daily use for every household member. --- > **Keep track of every plugin running on your server, right from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor server health and manage your Jellyfin setup on Android. --- ## Seerr FAQ 2026: Jellyseerr and Overseerr Are Discontinued, Here Is What Changed URL: https://jellywatch.app/blog/seerr-jellyseerr-faq-common-questions-answered-2026 Published: 2026-08-15T09:14:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: seerr, jellyseerr, overseerr, faq, troubleshooting, jellyfin, 2026 ## Seerr FAQ (2026): Jellyseerr and Overseerr Are Discontinued If you run a request system for your Jellyfin or Emby server, here is the short version: **Jellyseerr and Overseerr are both discontinued. Seerr is their official replacement**, built by the same community to carry the project forward under a single name. This is not a fork living alongside the old projects. Jellyseerr and Overseerr are no longer developed, no longer receive updates, and no longer receive security patches. Seerr is the continuation, not an alternative. This FAQ answers the questions we see most often in the JellyWatch community and support channels about what this means for your server. ## Wait, so Jellyseerr does not exist anymore? Correct. Jellyseerr development has stopped. The project was retired and its functionality, its user base, and its future development all moved into Seerr. The same is true for Overseerr, the original tool Jellyseerr was forked from. Both are now legacy names for a project that continues exclusively as Seerr. If you search for Jellyseerr today, you are looking for something that no longer receives any development. Seerr is not a competitor to Jellyseerr, it is what Jellyseerr became. ## If Jellyseerr is discontinued, why does my instance still work? Software does not stop running just because development stops. If you already have Jellyseerr installed, the container keeps working exactly as it did before. Nothing is remotely disabled. The issue is entirely forward looking: no new features, no bug fixes, and critically, no security patches for a tool that is typically exposed to the internet behind a reverse proxy. Running a discontinued, internet facing tool indefinitely is a real risk, which is why migrating to Seerr should be a priority, not an eventually task. ## Do I need to migrate right now? There is no forced shutdown date, so your existing Jellyseerr or Overseerr instance will not stop working on its own. That said, treat this as urgent rather than optional. Every month you delay is a month without security fixes on a tool that talks directly to your Jellyfin or Emby server, and in most setups sits behind a reverse proxy exposed to the internet. ## Will I lose my request history if I migrate? No. Seerr performs an automatic migration on first startup when it detects an existing Jellyseerr or Overseerr configuration folder. Your users, request history, and settings are preserved. The only manual step is pointing Seerr at the same configuration volume your old container used. **Before migrating, always back up your appdata folder.** This takes thirty seconds and gives you a safe rollback path if anything looks wrong after the first launch. ## What is the Docker image name for Seerr? The official image is: ``` ghcr.io/seerr-team/seerr:latest ``` Update your Docker Compose file or Unraid template to point at this image instead of the old Jellyseerr or Overseerr image, keeping the same volume mapping for `/app/config`. ## My container keeps restarting after migration. What is wrong? This is almost always a file permission issue. Seerr runs as UID 1000 inside the container. If your configuration folder is owned by a different user, the container will fail to write to it and restart in a loop. Fix it with: ```bash docker run --rm -v /path/to/appdata/config:/data alpine chown -R 1000:1000 /data ``` Then restart the container. ## I get a blank page after updating. What now? A blank page after an update is typically a stale browser cache issue. Hard refresh the page (Ctrl+Shift+R or Cmd+Shift+R) or clear the site cache for that domain. If the problem persists, check the container logs for a startup error before assuming the frontend is broken. ## Does Seerr work with Emby? Yes. Seerr keeps the same server integrations that Jellyseerr introduced, including native Jellyfin and Emby support, alongside the original Plex integration inherited from Overseerr. ## Does Seerr work with Plex? Yes. Plex support carried over directly from Overseerr, so if you run a mixed household with more than one media server, Seerr can still serve as your single request frontend. ## My notifications stopped working after migration Check your notification agent settings first (Discord webhook URL, email SMTP credentials, or your ntfy/Gotify endpoint). Migration preserves your configuration, but expired webhook URLs or rotated API tokens are a common cause of silent notification failures that have nothing to do with Seerr itself. ## Quick feature comparison | Feature | Overseerr | Jellyseerr | Seerr | |---|---|---|---| | Active development | No | No | Yes | | Plex support | Yes | Yes | Yes | | Jellyfin support | No | Yes | Yes | | Emby support | No | Yes | Yes | | Security updates | No | No | Yes | | Automatic migration on first run | N/A | N/A | Yes | ## How do I check which version I am running? Open your request tool in a browser and check the bottom of the Settings > General page, or check the container image tag in your Docker Compose file or Unraid template. If the image still reads `fallenbagel/jellyseerr` or `sctx/overseerr`, you have not migrated yet. ## Where can I get help if migration goes wrong? The Seerr project maintains active support channels, and the wider self-hosting community on Reddit and Discord is generally quick to help with migration issues. If the problem is specifically about connecting Seerr to your Jellyfin server, our [Jellyseerr to Seerr migration guide](https://jellywatch.app/blog/jellyseerr-overseerr-to-seerr-migration-guide-2026) walks through Docker, Unraid, and Windows setups step by step. ## Final thoughts Seerr is a straightforward, low risk upgrade for anyone still running Jellyseerr or Overseerr. The migration is automatic, your data is preserved, and you gain active security maintenance in return. The only real prerequisite is a backup of your appdata folder before you start. --- > **Manage your Seerr requests from your phone, without opening a browser.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - approve, reject, and track media requests natively on Android. --- ## Kids Profile, Linked Profiles and Home Assistant Cinema Mode Are Now Live on Android TV URL: https://jellywatch.app/blog/jellywatch-android-tv-kids-profile-linked-profiles-home-assistant Published: 2026-08-11T10:00:00+00:00 Author: JellyWatch Team Category: Announcement Tags: announcement, android-tv, kids, linked-profiles, home-assistant, release, jellywatch ## Kids Profile, Linked Profiles and Home Assistant Cinema Mode Three features the community has been asking about are now live in JellyWatch for Android TV. Here is what they do and how to set them up. --- ## Kids Profile Kids Profile gives children their own dedicated space inside JellyWatch, completely separate from the adult interface. ### What it looks like When a Kids profile is active, the entire app switches to a colorful home screen with large poster cards and a full-width hero banner. Navigation is simplified and the sidebar is trimmed to essentials only. The Fredoka font is used throughout for a rounded, approachable feel. Three color themes are available: Blue, Orange and Green. ### Parental PIN lock A parent sets a 4-digit PIN at profile creation. That PIN is required to exit Kids mode. Children can watch freely, but the rest of the app, including settings and other profiles, stays locked behind the PIN. The PIN is stored as a SHA-256 hash in AES-256 encrypted preferences on-device. ### Content filtering Content filtering is handled by your **Jellyfin server user policy**, not by the app. JellyWatch connects using the credentials of the child's Jellyfin account. Whatever your Jellyfin admin has configured on that account (max parental rating, blocked tags, allowed libraries) is exactly what the child sees. The app renders the filtered library as-is. > Set up the Jellyfin user policy for your child's account before activating Kids mode. Without server-side restrictions, the profile will display your full library. ### How to set it up 1. Open JellyWatch for Android TV and go to the "Who's watching?" screen. 2. Tap **Add profile** and enter your Jellyfin server credentials for the child's account. 3. Enable **Kids Profile** and choose a color theme. 4. Set an exit PIN. This is the PIN a parent must enter to leave Kids mode. 5. Tap Save. --- ## Linked Profiles — Multiple Servers, One Home Screen Linked Profiles solve a real problem for households with more than one Jellyfin server. Instead of switching between profiles to find what you want to watch, you link them together and the home screen merges their content automatically. ### What gets merged Once two or more profiles are linked: - **Continue Watching** shows items in progress from every linked server. - **Next Up** aggregates upcoming episodes across all servers. - **Recently Added** combines new arrivals from all servers in one row. Each profile stays fully independent for playback and watch history. Linking only affects what is displayed on the home screen. A movie playing on Server A reports its progress to Server A, not to Server B. ### Rules - A group requires at least two profiles. If you remove one profile from a two-member group, both become standalone automatically. - Kids Profiles cannot be linked. They always appear as standalone entries in the "Who's watching?" screen. - A profile can only belong to one group at a time. ### How to set it up 1. From the "Who's watching?" screen, long-press (or select the edit icon) on the first profile. 2. Tap **Link to another profile**. 3. Select the second profile from the list. A group is created. 4. To add more profiles to the same group, repeat from step 1 with any existing group member. The home screen updates immediately. No restart required. ### Use cases | Scenario | How it helps | |---|---| | Two separate Jellyfin servers at home | Merge both into one Continue Watching row | | Shared server with a friend | Each keeps their own server, one view | | 4K server + 1080p server | Browse both libraries without switching | --- ## Home Assistant Cinema Mode Home Assistant cinema mode connects JellyWatch directly to your smart home. When you press Play, your lights dim. When you pause, they come back on. When you stop, whatever scene or script you assigned runs automatically. ### How it works JellyWatch calls the [Home Assistant REST API](https://developers.home-assistant.io/docs/api/rest/) directly from the TV, using a Long-Lived Access Token you generate in your HA profile. Three events map to three configurable actions: | Player event | What JellyWatch calls | |---|---| | Play (start or unpause) | Your configured script / service / scene | | Pause | Your configured script / service / scene | | Stop (player closed) | Your configured script / service / scene (falls back to pause action if not set) | You can point each event at any valid HA entity string: - `script.cinema_on` — runs a script - `scene.cinema` — activates a scene - `light.turn_off` — calls a service directly The call is **fire-and-forget** on a background thread. A slow or unreachable Home Assistant instance has zero impact on video playback. The connection timeout is 3 seconds. ### Fully local, no cloud Everything happens over your local network. JellyWatch communicates with your HA instance directly. No cloud relay, no polling, no third-party service. Your Long-Lived Access Token never leaves your home network. ### Requires TV Premium (Watch Pass) Home Assistant cinema mode is a TV Premium feature. You need an active Watch Pass subscription to use it. The setting tile is visible to all users but the integration only fires when premium is active. ### How to set it up 1. In Home Assistant, go to your profile page and generate a **Long-Lived Access Token**. 2. In JellyWatch for Android TV, open **Settings → Home Assistant**. 3. Enter your HA base URL (e.g. `http://homeassistant.local:8123`). 4. Paste your Long-Lived Access Token. 5. Enter the script, scene or service to call on **Play**, **Pause** and **Stop**. 6. Tap **Test connection** to verify. 7. Enable the toggle and start watching. --- ## Where to find these features All three features are in the latest version of JellyWatch for Android TV. Install or update from [Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv) or the Amazon Appstore. The Android TV landing page at [jellywatch.app/android-tv](https://jellywatch.app/android-tv) has the full feature list. Questions and feedback welcome on [Discord](https://discord.com/invite/JRkt5U5uZs). --- The JellyWatch Team --- ## Jellyfin Live TV Without a Hardware Tuner: M3U Tuner, Threadfin & Dispatcharr Guide (2026) URL: https://jellywatch.app/blog/jellyfin-m3u-tuner-live-tv-without-hardware-threadfin-dispatcharr-2026 Published: 2026-06-23T11:02:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, m3u, tuner, live-tv, iptv, threadfin, dispatcharr, guide # Jellyfin Live TV Without a Hardware Tuner (2026) Jellyfin has a built-in Live TV feature, but many users assume they need to buy a physical TV tuner (like an HDHomeRun or Hauppauge device) to use it. This is not the case. In 2026, the majority of Jellyfin Live TV setups use **virtual tuners** - software that feeds IPTV M3U playlists into Jellyfin as if they were physical tuner channels. No hardware purchase required. This guide covers the three main approaches: the built-in M3U Tuner, Threadfin, and Dispatcharr. --- ## How It Works The concept is simple: 1. You have an M3U playlist (a text file listing channel stream URLs) 2. You have an XMLTV file (EPG / program guide data) 3. A tuner (built-in or external) feeds these into Jellyfin 4. Jellyfin displays channels with a TV guide, just like cable The M3U playlist can come from: your IPTV provider, free legal streams (Pluto TV, Samsung TV Plus via M3U), OTA streams captured elsewhere, or self-hosted restreams. --- ## Option 1: Jellyfin Built-in M3U Tuner (Simplest) Jellyfin includes a basic M3U tuner out of the box. No additional software needed. ### Setup 1. Dashboard - Live TV - Tuner Devices - Add Tuner 2. Tuner Type: **M3U Tuner** 3. Tuner URL: Paste your M3U playlist URL (or local file path) 4. Save ### Add EPG (Guide Data) 1. Dashboard - Live TV - TV Guide Data Providers - Add 2. Select **XMLTV** 3. Enter your XMLTV URL or file path 4. Save and refresh guide data ### Map Channels Dashboard - Live TV - Channels Map each channel to its EPG data. Jellyfin attempts auto-matching by name, but you may need to manually correct some channels. ### Pros - Zero additional software - Simple setup (5 minutes) - Works immediately ### Cons - No stream buffering (can cause stuttering on unreliable sources) - Single M3U playlist only - No advanced channel management - No stream health monitoring - Limited channel filtering (you get everything in the M3U) --- ## Option 2: Threadfin (Advanced Virtual Tuner) Threadfin is a standalone M3U proxy that sits between your IPTV source and Jellyfin. It provides buffering, filtering, and multi-playlist support. ### Docker Deployment ```yaml services: threadfin: image: fyb3roptik/threadfin:latest container_name: threadfin ports: - 34400:34400 volumes: - ./threadfin/config:/home/threadfin/conf restart: unless-stopped ``` ### Configuration 1. Access web UI: `http://localhost:34400/web/` 2. Add M3U playlist(s): Settings - Playlist - Add 3. Add XMLTV source(s): Settings - XMLTV - Add 4. Filter channels: Enable only the channels you want 5. Set buffer: Enable stream buffering to prevent stuttering ### Connect to Jellyfin In Jellyfin: Dashboard - Live TV - Add Tuner - Type: **HDHomeRun** (Threadfin emulates HDHomeRun protocol) - URL: `http://threadfin:34400` Jellyfin sees Threadfin as a hardware tuner. ### Pros - Stream buffering (eliminates stuttering) - Multiple M3U playlists combined - Channel filtering (only show what you want) - Web UI for management - HDHomeRun emulation (Jellyfin thinks it is real hardware) - Multiple simultaneous streams ### Cons - Additional Docker container to maintain - More complex initial setup - Uses more RAM due to buffering (typically 100-300MB) --- ## Option 3: Dispatcharr (Modern IPTV Manager) Dispatcharr is a newer, more feature-rich IPTV management tool with automatic EPG matching and a modern web interface. ### Docker Deployment ```yaml services: dispatcharr: image: dispatcharr/dispatcharr:latest container_name: dispatcharr ports: - 5173:5173 volumes: - ./dispatcharr/data:/data restart: unless-stopped ``` ### Key Features - **Automatic EPG matching**: Intelligently matches channels to guide data without manual mapping - **Multi-source management**: Combine channels from multiple IPTV providers - **Channel reordering**: Drag-and-drop channel organization - **Stream monitoring**: Health checks for channel availability - **Modern web UI**: Clean interface for channel management - **HDHomeRun emulation**: Same Jellyfin integration as Threadfin ### Connect to Jellyfin Same as Threadfin: add as an HDHomeRun tuner using Dispatcharr's URL. ### Pros - Auto EPG matching saves significant setup time - Best web UI of the three options - Stream health monitoring - Active development with frequent updates - Easy channel organization ### Cons - Newer project (less community documentation) - Slightly higher resource usage - Some advanced features still in development --- ## Comparison Table | Feature | M3U Tuner (built-in) | Threadfin | Dispatcharr | |---------|---------------------|-----------|-------------| | Setup difficulty | Easy (5 min) | Medium (20 min) | Medium (20 min) | | Additional software | None | Docker container | Docker container | | Multiple playlists | No | Yes | Yes | | Channel filtering | No | Yes | Yes | | Stream buffering | No | Yes (configurable) | Yes | | EPG auto-matching | Basic name match | Manual + basic | Intelligent auto-match | | Web management UI | No (Jellyfin only) | Yes | Yes (modern) | | Stream health checks | No | Basic | Advanced | | HDHomeRun emulation | N/A (native) | Yes | Yes | | Resource usage | Zero (part of Jellyfin) | ~100-300MB RAM | ~150-400MB RAM | | Best for | Quick test, few channels | Reliable daily use | Large IPTV setups | --- ## Where to Get M3U Playlists (Legal Sources) Several legitimate free IPTV sources provide M3U playlists: - **Pluto TV**: Free ad-supported streams (M3U available via community tools) - **Samsung TV Plus**: Free streams (M3U generators exist) - **Plex Free TV / Tubi**: Some provide accessible stream URLs - **Local OTA restreams**: If you have an antenna elsewhere, restream via IPTV - **Your ISP**: Some cable providers offer IPTV M3U access For EPG data, popular free XMLTV sources include: - EPG.best - iptv-org/epg (GitHub) - xmltv.se (European channels) --- ## Troubleshooting | Problem | Solution | |---------|----------| | No channels appearing | Verify M3U URL is accessible from your server (curl test) | | EPG not showing | Check XMLTV channel IDs match your M3U channel names | | Buffering during playback | Use Threadfin/Dispatcharr with buffering enabled | | Channel logos missing | Add logo URLs to your M3U or use tvg-logo attributes | | DVR recording fails | Ensure sufficient disk space and correct recording path in Jellyfin | | Too many channels | Use Threadfin/Dispatcharr to filter; only expose channels you actually watch | --- ## FAQ **Do I need a hardware tuner for Live TV DVR recording?** No. Virtual tuners (Threadfin, Dispatcharr) support recording through Jellyfin DVR just like hardware tuners. **Can I use multiple M3U sources simultaneously?** With the built-in tuner: no (one playlist only). With Threadfin or Dispatcharr: yes, they merge multiple playlists into one virtual tuner. **How many simultaneous live streams can I have?** Depends on your internet bandwidth and M3U source limits, not on Jellyfin. Virtual tuners can typically handle 4-10+ concurrent streams. **Does live TV use my server CPU for transcoding?** Only if the stream format is incompatible with the watching client. IPTV streams are usually H.264 which Direct Plays on most devices. **Can I watch Live TV on mobile via JellyWatch?** JellyWatch monitors sessions including live TV streams. For watching, use the Jellyfin player client on your mobile device. --- > **Monitor your live TV streams and server health remotely.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see active sessions, including live TV viewers, and get alerts when streams drop. --- ## Jellyfin Playlists in 2026: Create, Share & Automate Smart Playlists (Complete Guide) URL: https://jellywatch.app/blog/jellyfin-playlists-smart-playlists-plugin-guide-2026 Published: 2026-06-23T10:58:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, playlists, smart-playlists, plugin, music, guide # Jellyfin Playlists in 2026: Create, Share & Automate Smart Playlists Playlists in Jellyfin are more powerful than most users realize. Beyond simple manual lists, you can create auto-updating smart playlists, share them across users, import M3U files, and build music queues that rival dedicated music apps. This guide covers everything - from basic playlist creation to advanced automation with plugins. --- ## Playlist Types in Jellyfin Jellyfin supports several playlist approaches: 1. **Manual playlists** - You pick items and add them to a list 2. **Smart playlists** (via plugins) - Rules-based lists that auto-update 3. **M3U import** - Import existing playlist files from other software 4. **Music playlists** - Audio-specific with shuffle, repeat, queue --- ## Creating Manual Playlists ### Via Web UI 1. Browse to any movie, episode, or album 2. Click the three-dot menu (...) or right-click 3. Select "Add to Playlist" 4. Choose an existing playlist or create a new one 5. Name it, set visibility (private or shared) ### Bulk Adding In any library view: 1. Select multiple items (checkbox mode) 2. Click "Add to Playlist" in the toolbar 3. All selected items are added at once ### Reordering Open a playlist and drag items to reorder. The order is preserved for playback. --- ## Smart Playlists (Auto-Updating) Jellyfin does not have built-in smart playlists, but the community **Smart Playlist plugin** adds this functionality. ### Installation 1. Dashboard - Plugins - Repositories - Add the Smart Playlist repository URL 2. Install from catalog 3. Restart Jellyfin ### Creating Rules Smart playlists use filter rules that automatically include/exclude content: **Example: "Unwatched Movies Added This Month"** ``` Rule: Media Type = Movie AND: Play Status = Unplayed AND: Date Added = Last 30 days Sort: Date Added (newest first) Limit: 50 items ``` **Example: "4K HDR Content"** ``` Rule: Media Type = Movie OR Episode AND: Resolution = 4K AND: HDR = True Sort: Title (A-Z) ``` **Example: "Top Rated Unwatched Comedies"** ``` Rule: Media Type = Movie AND: Genre = Comedy AND: Play Status = Unplayed AND: Community Rating >= 7.0 Sort: Rating (highest first) Limit: 25 items ``` **Example: "Recently Aired Episodes (This Week)"** ``` Rule: Media Type = Episode AND: Air Date = Last 7 days Sort: Air Date (newest first) ``` ### Update Frequency Smart playlists refresh automatically: - On Jellyfin server startup - On library scan completion - On a configurable schedule (hourly, daily) This means a "New This Week" playlist always shows current content without manual intervention. --- ## Sharing Playlists with Users ### Visibility Options - **Private**: Only the creator can see and use the playlist - **Public/Shared**: All users on the server can see the playlist To change visibility: open the playlist - Edit - toggle Public checkbox. ### Use Cases for Shared Playlists - **Family movie night**: Create a "Saturday Night Picks" playlist that everyone can browse - **Kids content**: Curated list of age-appropriate content for child profiles - **Watch order**: "MCU Chronological Order" shared with all users - **Seasonal**: "Halloween Movies" shared every October --- ## M3U Playlist Import If you have playlists from other software (VLC, Kodi, music players), you can import them: ### For Music 1. Place your `.m3u` or `.m3u8` file in your music library folder 2. Jellyfin detects it during library scan 3. The playlist appears in your music section The M3U file must reference files that exist in your Jellyfin library (paths must match). ### For Video Video M3U import is less straightforward. Best approach: 1. Create the playlist manually in Jellyfin 2. Use the Jellyfin API to bulk-add items programmatically 3. Or use a community script that converts M3U to Jellyfin API calls --- ## Music Playlists Jellyfin's music playlist support is solid: ### Features - Create playlists from albums, artists, or individual tracks - Shuffle and repeat modes - Queue management (add next, add to end) - Gapless playback (client-dependent) - Playlist artwork (auto-generated from track artwork) ### Music Smart Playlists Ideas - "Recently Added Albums" (last 2 weeks) - "Most Played Tracks" (top 50) - "Unplayed Albums" (discovery queue) - "Decade Mix: 1980s" (by year filter) ### Syncing with Navidrome If you run Navidrome alongside Jellyfin for music, playlists do not sync between them natively. You need a tool like **Playlisty** or manual M3U export/import. --- ## Playlists vs Collections: When to Use Which | Feature | Playlist | Collection | |---------|----------|------------| | Ordered | Yes (you control the sequence) | No (alphabetical or custom sort) | | Auto-updating | Yes (with Smart Playlist plugin) | No (manual, or via Kometa) | | Visible to specific users | Configurable (private/public) | Always visible to all | | Playback as queue | Yes (plays sequentially) | No (browse and pick) | | Best for movies/shows | Watch order, themed lists, queues | Franchises, genres, groupings | | Best for music | Albums, artist mixes, moods | Not typically used for music | | Remove after watching | Easy (manual or auto-remove) | Not typical | **Rule of thumb:** Use playlists for things you want to watch/listen in order. Use collections for grouping related content. --- ## Advanced: Playlist Automation with External Tools ### Kometa Integration Kometa can create playlists (not just collections) based on Trakt lists, IMDb lists, or custom rules. These sync to Jellyfin automatically. ### Jellyfin API Scripts Power users write Python/Bash scripts that: - Create daily/weekly "What to Watch" playlists - Build "Movie Marathon" playlists from franchise metadata - Sync Spotify playlists to Jellyfin music playlists - Auto-remove watched items from playlists The Jellyfin API endpoints for playlist management: - `POST /Playlists` - Create playlist - `POST /Playlists/{id}/Items` - Add items - `DELETE /Playlists/{id}/Items` - Remove items - `POST /Playlists/{id}/Items/{itemId}/Move/{newIndex}` - Reorder --- ## Troubleshooting | Problem | Solution | |---------|----------| | Playlist not visible to other users | Check visibility is set to Public/Shared | | Smart playlist not updating | Verify plugin is enabled and check the schedule timer | | M3U import not working | Ensure file paths in M3U match actual paths in your Jellyfin library | | Playlist order gets scrambled | Some clients do not respect custom order. Test with web UI to confirm server-side order is correct. | | Cannot delete a playlist | Only the creator or an admin can delete. Check permissions. | | Music playlist has wrong tracks | Verify tracks are not from duplicate albums. Merge duplicates first. | --- ## FAQ **Can I share a playlist URL with someone outside my server?** No. Playlists are server-internal. Users must have accounts on your Jellyfin server to access shared playlists. **Do playlists sync across Jellyfin clients?** Yes. Playlists are stored server-side, so they appear identically on web, mobile, TV, and desktop clients. **Is there a limit on playlist size?** No hard limit, but very large playlists (1000+ items) may load slowly on some clients. **Can I export a Jellyfin playlist as M3U?** Not natively from the UI. You can use the API to export item paths programmatically. **Do smart playlists work for music?** Yes. The Smart Playlist plugin supports audio items with filters like genre, year, rating, and play count. **Can Watch Pass users (JellyWatch) see my shared playlists?** Yes. Any user with server access sees public playlists. --- > **Browse your playlists and library on mobile.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - view your library, track watch progress, and manage your Jellyfin server from anywhere. --- ## Jellyfin vs Stremio in 2026: Self-Hosted Server vs Addon Streaming Compared URL: https://jellywatch.app/blog/jellyfin-vs-stremio-self-hosted-vs-addons-comparison-2026 Published: 2026-06-23T10:36:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, stremio, comparison, self-hosted, streaming, addons # Jellyfin vs Stremio in 2026: Self-Hosted Server vs Addon Streaming Jellyfin and Stremio solve the same fundamental problem - watching content on your terms - but they approach it from completely different philosophies. Understanding this difference is key to choosing the right tool (or using both). **Jellyfin** = You own the server, you own the files, you control everything. It is a self-hosted media server for your personal library. **Stremio** = Install an app, add community addons, and stream content from online sources. No server, no files, no maintenance. --- ## Philosophy Comparison | Aspect | Jellyfin | Stremio | |--------|----------|---------| | Core model | Self-hosted server + local files | App + online addons | | You need | Hardware, storage, media files | Just the app + internet | | Control | Total (you run everything) | Addon-dependent | | Privacy | 100% (never leaves your network) | Addon-dependent (some track usage) | | Ownership | Full (your files, your server) | None (streaming only) | | Offline access | Yes (local network, or download) | No (requires internet) | | Setup time | 1-4 hours (hardware + software) | 5 minutes (install + addons) | | Ongoing cost | Hardware + electricity | Free (unless using paid addons) | --- ## Feature Comparison | Feature | Jellyfin | Stremio | |---------|----------|---------| | Multi-user accounts | Yes (full user management) | No (single user per app) | | Parental controls | Yes | No | | Watch history sync | Yes (server-side, cross-device) | Yes (Trakt integration) | | Subtitle support | Excellent (Bazarr, OpenSubtitles, embedded) | Good (built-in search) | | 4K HDR quality | Full quality (your files, your bitrate) | Depends on source quality | | Dolby Vision/Atmos | Supported (with proper files) | Rare in addon sources | | Mobile apps | Multiple clients (official + community) | Official app (all platforms) | | Live TV | Yes (IPTV, M3U, tuners) | Yes (via addons) | | Music library | Yes (full music server) | Limited | | Photo management | Yes | No | | Request system | Yes (Jellyseerr) | No | | Notifications | Yes (new content, sessions) | No | --- ## Quality Comparison This is where Jellyfin wins decisively for enthusiasts: | Quality Aspect | Jellyfin | Stremio | |---------------|----------|---------| | Maximum bitrate | Unlimited (your files) | Source-dependent (often 5-15 Mbps) | | 4K Remux (50+ Mbps) | Yes | Extremely rare | | Lossless audio (TrueHD, DTS-HD) | Yes | Almost never | | Dolby Vision Profile 7/8 | Yes | Very rare | | Consistent quality | Always (your files) | Varies by addon and time | | Buffering | Rare (local network) | Common (depends on source) | If you care about reference-quality video and audio, Jellyfin with proper media files is the only answer. Stremio addons typically offer compressed encodes. --- ## When to Choose Jellyfin - You already have a media collection (or plan to build one) - You want the best possible quality (4K Remux, lossless audio) - You share your server with family and need user management - Privacy matters to you (nothing leaves your network) - You enjoy the homelab/self-hosting hobby - You want offline access on your local network (internet outage = still works) - You need music, audiobooks, or photo management too --- ## When to Choose Stremio - You do not want to maintain hardware or manage files - You want instant access without downloading anything - You watch casually and do not care about maximum quality - Storage costs are a concern (no need for terabytes of drives) - You are a solo user (no need for multi-user features) - You are fine with internet-dependent streaming --- ## Can You Use Both Together? Yes, and many users do. Two common hybrid approaches: ### Approach 1: Jellyfin Primary + Stremio for Discovery Use Jellyfin for your owned library (quality content you keep). Use Stremio to quickly check out something before deciding to add it to your collection permanently. ### Approach 2: Gelato Plugin (Stremio Inside Jellyfin) The **Gelato** plugin for Jellyfin brings Stremio addon catalogs directly into your Jellyfin interface. You can browse Stremio content alongside your local library, and stream from addon sources without leaving Jellyfin. See our dedicated Gelato guide for setup instructions. ### Approach 3: Stremio for Solo, Jellyfin for Family Use Stremio personally for quick watching. Maintain Jellyfin with curated content for your family/kids with proper parental controls. --- ## Legal Considerations **Jellyfin** is fully legal software. It is an open-source media server. The legality depends on how you obtain your media files. **Stremio** as an app is legal. The legality depends on which addons you install and what content they provide. Official addons (catalogs, trailers, free content) are fine. Community addons that stream copyrighted content exist in a legal gray area. This guide covers the technical comparison. Make your own informed decisions about content sources. --- ## Migration: Stremio to Jellyfin If you are currently using Stremio and want to transition to Jellyfin: 1. Start small: set up Jellyfin with content you watch repeatedly 2. Use Trakt to sync watch history from Stremio 3. Gradually build your library with high-quality files 4. Keep Stremio installed for edge cases while your library grows The migration is not instant - building a quality library takes time - but the end result is a superior viewing experience. --- ## FAQ **Is Stremio a replacement for Jellyfin?** No. They serve different use cases. Stremio does not replace a local media server, and Jellyfin does not replace instant streaming without files. **Can my Jellyfin server serve content to Stremio?** Yes, via the "Jellyfin for Stremio" community addon. This makes your Jellyfin library appear as a source inside Stremio. **Which uses less bandwidth?** Jellyfin on a local network uses zero internet bandwidth. Stremio always requires internet. For remote Jellyfin streaming, bandwidth depends on your upload speed and transcode settings. **Which is better for a family?** Jellyfin, decisively. Multi-user accounts, parental controls, watch history per user, content requests - none of this exists in Stremio. **Can I run Jellyfin on a VPS and stream like Stremio?** Technically yes (cloud Jellyfin), but you still need to manage files and storage. It becomes a hosted Jellyfin, not Stremio-like. --- > **Chose Jellyfin? Monitor your server effortlessly.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, library stats, and push notifications for your Jellyfin ecosystem. --- ## JellyWatch TV vs Moonfin vs Wholphin vs Streamyfin: Best Jellyfin Client in 2026 URL: https://jellywatch.app/blog/jellywatch-tv-moonfin-wholphin-streamyfin-best-jellyfin-client-2026 Published: 2026-06-23T10:23:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, jellywatch, moonfin, wholphin, streamyfin, clients, comparison, mobile, tv, android tv, fire tv # JellyWatch TV vs Moonfin vs Wholphin vs Streamyfin: Best Jellyfin Client in 2026 The official Jellyfin apps work, but the community has built alternatives that go further in specific areas. If you spend time on Jellyfin communities, four names keep coming up: **JellyWatch for Android TV**, **Moonfin**, **Wholphin**, and **Streamyfin**. Each targets a different use case. This guide compares them honestly so you can pick the right one (or use multiple). --- ## Quick Comparison Table | Feature | JellyWatch TV | Moonfin | Wholphin | Streamyfin | |---------|--------------|---------|----------|------------| | Platforms | Android TV, Google TV, Fire TV, Amazon Appstore | Android, iOS | Android TV, Fire TV, LG webOS | iOS, Android | | Primary focus | TV/big screen (home cinema) | Mobile playback | TV/big screen | Mobile + downloads | | Video player | ExoPlayer + FFmpeg extensions | MPV-based | ExoPlayer | MPV-based | | Offline downloads | No (TV-focused) | Yes | No | Yes | | 4K HDR playback | Yes (HDR10, HDR10+, Dolby Vision) | Yes | Yes | Yes | | TrueHD Atmos / DTS:X passthrough | Yes (force passthrough + FFmpeg local decode fallback) | P8 (device dependent) | Partial (ExoPlayer audio extension) | P8 (device dependent) | | Open source | No (freemium) | No (freemium) | Yes | Yes | | Price | Free with premium tier | Free with premium tier | Free | Free | | SyncPlay support | Yes | Yes | No | No | | Intro skip | Yes (3 configurable modes per segment) | Yes | Yes | No | | Trickplay thumbnails | Yes | No | Yes | No | | Multiple servers | Yes | Yes | Yes | Yes | | Active development | Very active | Very active | Active | Active | | UI framework | Jetpack Compose (TV-native) | Custom native | Leanback (Android TV) | React Native | | Display rate switching | Yes (24p/25p/30p/60p) | No | Yes | No | | Live quality switching during playback | Yes | No | No | No | | Online subtitle search | Yes (OpenSubtitles via server plugin) | No | Yes | No | | Music player with background playback | Yes | Yes | Yes | Yes | | Book/EPUB reader | Yes | No | No | No | | Admin dashboard | Yes | No | No | No | | Screensaver (OLED burn-in protection) | Yes (Ken Burns, parallax, anti burn-in) | No | Yes | No | | Still Watching protection | Yes (configurable 2-5 episodes) | No | Yes | No | | Audio Night Mode | Yes | No | No | No | | Home Screen Channels (Android TV launcher) | Yes | N/A | No | N/A | | Seerr/Jellyseerr integration | Yes | No | Yes | No | | TV Quick Login (code-based) | Yes | N/A | Partial | N/A | | Stats for Nerds | Yes (codec, bitrate, HDR type, audio delivery, dropped frames) | No | Partial | No | --- ## JellyWatch for Android TV: The Complete Home Cinema Experience JellyWatch for Android TV is the most feature-rich Jellyfin client built specifically for the big screen. It uses Jetpack Compose for a native, responsive TV interface designed entirely for D-pad navigation. Where other TV clients force you to choose between playback quality and features, JellyWatch ships everything in one app. The standout technical achievement is its **3-level audio fallback chain**: it tries passthrough first (for Atmos/DTS:X receivers), falls back to local FFmpeg decoding (TrueHD, DTS-HD MA without server transcoding), and only uses server transcoding as a last resort. No other Jellyfin TV client offers this. ### Strengths - True leanback/D-pad interface built with Jetpack Compose for TV - 3-level audio fallback: passthrough, local FFmpeg decode, then server transcode only as last resort - Force passthrough mode for stubborn HDMI/eARC setups - SyncPlay: the only TV client with real-time group watching - Trickplay thumbnails on the seek bar (Jellyfin 10.9+) - Display rate switching: matches your TV refresh rate to video frame rate (eliminates judder) - Live quality switching during playback (Original, 4K, 1080p, 720p, 480p, 360p) - Skip intro/credits with 3 modes per segment type (Off, Auto-skip, Button) - ASS/SSA rendered pixel-perfect via libass, PGS and DVBSub decoded locally - Online subtitle search and download from OpenSubtitles directly in the player - Audio Night Mode: dynamic range compression for late-night sessions - Stats for Nerds: codec, resolution, bitrate, HDR type, audio delivery mode, dropped frames, buffer health - Built-in EPUB reader for Jellyfin book libraries - Full music player with background playback, queue management, lyrics - Theme songs on detail pages with configurable volume - Local trailer autoplay from server-side files (no YouTube, no API key) - Home Screen Channels for instant resume from the Android TV launcher - Seerr integration for movie/TV requests from your remote - Admin dashboard: monitor sessions, library stats, trigger scans from the couch - Built-in screensaver with Ken Burns, parallax, and OLED burn-in protection - TV Quick Login via short code (no TV keyboard needed) - Still Watching protection (configurable 2-5 episodes) - Works on NVIDIA Shield, Chromecast with Google TV, Sony Bravia, Xiaomi Mi Box, Fire TV Stick, and any Android TV 8.0+ device ### Weaknesses - Not open source - No mobile/phone interface (dedicated TV app) - No offline downloads (TV-focused by design) - Some advanced features require a paid tier (TV Premium) ### Best For Anyone serious about their home cinema setup. If you have a receiver that supports Atmos or DTS:X, if you care about judder-free 24p playback, if you want to watch together with SyncPlay, or if you simply want the most polished and complete TV experience for Jellyfin, JellyWatch is the answer. It is particularly strong on NVIDIA Shield and Chromecast with Google TV where its feature set truly shines. --- ## Moonfin: The Polished Mobile All-Rounder Moonfin is a premium-feeling client available on both Android and iOS. It uses an MPV-based player which handles nearly any codec without transcoding. ### Strengths - Beautiful, modern interface with smooth animations - MPV player handles HEVC, AV1, TrueHD, DTS-HD without server transcoding - Offline downloads with queue management - SyncPlay support for group watching - Background audio playback for music - Custom home screen layouts - Picture-in-Picture mode ### Weaknesses - Not open source - Some features require a paid tier - No dedicated TV/leanback interface - Newer project with occasional bugs ### Best For Power users on mobile who want the best playback compatibility and a polished experience. If you watch HDR/DV content on your phone and hate server transcoding, Moonfin is the answer. --- ## Wholphin: The Open Source TV Option Wholphin is an open source client for the big screen. It provides a leanback interface for remote control navigation on Android TV, Fire TV, and LG webOS. ### Strengths - True leanback/D-pad navigation (no touchscreen needed) - Optimized for Android TV, Fire TV Stick, NVIDIA Shield, LG webOS - ExoPlayer with hardware decoding - Intro skip button integration - Next episode auto-play - Open source and community-driven - Good customization options (pin collections, combine rows) ### Weaknesses - No SyncPlay - No TrueHD/DTS:X force passthrough or local decode fallback - No live quality switching during playback - No trickplay thumbnails on all setups - No admin dashboard - No online subtitle search - No Audio Night Mode - No EPUB reader or music with background playback - LG webOS version requires sideloading ### Best For Users who prioritize open source and want a solid, free TV client with good customization. If you do not need advanced audio passthrough or SyncPlay and prefer community-driven development, Wholphin is a reliable choice. --- ## Streamyfin: The iOS Champion Streamyfin started as an iOS-first Jellyfin client and expanded to Android. Its focus is on clean design and reliable offline downloads. ### Strengths - Clean iOS-native design language - Robust offline download manager with transcoding options - Background audio for music playback - MPV player for broad codec support - Simple, focused interface without bloat - Open source - CarPlay support ### Weaknesses - No dedicated TV interface - No SyncPlay - No intro skip integration (yet) - Smaller feature set overall compared to Moonfin or JellyWatch - Android version is newer and less polished than iOS ### Best For iPhone and iPad users who want a native-feeling Jellyfin app with reliable offline downloads. If you commute and need episodes available without internet, Streamyfin delivers. --- ## Head-to-Head: Playback Compatibility The player engine determines what your client can play without forcing server transcoding. | Codec/Format | JellyWatch TV (ExoPlayer + FFmpeg) | Moonfin (MPV) | Wholphin (ExoPlayer) | Streamyfin (MPV) | |--------------|-----------------------------------|---------------|---------------------|------------------| | H.264 | Direct Play | Direct Play | Direct Play | Direct Play | | H.265/HEVC | Direct Play | Direct Play | Direct Play (most devices) | Direct Play | | AV1 | Direct Play (+ libdav1d software fallback) | Direct Play | Device dependent | Direct Play | | TrueHD/Atmos | Force passthrough or local FFmpeg decode | Direct Play | Transcode required | Direct Play | | DTS-HD MA / DTS:X | Force passthrough or local FFmpeg decode | Direct Play | Transcode required | Direct Play | | ASS subtitles | Pixel-perfect via libass | Direct Play | Burn-in required | Direct Play | | PGS subtitles | Local decode (no burn-in) | Direct Play | Burn-in required | Direct Play | JellyWatch TV stands out on the audio side: its 3-level fallback means your receiver gets the untouched Atmos/DTS:X stream when possible, or the app decodes it locally via FFmpeg rather than asking the server to transcode. This is a significant advantage for home theater setups with proper AV receivers. MPV-based clients (Moonfin, Streamyfin) handle more formats natively on the software side. ExoPlayer alone (Wholphin) relies on Android hardware decoders, which means some audio codecs and subtitle formats trigger transcoding. JellyWatch bridges this gap by adding FFmpeg extensions on top of ExoPlayer. --- ## Head-to-Head: TV-Specific Features If your primary viewing is on a TV, here is how the two TV-focused clients compare: | TV Feature | JellyWatch TV | Wholphin | |-----------|--------------|----------| | SyncPlay (watch together) | Yes | No | | TrueHD/DTS:X force passthrough | Yes | No | | Local FFmpeg audio decode fallback | Yes | No | | Display rate switching (24p) | Yes | Yes | | Live quality switching | Yes | No | | Trickplay thumbnails | Yes | Yes | | Online subtitle search | Yes | Yes | | Stats for Nerds (detailed) | Yes | Partial | | Audio Night Mode | Yes | No | | EPUB book reader | Yes | No | | Music player + background playback | Yes | Yes | | Admin dashboard | Yes | No | | Home Screen Channels | Yes | No | | Seerr integration | Yes | Yes | | TV Quick Login (no keyboard) | Yes | Partial | | Screensaver with OLED protection | Yes | Yes | | Pin collections/playlists on home | No (coming soon) | Yes | | Combine Continue Watching + Next Up | No | Yes | | Open source | No | Yes | | Price | Free (premium tier available) | Free | JellyWatch TV wins on raw feature count, audio quality, and SyncPlay. Wholphin wins on open source philosophy and some navigation customization options. --- ## Which Client Should You Use? | Your Situation | Recommended Client | |---------------|-------------------| | Android TV / NVIDIA Shield (best experience) | **JellyWatch TV** | | Fire TV Stick (any model) | **JellyWatch TV** | | Home theater with Atmos/DTS:X receiver | **JellyWatch TV** | | Want SyncPlay on TV | **JellyWatch TV** | | Want open source on TV | Wholphin | | Android phone, want best quality | Moonfin | | iPhone/iPad primary | Streamyfin | | LG webOS TV | Wholphin (sideload) | | Offline downloads on Android | Moonfin | | Offline downloads on iOS | Streamyfin | | Group watch / SyncPlay on mobile | Moonfin | | Open source on mobile | Streamyfin | | Budget Fire TV Stick, open source | Wholphin | --- ## Can You Use Multiple Clients? Absolutely. Jellyfin syncs watch progress server-side, so you can: - Watch on **JellyWatch TV** at home on your big screen with full Atmos passthrough - Continue on **Moonfin** on your phone during your commute - Download episodes with **Streamyfin** for your flight - Use **Wholphin** on a secondary TV where you prefer open source All four will show your correct watch position. JellyWatch TV even surfaces your Continue Watching row directly on the Android TV launcher via Home Screen Channels. --- ## What About the Official Jellyfin Apps? The official apps are solid for most users. Consider third-party alternatives if: - The official app triggers too much transcoding on your server - You want TrueHD Atmos or DTS:X passthrough without transcoding - You want offline downloads (official Android app lacks this) - You need a better TV remote control experience with features like trickplay, live quality switching, or display rate matching - You want SyncPlay on your TV - You want advanced features like background audio, subtitle search, or a built-in admin dashboard The official apps remain the safest bet for simplicity and guaranteed compatibility with new Jellyfin server features. --- ## FAQ **Do these clients cost money?** Wholphin and Streamyfin are free and open source. JellyWatch TV and Moonfin have generous free tiers with optional premium upgrades for power-user features. Core playback is always free. **Will my server admin see which client I use?** Yes. The client name appears in active sessions. This does not affect functionality. **Do these work with Jellyfin 10.9 and 10.10?** Yes. All four support modern Jellyfin server versions. JellyWatch TV requires Jellyfin 10.9+ for trickplay thumbnails and theme songs. Check GitHub releases for minimum server version requirements. **Can I use these with JellyWatch monitoring?** Yes. All sessions appear in JellyWatch (the companion monitoring app) regardless of the player client used. **Which has the best subtitle support?** JellyWatch TV renders ASS/SSA pixel-perfect via libass and decodes PGS/DVBSub locally without server burn-in. It also lets you search and download subtitles from OpenSubtitles directly in the player. Moonfin and Streamyfin (MPV-based) also handle ASS and PGS without burn-in. Wholphin requires the server to burn in image-based subtitles. **Which is best for Dolby Atmos and DTS:X?** JellyWatch TV. Its force passthrough mode sends the untouched bitstream to your receiver. If passthrough fails, it decodes locally via FFmpeg rather than asking the server to transcode. No other TV client offers this reliability. **Does JellyWatch TV work on Fire TV Stick?** Yes. It is available on both Google Play (for Android TV/Google TV devices) and the Amazon Appstore (for Fire TV). It supports Android TV 8.0 and above. --- ## Get Started > **JellyWatch for Android TV** turns your Jellyfin server into a real home cinema. > [Get it on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv) | [Get it on Amazon Appstore](https://www.amazon.fr/dp/B0H6F1KLQ4) > **Track your watch history across all these clients in one place.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) for unified stats, session monitoring, and library management regardless of which player you use. --- ## Best Arvio Addons in 2026: Complete List for Jellyfin, Plex & Stremio on Android TV URL: https://jellywatch.app/blog/best-arvio-addons-list-android-tv-jellyfin-plex-stremio-2026 Published: 2026-06-23T09:55:00+00:00 Author: JellyWatch Team Category: Tips Tags: arvio, addons, android-tv, jellyfin, plex, stremio, guide # Best Arvio Addons in 2026: Complete List for Android TV Arvio is an Android TV media hub that combines content from multiple sources into a single unified interface. Instead of switching between the Jellyfin app, Plex app, and Stremio app on your TV, Arvio presents everything in one leanback-friendly UI. But Arvio's power comes from its **addon system**. Each addon connects a different service or adds functionality. This guide covers every addon worth installing in 2026. --- ## How Arvio Addons Work Arvio by itself is just a shell - a beautiful TV interface with no content. You add functionality through addons: 1. Open Arvio on your Android TV 2. Go to Settings - Addons 3. Browse the addon catalog or enter a URL 4. Install the addon 5. Configure with your account/server details 6. Content appears on your Arvio home screen Addons can provide: media libraries, streaming catalogs, live TV, tracking services, or utility features. --- ## Media Server Addons (Connect Your Libraries) ### Jellyfin Addon Connect your self-hosted Jellyfin server. Your entire library appears in Arvio with proper metadata, posters, and watch progress sync. - **Setup**: Enter your Jellyfin server URL + credentials - **Features**: Full library browsing, continue watching, next up, search - **Watch sync**: Bidirectional (watch in Arvio, progress syncs to Jellyfin) - **Playback**: Uses Arvio's built-in player or can launch external players ### Plex Addon Same concept for Plex servers. Sign in with your Plex account and access your libraries alongside Jellyfin content. - **Setup**: Plex account sign-in (OAuth) - **Features**: Library browsing, on-deck, watchlist - **Watch sync**: Bidirectional ### Emby Addon Emby server integration with similar functionality to the Jellyfin addon. - **Setup**: Server URL + API key or credentials - **Features**: Full library access, resume playback --- ## Streaming Addons (Online Content) ### Stremio Addon Brings Stremio's entire addon ecosystem into Arvio. Configure your Stremio addons once, and their catalogs appear in the Arvio interface. - **Setup**: Configure Stremio addon URLs - **Features**: Browse catalogs, search, stream directly - **Best for**: Discovery, casual viewing, content not in your local library ### IPTV Addon Live TV via M3U playlists directly in Arvio. - **Setup**: M3U playlist URL + optional XMLTV EPG - **Features**: Channel list, EPG guide, channel logos - **Best for**: Live news, sports, background TV --- ## Tracking & Social Addons ### Trakt Addon Sync your watch history with Trakt. Also provides Trakt lists (trending, popular, recommendations) as browsable catalogs in Arvio. - **Setup**: Trakt account OAuth - **Features**: Watch history sync, Trakt lists as catalogs, recommendations - **Best for**: Cross-platform watch tracking, discovery via community lists ### Simkl Addon Anime-focused tracking service. If you track anime separately from movies/TV, Simkl integrates cleanly. - **Setup**: Simkl account OAuth - **Features**: Anime progress tracking, plan-to-watch lists --- ## Metadata & Utility Addons ### OpenSubtitles Addon Automatic subtitle search and download during playback. - **Setup**: OpenSubtitles account (free) - **Features**: Auto-search subtitles by file hash, manual search by name ### Fanart.tv Addon Enhanced artwork: HD clearlogos, landscape art, and disc art for your libraries. - **Setup**: Fanart.tv personal API key (free) - **Features**: Replaces default posters with high-quality fan art ### TMDB Addon The Movie Database integration for enhanced metadata and trending content catalogs. - **Setup**: TMDB API key (free) - **Features**: Trending lists, enhanced descriptions, cast info --- ## Top 10 Must-Have Arvio Addons (Ranked) | Rank | Addon | Why | |------|-------|-----| | 1 | **Jellyfin** | Core functionality if you self-host | | 2 | **Trakt** | Universal watch tracking and recommendations | | 3 | **Stremio** | Discovery and content not in your library | | 4 | **IPTV** | Live TV channels on your home screen | | 5 | **OpenSubtitles** | Never hunt for subtitles manually | | 6 | **Plex** | If you also run Plex (or use Plexamp) | | 7 | **Fanart.tv** | Better artwork throughout the UI | | 8 | **TMDB** | Trending catalogs and enhanced metadata | | 9 | **Simkl** | Essential for anime watchers | | 10 | **Emby** | If you run Emby alongside other servers | --- ## Arvio vs Individual Apps: Is It Worth It? | Approach | Pros | Cons | |----------|------|------| | Arvio with addons | Unified home screen, one remote, consistent UI, combined search | Some features simplified vs native apps | | Individual apps (Jellyfin + Plex + Stremio) | Full feature set per app | App switching, different UIs, harder to navigate | Arvio shines on Android TV devices where switching between apps is slow (Fire TV Stick, budget boxes). On powerful devices (Shield, Google TV Streamer), the app-switching overhead is less noticeable. --- ## Installation and Setup ### Install Arvio 1. On your Android TV: Google Play Store - search "Arvio" 2. Install 3. Open and complete the initial setup wizard ### Recommended First-Time Setup Order 1. Install Jellyfin/Plex addon (your primary library) 2. Install Trakt addon (tracking) 3. Customize home screen sections (reorder to your preference) 4. Add IPTV if you have M3U sources 5. Add Stremio for discovery --- ## Troubleshooting | Problem | Solution | |---------|----------| | Jellyfin addon cannot connect | Check server URL includes port, verify API key or credentials | | Watch progress not syncing | Ensure bidirectional sync is enabled in addon settings | | Stremio addons not loading | Verify addon URLs are correct and accessible from your TV's network | | IPTV channels buffering | Check your internet speed; try a different M3U source | | Arvio crashing on Fire TV Stick | Clear cache, reduce number of home screen sections | | Addon not appearing | Restart Arvio after installing a new addon | --- ## FAQ **Is Arvio free?** Arvio has a free tier with limited addons and a premium tier that unlocks all addons and features. **Does Arvio replace the Jellyfin app on my TV?** It can, but you can keep both installed. Some users prefer the native Jellyfin app for playback and Arvio for browsing/discovery. **Does watching through Arvio affect my Jellyfin watch history?** Yes. The Jellyfin addon communicates directly with your server, so all watch progress syncs normally. **Can I use Arvio on a phone or tablet?** Arvio is designed for Android TV. On phones/tablets, you are better off using individual apps (Jellyfin, Stremio, etc.). **What Android TV devices work best with Arvio?** Nvidia Shield and Google TV Streamer offer the best performance. Fire TV Stick 4K Max works well. Older or budget devices may feel slow with many addons loaded. --- > **Manage the Jellyfin server that powers your Arvio experience.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor streams, approve content requests, and manage your library from your phone. --- ## Emby Premiere in 2026: Pricing, Lifetime Pass & Is It Worth It? URL: https://jellywatch.app/blog/emby-premiere-pricing-lifetime-worth-it-2026 Published: 2026-06-23T09:23:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: emby, emby-premiere, pricing, lifetime, comparison, jellyfin # Emby Premiere in 2026: Pricing, Lifetime Pass & Is It Worth It? Emby is free to install and self-host, but many of its most important features are locked behind **Emby Premiere** - the paid subscription tier. If you are evaluating Emby as your media server, understanding what you actually get (and what stays free) is critical before spending money. This guide breaks down every plan, every feature, and gives you an honest answer about whether Premiere is worth the investment in 2026. --- ## What Is Emby Premiere? Emby Premiere is the premium subscription that unlocks advanced server features. Without it, Emby remains functional for basic use, but several key capabilities are restricted. Think of it as a paywall on top of self-hosted software - you run the server on your own hardware, but you pay Emby to unlock full functionality. --- ## Emby Premiere Pricing (2026) | Plan | Price | Effective Monthly | Best For | |------|-------|-------------------|----------| | Monthly | $4.99/mo | $4.99 | Testing before committing | | Yearly | $54/yr | $4.50/mo | Regular users | | Lifetime | $119 one-time | Depends on usage length | Long-term self-hosters | The Lifetime pass pays for itself versus monthly in about 24 months, or versus yearly in about 26 months. *Prices verified as of June 2026 at emby.media/premiere.* --- ## What Emby Premiere Unlocks ### Hardware Transcoding (The Big One) Without Premiere, Emby can only use your CPU for transcoding. This means: - Massively higher CPU usage - Fewer simultaneous streams - More buffering for remote users With Premiere, you unlock Intel Quick Sync (iGPU), NVIDIA NVENC, AMD VAAPI, and Apple VideoToolbox. On an Intel N100 mini PC, this is the difference between handling 1 stream and handling 4+ simultaneous 4K to 1080p transcodes. ### Mobile Sync (Offline Downloads) Download movies and episodes to your phone or tablet for offline viewing. Essential for flights, commutes, or areas with poor connectivity. The Emby mobile app without Premiere only allows streaming. ### Live TV DVR With a tuner (hardware or M3U), Premiere unlocks recording capability. The free tier lets you watch live TV but not schedule recordings. ### Cinema Mode Automatically plays trailers, custom intros, or DLNA announcements before your movie starts. A purely cosmetic feature, but adds a theatrical feel. ### Backup and Restore Full server configuration backup and restore functionality. Without Premiere, you manage backups manually. ### Cover Art and Enhanced Artwork Access to additional artwork sources and automatic cover art generation. ### Smart Home Integration Webhook and notification features for integration with home automation systems. --- ## What Stays Free (Without Premiere) - Server installation and operation - Full library management with TMDB/TVDB metadata - Web browser and desktop playback - Basic mobile app streaming (no downloads) - Live TV watching (no DVR recording) - Plugin installation from the official catalog - Multi-user accounts and profiles - Parental controls - Remote access via reverse proxy - Chapter images and trickplay For a single user on their home network with clients that Direct Play everything, the free tier may be perfectly adequate. --- ## Is the Lifetime Pass Worth It? ### Buy Lifetime if: - You have been using Emby for 6+ months and plan to continue - You need hardware transcoding (remote users, incompatible clients) - You want mobile offline sync for travel - You run a multi-user household and need DVR - You already invested time in your Emby library and plugins ### Skip It if: - You only use Emby on your home network with compatible clients (Direct Play only) - You are actively considering migrating to Jellyfin - You do not use the mobile app for offline content - You have a powerful CPU that handles software transcoding fine for your needs ### The Math If you need hardware transcoding, Premiere pays for itself immediately - the electricity savings alone from GPU vs CPU transcoding can be $5-10/month on a busy server. Add the convenience of mobile sync and DVR, and the Lifetime pass at $119 is a solid deal. --- ## Emby Premiere vs Jellyfin: The Real Comparison This is the elephant in the room. Jellyfin is a free, open-source fork of Emby that offers most Premiere features at zero cost. | Feature | Emby Free | Emby Premiere ($119) | Jellyfin (Free) | |---------|-----------|---------------------|------------------| | Hardware transcoding | CPU only | Full GPU support | Full GPU support | | Mobile offline sync | No | Yes | Yes (via clients) | | Live TV DVR | Watch only | Full DVR | Full DVR | | Open source | No | No | Yes | | Plugin ecosystem | Curated | Curated | Large community | | Client polish | High | High | Varies by client | | SSO/OIDC | Limited | Limited | Full support | | Long-term cost | $0 | $119 once | $0 forever | | Company backing | Emby LLC | Emby LLC | Community volunteers | **The honest verdict:** If you are starting from scratch today, Jellyfin is the better financial and philosophical choice. If you are already deep into the Emby ecosystem with a working setup, plugins you depend on, and users who know the interface, the switching cost may not be worth it - and $119 lifetime is reasonable. --- ## How to Activate Emby Premiere 1. Visit emby.media/premiere and purchase your plan 2. You will receive a license key via email 3. In your Emby Server: Dashboard - Emby Premiere 4. Enter your key and click Activate 5. Restart the server 6. Verify: Dashboard should show "Premiere Active" The license is tied to your Emby account, not your server hardware. You can move it to a new server if needed. --- ## Frequently Asked Questions **Does one Premiere license cover all my devices?** Yes. The license is per-server, not per-device. All users and all clients connected to your server benefit from Premiere features. **Can my family and friends benefit from my Premiere?** Yes. Anyone streaming from your Premiere-enabled server gets hardware transcoding, better quality, and all server-side Premiere features. **What happens if I stop paying monthly/yearly?** Premiere features are disabled. Your server continues to work with free-tier features. No data is lost. **Can I transfer my Lifetime license to a new server?** Yes. Deactivate on the old server, activate on the new one via your Emby account. **Is there a free trial?** Emby offers a 14-day Premiere trial. No credit card required - just create an Emby account. **Does Premiere work with Docker installations?** Yes. The license is account-based, not installation-method specific. **Will Emby Premiere ever become free?** Unlikely. Emby is a commercial company and Premiere is their primary revenue source. --- ## Final Thoughts Emby Premiere is a fair product at a fair price - especially the Lifetime tier. The hardware transcoding unlock alone justifies the cost for anyone streaming remotely. However, the existence of Jellyfin (which offers the same features for free) means you should seriously evaluate both before committing. If you are already on Emby and happy, $119 lifetime is a no-brainer. If you are evaluating fresh, try Jellyfin first. --- > **Already running Emby? Monitor your server from your phone.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - active sessions, transcoding stats, and server health alerts for your Emby server. --- ## Intel N100 & N150 Successor: What Comes Next for Jellyfin Mini PCs in 2026? URL: https://jellywatch.app/blog/intel-n100-n150-successor-next-gen-mini-pc-jellyfin-2026 Published: 2026-06-23T08:50:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, intel, n100, n150, mini-pc, hardware, server, transcoding, guide # Intel N100 & N150 Successor: What Comes Next for Jellyfin Mini PCs? The Intel N100 became the default recommendation for budget Jellyfin servers in 2023-2024. A $150 mini PC that handles 3-4 simultaneous 4K-to-1080p transcodes at under 10W power draw. Thousands of homelab users bought one, set up Jellyfin, and never thought about hardware again. But technology moves forward. The N150 arrived, the N200/N305 fill the mid-range, and Intel has new low-power chips on the horizon. If you already own an N100 or are buying your first Jellyfin server in 2026, this guide helps you decide: upgrade, wait, or buy now. --- ## The Intel N100 Legacy Released in early 2023 (Alder Lake-N architecture), the N100 became a phenomenon for media servers: - 4 Efficiency cores / 4 threads at 3.4GHz boost - Intel UHD Graphics with 24 Execution Units - Quick Sync: H.264, H.265, VP9, AV1 **decode** (no AV1 encode) - 6W TDP (real-world: 8-15W under load) - 3-4 simultaneous 4K HEVC to 1080p transcodes with tone mapping - Mini PC price: $130-180 complete (with RAM, SSD, case, PSU) For the vast majority of Jellyfin users (1-5 concurrent streams), the N100 was - and still is - more than enough. --- ## The N150 - Current Generation (2024-2025) The N150 (Twin Lake architecture) is Intel's direct successor: - 4 Efficiency cores / 4 threads at 3.6GHz boost - Intel UHD Graphics with 32 Execution Units (33% more than N100) - Quick Sync: Same codec support as N100 (still no AV1 encode) - 6W TDP (similar real-world power) - 4-5 simultaneous 4K HEVC to 1080p transcodes - Mini PC price: $150-200 complete ### N150 vs N100 for Jellyfin The improvement is modest but real: | Metric | N100 | N150 | Difference | |--------|------|------|------------| | Max 4K transcodes | 3-4 | 4-5 | +25% | | Single transcode quality | Good | Slightly better | Marginal | | HDR tone mapping | Supported | Supported | Same | | AV1 encode | No | No | Same | | Boot/idle power | 5-8W | 5-8W | Same | | Under load power | 12-15W | 12-15W | Same | | Price premium | - | +$20-30 | Small | The N150 is a worthwhile choice for new purchases, but not worth upgrading from an N100 unless you are consistently hitting the 4-stream limit. --- ## The N200 and N305 - Mid-Range Options If you need more than 5 streams or want headroom: ### Intel N200 - 4 cores / 4 threads at 3.7GHz boost - 32 EUs - Similar to N150 but slightly higher clocks - Mini PC price: $160-210 - Transcodes: 4-5 simultaneous ### Intel N305 - **8 cores / 8 threads** at 3.8GHz boost - 32 EUs - 15W TDP (higher power, higher performance) - Mini PC price: $250-350 - Transcodes: 6-8 simultaneous The N305 is the sweet spot for power users who share their server with 5-10 friends. The extra cores help with concurrent tasks (scanning, thumbnail generation, Radarr/Sonarr) alongside transcoding. --- ## What Comes Next? (Expected 2026-2027) Intel's next-generation low-power chips (Panther Lake-N / Arrow Lake-N successors) are expected to bring: - **More Execution Units**: Rumored 48 EUs (double the N100) - **AV1 hardware encode**: This would be a game-changer for Jellyfin (transcode to AV1 for huge bandwidth savings) - **Improved media engine**: More simultaneous decode/encode sessions - **Same or lower TDP**: Intel continues to target 6-9W - **Expected launch**: Late 2026 to early 2027 - **Expected mini PC price**: $170-230 ### Why AV1 Encode Matters Currently, when Jellyfin transcodes for a remote user, it outputs H.264 or H.265. AV1 encoding would deliver the same visual quality at 30-50% lower bitrate. This means: - Less bandwidth needed for remote streaming - Better quality on slow connections - Future-proofing as more clients support AV1 decode --- ## Full Comparison Table | CPU | Architecture | Cores | EUs | AV1 Encode | 4K Transcodes | TDP | Mini PC Price | |-----|-------------|-------|-----|------------|---------------|-----|---------------| | N100 | Alder Lake-N | 4C/4T | 24 | No | 3-4 | 6W | $130-180 | | N150 | Twin Lake | 4C/4T | 32 | No | 4-5 | 6W | $150-200 | | N200 | Twin Lake | 4C/4T | 32 | No | 4-5 | 6W | $160-210 | | N305 | Alder Lake-N | 8C/8T | 32 | No | 6-8 | 15W | $250-350 | | Next Gen | Panther Lake-N? | 4C/4T | 48? | Expected | 7-10? | 6-9W | $170-230? | --- ## Should You Upgrade from N100? ### Stay on N100 if: - You have 1-3 concurrent streams and no issues - Your current setup handles your library without buffering - You do not need AV1 encoding - Your electricity costs are acceptable ### Upgrade to N150/N200 now if: - You consistently max out at 4 transcodes and need headroom - Your N100 mini PC has other issues (failing SSD, fan noise) - You can sell your N100 unit to offset the cost ### Wait for next-gen if: - You want AV1 hardware encoding - You need 7+ simultaneous transcodes at low power - Your N100 still works fine and you are not in a rush - You are building a new server from scratch and can wait 6-12 months --- ## Best Mini PCs Available Today (Mid-2026) For someone buying right now: 1. **Budget (1-4 streams)**: Any N150 mini PC - Beelink, MinisForum, Trigkey ($150-200) 2. **Mid-range (4-8 streams)**: N305 mini PC - Beelink EQ12 Pro, MinisForum UM350 ($280-350) 3. **Power user (8+ streams)**: Intel Core i5-1240P/1340P mini PC ($400-500) or dedicated server All of these include Quick Sync for hardware transcoding, which is the feature that matters most for Jellyfin. --- ## FAQ **Is the N100 still a good buy in 2026?** Yes, if you find one at a good price ($130 or less). It still handles 3-4 transcodes perfectly. The N150 is only marginally better. **Should I buy AMD instead?** For Jellyfin specifically, Intel is still preferred due to Quick Sync maturity and driver support on Linux. AMD VAAPI works but Intel has better tone mapping support. **Does the number of EUs directly equal more transcodes?** Not linearly, but more EUs do allow more simultaneous sessions and better quality at the same time. **What about Intel Arc GPUs?** Arc discrete GPUs (A380, A580) offer excellent transcoding but require a separate PCIe slot and draw more power. For a compact, low-power server, integrated graphics in N-series chips is more practical. **My N100 handles everything fine. Why would I upgrade?** You probably should not. The N100 will remain capable for 2-3 more years for typical home use. Upgrade only when you hit actual limitations. --- > **Monitor your mini PC server performance remotely.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU load, transcoding sessions, storage alerts, and active streams from your Android phone. --- ## Shokofin: The Ultimate Jellyfin Anime Plugin - AniDB, Shoko Server & Perfect Metadata (2026) URL: https://jellywatch.app/blog/shokofin-jellyfin-anime-plugin-anidb-complete-guide-2026 Published: 2026-06-23T08:23:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, shokofin, anime, anidb, shoko, plugin, metadata, guide # Shokofin: The Ultimate Jellyfin Anime Plugin (2026) If you have tried to build an anime library in Jellyfin using the default TMDB or TVDB metadata providers, you know the pain. Wrong episode numbers, missing OVAs, specials placed randomly, absolute ordering nightmares, and artwork that looks like it was cropped from a Western movie poster. **Shokofin** fixes all of this by connecting Jellyfin to **Shoko Server**, a dedicated anime metadata management system that uses AniDB file hashes for 100% accurate identification. --- ## The Problem: Why Default Metadata Fails for Anime Anime has unique structural challenges that Western metadata providers cannot handle properly: - **Absolute vs Season ordering**: TVDB often splits a long-running anime into arbitrary "seasons" that do not match the original broadcast - **OVA/ONA/Specials**: These are frequently missing or placed in wrong positions - **Multiple titles**: Japanese title, Romaji title, English title - providers often use the wrong one - **Episode 0 / Recap episodes**: Numbered inconsistently across providers - **File matching**: Some anime has multiple versions (v2, v3 releases) that confuse name-based matchers --- ## The Solution: Shoko Server + Shokofin The architecture works like this: ``` Your Anime Files -> Shoko Server (matches files via AniDB ED2K hashes) -> Perfect metadata, ordering, grouping -> Shokofin plugin bridges this into Jellyfin -> Jellyfin displays everything correctly ``` **Shoko Server** is the backend. It: - Scans your anime files - Computes file hashes and matches against AniDB database - Handles series grouping, episode ordering, and relations - Syncs watch status with AniDB, MyAnimeList, AniList, Trakt **Shokofin** is the Jellyfin plugin. It: - Creates a virtual filesystem in Jellyfin based on Shoko data - Provides correct series grouping and episode ordering - Delivers AniDB artwork, descriptions, and tags - Syncs Jellyfin watch status back to Shoko --- ## Prerequisites - Jellyfin 10.9 or newer - Docker (recommended for Shoko Server) - An AniDB account (free at anidb.net) - Your anime library organized in any structure (Shoko handles matching regardless of file naming) --- ## Step 1: Deploy Shoko Server ```yaml services: shoko-server: image: shokoanime/server:latest container_name: shoko-server volumes: - ./shoko/config:/home/shoko/.shoko - /path/to/anime:/anime ports: - 8111:8111 restart: unless-stopped ``` First run: access `http://localhost:8111` to complete the setup wizard. --- ## Step 2: Configure Shoko Server 1. **Add your AniDB account** in Settings - AniDB 2. **Add import folder**: point to your `/anime` volume mount 3. **Start the import**: Shoko hashes every file and matches against AniDB 4. **Wait**: Initial import can take hours for large libraries (it computes ED2K hashes, which is I/O intensive) Once complete, your entire library will be perfectly identified with correct metadata, regardless of how your files are named. --- ## Step 3: Install Shokofin in Jellyfin Add the Shokofin repository: Dashboard - Plugins - Repositories - Add: ``` Name: Shokofin URL: https://raw.githubusercontent.com/ShokoAnime/Shokofin/main/manifest.json ``` Install Shokofin from the catalog and restart Jellyfin. --- ## Step 4: Configure Shokofin Dashboard - Plugins - Shokofin: - **Shoko Server URL**: `http://shoko-server:8111` (Docker) or `http://localhost:8111` - **Username/Password**: Your Shoko Server credentials - **Enable Virtual File System (VFS)**: Recommended - lets Shokofin control how files appear in Jellyfin - **Series grouping**: Group related series together (e.g., all Monogatari series under one entry) --- ## Step 5: Create a Jellyfin Library Using Shokofin 1. Dashboard - Libraries - Add Media Library 2. Content type: Shows (or Mixed if you have anime movies too) 3. **Disable all default metadata providers** (TMDB, TVDB, etc.) 4. **Enable only Shokofin** as the metadata provider 5. Point the folder to your anime directory 6. Save and trigger a library scan Jellyfin will now use Shokofin/Shoko for all metadata instead of guessing from filenames. --- ## Step 6: Watch Status Sync Shoko Server can sync watch status with: - **AniDB** (native) - **MyAnimeList** (via plugin) - **AniList** (via plugin) - **Trakt** (via plugin) When you watch an episode in Jellyfin, Shokofin marks it in Shoko, which then syncs to your configured tracking services. Bidirectional sync is supported. --- ## Shokofin vs Default TMDB/TVDB for Anime | Feature | Shokofin + Shoko | Default TMDB/TVDB | |---------|-----------------|-------------------| | File identification | ED2K hash (100% accurate) | Filename guessing | | Episode ordering | AniDB native (absolute, by air date) | TVDB arbitrary seasons | | OVA/Special placement | Correct (AniDB relations) | Often wrong or missing | | Artwork | AniDB posters (anime-appropriate) | TMDB (often Western crops) | | Series grouping | Shoko relations (franchise view) | Manual only | | Watch sync | AniDB, MAL, AniList, Trakt | None | | File version handling | v2/v3 awareness | Not supported | | Setup complexity | High (Shoko Server + plugin) | None (built-in) | | Ongoing maintenance | Low (runs itself after setup) | N/A | --- ## Performance and Resource Usage - **Shoko Server**: ~300-500MB RAM for a typical library (1000-5000 episodes). CPU usage is minimal after initial import. - **Shokofin**: Negligible (just a Jellyfin plugin) - **Initial import time**: 2-8 hours for large libraries (I/O bound, hashing files) - **Daily operation**: Near-zero resource usage. Shoko checks for new files periodically. --- ## Common Issues | Problem | Solution | |---------|----------| | Files not matched | Check Shoko Server - Unrecognized Files. These usually need manual AniDB matching | | Wrong episode order in Jellyfin | Ensure VFS mode is enabled in Shokofin settings | | Duplicate entries | Disable default metadata providers on the library | | Shoko cannot connect to AniDB | AniDB rate-limits API calls. Wait and retry. Do not run multiple instances. | | Watch status not syncing | Check Shoko - Settings - Trakt/MAL plugin is enabled and authenticated | | Slow initial scan | Normal. ED2K hashing reads entire files. SSD significantly helps. | --- ## FAQ **Is Shokofin required, or can I just use Shoko Server alone?** Shokofin is the bridge that brings Shoko data into Jellyfin. Without it, Shoko manages metadata but Jellyfin cannot see it. **Does Shokofin work alongside other metadata plugins?** You should disable TMDB/TVDB for anime libraries. Using both will cause conflicts and duplicate entries. **Can I still use TMDB for my non-anime libraries?** Absolutely. Create a separate Jellyfin library for anime with Shokofin, and keep your movies/TV shows libraries with default providers. **Does my anime need to be named in a specific format?** No. Shoko uses file hashes, not filenames. Your files can be named anything and Shoko will still identify them correctly. **How does this compare to the Jellyfin AniDB plugin?** The standalone AniDB plugin uses filename matching (less reliable) and lacks Shoko grouping, VFS, and multi-tracker sync. Shokofin via Shoko is significantly more capable. **Can I run Shoko Server on a different machine than Jellyfin?** Yes. Shokofin connects to Shoko via HTTP API. They can be on different hosts as long as they share access to the same media files. --- ## Final Thoughts The Shoko + Shokofin combo is the gold standard for anime metadata in Jellyfin. The initial setup takes an evening, but once running, it handles everything automatically - including series you add months later. If you have more than 50 anime series, the time investment pays off immediately. No more fixing episode ordering by hand. --- > **Track your anime watch progress across Jellyfin and all your devices.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - watch history, library stats, and session monitoring for your entire collection. --- ## Best Jellyfin Client for Android TV in 2026: JellyWatch TV vs Official App vs Findroid (Tested) URL: https://jellywatch.app/blog/best-jellyfin-client-android-tv-2026 Published: 2026-06-17T07:38:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, android-tv, client, jellywatch-tv, findroid, chromecast, nvidia-shield, fire-tv, 4k, hdr, 2026 # Best Jellyfin Client for Android TV in 2026: Complete Comparison If you watch Jellyfin on a TV box, Chromecast with Google TV, Nvidia Shield, Fire TV Stick, or any Android TV, you quickly discover that not all Jellyfin clients are equal. An app that works great on a touchscreen phone can feel clunky with a TV remote. And an app that does not optimize for hardware decode will trigger unnecessary transcodes on your server. This guide covers every Jellyfin client available for Android TV in 2026 and tells you which one to actually use. --- ## The Android TV Problem Android TV and Google TV use a **D-pad remote**, four directional keys and a select button. No touchscreen, no mouse. This changes how a media app needs to be built. An app designed for phone touch screens can technically run on Android TV, but navigating it with a remote feels awkward. Focus jumps to unexpected places. Buttons are too small. The experience immediately tells you it was not designed for this. The best TV clients are built from the ground up for the remote control paradigm. --- ## Tested Devices | Device | Android TV version | |---|---| | Chromecast with Google TV HD | Google TV (Android 12) | | Nvidia Shield TV Pro | Android TV 11 | | Amazon Fire TV Stick 4K Max | Fire OS 8 | | Onn 4K Pro | Google TV (Android 12) | All tests used a local Jellyfin 10.11 server with 4K HEVC, Dolby Vision, TrueHD audio, and ASS subtitles. --- ## JellyWatch for Android TV **[Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv)** | Free | Android TV 8.0+ Built from scratch for the Android TV platform. JellyWatch for Android TV uses Jetpack Compose and ExoPlayer Media3, Google's current recommended architecture for Android TV apps. ### Playback - ExoPlayer Media3 with hardware decode enabled by default - 4K, HDR10, HDR10+, Dolby Vision on supported hardware - TrueHD and DTS:X passthrough to AV receivers - ASS/SSA subtitle rendering with full styling - Zero unnecessary transcoding triggered by the player itself ### UI and Navigation - Jetpack Compose interface built natively for D-pad remote navigation - Every element reachable without awkward focus jumps - Continue Watching, Next Up, and Recently Added on the home screen - Automatic next episode - Chapter support and reliable resume playback ### Unique Feature: Jellyseerr Integration Request movies and TV shows directly from your TV without picking up your phone. Browse your request queue, approve requests, and manage your arr stack from the couch. ### Device Results | Device | Result | |---|---| | Chromecast with Google TV | Smooth, all content Direct Played | | Nvidia Shield Pro | Excellent, TrueHD passthrough confirmed | | Onn 4K Pro | Works well including Dolby Vision | | Fire TV 4K Max | Works via sideload | **Verdict: Best Jellyfin client for Android TV in 2026.** Purpose-built, modern architecture, Jellyseerr integration, zero transcoding surprises. --- ## Official Jellyfin for Android TV **[Google Play](https://play.google.com/store/apps/details?id=org.jellyfin.androidtv)** | Free | Android TV 5.1+ The official Jellyfin project Android TV app, maintained by the Jellyfin core team. ### Playback - ExoPlayer-based, good codec compatibility - 4K HDR on supported hardware - Occasionally triggers transcodes on content that should Direct Play due to default player settings ### UI and Navigation - Traditional Android TV Leanback UI - D-pad navigation works reliably - Older visual design compared to community apps **Verdict: Solid fallback.** Works everywhere and is guaranteed compatible. Does not match JellyWatch TV on UI polish or features, but it is the safe default. --- ## Findroid on Android TV **[Google Play](https://play.google.com/store/apps/details?id=dev.jdtech.jellyfin)** | Free | Primarily for phones Findroid is an excellent Android phone app. It installs and runs on Android TV but is not designed for it. ### On a TV - Phone UI forced onto a TV screen - D-pad focus behavior is inconsistent - Some buttons require precise navigation to reach **Verdict: Use Findroid on your phone.** On Android TV, the lack of TV-specific navigation makes it frustrating with a remote. Use JellyWatch for Android TV instead. --- ## Jellyfin for Kodi **[GitHub](https://github.com/jellyfin/jellyfin-kodi)** | Free | Kodi 19+ Not a standalone app, a Kodi add-on that syncs your Jellyfin library into Kodi's interface. - Best raw playback quality (Kodi + LibreELEC = maximum codec support) - Full TrueHD, DTS:X, Dolby Vision depending on hardware - Requires Kodi installed on the device **Verdict: Best playback quality if you already run Kodi.** Otherwise, JellyWatch for Android TV covers the same use case without the Kodi setup overhead. --- ## Side-by-Side Comparison | Feature | JellyWatch TV | Official Android TV | Findroid (TV) | Kodi addon | |---|---|---|---|---| | Built for TV remote | Native | Yes | No | Yes (Kodi) | | Modern UI (2026) | Yes | No (Leanback) | No (phone UI) | Skin-dependent | | Jellyseerr integration | Yes | No | No | No | | 4K / HDR Direct Play | Yes | Yes | Yes | Yes | | TrueHD passthrough | Device-dependent | Device-dependent | Device-dependent | Best support | | Auto next episode | Yes | Yes | Yes | Via Kodi | | SyncPlay | Yes | Yes | Yes | Via addon | | Google Play | Yes | Yes | Yes | Via Kodi | | Fire TV | Sideload | Amazon Appstore | Sideload | Via Kodi | --- ## Recommendation by Device | Device | Primary | Backup | |---|---|---| | Chromecast with Google TV | **JellyWatch for Android TV** | Official Jellyfin | | Nvidia Shield | **JellyWatch for Android TV** | Jellyfin for Kodi | | Fire TV Stick 4K | **JellyWatch for Android TV** (sideload) | Official (Appstore) | | Onn 4K Pro / Box | **JellyWatch for Android TV** | Official Jellyfin | | Sony / TCL Android TV | **JellyWatch for Android TV** | Official Jellyfin | | LibreELEC / OSMC box | Jellyfin for Kodi | JellyWatch for Android TV | --- ## The Full Android Setup | Screen | App | |---|---| | Android phone / tablet | [Findroid](https://play.google.com/store/apps/details?id=dev.jdtech.jellyfin) | | Android TV / TV box | [JellyWatch for Android TV](https://play.google.com/store/apps/details?id=com.jellywatch.tv) | | Server monitoring | [JellyWatch admin app](https://play.google.com/store/apps/details?id=com.jellywatch.app) | --- ## FAQ **Is JellyWatch for Android TV free?** Yes, completely free on Google Play. **Does it work on Fire TV?** Yes via sideload. Enable "Install unknown apps" in Fire TV settings, then install via Downloader. **Why does Findroid not work well on TV?** Findroid is a phone app. Touch-based navigation patterns do not translate well to D-pad remote control. JellyWatch for Android TV is purpose-built for remotes. **Does JellyWatch for Android TV replace the JellyWatch admin app?** No. They are separate apps with different purposes. The admin app monitors your server; the Android TV app is a viewing client. **Which client has the best 4K quality on a TV?** All clients Direct Play 4K HEVC using the same hardware decoder. The difference is in UI experience and additional features, not video quality. --- > **The best Jellyfin experience on your TV in 2026.** > [Download JellyWatch for Android TV on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv), native TV remote navigation, 4K HDR Direct Play, and Jellyseerr integration built for the couch. > **Monitoring the server behind all these clients?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app), real-time sessions, transcoding diagnostics, and server health from your Android phone. --- ## qBittorrent 5.2.1: Critical SSRF Security Fix and the New 5.2 Feature Set URL: https://jellywatch.app/blog/qbittorrent-5-2-1-security-update-2026 Published: 2026-06-08T12:00:00+00:00 Author: JellyWatch Team Category: Other Tags: qbittorrent, update, security, homelab, self-hosting ## qBittorrent 5.2.1: Upgrade Now for the Security Fix qBittorrent 5.2.1 is a recommended update for every user. It patches a **high-severity SSRF (Server-Side Request Forgery)** vulnerability and fixes several stability issues introduced around the 5.2.0 release. If you run qBittorrent in your homelab next to Jellyfin, Radarr, and Sonarr, this is one to apply promptly. --- ## The Security Fix in 5.2.1 The headline change is the patch for a **high-severity SSRF vulnerability** in HTTP redirection handling. The flaw allowed a malicious tracker or redirect URL to make qBittorrent send requests to internal network addresses it should never reach. The fix adds strict scheme validation: a redirected URL must use `http`, `https`, or `magnet`. Any other scheme now returns an error and terminates the download. For a self-hosted client that often sits on the same network as your media server, NAS, and management dashboards, an SSRF flaw is exactly the kind of issue worth closing quickly. --- ## Other Fixes in 5.2.1 - Fixed an app startup failure for users upgrading from older versions that used the legacy lock-file format - Fixed a potential crash and a build issue with the latest zlib library - Refined torrent and RSS feed behavior - Cleaned up lockfile handling --- ## What You Also Get From the 5.2 Series Since 5.2.1 is a patch on top of 5.2.0, upgrading also brings the full 5.2 feature set if you were still on 5.1.x. ### Free Disk Space in the Status Bar Both the Qt desktop UI and the WebUI can now display remaining disk space in the bottom status bar. It is disabled by default. Enable it in **Preferences > Behavior**. Handy when downloads share a volume with your media library. ### Tracker Status Filter A new sidebar category groups torrents by tracker status, making it easy to spot indexers with connectivity problems. ### Auto-Reboot When Downloads Complete qBittorrent can now reboot the system once all downloads finish, useful for scheduled download windows on low-power NAS setups. ### WebUI Overhaul - Native system file chooser instead of the old upload dialog - SVG icons replacing legacy GIFs - HiDPI display density support - Horizontal tab scrolling and a mobile-friendly footer - Torrent creation directly from the WebUI - API key authentication - Persistent client preferences ### Interface and Performance - Configurable app style (System, Fusion, Windows) and color scheme (light, dark, follow system) - Customizable progress bar and pieces bar colors - Faster resume queue loading on startup - Asynchronous torrent piece calculation - Minimum toolkit is now Qt 6.7 (Qt 6.5 support dropped) --- ## How to Upgrade ### Docker (Recommended for Homelab) ```yaml services: qbittorrent: image: linuxserver/qbittorrent:latest # or hotio/qbittorrent:latest restart: unless-stopped ``` ```bash docker compose pull && docker compose up -d ``` ### Desktop Download the latest 5.2.1 installer from the official site or update via your package manager. --- ## Why This Matters for JellyWatch Users If you manage qBittorrent as part of your Arr stack, JellyWatch already integrates with your download client. The new disk space visibility in qBittorrent pairs well with JellyWatch server monitoring to give you a complete picture of your storage from both sides. --- ## Sources - [qBittorrent Official Website](https://www.qbittorrent.org/) - [qBittorrent 5.2.1 Security Fix - UbuntuHandbook](https://ubuntuhandbook.org/index.php/2026/05/qbittorrent-5-2-1-security-vulnerability/) - [qBittorrent 5.2.0 Release - UbuntuHandbook](https://ubuntuhandbook.org/index.php/2026/05/qbittorrent-5-2-0-released-lots-webui-improvements/) - [qBittorrent GitHub Repository](https://github.com/qbittorrent/qBittorrent) --- > **Manage your qBittorrent downloads alongside Jellyfin from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor torrents, active streams, and storage all from your Android phone. --- ## Jellyfin Intro Skipper 2026: Complete Setup, Configuration & Troubleshooting Guide URL: https://jellywatch.app/blog/jellyfin-intro-skipper-setup-configuration-troubleshooting-2026 Published: 2026-06-07T20:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, intro-skipper, skip-intro, plugins, credits, 2026 # Jellyfin Intro Skipper in 2026: Complete Setup, Configuration, and Troubleshooting Guide Tired of watching the same TV intro 200 times in a row? The **Intro Skipper** plugin adds a "Skip Intro" button to Jellyfin, exactly like Netflix. It also handles credits and "Next Episode" prompts. It is the single most installed Jellyfin plugin in 2026, and once you have it set up you will never go back. This guide covers everything: the correct repository to use, installation, the settings that actually matter, the initial analysis and its CPU cost, client compatibility, and how to fix the cases where detection fails. --- ## What Intro Skipper Actually Does Intro Skipper uses **audio fingerprinting** (chromaprint, the same technology behind Shazam and AcoustID) to find repeated audio segments across episodes of the same series. When the same audio appears at the start of multiple episodes, that is almost certainly the intro. The plugin records the exact start and end timestamps and shows a skip button in the player. It detects three things: - **Intros** - the repeated opening sequence - **Credits / outros** - end-of-episode credits, which trigger the "Next Episode" prompt - **Recaps** - "previously on" segments, in some configurations Because detection is audio-based, it works on any TV show regardless of language, and it does not need an internet database of timestamps. > **Important:** Intro Skipper is a server-side plugin. The skip button only appears in clients that support the Intro Skipper API. More on that in the compatibility section below. --- ## The Repository You Should Use (This Trips Up Everyone) There are two versions of this plugin floating around, and using the wrong one is the number one reason people get stuck. | Version | Status in 2026 | Use it? | |---|---|---| | `intro-skipper/intro-skipper` | Actively maintained, current | Yes | | `ConfusedPolarBear/intro-skipper` | Original, no longer maintained | No | The original author handed the project over. The maintained fork lives under the `intro-skipper` organization. **Correct repository manifest URL:** ``` https://manifest.intro-skipper.org/manifest.json ``` If that mirror is ever down, the GitHub raw manifest also works: ``` https://raw.githubusercontent.com/intro-skipper/intro-skipper/master/manifest.json ``` > **Version match matters.** Intro Skipper releases are tied to specific Jellyfin versions. If the plugin will not install or crashes on startup, you almost certainly have a plugin build that does not match your Jellyfin version. Check the release notes and install the build for your exact Jellyfin release. --- ## Installation Step by Step 1. Open **Dashboard - Plugins - Repositories** 2. Click **Add**, give it a name like `Intro Skipper`, and paste the manifest URL above 3. Go to **Dashboard - Plugins - Catalog** 4. Find **Intro Skipper** and click **Install** 5. **Restart Jellyfin** (this is required, the plugin will not load otherwise) 6. After restart, go to **Dashboard - Plugins - My Plugins** and confirm Intro Skipper shows as **Active** If the plugin shows as "Malfunctioned" after restart, it is a version mismatch. Uninstall it, check your Jellyfin version under Dashboard, and install the matching plugin build. --- ## Configuration: The Settings That Matter Go to **Dashboard - Plugins - Intro Skipper**. Here are the settings worth changing and sensible defaults. | Setting | Recommended | Why | |---|---|---| | **Detect introductions** | Enabled | The core feature | | **Detect credits** | Enabled | Powers the Next Episode prompt | | **Maximum degrees of parallelism** | 2 on N100 / Pi, 4 to 8 on stronger CPUs | Controls how many episodes analyze at once | | **Analyze again on library scan** | Enabled | New episodes get processed automatically | | **Minimum intro duration** | 10-15 seconds | Filters out short bumpers and false positives | | **Maximum intro duration** | 120 seconds | Most intros are under 2 minutes | | **Auto skip** | Disabled | Auto-skipping can be jarring, let users tap | | **Auto skip credits** | Personal choice | Many people enable this for binge sessions | | **Show skip button** | Enabled | The button itself | ### Auto skip vs the button You have a choice between a **Skip Intro button** that the user taps, and **fully automatic skipping** that jumps past the intro with no input. Auto skip feels magical when detection is perfect, but a single bad timestamp means viewers miss part of the episode. The safe default is the button. Turn on auto skip only after you have confirmed detection quality on your library. --- ## The Initial Analysis and Its CPU Cost The first time the plugin runs, it analyzes your entire TV library. This is the most demanding part of the whole process, and it is a common cause of "why is my server pinned at 100% CPU" questions. | Library size | Approximate first-run time | CPU impact | |---|---|---| | 100 episodes | 10 to 30 minutes | Moderate | | 1,000 episodes | 2 to 6 hours | High | | 5,000 episodes | 12 to 24 hours | Very high | | 10,000+ episodes | A day or more | Very high | Times vary enormously with CPU, storage speed, and how many parallel threads you allow. **The good news:** this is a one-time cost. After the first pass, only newly added episodes are analyzed, which is fast and incremental. ### Keeping the analysis under control - Run it overnight. Go to **Dashboard - Scheduled Tasks - Detect Introductions** and set the trigger to a quiet hour like 3 AM. - Lower the parallelism on weak hardware. On an N100 or Raspberry Pi 5, set max parallelism to 2 so the server stays responsive. - Limit the libraries. If you only watch a few shows, you can let it analyze just those rather than your entire archive. - Use fast storage for the metadata. Slow spinning disks make analysis IO-bound. > A real-time monitor is genuinely useful here. **JellyWatch** shows you exactly when the Detect Introductions task is running and how hard it is hitting your CPU, so you can tell the difference between "the plugin is working" and "something is wrong." --- ## Client Compatibility (Where the Button Actually Shows Up) This is the most misunderstood part of Intro Skipper. The plugin runs on the server, but the skip button only appears in clients that implement the Intro Skipper API. | Client | Skip Intro | Skip Credits | Auto Skip | |---|---|---|---| | Jellyfin Web | Yes | Yes | Yes | | Jellyfin Android | Yes | Yes | Yes | | Jellyfin Android TV | Yes | Yes | Yes | | Swiftfin (iOS / Apple TV) | Yes | Yes | Partial | | Jellyfin Media Player (desktop) | Yes | Yes | Yes | | Findroid | Partial | Partial | No | | Streamyfin | Yes | Yes | Partial | | Infuse | No | No | No | | Kodi + Jellyfin add-on | No (Kodi has its own) | No | No | > **Infuse users:** Infuse does not support Jellyfin server-side plugins at all. The skip button will never appear there. If skipping intros is important to you on Apple TV, use Swiftfin instead. If the button does not show in an otherwise supported client, update the client app first. Skip support has been added and improved across many client releases. --- ## Troubleshooting ### The skip button never appears 1. Confirm the plugin is **Active** under My Plugins. 2. Confirm the **Detect Introductions** task has actually run (check Scheduled Tasks for a last-run time). 3. Confirm your client supports the API (see the table above) and is up to date. 4. Hard refresh the web client or clear the app cache. ### Detection misses intros on some shows Some content is genuinely hard to fingerprint: - **Cold opens** where the intro plays after a scene, at different points each episode - **Anime** with intros that move around or change between cours - **Shows with no consistent intro audio** (talk shows, reality TV) - **Single-episode items** - the plugin needs multiple episodes to compare For these, use a manual override (next section). ### Timestamps are slightly off Re-run the analysis. If a specific season was added piecemeal, the fingerprint cache may have partial data. You can force a fresh analysis from the plugin page. ### The analysis pins my CPU for days Lower the parallelism, schedule it overnight, and let it finish. Remember the first run is the expensive one. If it never seems to finish, check that the server is not restarting mid-task (which would reset progress). --- ## Manual Overrides for Stubborn Shows When automatic detection fails on a specific show, you can set timestamps by hand: 1. Navigate to the episode 2. Open **Edit Metadata** and find the **Intro Skipper** section (or use the plugin's per-item editor) 3. Enter the intro start and end times manually 4. Manual values take priority over automatic detection For anime in particular, manual overrides per season are often the only reliable approach because intros change between arcs. --- ## Should You Enable Skip Credits and Next Episode? Skip Credits is what powers the **Next Episode** prompt at the end of an episode, the binge-watching feature everyone expects from streaming services. Enabling **Detect credits** is what makes this work. Most users want it on. The only downside is slightly more analysis time during the initial run. --- ## Bottom Line Intro Skipper is the plugin that makes Jellyfin feel like a commercial streaming service. Install the maintained `intro-skipper/intro-skipper` version, match the build to your Jellyfin release, run the initial analysis overnight, and use the button rather than auto skip until you trust the detection. The one-time CPU cost is real, so plan the first run for a quiet window and watch your server load while it works. --- > **Server set up the way you want - now keep an eye on it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## How to Watch Your Jellyfin Library in VR 2026: Quest, Bigscreen & a Private Cinema URL: https://jellywatch.app/blog/watch-jellyfin-in-vr-quest-bigscreen-virtual-cinema-2026 Published: 2026-06-07T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, vr, meta-quest, bigscreen, skybox, home-theater, 2026 # How to Watch Your Jellyfin Library in VR (2026): Quest, Bigscreen, and a Private 200-Inch Cinema Your Jellyfin server already holds your entire movie collection. What if you could watch it on a virtual 200-inch screen, lying in bed, inside a private cinema that no one else can see? In 2026 that is not a gimmick, it is a genuinely good way to watch films, and your existing Jellyfin library plugs straight into it. This guide covers every realistic way to get Jellyfin video onto a VR headset like the Meta Quest 3, from dedicated Jellyfin VR apps to general-purpose VR players pulling from your server over the network. No one else is writing this up properly for Jellyfin, so here is the complete picture. --- ## Why Watch Jellyfin in VR at All Before the how, the honest why. VR viewing is not about 3D effects (that is a separate topic). It is about the screen: - **A massive virtual screen.** A headset gives you the equivalent of a 150 to 200 inch screen that fits in any room, even a tiny apartment or a hotel room. - **Total immersion.** Dark theater environments, no distractions, no light bleed. - **Privacy and portability.** Your own cinema that travels with you. Pair it with a downloaded library and you have a film theater on a plane. - **It uses media you already own.** Your Jellyfin library is the source. No re-buying, no streaming subscription. The tradeoffs are real too: headset weight for long films, battery life, and resolution that, while excellent in 2026, is not yet retina-sharp edge to edge. Worth knowing going in. --- ## The Three Ways to Get Jellyfin Into a Headset There is no single official "Jellyfin VR" app from the Jellyfin team, so you choose between three approaches. Each has a different tradeoff between convenience and polish. | Approach | What it is | Best for | |---|---|---| | **Dedicated Jellyfin VR app** | A community app that talks to the Jellyfin API directly | Browsing your library natively in VR | | **General VR media player + network share** | A polished VR player (Skybox and similar) reading files over DLNA or SMB | Best playback quality and format support | | **Flat screen mirroring / casting** | Bigscreen or a virtual desktop showing a normal Jellyfin client | Watching together, or zero setup | Let us go through each. --- ## Approach 1: Dedicated Jellyfin VR Apps A small but growing set of community projects connect to your Jellyfin server's API and present your library inside a VR theater. In 2026 the notable ones include **JellyVR** (a Godot-based VR cinema for Jellyfin) and **JellyQuest** (a Quest-focused VR cinema app that streams your Jellyfin library into immersive theater environments). **What they give you:** - Native library browsing (posters, continue watching) inside the headset - Theater environments to watch in - Direct connection to your server with your normal Jellyfin login **The catch:** These are community projects, not polished commercial apps. They are usually side-loaded rather than installed from the official store, which on a Quest means using a tool like SideQuest. Expect rough edges, occasional bugs, and varying format support. Check the project's current documentation for which Jellyfin versions and codecs it handles before relying on it. > Because these apps connect to the Jellyfin API directly, they behave like any other client. That means transcoding rules still apply: if the app cannot direct play a file, your server transcodes it, which costs CPU. --- ## Approach 2: A VR Player Reading From a Network Share (Best Quality) This is the approach most serious VR film watchers settle on. Instead of a Jellyfin-specific app, you use a dedicated VR video player and point it at your media over the network. **Skybox VR** is the long-standing favorite. It plays local and network media, auto-detects formats, supports very high resolutions, and reads files over **DLNA** or **SMB** straight from your server. ### Setup over DLNA Jellyfin can expose your library via DLNA, which most VR players can browse: 1. In Jellyfin, enable the **DLNA** feature (Dashboard - Plugins, or the built-in DLNA settings depending on your version) 2. In the VR player (Skybox and similar), open the **DLNA / network** source 3. Your Jellyfin server appears as a media source 4. Browse and play ### Setup over SMB If you prefer (or DLNA is unreliable on your network), share the media folder over SMB and point the VR player at the share directly. This bypasses Jellyfin entirely for playback, which means no transcoding and full original quality, at the cost of losing Jellyfin's library metadata and watch tracking. > **The tradeoff in one line:** API apps keep Jellyfin's metadata and watch state but obey transcoding. Network-share players give you the best raw quality but skip Jellyfin's library features. --- ## Approach 3: Bigscreen and Virtual Desktop (Watch Together, Zero Setup) The simplest route, and the only one built for watching with other people, is to display a normal Jellyfin client on a virtual screen. - **Bigscreen** is a social VR app: you sit in a shared virtual cinema with friends in other locations and watch a screen together. The classic method is to run a Jellyfin client (web or desktop) on a PC and share that screen into the Bigscreen room. - **Virtual Desktop** mirrors your whole PC into VR, so you just open Jellyfin in a browser on the giant virtual monitor. This needs no special Jellyfin configuration at all. The downside is you are mirroring a flat screen rather than getting a native VR library, and image quality depends on the desktop streaming pipeline. > For remote group watching, Bigscreen pairs naturally with Jellyfin's own **SyncPlay**, or community tools, to keep playback in sync across viewers. --- ## Network and Hardware Reality Check VR video is bandwidth-hungry, and a bad network ruins the experience faster than anything else. - **Use 5 GHz or Wi-Fi 6.** Put the headset on the fast band and keep it close to the router. 2.4 GHz will stutter on high-bitrate films. - **Wire the server.** Your Jellyfin server should be on Ethernet. Only the headset needs to be wireless. - **Direct play beats transcoding.** If you use an API-based app, encode or store files the headset can direct play (H.264 or HEVC in MP4 or MKV) so your server is not transcoding on top of everything else. - **Mind the battery.** A full-length film can outlast a Quest battery. A head-strap battery pack solves this for movie nights. --- ## Which Approach Should You Pick - **You want the easiest path and to watch with friends:** Bigscreen or Virtual Desktop. - **You want the best image quality from your own files:** a VR player like Skybox over DLNA or SMB. - **You want a native Jellyfin library feel:** try a dedicated app like JellyVR or JellyQuest, accepting that it is community software. Many people end up using two: a network-share player for solo film nights, and Bigscreen for watching with others. --- ## Keep an Eye on the Server While You Are in the Headset The thing about VR is you cannot see your server logs while a headset is strapped to your face. If an API-based app triggers a transcode, your server can be working hard without you noticing until playback stutters. > **JellyWatch** lets you glance at your phone and see exactly what your server is doing: active sessions, whether something is transcoding, and live CPU load. It is the easiest way to confirm your VR session is direct playing and not quietly cooking your CPU. --- ## Bottom Line There is no official Jellyfin VR app yet, but you have three solid routes: community apps like JellyVR and JellyQuest for a native library feel, a VR player like Skybox over DLNA or SMB for the best quality, and Bigscreen or Virtual Desktop for the simplest setup and group watching. Put the headset on fast Wi-Fi, keep the server wired, aim for direct play, and your existing Jellyfin collection becomes a private 200-inch cinema you can carry anywhere. --- > **Built something cool with your server - now keep an eye on it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Playing 3D Movies on Jellyfin 2026: SBS, Top-Bottom & How to Actually Watch Them URL: https://jellywatch.app/blog/jellyfin-3d-movies-sbs-top-bottom-playback-guide-2026 Published: 2026-06-07T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, 3d-movies, sbs, top-bottom, vr, kodi, 2026 # Playing 3D Movies on Jellyfin in 2026: SBS, Top-Bottom, and How to Actually Watch Them You ripped your 3D Blu-rays, dropped them in Jellyfin, and pressed play. The movie shows up as two squashed images side by side, and nothing turns it into 3D. This is the single most confusing corner of self-hosted media, and almost nobody explains it clearly. Here is the complete, honest picture for 2026. The short version: Jellyfin happily stores and streams 3D files, but Jellyfin itself does not render the 3D effect. The 3D magic happens at the playback device. Get that one idea and everything else falls into place. --- ## How 3D Movies Are Actually Stored A 3D movie is two images, one for each eye, packed into a single video frame. There are a few packing formats, and knowing which you have is half the battle. | Format | Abbreviation | How the frame is packed | |---|---|---| | Side-by-Side | SBS | Left-eye image on the left half, right-eye on the right half | | Half Side-by-Side | H-SBS | Same, but each eye squeezed horizontally to fit | | Top-and-Bottom | TB or OU | Left-eye image on top, right-eye on the bottom | | Half Top-and-Bottom | H-TB | Same, vertically squeezed | | Frame-packed (MVC) | MVC | True full-resolution 3D from Blu-ray, two full streams | Most 3D files people have are **Half-SBS** or **Half-TB** MKVs ripped from Blu-ray, because full frame-packed MVC is hard to play anywhere outside dedicated 3D Blu-ray players. When you see two squashed images side by side in Jellyfin, that is Half-SBS displaying exactly as the file is stored. Nothing is broken. The player just has not been told to interpret it as 3D. > **Naming matters.** Put the format in the filename, for example `Movie (2010) [3D][HSBS].mkv`. It does not enable 3D by itself, but it tells you and your player what packing to expect. --- ## The Key Idea: Jellyfin Streams, the Device Renders This is the part that trips everyone up, so it is worth stating plainly. **Jellyfin is the source.** It stores the file and streams it to your player. It does not split the frame into two eyes or drive a 3D display. The actual 3D rendering, splitting that packed frame back into a left and right eye and sending them to each eye, happens on the **playback device**: a 3D TV, a 3D projector, a VR headset, or a media player app with a 3D mode. So the real question is never "how do I make Jellyfin do 3D." It is "what am I watching on, and can that device render 3D from a Half-SBS or Half-TB stream." --- ## Your Realistic Playback Options in 2026 3D TVs are mostly gone from the market, which changed the landscape. Here are the routes that actually work today. ### Option 1: A VR headset (the best 3D experience in 2026) A VR headset is now the most practical way to watch 3D movies, because each eye has its own screen, which is exactly what 3D needs. - Use a VR video player such as **Skybox** that reads from your Jellyfin server over **DLNA** or **SMB** - In the player, set the format to **SBS** or **Top-Bottom** to match your file (good players auto-detect) - The player sends the left half to your left eye and the right half to your right eye This gives genuine, comfortable 3D with no glasses and no special TV. For most people in 2026, this is the answer. ### Option 2: A 3D projector or a surviving 3D TV If you still have a 3D-capable display: - Play through a device that can output the 3D format the TV expects (often a PC with a player like Kodi, or an HTPC) - Kodi has built-in stereoscopic 3D handling for Half-SBS and Half-TB and can feed a 3D TV correctly - The display then drives active or passive 3D glasses Jellyfin's role here is just to serve the file to that playback machine. ### Option 3: A PC media player with a 3D mode On a desktop, players like Kodi (with the Jellyfin add-on) or other stereoscopic-capable players can take the Jellyfin stream and present 3D, including to 3D monitors and XR glasses. > **What does not work:** the standard Jellyfin web player and most TV apps have no 3D mode. They will faithfully show you the flat, packed frame (two images) and nothing more. That is expected behavior, not a bug. --- ## A Practical Setup That Works Here is a reliable combination for 2026: 1. **Rip or store** your 3D movies as Half-SBS or Half-TB MKV, and label them in the filename. 2. **Keep them in a separate Jellyfin library** (for example "3D Movies") so they do not clutter your normal movie browsing and so you remember they need a 3D-capable player. 3. **Play them on a VR headset** with Skybox or a similar player, reading from Jellyfin over DLNA or SMB, with the format set to match the file. 4. For a 3D projector setup, **play through Kodi** with the Jellyfin add-on and let Kodi handle the stereoscopic output. ### Why a separate library helps 3D files look wrong in any non-3D client, so mixing them with your normal movies leads to confused family members pressing play and seeing a split screen. A dedicated 3D library keeps expectations clear. --- ## Direct Play, Transcoding, and 3D Try hard to **direct play** 3D files. If Jellyfin transcodes a 3D file, two things can go wrong: the transcode is CPU-heavy at high resolution, and some transcode paths can mangle or flatten the frame packing. Store 3D content in a codec your playback device can direct play (commonly H.264 or HEVC in MKV) so Jellyfin simply streams the original frames untouched and lets the device do the 3D work. > If you are unsure whether a 3D file is direct playing or transcoding, check your server. A 3D movie that suddenly pins your CPU is almost certainly being transcoded, which is both wasteful and a common cause of broken 3D output. --- ## Subtitles and Audio in 3D A quick gotcha: regular flat subtitles render incorrectly over a 3D-split frame, often appearing only in one eye or doubled. For the best result use subtitle tracks that are correctly positioned for 3D, or accept that subtitles in 3D are imperfect across most players. Audio is unaffected, your normal tracks and Atmos pass through as usual. --- ## Bottom Line Jellyfin stores and streams 3D movies perfectly, but it never renders the 3D effect itself, the playback device does. Store your films as Half-SBS or Half-TB, label them, keep them in their own library, and watch them on a VR headset with a player like Skybox over DLNA or SMB, or on a 3D projector through Kodi. Aim for direct play so the packed frames reach your device untouched. Once you stop expecting Jellyfin to do the 3D and let the device handle it, the whole thing just works. --- > **Built something cool with your server - now keep an eye on it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Best Jellyfin Plugin Repositories 2026: Complete URL List & How to Add Them Safely URL: https://jellywatch.app/blog/best-jellyfin-plugin-repositories-url-list-how-to-add-2026 Published: 2026-06-06T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, plugins, repositories, manifest, security, 2026 # Best Jellyfin Plugin Repositories in 2026: The Complete URL List and How to Add Them Safely Jellyfin's official catalog is good, but the best plugins live in **third-party repositories** you have to add yourself. The problem is finding the correct, current URLs, and knowing which repos are safe to trust. This guide is the list you have been searching for, plus the security context most posts skip. You will get the manifest URLs, what each repository contains, how to add and manage them, and the safety considerations that actually matter when you are pasting a stranger's URL into your media server. --- ## What a Jellyfin Repository Actually Is A Jellyfin plugin repository is just a **manifest URL** - a JSON file hosted somewhere (usually GitHub) that lists plugins and where to download them. When you add a repository, its plugins appear in your **Catalog** alongside the official ones. Installing then pulls the plugin DLL from the location the manifest points to. This is powerful and also the reason to be careful: a repository can serve any code it wants, and that code runs with full access to your Jellyfin server. > **The one rule:** only add repositories you can trace to a known project or maintainer. A manifest URL is code execution on your server. Treat it like one. --- ## How to Add a Repository (Step by Step) 1. Open **Dashboard - Plugins - Repositories** 2. Click **Add** (the plus icon) 3. Enter a **name** (anything you like, just for your reference) 4. Paste the **manifest URL** in the Repository URL field 5. Save 6. Go to **Dashboard - Plugins - Catalog** - the new plugins now appear 7. Install what you need, then **restart Jellyfin** To remove a repository later, return to the Repositories page and delete it. Removing a repository does not uninstall plugins you already installed from it, but it does stop future updates from that source. > **Version compatibility:** A plugin only shows in the Catalog if the manifest lists a build compatible with your Jellyfin version. If you added a repo and see nothing new, your Jellyfin version is probably newer or older than anything the manifest offers. --- ## The Official Repository (Already Built In) You do not need to add this, but it is worth knowing the default: ``` https://repo.jellyfin.org/files/plugin/manifest.json ``` This is the catalog every Jellyfin install ships with. Everything below is in addition to it. --- ## Trusted Third-Party Repositories These are well-known repositories used widely across the Jellyfin community in 2026. Always cross-check a URL against the project's own GitHub page before adding it, because mirrors and forks change over time. ### Intro Skipper The most installed third-party plugin. Adds a Netflix-style Skip Intro button. ``` https://manifest.intro-skipper.org/manifest.json ``` ### Jellyfin Plugin Bay (community aggregator) A large community-maintained collection that bundles many plugins into a single repository, so you add one URL and get access to dozens of plugins. ``` https://www.iamparadox.dev/jellyfin/repo/manifest.json ``` > Aggregator repositories are convenient, but remember you are trusting whoever curates the bundle, not just the individual plugin authors. Convenient is not the same as safe. ### Catppuccin / theme and skin repositories Custom CSS themes and the Skin Manager ecosystem are often distributed through their own repositories. Check the specific theme's GitHub page for its current manifest URL, since these move frequently. ### SSO / authentication plugins Single sign-on plugins (OIDC, LDAP) typically ship their own manifest from the maintaining project's GitHub releases page. Always take the URL from the official release notes. > We deliberately do not hardcode every niche URL here, because dead and changed URLs are the number one frustration with repository lists. For anything beyond the staples above, get the manifest URL from the plugin's own GitHub releases page. That is always the current source of truth. --- ## How to Find a Repository URL Yourself When a plugin's documentation says "add our repository," here is how to find the real URL: 1. Go to the plugin's **GitHub repository** 2. Look in the **README** for a line containing `manifest.json` 3. Or check the **Releases** page, where maintainers usually post the manifest URL 4. The URL almost always ends in `manifest.json` 5. Paste that into Jellyfin If a project only gives you a `.dll` file and no manifest, you can side-load it by dropping the DLL into your Jellyfin `plugins` folder and restarting, but you lose automatic updates that way. --- ## Safety: What You Are Actually Trusting A plugin runs inside your Jellyfin server process. It can read your library, your configuration, and in some cases your credentials. This is not a reason to avoid plugins, it is a reason to be deliberate. **Before adding a repository, ask:** - Can I find the source code on GitHub? - Is the project actively maintained (recent commits, releases)? - Does the manifest URL belong to the same project, or a random mirror? - Do other people in the community actually use it? **Reduce your risk:** - Add repositories one at a time so you know what introduced a change - Back up your Jellyfin config before installing something new - Keep plugins updated, since updates often include security fixes - Remove repositories you no longer use > **HTTPS only.** Never add a repository served over plain HTTP. A plain-HTTP manifest can be tampered with in transit, which means someone could swap the plugin you wanted for something you did not. --- ## When a Repository Stops Working Repository URLs break. Projects move, get renamed, or shut down. If a repository suddenly shows no plugins or fails to load: 1. Check the project's GitHub page for a new manifest URL 2. Confirm the URL still returns JSON (open it in a browser) 3. Confirm your Jellyfin version is still supported by that manifest 4. Remove and re-add the repository with the current URL The abandoned-fork problem is real. The classic example is Intro Skipper, where the original `ConfusedPolarBear` repository was replaced by the maintained `intro-skipper` organization. Using the old URL leaves you on a dead version. --- ## Keeping Plugins Healthy Plugins add background tasks, and some of them are heavy. Trickplay generation, intro detection, and metadata scanning can all spike CPU. After adding plugins from new repositories, it is worth watching how your server behaves. > **JellyWatch** lets you see CPU and active tasks in real time from your phone, so when you add a new plugin you can immediately tell whether it is quietly hammering your server in the background. --- ## Bottom Line The best Jellyfin plugins live outside the default catalog, and getting to them is just a matter of adding the right manifest URLs. Stick to repositories you can trace to a real, maintained project, add them over HTTPS one at a time, and always pull the URL from the project's own GitHub page rather than a random list. Do that and you unlock the full plugin ecosystem without handing your server to a stranger. --- > **Server set up the way you want - now keep an eye on it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Fix Jellyfin Subtitles Out of Sync 2026: Manual Offset, Resync & Auto-Sync with Bazarr URL: https://jellywatch.app/blog/fix-jellyfin-subtitles-out-of-sync-offset-resync-bazarr-2026 Published: 2026-06-06T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, subtitles, out-of-sync, offset, bazarr, troubleshooting, 2026 # Fix Jellyfin Subtitles Out of Sync in 2026: Manual Offset, Resync, and Auto-Sync with Bazarr Subtitles that drift ahead of or behind the audio are one of the most annoying Jellyfin problems, and one of the most fixable. Sometimes the fix is a quick offset in the player. Sometimes the subtitle file itself is wrong and needs resyncing. Sometimes you want it solved permanently across your whole library. This guide walks through all three, from the 30-second fix to the automated solution, plus how to stop the problem from happening again. --- ## First, Figure Out Which Kind of Out-of-Sync You Have Not all sync problems are the same, and the fix depends on the cause. There are two patterns: | Pattern | What you see | Cause | |---|---|---| | **Constant offset** | Subtitles are always early or late by the same amount (say 2 seconds) the whole way through | Subtitle file timed for a different release / a fixed delay | | **Drift** | Subtitles start fine, then slowly slide out of sync, getting worse over time | Frame rate mismatch (for example 23.976 fps vs 25 fps) | A **constant offset** is easy: shift the whole subtitle track. **Drift** is harder, because no single offset fixes it. You need to rescale the timing, which means resyncing the file. Knowing which one you have saves a lot of wasted effort, so check whether the gap is steady or growing before you start. --- ## Fix 1: Adjust the Subtitle Offset in the Player (30 Seconds) The fastest fix, and the right one for a constant offset, is to nudge the subtitle timing right in the Jellyfin player. This does not change the file, it just shifts playback. ### Jellyfin Web 1. Start playback 2. Open the **subtitle settings** menu in the player (the speech-bubble or gear icon) 3. Find **Subtitle offset** (or "Secondary subtitle offset") 4. Adjust in small steps until the words match the voices 5. Positive values delay the subtitles, negative values move them earlier ### Jellyfin Android / Android TV The Android apps have a subtitle offset control in the playback overlay. Tap the screen during playback, open subtitle options, and adjust the offset there. ### Swiftfin (iOS / Apple TV) Swiftfin exposes a subtitle delay control in its player settings during playback. > **Heads up:** Subtitle offset is a per-session, per-client setting in most cases. It fixes the episode you are watching right now, but it does not edit the file, so the same offset may be needed next time. For a permanent fix, resync the file (Fix 2) or automate it (Fix 3). --- ## Fix 2: Resync the Subtitle File Itself When you have drift, or when you want the fix to stick permanently, you need to correct the subtitle file's timestamps. The best tool for this is **ffsubsync** (also packaged as `subsync`), which automatically aligns a subtitle file to the audio track of the video. ### Using ffsubsync ffsubsync analyzes the speech in the video and shifts (and rescales) the subtitle timing to match. It handles both constant offset and frame-rate drift. ``` pip install ffsubsync ffs video.mkv -i wrong-subs.srt -o fixed-subs.srt ``` It reads the audio from `video.mkv`, aligns `wrong-subs.srt`, and writes a corrected `fixed-subs.srt`. Drop the fixed file next to your video using Jellyfin's external subtitle naming and rescan. ### Manual resync as a fallback If you prefer a GUI, **Subtitle Edit** (Windows) and **Aegisub** (cross-platform) both let you: - Shift all lines by a fixed amount (for constant offset) - Sync by matching the first and last spoken lines, which rescales timing (for drift) These are the right tools when automatic sync gets it slightly wrong and you want manual control. --- ## Fix 3: Automate It with Bazarr (The Permanent Solution) If you are constantly fixing subtitle timing, stop doing it by hand. **Bazarr** downloads subtitles for your library automatically and, crucially, can **sync them to the audio** as it goes. This is the real fix for a media server. ### Enable subtitle sync in Bazarr 1. In Bazarr, go to **Settings - Subtitles** 2. Enable **Automatic Subtitle Synchronization** (this uses ffsubsync under the hood) 3. Choose to sync on download, so every subtitle Bazarr fetches is aligned to the audio before it lands in your library ### Sync existing subtitles For subtitles you already have, Bazarr can resync on demand: 1. Open a movie or episode in Bazarr 2. Use the **tools menu** on a subtitle track 3. Select **Sync**, and Bazarr aligns that subtitle to the audio This is the cleanest setup: new subtitles arrive pre-synced, and you can fix old ones with one click. If you have not set up Bazarr yet, it integrates directly with your Radarr and Sonarr stack and is the standard subtitle automation tool for Jellyfin in 2026. --- ## Why Subtitles Go Out of Sync in the First Place Understanding the cause helps you avoid it: - **Different release than the subtitle was timed for.** A subtitle made for the BluRay release will not match a WEB-DL with different intro lengths or ad breaks. - **Frame rate mismatch.** A subtitle timed for 25 fps played against a 23.976 fps file drifts steadily. This is the classic "starts fine, gets worse" symptom. - **Embedded vs external mismatch.** The embedded subtitle track is usually correctly timed for that exact file, while a downloaded external one might not be. If an embedded track exists and is correct, prefer it. - **Container edits.** If a file was re-muxed or trimmed, baked-in subtitle timings can shift. Matching subtitles to the specific release, and letting Bazarr sync on download, removes almost all of these. --- ## Quick Troubleshooting Checklist - **Off by a constant amount?** Use the player offset, or shift the file in Subtitle Edit. - **Slowly drifting?** It is a frame-rate issue. Resync with ffsubsync or Bazarr, an offset will not fix it. - **Every subtitle in your library is off?** Set up Bazarr with automatic sync rather than fixing files one by one. - **Offset resets every episode?** That is expected for the player offset. Fix the file or automate with Bazarr for a permanent result. - **Embedded subtitle is correct but external is not?** Switch to the embedded track and disable the bad external one. --- ## Bottom Line For a one-off, nudge the subtitle offset in the player and move on. For a file that drifts or one you will rewatch, resync it with ffsubsync or a GUI tool so the fix is permanent. And if you are fixing subtitle timing more than once in a while, set up Bazarr with automatic synchronization so every subtitle is aligned to the audio before it ever reaches your screen. Match the right fix to the right symptom and out-of-sync subtitles become a problem you solve once. --- > **Server set up the way you want - now keep an eye on it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Dolby Vision Profiles Explained: 5 vs 7 vs 8 (Which Direct Plays?) URL: https://jellywatch.app/blog/jellyfin-dolby-vision-profiles-explained-5-7-8-direct-play-2026 Published: 2026-06-03T13:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, dolby-vision, hdr, profile-5, profile-7, profile-8, direct-play, remux, transcoding, 2026 # Jellyfin Dolby Vision Profiles Explained: 5 vs 7 vs 8 (Which Direct Plays?) Dolby Vision is the most advanced HDR format available - 12-bit color depth, dynamic per-scene metadata, and a quality ceiling well above HDR10. But unlike HDR10, Dolby Vision is not a single specification. It comes in **8 different profiles**, and not all of them play on every device. If you have ever downloaded a 4K Dolby Vision remux only to watch it play in HDR10 - or worse, with washed-out colors as if HDR were stripped entirely - the cause is almost always a profile mismatch between your file and your client. This guide explains every Dolby Vision profile, which ones Direct Play on which devices, and how to organize your library to avoid transcoding HDR content. --- ## The 8 Dolby Vision Profiles | Profile | Container | Layers | Compatibility | Common source | |---|---|---|---|---| | **Profile 4** | MOV / MP4 | Single | macOS only | Apple ecosystem | | **Profile 5** | MP4 / MKV | Single | DV-only displays | Streaming services (Netflix, Disney+) | | **Profile 7** | MKV | Dual (BL + EL + RPU) | Blu-ray players, very few clients | UHD Blu-ray remuxes | | **Profile 7 FEL** | MKV | Dual with Full Enhancement Layer | Highest quality, fewest clients | Premium UHD Blu-ray remuxes | | **Profile 7 MEL** | MKV | Dual with Minimal Enhancement Layer | Compatible with more devices | UHD Blu-ray rips | | **Profile 8.1** | MP4 / MKV | Single + HDR10 fallback | Wide compatibility | Re-encoded from Profile 7 | | **Profile 8.4** | MP4 / MKV | Single + HLG fallback | Broadcast HDR | TV broadcasts | | **Profile 9** | MP4 / MKV | Single + SDR fallback | Rare | Specific Netflix releases | The four profiles you actually encounter as a self-hoster: - **Profile 5** - streaming downloads - **Profile 7** - Blu-ray remuxes (FEL or MEL variant) - **Profile 8** - re-encoded for compatibility - **Profile 4** - rare, mostly Apple --- ## Why So Many Profiles Exist Dolby Vision is licensed technology. Different distribution channels (cinema, streaming, Blu-ray, broadcast) negotiated different specifications based on bandwidth, hardware, and display requirements: - **Profile 5** was designed for **streaming** - smaller file sizes, single-layer, requires DV-capable display - **Profile 7** was designed for **physical media** - dual-layer for maximum quality, with backwards compatibility to Blu-ray players - **Profile 8** is the **modern compromise** - single-layer like Profile 5, but with HDR10 fallback so non-DV devices can still play it The trade-off: more profiles = more compatibility headaches. --- ## Profile-by-Profile Compatibility ### Profile 5 (Single-layer, Display-led) **What it is:** A single video stream with embedded RPU (Reference Processing Unit) metadata. The display does all the tone mapping. There is no HDR10 base layer - the video looks washed out on non-DV displays. **Where you encounter it:** WEB-DL releases from Netflix, Disney+, Apple TV+, and other streaming services. **Direct Play compatibility:** | Client | Profile 5 | |---|---| | Apple TV 4K | Yes | | NVIDIA Shield TV Pro | Yes | | Fire TV Stick 4K Max | Yes | | Chromecast with Google TV 4K | Yes | | LG C-series OLED (built-in app) | Yes | | Roku Ultra (2022+) | Yes | | Modern Samsung TV (Tizen) | No (Samsung uses HDR10+, not DV) | | Jellyfin Media Player on PC | No (falls back to HDR10 or SDR) | | Web browser | No | **The catch:** Profile 5 has no HDR10 fallback. On a non-DV display, the file looks gray and washed out. For shared servers, this is a problem - one user with an Apple TV is fine, another user on a Samsung TV gets ruined picture. ### Profile 7 (Dual-layer, Blu-ray standard) **What it is:** Two video streams in one MKV file - a base HDR10 layer (BL) plus a Dolby Vision enhancement layer (EL) and metadata (RPU). Devices that don't support DV play just the HDR10 base layer. Devices that do support DV combine both layers for full DV. There are two sub-variants: - **Profile 7 FEL** (Full Enhancement Layer) - maximum quality, larger files - **Profile 7 MEL** (Minimal Enhancement Layer) - quality close to HDR10, much smaller EL **Where you encounter it:** Untouched UHD Blu-ray remuxes. **Direct Play compatibility:** | Client | Profile 7 FEL | Profile 7 MEL | |---|---|---| | Apple TV 4K | Falls back to HDR10 | Falls back to HDR10 | | NVIDIA Shield TV | Falls back to HDR10 | Falls back to HDR10 | | Fire TV Stick 4K Max | Falls back to HDR10 | Falls back to HDR10 | | **Ugoos AM6B+ (CoreELEC)** | Yes (full DV) | Yes (full DV) | | **Vero V (OSMC, Kodi)** | Yes (LED only) | Yes (LED only) | | Mini PC + Kodi (with patches) | Partial | Partial | | Samsung / LG (built-in app) | Falls back to HDR10 | Falls back to HDR10 | **The catch:** **Almost no consumer streaming device supports Profile 7 in full DV.** Even the NVIDIA Shield, the gold standard for Android TV, falls back to HDR10. The only consumer devices that natively decode Profile 7 are the Ugoos AM6B+ with CoreELEC and the Vero V running OSMC. For most self-hosters, Profile 7 means "I have the HDR10 layer, but I'm not getting full Dolby Vision." ### Profile 8 (Single-layer with HDR10 fallback) **What it is:** Single-layer video like Profile 5, but with an HDR10 base that ensures non-DV devices get correct HDR10 instead of washed-out SDR. This is the **best compatibility profile** for self-hosted libraries. Sub-variants: - **Profile 8.1** - HDR10 fallback (most common) - **Profile 8.4** - HLG fallback (broadcast/sports) **Direct Play compatibility:** | Client | Profile 8 | |---|---| | Apple TV 4K | Yes | | NVIDIA Shield TV | Yes | | Fire TV Stick 4K Max | Yes | | Chromecast with Google TV 4K | Yes | | LG OLED (built-in) | Yes | | Roku Ultra (2022+) | Yes | | Samsung TV | Plays as HDR10 | | Jellyfin Media Player on PC | Plays as HDR10 | | Web browser | Plays as HDR10 | **The win:** Even on devices that can't decode Dolby Vision, Profile 8 plays correctly as HDR10. No washed-out colors. No transcoding required. For shared self-hosted servers in 2026, **Profile 8 is the recommended target format.** --- ## How to Identify the Profile of Your Files Use **MediaInfo** (free, available on all platforms): 1. Open the MKV/MP4 file in MediaInfo 2. Look at the video stream 3. Find the line: `HDR format` You will see something like: ``` HDR format: Dolby Vision, Version 1.0, Profile 8.1, dvhe.08.06, BL+RPU ``` The key fields: - **Profile 5** → Display-led, no HDR10 base - **Profile 7** → Look for "BL+EL+RPU" - dual-layer - **Profile 8** → Look for "BL+RPU" - single-layer with HDR10 base You can also use `dovi_tool info input.mkv` from the command line for detailed analysis. --- ## Converting Profile 7 to Profile 8 If you have a Profile 7 Blu-ray remux and want it to Direct Play on an Apple TV or Shield, you can convert to Profile 8 using `dovi_tool`: ```bash # Extract video stream mkvextract input.mkv tracks 0:video.hevc # Convert Profile 7 to Profile 8.1 dovi_tool -m 2 convert video.hevc -o video_p8.hevc # Remux back into MKV (preserving audio and subtitles) mkvmerge -o output.mkv video_p8.hevc audio.dts subs.srt ``` **Trade-off:** You lose the FEL enhancement layer (the highest-fidelity DV data). The result is "Profile 8 from Profile 7 BL" which is visually equivalent to Profile 8.1 but slightly below true FEL quality. For most viewers on consumer displays, the difference is invisible. --- ## What Jellyfin Does With Each Profile Jellyfin's role is to deliver the file to the client. It does not understand DV profiles - it just passes the bytes through. Whether the file plays correctly depends entirely on the client. ### What this means in practice | Scenario | Result | |---|---| | Profile 5 file → Apple TV (Direct Play) | Full DV | | Profile 5 file → Samsung TV | Washed-out picture (no HDR10 fallback) | | Profile 7 file → Apple TV | HDR10 (DV layer ignored) | | Profile 7 file → Ugoos AM6B+ | Full DV with FEL | | Profile 8 file → Any DV display | Full DV | | Profile 8 file → Non-DV display | HDR10 fallback | | Any DV file → Web browser | Forced transcode (washed-out unless tone-mapped) | ### Tone mapping HDR to SDR If the client cannot display HDR at all (web browser, old phone), Jellyfin's transcoding pipeline can tone-map HDR to SDR. This requires: - Hardware tone mapping enabled (Dashboard → Playback → Transcoding) - A GPU that supports it (Intel 11th Gen+, NVIDIA RTX, modern AMD) Without hardware tone mapping, software tone mapping is too slow for real-time playback. The result is washed-out colors or stuttering. --- ## Best Practices for a Mixed-Device Server If you serve users with different devices (Apple TV, Samsung TV, Fire TV, browsers), here's the strategy: 1. **Convert all Profile 7 sources to Profile 8.1** - widest compatibility, plays as HDR10 on non-DV devices 2. **Keep Profile 5 streaming sources as-is** - Profile 5 works on all major streaming devices 3. **Avoid storing Profile 7 long-term** unless you have a Ugoos AM6B+ or Vero V 4. **Enable hardware tone mapping** for users on browsers or older devices 5. **Document which content is DV** in your library tags (use Bazarr or Kometa overlays) For a single-user server with an Apple TV or Shield, this matters less. For a shared server with diverse devices, Profile 8 standardization is worth the conversion effort. --- ## Common Dolby Vision Issues in Jellyfin | Symptom | Cause | Fix | |---|---|---| | Washed-out / gray picture | Profile 5 on non-DV display | Convert to Profile 8 or upgrade display | | HDR10 instead of DV on Apple TV | File is Profile 7 | Convert to Profile 8 | | DV plays as SDR on Samsung | Samsung does not support DV | Use HDR10+ source instead | | Constant transcoding for DV files | Browser client | Use Jellyfin Media Player or a TV app | | Audio/video desync after DV | Tone mapping latency | Enable hardware tone mapping | | DV badge missing in Jellyfin UI | Metadata not detected | Refresh metadata, check MediaInfo | --- ## Profile Quick Reference When in doubt: - **Streaming source (WEB-DL)**: Profile 5 - works on streaming devices, fails on Samsung - **Blu-ray remux (untouched)**: Profile 7 - falls back to HDR10 on most devices - **Re-encoded for compatibility**: Profile 8 - the recommended target - **Apple ecosystem only**: Profile 4 - rare, ignore for shared servers For shared self-hosted libraries, **Profile 8 is the safest target** because it provides full DV on capable devices and HDR10 fallback on everything else. --- ## FAQ **Does Jellyfin support Dolby Vision?** Jellyfin passes DV files through to clients without modification. Whether DV is preserved depends on the client device's hardware and software support. **Can I tell which DV profile is best?** For self-hosted libraries with mixed devices: Profile 8.1. For maximum quality with a Ugoos AM6B+ or Vero V: Profile 7 FEL. **Why does my Profile 7 file play as HDR10 on the Shield?** The NVIDIA Shield does not support Profile 7. It plays the HDR10 base layer and ignores the DV enhancement layer. To get full DV, convert the file to Profile 8. **Can I play Profile 5 on a Samsung TV?** Not properly - Samsung does not support Dolby Vision (Samsung uses HDR10+ instead). Profile 5 plays without HDR metadata, resulting in a washed-out picture. You need Profile 8 or HDR10+ source content for Samsung TVs. **Does Plex handle Dolby Vision better than Jellyfin?** No. Both servers pass the file through identically. The difference is the client - Apple TV with Infuse handles DV best regardless of which server is hosting. **Can I convert Profile 7 to Profile 8 without quality loss?** You preserve the HDR10 base layer perfectly. You lose the Dolby Vision enhancement layer (FEL). For most viewers, the visual difference is undetectable on consumer displays. **Will the JellyWatch Watch Party feature work with DV content?** JellyWatch monitors sessions, including DV streams. Group watching uses Jellyfin's native SyncPlay - whether DV plays correctly depends on each participant's device. --- > **Tracking your DV streams? Verify Direct Play in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see the exact codec, profile, and playback method for every active session on your Jellyfin server. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## The Complete Jellyfin Dashboard Guide: Every Admin Setting Explained (2026) URL: https://jellywatch.app/blog/jellyfin-dashboard-complete-admin-guide-every-setting-2026 Published: 2026-06-03T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, dashboard, admin, settings, guide, configuration, scheduled-tasks, networking, 2026 # The Complete Jellyfin Dashboard Guide: Every Admin Setting Explained (2026) The Jellyfin dashboard is where everything happens - users, libraries, plugins, transcoding, scheduled tasks, networking, security. For a new admin, it can feel overwhelming. For an experienced admin, half the settings are still mysteries that nobody documents. This guide is the comprehensive reference: what every dashboard section does, which settings actually matter, and how to configure each one for a real-world setup. --- ## How to Access the Dashboard The dashboard is **only accessible to administrator accounts**. Regular users will not see it. 1. Log into Jellyfin via web browser 2. Click your **avatar** in the top-right 3. Select **Dashboard** Direct URL: `http://your-server:8096/web/index.html#!/dashboard.html` If "Dashboard" does not appear, the user account is not an administrator. Check Dashboard → Users on another admin account to grant rights. --- ## Dashboard Section 1: Server The landing page when you open the dashboard. This is your overview screen. ### What it shows - **Active sessions** - who is currently streaming - **Server CPU usage** - real-time graph - **System info** - Jellyfin version, OS, architecture - **Recently logged events** - last 10 activity log entries - **Server uptime** ### Pro tip: monitor in real time from your phone The dashboard updates every few seconds when open. For mobile monitoring, **JellyWatch** delivers the same data as a native Android app with push notifications - more practical than keeping a browser tab open. --- ## Dashboard Section 2: Libraries This is where you define the content Jellyfin scans and serves. ### Adding a library 1. Click **Add Media Library** 2. Choose content type: Movies, TV Shows, Music, Books, Photos, Home Videos, Mixed 3. Add folder paths (must be accessible to the Jellyfin process) 4. Configure metadata providers and image fetchers 5. Save ### Critical library settings | Setting | Recommendation | Why | |---|---|---| | **Real-time monitoring** | Off (or library-specific) | Causes constant scanning; rely on Radarr/Sonarr Connect instead | | **Save artwork into media folders** | Off (default) | Keeps your media folders clean | | **Save metadata as NFO** | Optional | Useful for Plex/Emby cross-compatibility | | **Extract chapter images** | Off | Heavy CPU task, rarely worth it | | **Generate Trickplay images** | On (overnight) | Improves seek bar UX significantly | | **Enable advanced subtitle search** | On (if using Bazarr) | Better matching | ### Metadata language Set your preferred metadata language per library. For multi-language households, the user-level language preference overrides this. --- ## Dashboard Section 3: Users User management is more granular in Jellyfin than in Plex or Emby. ### Per-user permissions worth knowing - **Allow remote connections** - off for kids accounts, on for adults - **Allow library deletion** - never on for non-admins - **Allow downloads** - off for shared family servers (saves bandwidth) - **Allow Live TV access** - per-user - **Allow management of own library access** - off (admins should control this) - **Maximum parental rating** - PG, PG-13, etc. - **Block unrated** - on for kids, off for adults - **Allow login with name** - prevents auto-fill of admin usernames ### Library access per user For each user you can specify which libraries they see. Common pattern: | User type | Movies | Kids Movies | TV | 4K | Adult | |---|---|---|---|---|---| | Admin | Yes | Yes | Yes | Yes | Yes | | Partner | Yes | Yes | Yes | Yes | No | | Kids | No | Yes | No | No | No | | Guest | Yes | No | Yes | No | No | ### Access schedules Per-user time-based access. Useful for kids accounts: - **Weekdays:** 16:00 - 20:00 - **Weekends:** 08:00 - 21:00 - **Outside these hours:** account cannot stream This is server-side enforced - works across all clients. --- ## Dashboard Section 4: Playback The most important dashboard section for performance. ### Transcoding This is where you configure hardware acceleration. Setting this correctly is the difference between 100% CPU and 5% CPU during a 4K transcode. **Hardware acceleration**: choose your GPU type - Intel QSV (any Intel CPU with iGPU) - NVIDIA NVENC (any NVIDIA GPU) - AMD AMF (modern AMD GPUs) - VAAPI (Linux generic) - Apple VideoToolbox (Mac builds) **Codecs to enable**: H.264, HEVC, VP9, AV1 decode (depending on GPU support) **Hardware tone mapping**: enable on supported GPUs (Intel 11th Gen+, NVIDIA RTX, modern AMD) for HDR-to-SDR conversion **Allow encoding in HEVC format**: enable to allow transcoding to H.265 (saves bandwidth for remote users) **Transcoding temporary path**: point to a fast SSD or tmpfs - transcoding does heavy disk I/O ### Stream limits - **Max simultaneous transcodes** - set based on your hardware (3-4 for Intel N100, 8+ for RTX 3060) - **Max simultaneous remote streams per user** - useful for shared servers ### Direct play settings - **Default audio language** - your language code (en, fr, de) - **Default subtitle mode** - "None" or "Always" depending on preference - **Burn subtitles** - leave at default (Auto) --- ## Dashboard Section 5: Plugins Where the Jellyfin ecosystem comes alive. ### Catalog tab Browse and install plugins from configured repositories. The default repository contains official plugins (Trakt, OpenSubtitles, Webhook, etc.). ### Repositories tab Add custom repositories for community plugins. Common ones: - **Awesome Jellyfin Catalog** - curated list with Skin Manager, Intro Skipper, more - **Plugin-specific repos** - many plugins distribute their own manifest URLs ### My Plugins tab Installed plugins. Click any to access settings or uninstall. ### Recommended plugin stack | Plugin | Why | |---|---| | Intro Skipper | Skip TV intros automatically | | Trakt | Watch history backup and sync | | OpenSubtitles | Automatic subtitle downloads | | Webhook | Notification integrations (Discord, Ntfy) | | Skin Manager | Easy theme installation | | TMDB Box Sets | Auto-create movie collections | | Playback Reporting | Per-user statistics | --- ## Dashboard Section 6: Scheduled Tasks The hidden performance setting. Mismanaged scheduled tasks are responsible for most "Jellyfin is slow at random times" complaints. ### Critical scheduled tasks | Task | Default schedule | Recommendation | |---|---|---| | Scan media library | Every 12 hours | Manual only (let Radarr/Sonarr trigger) | | Refresh metadata | Daily | Weekly off-peak | | Generate Trickplay | When library scans | Schedule overnight | | Detect intros | When library scans | Schedule overnight (3 AM) | | Database optimization | Weekly | Keep default | | Clean activity log | Default | Set 30-day retention | | Backup | Default | Weekly to external storage | ### How to reschedule a task 1. Click the task name 2. Triggers tab → Add Trigger 3. Choose: Daily, Weekly, Time of day, or Interval 4. Save **Pro tip:** Schedule heavy tasks (Trickplay, Intro detection) sequentially overnight rather than overlapping. This avoids competing for CPU during peak streaming hours. --- ## Dashboard Section 7: Networking The most security-relevant section. ### Server addresses - **Local network address** - your LAN IP (192.168.x.x) - **Published server URL** - your public domain if remote access is configured ### Remote access - **Allow remote connections** - on if exposing the server externally - **Bind to network interface** - leave at default - **Public HTTP port number** - 8096 (default, behind reverse proxy) - **Public HTTPS port number** - 8920 (rarely used; reverse proxy handles HTTPS) ### Known proxies **This is critical for reverse proxy users.** If your server is behind Caddy, Nginx, Traefik, or Cloudflare, you must add their IP ranges here. Otherwise, all logs will show the proxy IP instead of the real client IP. For Cloudflare: ``` 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 ``` For local reverse proxy (Caddy on same Docker network): ``` 172.17.0.0/16 ``` --- ## Dashboard Section 8: API Keys Generate API keys for external integrations. ### When to create an API key - **JellyWatch** - to monitor your server from Android - **Radarr / Sonarr** - to trigger library refresh after import - **Jellyseerr** - to authenticate users - **Custom scripts** - for automation ### Best practice - One API key per integration (so you can revoke individually) - Name keys descriptively (`jellywatch-mobile`, `radarr-import`) - Rotate keys quarterly --- ## Dashboard Section 9: Activity Log Logs everything that happens on the server: logins, playback events, library changes, errors. ### What to look for - **Authentication failures** - signs of brute-force attempts - **Failed playback errors** - codec or transcode issues - **Plugin errors** - usually after updates - **Library scan results** - confirms files were imported correctly ### Activity log retention By default, the log grows indefinitely. The "Clean Activity Log" scheduled task can prune old entries. Set retention to 30 days for most servers. --- ## Dashboard Section 10: Server Logs Raw application logs from Jellyfin itself. Different from the activity log - these are technical (FFmpeg output, plugin stack traces, database queries). ### When you need server logs - Diagnosing transcoding failures - Plugin crashes - Database issues after upgrades - FFmpeg errors Click any log file to view inline. Filter by date. --- ## Dashboard Section 11: Notifications (with Webhook plugin) When the Webhook plugin is installed, this section lets you configure event-based notifications: - New media added - Playback started / stopped - Authentication failures - Server lifecycle events Targets can be Discord webhooks, Telegram bots, Ntfy/Gotify endpoints, or any HTTP webhook. --- ## Dashboard Section 12: Live TV Configuration for IPTV and DVR. Even without Live TV use, glance at this section to confirm you have not accidentally enabled something. - **TV Sources** - your M3U or HDHomeRun tuners - **TV Guide Data Providers** - XMLTV or Schedules Direct - **DVR** - recording path, padding, retention --- ## Dashboard Section 13: General Miscellaneous server settings. ### Display - **Custom CSS code** - paste theme CSS here (the JellyFlix or Ultrachromic equivalents) - **Server name** - shown to clients - **Preferred metadata language** - **Cache path** - rarely changed ### DLNA - **Enable DLNA server** - off for security unless specifically needed ### Port mapping - **Enable automatic port mapping** - off (use manual port forwarding or reverse proxy instead) --- ## Dashboard Section 14: SSL Certificate Built-in HTTPS. Most self-hosters skip this and use a reverse proxy (Caddy, Nginx Proxy Manager) instead - reverse proxy SSL is easier to manage and provides better certificate automation. If you do use built-in SSL, point this section to a PFX certificate file generated from Let's Encrypt or another CA. --- ## Dashboard Section 15: Quick Connect Quick Connect lets users authenticate from a TV by typing a 6-digit code generated on a phone. Eliminates typing passwords with a remote. - **Enable Quick Connect** - on (best UX for Apple TV / Android TV / Smart TV setups) - Codes expire after 10 minutes by default --- ## Common Dashboard Mistakes | Mistake | Consequence | Fix | |---|---|---| | Real-time library monitoring on | Constant CPU spikes | Off, rely on Radarr/Sonarr Connect | | No reverse proxy IPs in Known Proxies | All client IPs show as proxy | Add Cloudflare/local ranges | | Hardware acceleration disabled | 4K transcodes peg CPU | Enable QSV/NVENC | | Activity log never cleaned | Database bloats over months | Schedule cleanup | | All scheduled tasks at default times | Competing CPU usage | Stagger overnight | | API keys never rotated | Compromised key = persistent access | Quarterly rotation | | DLNA enabled | Security exposure on LAN | Disable unless needed | | Public HTTP port forwarded directly | Unencrypted, no rate limiting | Use reverse proxy | --- ## Mobile Dashboard Alternative: JellyWatch The web dashboard is comprehensive but built for desktop. For day-to-day monitoring, a mobile-native interface is faster: - Real-time session monitoring - Push notifications for new sessions, failed logins, server offline - CPU and storage alerts - One-tap session management - Arr stack integration (Radarr, Sonarr, Jellyseerr) This complements the web dashboard rather than replacing it. Use the dashboard for configuration, JellyWatch for monitoring. --- ## FAQ **How do I become an administrator?** The first user created during setup is automatically an admin. To grant admin rights to another user, log in as the existing admin and toggle "Allow this user to manage the server" in their user profile. **Can I have multiple admins?** Yes. Multiple users can have admin permissions simultaneously. **Where is the dashboard configuration stored?** In `/config/system.xml` (Docker) or equivalent path on native installs. Back this up regularly. **Why is the dashboard slow to load?** Usually the activity log table is too large. Run "Optimize Database" and "Clean Activity Log" scheduled tasks. **Can I customize what users see in their dashboard?** Non-admin users do not see the dashboard at all. They see the home screen, which is configured per-user under their account preferences. **Is there a mobile app for the dashboard?** Not officially. JellyWatch is the dedicated Android admin companion - it provides session monitoring, user management, plugin overview, and Arr stack integration. --- > **Manage your Jellyfin dashboard from anywhere.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time sessions, server health, push notifications, and Arr stack management on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same admin experience for Emby servers.* --- ## Best Plex Alternatives in 2026: 8 Self-Hosted Options Compared URL: https://jellywatch.app/blog/best-plex-alternatives-2026-jellyfin-emby-immich-comparison Published: 2026-06-03T11:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: plex, alternatives, jellyfin, emby, immich, navidrome, kavita, audiobookshelf, comparison, self-hosting, 2026 # Best Plex Alternatives in 2026: 8 Self-Hosted Options Compared Plex used to be the default answer for self-hosted media. In 2026, that is no longer the case. The Lifetime Plex Pass jumped to $749, remote streaming was paywalled across most TV platforms, and ads now appear in the free tier. The community has responded by leaving in massive numbers - Jellyfin alone reached 51% market share among self-hosters last year. If you are looking to leave Plex (or simply evaluating options before committing), this guide covers every serious alternative in 2026 - what each one does well, where it falls short, and which is right for your setup. --- ## Quick Verdict | If you want... | Use this | |---|---| | The best free, open-source Plex replacement | **Jellyfin** | | A polished Plex-like experience with paid support | **Emby** | | A Google Photos alternative for memories | **Immich** | | A music-only server with Subsonic clients | **Navidrome** | | Comics, manga, and ebooks | **Kavita** or **Komga** | | Audiobooks and podcasts | **Audiobookshelf** | | Online streaming aggregation, not your own files | **Stremio** | | A media player on a single device, not a server | **Kodi** | The honest truth: **most people leaving Plex want Jellyfin.** It does everything Plex does, free, open source, no account, no ads. The other options on this list are specialized tools that complement Jellyfin rather than replace it. --- ## 1. Jellyfin - The Default Plex Replacement **Best for:** Anyone leaving Plex who wants a like-for-like replacement. Jellyfin forked from Emby in 2018 to remain fully open source. In 2026 it is the dominant self-hosted media server, with 70+ community clients across every platform from Apple TV to Nintendo Switch. ### What Jellyfin does well - **100% free, forever** - no Plex Pass equivalent - **No account required** - your server is fully local, no cloud dependency - **No ads** - unlike Plex's free tier - **Hardware transcoding free** - Intel QSV, NVIDIA NVENC, AMD AMF all work without paying - **Live TV / DVR free** - Plex Pass charges for this - **Massive plugin ecosystem** - Intro Skipper, Jellyseerr integration, Trakt sync, etc. - **Docker-first** - one of the easiest deployments in self-hosting ### What Jellyfin does worse than Plex - **Less polished UI out of the box** - though community themes (JellyFlix, Ultrachromic) fix this - **No built-in remote relay** - you need a reverse proxy, Cloudflare Tunnel, or Tailscale - **No "Discover" / Watchlist features** - Jellyfin shows your content only - **Smaller official mobile app polish** - though Findroid and Swiftfin (community) match or exceed Plex's apps ### Migration path from Plex Direct: install Jellyfin alongside Plex, point at the same media folders, use JellyPlex-Watched or Trakt to transfer watch history. Files stay where they are. **Verdict:** If you are leaving Plex in 2026, Jellyfin is almost certainly your answer. Free, open, mature, and the migration path is well-documented. --- ## 2. Emby - The Commercial Middle Ground **Best for:** Users who want a Plex-like polished experience with official paid support. Emby is what Jellyfin forked from. It has a paid team behind it, official support, and a more curated plugin ecosystem. Emby Premiere costs ~$119 lifetime in 2026 - significantly cheaper than the new $749 Plex Lifetime Pass. ### What Emby does well - **Polished UI** - more cohesive than Jellyfin out of the box - **Official support** - paid team with response SLAs - **Stable plugins** - smaller ecosystem but better tested - **Dolby Vision handling** - generally better than Jellyfin in tone-mapping quality on certain Linux setups - **Cheaper than Plex** - $119 lifetime vs $749 lifetime ### What Emby does worse than Jellyfin - **Costs money** - Premiere required for hardware transcoding, full mobile app, Live TV - **Account required** - Emby Connect for activation - **Smaller community** - fewer plugins, fewer clients - **Closed-source** - cannot self-audit or fork **Verdict:** Choose Emby if you want commercial backing and don't mind paying $119. For most self-hosters, Jellyfin's free tier provides feature parity at $0. --- ## 3. Immich - The Google Photos Replacement **Best for:** Photo and home video archiving, not movies/TV. Immich is not a Plex alternative for video streaming - it is an alternative for the **photo backup** part of Plex. If you used Plex to backup phone photos to your home server, Immich does it better. ### What Immich does well - **Mobile auto-upload** from Android and iOS - **AI face recognition** - completely local, privacy-first - **Object and scene search** - find photos by content - **Memories and rediscovery** - "On this day" features - **Excellent mobile app** - on par with Google Photos ### What Immich does not do - **Stream movies or TV shows** - it is photos and home videos only - **Run on a Raspberry Pi well** - heavy on RAM/CPU due to ML models - **Replace Jellyfin** - they complement each other **Verdict:** Run Immich for photos AND Jellyfin for video. They use different storage paths and serve different needs. This is what most self-hosters do in 2026. --- ## 4. Navidrome - The Spotify Replacement **Best for:** Users with large local music libraries who want a dedicated music server. Navidrome is a Subsonic-compatible music server. It is purpose-built for music: scrobbling, smart playlists, gapless playback, and integration with the wide Subsonic mobile client ecosystem (Symfonium, DSub, play:Sub). ### What Navidrome does well - **Lightweight** - runs comfortably on a Raspberry Pi - **Subsonic API compatibility** - dozens of mobile clients work out of the box - **Built-in scrobbling** - Last.fm and ListenBrainz native - **Smart playlists** - rule-based dynamic playlists - **Better music UX than Jellyfin** - dedicated music interface, no compromise ### What Navidrome doesn't do - **No video** - music only - **No request system** - Jellyseerr does not integrate with it **Verdict:** Run alongside Jellyfin if music is a significant part of your library. Many self-hosters run both pointing at the same music folder, using Jellyfin's web UI for video and Symfonium + Navidrome for mobile music. --- ## 5. Kavita and Komga - Comics, Manga, and Ebooks **Best for:** Users with digital comic, manga, or ebook libraries. Jellyfin's book support is basic. For a serious reading library, Kavita or Komga are dramatically better. ### Kavita vs Komga at a glance | Feature | Kavita | Komga | |---|---|---| | Comics + Manga | Yes | Yes | | EPUB / ebooks | Yes | No (comics only) | | AniList / MAL metadata | Yes | No | | Tachiyomi / Mihon support | Limited | Excellent | | RAM usage | ~100 MB | ~80 MB | **Kavita** is the all-in-one choice (comics + manga + books). **Komga** is leaner and integrates better with the Tachiyomi mobile reader ecosystem. ### What they don't do - **Not video servers** - comics/books only - **Run alongside Jellyfin** - share the same Docker host **Verdict:** If you read digital books or comics, run Kavita or Komga. They are not Plex alternatives - they fill a gap Plex never properly addressed. --- ## 6. Audiobookshelf - The Audible Replacement **Best for:** Audiobook and podcast collections. Audiobookshelf is a dedicated audiobook and podcast server with native progress sync, chapter navigation, and a polished mobile app. ### What Audiobookshelf does well - **M4B chapter support** - properly handles audiobook chapters - **Per-user progress sync** across devices - **Podcast RSS support** - subscribe and download episodes - **Dedicated mobile app** - Android and iOS - **Lightweight** - runs anywhere ### What it doesn't do - **No video, no music** (well-suited audiobooks) - **Replace Jellyfin** - complementary, not competing **Verdict:** If you have an audiobook collection larger than 50 titles, Audiobookshelf is the right tool. Jellyfin can play audiobooks but lacks the dedicated UX. --- ## 7. Stremio - The "I Don't Want to Host Files" Option **Best for:** Users who want streaming aggregation without running a media server. Stremio is fundamentally different from everything else on this list. It does not host your files - it streams content from online sources via a community addon ecosystem (Cinemeta, Torrentio, public IPTV addons). ### What Stremio does well - **Zero hosting** - no server, no storage, no maintenance - **Massive content via addons** - movies, TV, anime, sports, IPTV - **Cross-platform clients** - Android, iOS, Apple TV, Android TV, Web - **Free and open source** ### What Stremio is not - **Not a self-hosted server** - your media is not stored - **Not legally clean depending on addons** - public torrent addons may stream copyrighted content - **Not offline** - requires internet for everything ### Bridging Stremio and Jellyfin: Gelato The **Gelato** plugin for Jellyfin imports Stremio addon catalogs into your Jellyfin library as STRM files. You get Stremio's catalog inside Jellyfin's UI without hosting anything. **Verdict:** Stremio is not a Plex alternative for users who want their own files. It is an alternative for users who do not want to host files. Different goal. --- ## 8. Kodi - The Player, Not a Server **Best for:** A single device acting as a home theater frontend. Kodi is a media player, not a server. It runs on one device and plays files from local storage, network shares, or via add-ons. People sometimes confuse Kodi with Plex/Jellyfin - they are different categories. ### What Kodi does well - **Best player engine** - libass subtitles, MPV, fine-grained audio config - **Massive add-on ecosystem** - including Jellyfin for Kodi (full library sync) - **Custom skins** - Estuary, Aeon Nox, others - **Runs on everything** - PC, Pi, Vero V, NVIDIA Shield, Fire TV ### What Kodi doesn't do - **No multi-device sync** without a backend (use Jellyfin for Kodi for that) - **No mobile app server** - Kodi on phone is the same as Kodi on desktop, not a remote client - **No web UI** - it's a TV-focused frontend **Verdict:** Run Kodi on your home theater PC alongside Jellyfin server. The Jellyfin for Kodi add-on syncs your full Jellyfin library into Kodi's interface. Best of both worlds. --- ## What About Streaming Services? Plex Pass replacements like Sling, Pluto TV, and Tubi are not Plex alternatives - they are different categories entirely (live TV / ad-supported VOD). If your Plex use was specifically for the free streaming content, **Jellyfin's Live TV with M3U sources** (Pluto TV, Samsung TV Plus, IPTV-Org playlists) covers most of that ground. --- ## The Real-World Self-Hoster Stack in 2026 Most serious self-hosters do not pick one alternative - they run a stack of specialized tools: ``` Jellyfin → Movies, TV shows, music, live TV Immich → Photo backup and AI search Navidrome → Music with Subsonic clients Audiobookshelf → Audiobooks and podcasts Kavita → Comics, manga, ebooks ``` All five run on a single Intel N100 mini PC or homelab server. Each does one thing extremely well. Together they replace not just Plex but Google Photos, Spotify, Audible, and Comixology. --- ## Migration Checklist: Leaving Plex If you are leaving Plex this weekend, here is the order: 1. **Choose your replacement(s)** - Jellyfin for most, plus specialized tools for photos/music/books 2. **Run Plex and the new server in parallel** - same media folders, different ports 3. **Transfer watch history** via Trakt or JellyPlex-Watched 4. **Configure your clients** - install Jellyfin/Findroid/Swiftfin on every device 5. **Set up remote access** - Cloudflare Tunnel or Tailscale (you no longer have Plex's relay) 6. **Verify everything works** for two weeks before decommissioning Plex 7. **Cancel Plex Pass** if you have one --- ## FAQ **Is Jellyfin really free forever?** Yes. Jellyfin is open source under the GPL. There is no premium tier and no plan to add one. **Can I run Plex and Jellyfin at the same time?** Yes. Different ports (32400 vs 8096) and they can read the same media files in parallel. Recommended during migration. **Will my media files be affected?** No. Self-hosted media servers read your files in read-only mode. Nothing is moved or modified. **What about Plex Pass features I already paid for?** Your Plex Pass remains valid for Plex. You can keep using it indefinitely. Most people who migrate simply stop renewing if they are on a recurring plan. **Is Emby's $119 lifetime worth it over free Jellyfin?** For most self-hosters, no. Jellyfin offers feature parity. Emby is worth paying for if you specifically want commercial support. **Which Plex alternative has the best mobile app?** Jellyfin (via Findroid on Android, Swiftfin on iOS, or Infuse on Apple TV) is on par with Plex's mobile experience. Symfonium for Navidrome is exceptional for music. --- > **Migrated to Jellyfin? Monitor your new server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time sessions, transcoding diagnostics, and Arr stack management for Jellyfin admins on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring for Emby servers.* --- ## Jellyfin on NVIDIA Shield TV in 2026: TrueHD, Dolby Vision & Direct Play Setup Guide URL: https://jellywatch.app/blog/jellyfin-nvidia-shield-tv-setup-truehd-dolby-vision-2026 Published: 2026-06-03T10:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, nvidia-shield, android-tv, truehd, dolby-vision, direct-play, audio-passthrough, setup, guide, 2026 # Jellyfin on NVIDIA Shield TV in 2026: TrueHD, Dolby Vision & Direct Play Setup Guide The NVIDIA Shield TV (Pro and Tube) is widely considered the best Android TV streaming device for self-hosted media servers in 2026. While the Apple TV 4K wins on UI polish and the Onn 4K Pro wins on price, the Shield wins on something most other devices can't match: **lossless audio bitstream passthrough**. TrueHD, TrueHD Atmos, DTS-HD MA, DTS:X - the Shield passes them all to your AV receiver untouched. Combined with hardware decode for H.264, H.265, VP9, and AV1, plus an 8-year-old Tegra X1+ chip that still gets driver updates, the Shield is a genuine "set it and forget it" Jellyfin client. This guide covers everything: installing the official Jellyfin app, configuring Direct Play, enabling lossless audio passthrough, Dolby Vision setup, and the optimizations that separate a working Shield from a perfect one. --- ## Why the Shield Is the Top Android TV Pick for Jellyfin | Feature | Shield Pro (2019) | Apple TV 4K (3rd gen) | Fire TV Stick 4K Max | Onn 4K Pro | |---|---|---|---|---| | **Price** | ~$200 | ~$129 | ~$60 | ~$50 | | **TrueHD bitstream** | Yes | No | No | No | | **DTS-HD MA bitstream** | Yes | No | No | No | | **DTS:X bitstream** | Yes | No | No | No | | **Dolby Atmos (DD+)** | Yes | Yes | Yes | Yes | | **Dolby Vision** | Yes (P5/P8) | Yes (all profiles) | Yes (P5/P8) | Yes (P5/P8) | | **HDR10+** | No | Yes | Yes | Yes | | **AV1 decode** | Yes | Partial | Yes | Yes | | **Native Jellyfin app** | Yes | Via Swiftfin/Infuse | Yes | Yes | The Shield is the only mainstream streaming device that bitstreams **lossless audio**. For users with an AV receiver and a 4K Blu-ray remux library, this is non-negotiable - everything else decodes the audio internally and outputs lossy or LPCM. The trade-off: the Shield does not support HDR10+. If your library is heavy on HDR10+ titles (mostly Samsung-led releases), the Apple TV or Fire TV is a better fit. --- ## Shield Pro vs Shield Tube | Spec | Shield Pro | Shield Tube | |---|---|---| | RAM | 3 GB | 2 GB | | Storage | 16 GB | 8 GB (microSD expandable) | | USB ports | 2x USB 3.0 | None | | Plex Media Server | Yes | No | | Form factor | Larger box | Tube | | Price | ~$200 | ~$150 | **For Jellyfin clients, both work identically.** Same chip, same codec support, same audio passthrough. The Pro is worth the extra $50 only if you want to plug in external storage or run a Plex server on it (which has no relevance for Jellyfin users). --- ## Step 1: Install the Jellyfin Android TV App The official Jellyfin app is available in the Play Store on the Shield: 1. From the Shield home screen, open the **Google Play Store** 2. Search for **Jellyfin** 3. Install **Jellyfin for Android TV** (the official app maintained by the Jellyfin team) 4. Launch the app and tap **Add Server** 5. Enter your server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 6. Log in with your credentials **Skip the official "Jellyfin Mobile" app** - it is not optimized for the 10-foot UI. The Android TV app is what you want. --- ## Step 2: Configure Audio Passthrough (The Critical Step) This is where most Shield owners leave performance on the table. Follow these steps exactly. ### Shield system audio settings 1. Shield Settings → **Device Preferences → Display & Sound → Advanced sound settings** 2. Set **Surround sound** to **Auto** (or manually enable each format your receiver supports) 3. Enable: **Dolby Digital, Dolby Digital Plus, Dolby TrueHD, Dolby Atmos, DTS, DTS-HD** > **Important:** "Auto" lets the Shield negotiate with your AV receiver via HDMI EDID. If your receiver supports a format, it gets passed through. If you set this to PCM, the Shield decodes everything internally and you lose lossless passthrough. ### Jellyfin app audio settings 1. Open Jellyfin app → tap your avatar → **Settings** 2. Navigate to **Playback** 3. Set: - **Audio output**: Auto - **Allowed audio codecs**: enable all (TrueHD, DTS-HD MA, EAC3, AC3, AAC) - **Enable Dolby Atmos passthrough**: On - **Enable DTS passthrough**: On ### Verify lossless passthrough is working Play a movie with a TrueHD Atmos track. Check your AV receiver display - it should show **"Dolby TrueHD"** or **"Dolby Atmos"**. If it shows "Multi-Channel PCM" or "Dolby Digital Plus", passthrough is not working - revisit the Shield audio settings. You can also verify in JellyWatch: the active session should show **Direct Play** with the TrueHD codec untouched. --- ## Step 3: Enable Match Content (Frame Rate and HDR) This is the second most important Shield setting. Shield Settings → **Device Preferences → Display & Sound → Display**: - **Match content frame rate**: On (Always) - **Match content dynamic range**: On **What this does:** When you play a 24fps movie, the Shield switches the HDMI output to 24fps automatically. When you play HDR10 content, it switches the TV to HDR10 mode. When you play SDR content, it switches back. Without this, you get judder on movies and incorrectly displayed HDR. --- ## Step 4: Force Direct Play in the Jellyfin App To prevent the Shield from triggering unnecessary transcodes: 1. Jellyfin app → Settings → **Playback** 2. **Max streaming bitrate**: Original / Maximum (no limit) 3. **Force playback at original quality**: Enabled 4. **Direct Play**: Enabled The Shield can Direct Play virtually everything - so do not let the app artificially throttle quality. ### What the Shield Direct Plays natively | Format | Direct Play | |---|---| | H.264 (any container) | Yes | | H.265 / HEVC Main 10 | Yes | | H.265 4K HDR10 | Yes | | H.265 4K Dolby Vision Profile 5 | Yes | | H.265 4K Dolby Vision Profile 8 | Yes | | AV1 (Tegra X1+ supports it) | Yes | | VP9 | Yes | | MPEG-2 | Yes | | TrueHD audio (with passthrough) | Yes (bitstream) | | DTS-HD MA / DTS:X | Yes (bitstream) | The Shield is the most format-permissive Jellyfin client available. If something is transcoding, it's almost always a configuration issue, not a hardware limitation. --- ## Step 5: Dolby Vision Setup The Shield supports Dolby Vision Profile 5 and Profile 8. It does NOT support Profile 7 (the dual-layer FEL profile found on some Blu-ray remuxes). ### Dolby Vision app settings 1. Shield Settings → **Display & Sound → Advanced display settings** 2. **Dolby Vision**: Enabled (Player-led) 3. **HDR mode**: HDR10 + Dolby Vision ### What works on Shield - Dolby Vision Profile 5 (single-layer, common on streaming services) - Dolby Vision Profile 8.1 (compatible with HDR10 fallback) - Dolby Vision Profile 8.4 (compatible with HLG fallback) ### What doesn't work - Dolby Vision Profile 7 (Blu-ray dual-layer FEL) - The Shield falls back to HDR10 for Profile 7 files For Profile 7 content, you need either an Ugoos AM6B+ with CoreELEC (the only consumer device with Profile 7 FEL support) or a player that can convert Profile 7 to Profile 8 on the fly (such as some custom Kodi builds). --- ## Step 6: Network Configuration for High-Bitrate Content A 4K Blu-ray remux can hit 80-100 Mbps sustained. Wi-Fi is unreliable at that bitrate. ### Use Ethernet Both Shield Pro and Tube have a Gigabit Ethernet port. Use it. Wi-Fi 5 (the Shield's wireless standard) maxes out at ~400 Mbps in real-world conditions and drops sharply with interference. ### Configure your network - Place your Jellyfin server and Shield on the **same subnet** (avoids cross-VLAN routing latency) - Set a **static IP** for the Shield in your router (optional but useful for monitoring) - Verify your switch is Gigabit (not Fast Ethernet) - check the port LED color For users without easy Ethernet access, a powerline adapter or MoCA bridge is a better choice than relying on Wi-Fi for 4K remux playback. --- ## Step 7: Optional - Kodi + Jellyfin for Kodi Add-on For users who want maximum control, the Shield runs Kodi excellently and the Jellyfin for Kodi add-on provides a richer interface than the official Jellyfin Android TV app. ### Why use Kodi on Shield - Better subtitle styling (libass) - More precise audio configuration - Library mode that syncs Jellyfin metadata into Kodi's database - Custom skins (Estuary, Aeon Nox, etc.) ### Setup 1. Install **Kodi** from the Play Store on the Shield 2. Install the **Jellyfin for Kodi** add-on from the Jellyfin repository 3. Configure server URL and credentials 4. Choose Library mode (full sync) or Add-on mode (browse on demand) The official Jellyfin Android TV app is simpler and works for 95% of users. Kodi is the power-user option. --- ## Common Shield + Jellyfin Issues | Problem | Cause | Fix | |---|---|---| | Audio plays as PCM, not TrueHD | Shield audio set to PCM | Settings → Sound → Auto | | 24fps content plays at 60fps | Match Content frame rate off | Enable in display settings | | Dolby Vision not detected | Wrong DV mode | Set to Player-led | | Buffering on 4K remux | Wi-Fi instead of Ethernet | Switch to Ethernet | | App crashes on launch | Outdated app version | Update from Play Store | | Subtitles cause transcode | PGS subtitle burn-in | Switch to SRT | | Random pauses during playback | Background apps consuming RAM | Restart Shield, close apps | --- ## How the Shield Compares to Other Setups for Jellyfin ### Shield vs Apple TV 4K - **Audio**: Shield wins (lossless passthrough vs decoded) - **UI**: Apple TV wins (more polished) - **HDR**: Apple TV wins (HDR10+, all DV profiles) - **App quality**: Apple TV wins (Infuse > Jellyfin Android TV app) - **Best for**: Audiophiles with AV receivers - Shield. Casual users with sound bars - Apple TV. ### Shield vs Mini PC A mini PC running Linux + Kodi can match the Shield on every front and adds support for Profile 7 Dolby Vision (with the right setup). But it requires more setup, more power, and lacks the Shield's polished Android TV experience. **Choose the Shield if** you want plug-and-play. **Choose a mini PC if** you want maximum format support and don't mind tinkering. ### Shield vs Vero V The Vero V (OSMC's Kodi-focused device) supports TrueHD, DTS bitstream, and adds Dolby Vision Profile 7 support that the Shield lacks. At ~$185 it's slightly cheaper than the Shield Pro. Trade-off: Vero V is Kodi-only (no Android TV apps), and runs OSMC instead of a mainstream OS. The Shield is more flexible if you also use streaming service apps. --- ## Will the Shield Get Replaced? NVIDIA has not released a new Shield TV since 2019. The Pro and Tube remain on sale in 2026 and continue to receive Android TV updates. There is no announced successor. Even seven years later, the Shield's combination of TrueHD/DTS passthrough, Dolby Vision support, and broad codec coverage means no other Android TV device matches it. For Jellyfin users with AV receivers, it remains the recommended pick. --- ## FAQ **Does the Shield support TrueHD Atmos passthrough?** Yes. The Shield bitstreams TrueHD with Atmos metadata to your AV receiver, where it decodes natively. This is the only major Android TV device that does so. **Can the Shield play 4K Blu-ray remuxes via Jellyfin?** Yes. With Ethernet and Direct Play enabled, the Shield handles 80+ Mbps remuxes without buffering. **Does the Shield support HDR10+?** No. The Shield supports HDR10 and Dolby Vision but not HDR10+. For HDR10+ content, your TV must handle HDR10 fallback, or you need an Apple TV / Fire TV instead. **Will the Shield Direct Play DTS:X?** Yes - it bitstreams DTS:X to compatible AV receivers, where the receiver decodes it natively. **Can I use the Shield as a Jellyfin server (like Plex Media Server)?** No - and this is a key difference from Plex. Plex offers a native Plex Media Server app pre-installed on the Shield Pro that runs in the background as an Android service - it scans your USB-attached media, manages metadata, and serves streams to other devices on your network. Many Plex users treat the Shield Pro as a server AND a client simultaneously. Jellyfin server is architecturally different: it is a .NET application that requires Linux, Windows, macOS, or FreeBSD. There is no Android build, no APK to sideload, and no plan to port the server to Android TV. The Shield is exclusively a Jellyfin **client** device. **If you want a combined Jellyfin server + living room player in one box**, your options are: 1. **Intel N100 Mini PC (~$130)** - run Jellyfin server in Docker + Kodi with Jellyfin for Kodi addon for TV playback. One device does both jobs. 2. **Shield Pro + separate server** - keep the Shield as your premium client and run Jellyfin server on a dedicated mini PC, NAS, or VPS elsewhere on your network. 3. **Stay on Plex for the server-on-Shield convenience** - if the "one box does everything" model is non-negotiable and you are willing to pay Plex Pass for it, the Shield Pro with Plex Media Server remains the only streaming device that acts as both server and player. **Does the Shield support AV1?** Yes. The Tegra X1+ has AV1 decode support via firmware updates. AV1 content Direct Plays natively. --- > **Streaming Jellyfin on a Shield? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see exactly when your Shield is Direct Playing or transcoding, and verify lossless audio passthrough is active. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Accessibility Guide 2026: Subtitles, Audio Description, SDH, and Inclusive Media Serving URL: https://jellywatch.app/blog/jellyfin-accessibility-guide-subtitles-audio-description-inclusive-2026 Published: 2026-06-02T11:21:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, accessibility, subtitles, audio-description, sdh, deaf, blind, inclusive, 2026 # Jellyfin Accessibility Guide 2026: Subtitles, Audio Description, and Inclusive Media Serving A media server should work for everyone. Not just people with perfect hearing and vision. Not just people who speak the primary language of your library. Not just people who can use a mouse. This guide covers how to make your Jellyfin server genuinely accessible to users with different needs: deaf and hard-of-hearing users, blind and low-vision users, users with motor disabilities, and multilingual households. --- ## Accessibility for Deaf and Hard-of-Hearing Users ### SDH Subtitles vs Regular Subtitles | Type | Content | Best for | |---|---|---| | **Regular subtitles** | Dialogue only | Non-native speakers | | **SDH (Subtitles for the Deaf and Hard-of-Hearing)** | Dialogue + sound effects + speaker identification | Deaf/HoH users | | **Closed Captions (CC)** | Same as SDH, historically US broadcast term | Deaf/HoH users | SDH subtitles include critical non-dialogue information: - [door slams] - [ominous music intensifies] - [whispers] I know what you did - JOHN: Where are you going? Regular subtitles only show the spoken words. For deaf users, this means missing half the story. ### Finding SDH Subtitles **Bazarr configuration for SDH:** 1. Settings > Subtitles > check "Also search for SDH/HI subtitles" 2. Set SDH as preferred when available 3. Bazarr downloads SDH versions when they exist, regular subtitles as fallback **Manual sources:** - OpenSubtitles (filter by "hearing impaired" flag) - Subscene (SDH versions marked) - Addic7ed (some SDH available) ### Configuring Default Subtitles for HoH Users For a user who always needs subtitles: 1. Dashboard > Users > [User] > Subtitle mode: **Always** 2. Preferred subtitle language: their language 3. This ensures subtitles display automatically on every video without the user needing to enable them each time --- ## Accessibility for Blind and Low-Vision Users ### Audio Description (AD) Tracks Audio Description is a separate audio track that narrates visual elements between dialogue: > "Sarah walks into the dimly lit room. She notices a photograph on the mantelpiece and picks it up, her expression changing from curiosity to shock." This allows blind users to follow the visual storytelling. ### Finding Audio Description Tracks AD tracks are less common than subtitles but increasingly available: - **Blu-ray rips** often include AD tracks (labeled "Audio Description" or "Descriptive Audio") - **Netflix originals** have AD tracks that can be preserved when downloading - **BBC content** frequently includes AD - **Disney+ originals** include AD When ripping Blu-rays with MakeMKV, ensure you select ALL audio tracks including the AD track. ### Organizing AD Tracks in Jellyfin Jellyfin displays all audio tracks embedded in the file. Label them clearly: - Track 1: English 5.1 (main audio) - Track 2: English 2.0 (stereo compatibility) - Track 3: English Audio Description Users select the AD track from the audio menu during playback. ### Setting AD as Default for Blind Users Currently, Jellyfin does not have a per-user "prefer audio description" setting. Workarounds: 1. Create a separate library with AD-only versions of files 2. Or educate the user to select the AD track (it persists per-show in some clients) 3. Feature request exists on the Jellyfin GitHub for native AD preference support --- ## Multi-Language Accessibility ### For Non-Native Speakers A multilingual household benefits from: 1. **Multiple subtitle languages** downloaded via Bazarr 2. **Per-user subtitle language preference** (Dashboard > Users > [User] > Subtitle language) 3. **Multiple audio tracks** when available (original language + dubbed) ### Bazarr Multi-Language Configuration Settings > Languages > Add multiple languages: - English (primary) - French (for French-speaking family members) - Spanish (for Spanish-speaking family members) Bazarr downloads subtitles in all configured languages for every item. ### Subtitle Naming for Multiple Languages ``` Movie Name (2024).mkv Movie Name (2024).en.srt <- English Movie Name (2024).fr.srt <- French Movie Name (2024).es.srt <- Spanish Movie Name (2024).en.sdh.srt <- English SDH ``` Jellyfin detects language codes automatically and presents them in the subtitle selector. --- ## Accessibility for Motor Disabilities ### Keyboard Navigation The Jellyfin web interface supports full keyboard navigation: | Key | Action | |---|---| | Tab | Move between interactive elements | | Enter | Select/activate | | Escape | Go back / close dialog | | Space | Play/pause (in player) | | Arrow keys | Seek (in player) / navigate (in library) | | F | Toggle fullscreen | | M | Mute | ### Voice Control On Android TV and Google TV, voice commands work with Jellyfin: - "Play [movie name]" (via Google Assistant) - "Pause" / "Resume" / "Next episode" On Apple TV, Siri voice control works with Swiftfin and Infuse. ### Large Text and High Contrast For low-vision users who can see but need larger text: ```css /* Custom CSS for large text */ body { font-size: 1.3em !important; } .cardText { font-size: 1.4em !important; } /* High contrast mode */ :root { --accent: #FFFF00; /* Yellow on dark = high contrast */ } ``` Apply per-user via User Settings > Display > Custom CSS. --- ## Subtitle Formatting Best Practices ### Avoid PGS Subtitles for Accessibility PGS (image-based) subtitles cannot be: - Resized by the user - Recolored for contrast - Read by screen readers - Searched Always prefer SRT or ASS text-based subtitles. They can be styled by the client for readability. ### Subtitle Appearance Settings Jellyfin allows users to customize subtitle appearance: User Settings > Subtitles: - Font size (small to extra large) - Font color (white, yellow, green) - Background (transparent, semi-transparent, opaque) - Position (bottom, top) For users with low vision, recommend: **Large font, yellow text, semi-transparent black background.** --- ## Making Your Server Inclusive: Checklist | Task | Benefit | Effort | |---|---|---| | Enable SDH subtitle search in Bazarr | Deaf/HoH users | Low | | Download subtitles in multiple languages | Non-native speakers | Low | | Preserve AD audio tracks when ripping | Blind users | Low | | Set per-user subtitle defaults | All subtitle users | Low | | Add custom CSS for large text (per user) | Low-vision users | Low | | Label audio tracks clearly | All users | Medium | | Replace PGS with SRT subtitles | Accessibility + performance | Medium | | Create AD-focused library | Blind users | Medium | --- ## The State of Accessibility in Jellyfin (2026) ### What works well - Multi-language subtitle support - Per-user subtitle preferences - Keyboard navigation in web UI - Subtitle appearance customization - Multiple audio track support ### What needs improvement - No native "prefer audio description" user setting - Screen reader support in the web UI is inconsistent - Some clients lack subtitle customization options - No built-in SDH/CC indicator in the UI (you cannot tell if a subtitle is SDH without selecting it) ### Contributing to accessibility Jellyfin is open source. Accessibility improvements are welcome: - GitHub issues tagged "accessibility" track known problems - UI contributions improving ARIA labels and screen reader support are valued - Testing with assistive technologies and reporting issues helps the project --- ## FAQ **Does Jellyfin support closed captions embedded in video files?** Yes. Embedded CC/subtitle tracks (SRT, ASS, PGS) are detected and selectable during playback. **Can I force subtitles for all users?** You can set the default to "Always show subtitles" per user. Users can still disable them if they choose. **Are there Jellyfin clients with better accessibility?** Jellyfin Media Player (desktop) inherits MPV accessibility features. The web interface has the most keyboard support. Mobile clients vary. **Does audio description work on all clients?** Yes. AD is just another audio track. Any client that supports audio track selection supports AD. --- > **An accessible server for everyone. Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring and server health for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin + Immich + Kavita + Navidrome: The Ultimate Self-Hosted Media Empire in One Docker Compose (2026) URL: https://jellywatch.app/blog/jellyfin-immich-kavita-navidrome-ultimate-media-empire-docker-compose-2026 Published: 2026-06-02T11:17:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, immich, kavita, navidrome, docker-compose, self-hosted, media-empire, all-in-one, homelab, 2026 # Jellyfin + Immich + Kavita + Navidrome: The Ultimate Self-Hosted Media Empire (2026) One server. One Docker Compose file. Every type of media you consume, served by the best tool for each job: - **Jellyfin** - Movies, TV shows, home videos, audiobooks - **Immich** - Photos with AI face detection and mobile auto-upload - **Kavita** - Comics, manga, ebooks, and light novels - **Navidrome** - Music with Subsonic API and gapless playback No compromises. Each tool is best-in-class for its domain. Together they replace Netflix, Google Photos, Kindle, and Spotify. --- ## Why Four Servers Instead of One? Jellyfin can technically handle photos, music, and books. But it handles them poorly compared to dedicated tools: | Content type | Jellyfin | Dedicated tool | Winner | |---|---|---|---| | Movies/TV | Excellent | N/A | Jellyfin | | Photos | Basic (folder grid) | Immich (AI, timeline, mobile upload) | Immich | | Comics/Manga | Basic (no reader) | Kavita (panel navigation, webtoon mode) | Kavita | | Music | Decent | Navidrome (Subsonic API, gapless, scrobbling) | Navidrome | Using specialized tools means every content type gets the best possible experience. The trade-off is slightly more complexity, but Docker Compose makes it manageable. --- ## Hardware Requirements This entire stack runs comfortably on modest hardware: | Component | Minimum | Recommended | |---|---|---| | CPU | Intel N100 (4 cores) | Intel N305 (8 cores) | | RAM | 16 GB | 32 GB | | Storage (OS + Apps) | 256 GB NVMe | 512 GB NVMe | | Storage (Media) | 4 TB HDD | 8-20 TB | | GPU | Intel iGPU (for Jellyfin) | Same | The heaviest component is Immich (ML models use 2-4 GB RAM). Everything else is lightweight. --- ## The Complete Docker Compose ```yaml services: # ============================================ # REVERSE PROXY (handles HTTPS for everything) # ============================================ caddy: image: caddy:2-alpine container_name: caddy ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped # ============================================ # JELLYFIN - Movies, TV, Home Videos, Audiobooks # ============================================ jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /mnt/media/movies:/media/movies:ro - /mnt/media/tv:/media/tv:ro - /mnt/media/audiobooks:/media/audiobooks:ro - /mnt/media/home-videos:/media/home-videos:ro devices: - /dev/dri:/dev/dri ports: - 8096:8096 restart: unless-stopped # ============================================ # IMMICH - Photos with AI # ============================================ immich-server: image: ghcr.io/immich-app/immich-server:release container_name: immich-server volumes: - /mnt/media/photos/upload:/usr/src/app/upload - /mnt/media/photos/external:/usr/src/app/external:ro environment: - DB_HOSTNAME=immich-db - DB_USERNAME=postgres - DB_PASSWORD=immich_db_password_change_me - DB_DATABASE_NAME=immich - REDIS_HOSTNAME=immich-redis ports: - 2283:2283 depends_on: - immich-db - immich-redis restart: unless-stopped immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:release container_name: immich-ml volumes: - ./immich/ml-cache:/cache restart: unless-stopped immich-redis: image: redis:7-alpine container_name: immich-redis restart: unless-stopped immich-db: image: tensorchord/pgvecto-rs:pg16-v0.2.1 container_name: immich-db environment: - POSTGRES_PASSWORD=immich_db_password_change_me - POSTGRES_USER=postgres - POSTGRES_DB=immich volumes: - ./immich/db:/var/lib/postgresql/data restart: unless-stopped # ============================================ # KAVITA - Comics, Manga, Ebooks # ============================================ kavita: image: jvmilazz0/kavita:latest container_name: kavita volumes: - ./kavita/config:/kavita/config - /mnt/media/comics:/comics:ro - /mnt/media/manga:/manga:ro - /mnt/media/books:/books:ro ports: - 5000:5000 restart: unless-stopped # ============================================ # NAVIDROME - Music # ============================================ navidrome: image: deluan/navidrome:latest container_name: navidrome environment: - ND_SCANSCHEDULE=1h - ND_LOGLEVEL=info - ND_BASEURL="" volumes: - ./navidrome/data:/data - /mnt/media/music:/music:ro ports: - 4533:4533 restart: unless-stopped volumes: caddy_data: ``` --- ## The Caddyfile (Reverse Proxy) ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } photos.yourdomain.com { reverse_proxy immich-server:2283 } read.yourdomain.com { reverse_proxy kavita:5000 } music.yourdomain.com { reverse_proxy navidrome:4533 } ``` Four subdomains, four services, automatic HTTPS for all. --- ## Storage Layout ``` /mnt/media/ movies/ <- Jellyfin (via Radarr) tv/ <- Jellyfin (via Sonarr) audiobooks/ <- Jellyfin home-videos/ <- Jellyfin photos/ upload/ <- Immich (phone uploads land here) external/ <- Immich (existing photo archive, read-only) comics/ <- Kavita manga/ <- Kavita books/ <- Kavita music/ <- Navidrome (via Lidarr or manual) ``` All media on one mount point. Each service reads only what it needs. --- ## Post-Deployment Setup ### Jellyfin 1. Open `https://jellyfin.yourdomain.com` 2. Create admin account 3. Add libraries: Movies, TV Shows, Audiobooks, Home Videos 4. Enable hardware transcoding (Intel QSV) 5. Install plugins: Intro Skipper, Playback Reporting ### Immich 1. Open `https://photos.yourdomain.com` 2. Create admin account 3. Install mobile app (Android/iOS) 4. Enable auto-upload in the app 5. Configure external library for existing photos ### Kavita 1. Open `https://read.yourdomain.com` 2. Create admin account 3. Add libraries: Comics, Manga, Books 4. Configure metadata providers (AniList for manga, ComicVine for comics) ### Navidrome 1. Open `https://music.yourdomain.com` 2. Create admin account 3. Wait for initial music scan 4. Install Finamp (mobile) or Feishin (desktop) as your music client 5. Configure Last.fm scrobbling in Navidrome settings --- ## Client Recommendations by Platform | Platform | Video (Jellyfin) | Photos (Immich) | Reading (Kavita) | Music (Navidrome) | |---|---|---|---|---| | **Android** | Findroid | Immich app | Kavita PWA | Symfonium | | **iOS** | Swiftfin | Immich app | Kavita PWA | Finamp | | **Apple TV** | Infuse/Swiftfin | N/A | N/A | N/A | | **Android TV** | Jellyfin for Android TV | N/A | N/A | N/A | | **Desktop** | Jellyfin Media Player | Immich web | Kavita web | Feishin | | **E-reader** | N/A | N/A | OPDS (Kavita) | N/A | --- ## Resource Usage (Real-World) On an Intel N100 mini PC with 16 GB RAM, running all four services simultaneously: | Service | RAM (idle) | RAM (active) | CPU (idle) | CPU (active) | |---|---|---|---|---| | Jellyfin | 400 MB | 1-2 GB (transcoding) | <1% | 5-15% (HW transcode) | | Immich (all containers) | 2.5 GB | 3-4 GB (ML processing) | <1% | 30-50% (face detection) | | Kavita | 100 MB | 200 MB | <1% | <1% | | Navidrome | 80 MB | 150 MB | <1% | <1% | | **Total** | **~3.1 GB** | **~5-7 GB** | **<3%** | **Varies** | 16 GB RAM handles this comfortably. 8 GB would be tight when Immich is processing faces. --- ## Backup Strategy Each service has different backup priorities: | Service | What to backup | Size | Frequency | |---|---|---|---| | Jellyfin | ./jellyfin/config/ | 1-5 GB | Weekly | | Immich | ./immich/db/ + upload folder | Large | Daily (DB), weekly (photos) | | Kavita | ./kavita/config/ | <100 MB | Weekly | | Navidrome | ./navidrome/data/ | <500 MB | Weekly | Media files (movies, music, etc.) have their own backup strategy (RAID, external drives, cloud). --- ## Adding Automation (Optional) Extend the stack with content automation: ```yaml # Add to docker-compose.yml: radarr: image: lscr.io/linuxserver/radarr:latest # ... (movies) sonarr: image: lscr.io/linuxserver/sonarr:latest # ... (TV shows) lidarr: image: lscr.io/linuxserver/lidarr:latest # ... (music) mylar3: image: lscr.io/linuxserver/mylar3:latest # ... (comics) ``` Now every content type has automated acquisition: - Radarr > Jellyfin (movies) - Sonarr > Jellyfin (TV) - Lidarr > Navidrome (music) - Mylar3 > Kavita (comics) --- ## FAQ **Can one mini PC handle all four services?** Yes. An Intel N100 with 16 GB RAM runs everything smoothly. Immich face detection is the heaviest task but runs in the background. **Do the services conflict with each other?** No. Each service has its own port, its own config directory, and reads media in read-only mode. They coexist without issues. **Can I start with just Jellyfin and add others later?** Absolutely. Start with Jellyfin alone. Add Navidrome when you want better music. Add Immich when you want photo backup. Add Kavita when you start reading digitally. **How much storage do I need?** Depends on your library. A typical setup: 4 TB for movies/TV, 500 GB for photos, 200 GB for music, 100 GB for comics/books = ~5 TB total. **Is there a single app that monitors all four?** JellyWatch monitors Jellyfin specifically (sessions, transcoding, arr stack). For the other services, Uptime Kuma provides availability monitoring. --- > **Your media empire is running. Monitor the video server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Jellyfin sessions, Radarr/Sonarr queues, and server health. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Raspberry Pi 5 + NVMe HAT for Jellyfin 2026: Real Performance Benchmarks and the N100 Comparison URL: https://jellywatch.app/blog/raspberry-pi-5-nvme-hat-jellyfin-benchmarks-2026 Published: 2026-06-01T07:26:00+00:00 Author: JellyWatch Team Category: Tips Tags: raspberry-pi-5, nvme, hat, jellyfin, benchmarks, n100, comparison, direct-play, 2026 # Raspberry Pi 5 + NVMe HAT for Jellyfin 2026: Real Benchmarks The Raspberry Pi 5 has always had one critical weakness for Jellyfin: storage speed. Running the OS and Jellyfin config from a microSD card made library scanning painfully slow and metadata browsing laggy. The official **Raspberry Pi M.2 HAT+** (and third-party NVMe HATs) finally fix this by adding PCIe NVMe SSD support. But does faster storage make the Pi 5 a genuinely good Jellyfin server? Or should you just spend $50 more on an Intel N100 mini PC? We benchmarked both to find out. --- ## Test Setup ### Raspberry Pi 5 (8 GB) - **CPU:** Broadcom BCM2712, 4x Cortex-A76 @ 2.4 GHz - **RAM:** 8 GB LPDDR4X - **Storage:** WD SN770 500 GB NVMe (via official M.2 HAT+) - **Media:** USB 3.0 external 4 TB HDD - **OS:** Raspberry Pi OS Lite 64-bit (Bookworm) - **Jellyfin:** 10.11.7 via Docker - **Cooling:** Official active cooler - **Power:** Official 27W USB-C PSU ### Intel N100 Mini PC (Beelink Mini S12 Pro) - **CPU:** Intel N100, 4x Alder Lake-N @ 3.4 GHz boost - **RAM:** 16 GB DDR4 - **Storage:** 500 GB NVMe (built-in) - **Media:** Same USB 3.0 external 4 TB HDD - **OS:** Ubuntu Server 24.04 - **Jellyfin:** 10.11.7 via Docker - **GPU:** Intel UHD (24 EU) with Quick Sync ### Test Library - 500 movies (mix of H.264 and H.265, 1080p and 4K) - 2,000 TV episodes - Total: ~2,500 items --- ## Benchmark Results ### Library Scan Speed (Full Scan) | Metric | Pi 5 (microSD) | Pi 5 (NVMe) | N100 | |---|---|---|---| | Full library scan (2,500 items) | 18 minutes | **6 minutes** | **4 minutes** | | Metadata fetch (TMDB/TVDB) | 22 minutes | 14 minutes | 12 minutes | | Trickplay generation (100 movies) | 8 hours | 5 hours | 2 hours | The NVMe HAT cuts library scan time by **3x** compared to microSD. The N100 is still faster due to its stronger CPU, but the gap narrows significantly. ### UI Responsiveness (Library Browsing) | Action | Pi 5 (microSD) | Pi 5 (NVMe) | N100 | |---|---|---|---| | Home page load | 3.2 seconds | **1.1 seconds** | **0.8 seconds** | | Movie library (500 items) | 4.5 seconds | **1.4 seconds** | **0.9 seconds** | | Search results | 2.8 seconds | **0.9 seconds** | **0.6 seconds** | | Episode list (20 episodes) | 1.5 seconds | **0.5 seconds** | **0.4 seconds** | NVMe transforms the Pi 5 browsing experience from "noticeably slow" to "acceptably fast." The N100 is still snappier but the difference is less dramatic. ### Direct Play Performance | Scenario | Pi 5 (NVMe) | N100 | |---|---|---| | 1x 1080p H.264 Direct Play | Smooth | Smooth | | 2x 1080p H.264 Direct Play | Smooth | Smooth | | 3x 1080p H.264 Direct Play | Smooth | Smooth | | 1x 4K HEVC Direct Play | Smooth | Smooth | | 2x 4K HEVC Direct Play | Occasional stutter | Smooth | | 3x 4K HEVC Direct Play | Stutters | Smooth | For Direct Play, both handle typical home use (1-2 simultaneous streams) without issues. The Pi 5 struggles at 3+ simultaneous 4K streams due to USB 3.0 bandwidth limitations when reading from the external HDD. ### Transcoding (The Dealbreaker) | Scenario | Pi 5 (NVMe) | N100 (QSV) | |---|---|---| | 1x 1080p software transcode | 0.8x speed (unwatchable) | 15x speed (instant) | | 1x 4K software transcode | 0.2x speed (impossible) | 8x speed (smooth) | | 1x 1080p HW transcode | **Not available** | 20x speed (instant) | | 1x 4K HW transcode | **Not available** | 12x speed (smooth) | **The Pi 5 has NO hardware transcoding capability.** The VideoCore VII GPU does not support video encode. Any transcoding must be done in software on the ARM CPU, which is far too slow for real-time playback. The N100 Intel Quick Sync handles 3-4 simultaneous 4K transcodes effortlessly. --- ## NVMe HAT Installation ### Official Raspberry Pi M.2 HAT+ 1. Power off the Pi 5 2. Attach the HAT+ to the PCIe connector on the Pi 5 board 3. Secure with standoffs 4. Insert your M.2 NVMe SSD (2230 or 2242 size) 5. Flash Raspberry Pi OS to the NVMe using Pi Imager (boot from NVMe) 6. Power on - the Pi boots from NVMe automatically ### Recommended NVMe SSDs (2230 format) | SSD | Capacity | Price | Notes | |---|---|---|---| | WD SN740 | 256 GB - 1 TB | $25-60 | Excellent, low power | | Samsung PM991a | 256 GB - 512 GB | $20-35 | Good value | | Kioxia BG5 | 256 GB - 512 GB | $25-40 | Reliable | The Pi 5 PCIe is Gen 2 x1 (500 MB/s max). Any NVMe SSD will be bottlenecked by the interface, so expensive Gen 4 drives offer no benefit. Buy the cheapest NVMe that fits. ### Docker Setup on Pi 5 ```bash # Install Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # Create Jellyfin stack mkdir -p ~/jellyfin && cd ~/jellyfin ``` ```yaml # docker-compose.yml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped ``` ```bash docker compose up -d ``` No GPU passthrough needed (Pi 5 has no usable video encode hardware for Jellyfin). --- ## Pi 5 + NVMe vs N100: The Honest Verdict | Criteria | Pi 5 + NVMe | Intel N100 Mini PC | |---|---|---| | **Price** | $80 (Pi) + $15 (HAT) + $25 (SSD) = **$120** | **$130** | | **Direct Play (1-2 streams)** | Excellent | Excellent | | **Direct Play (3+ streams)** | Good | Excellent | | **Hardware transcoding** | **None** | 3-4 simultaneous 4K | | **Library browsing speed** | Good (with NVMe) | Excellent | | **Power consumption** | 8-12W | 8-12W | | **Noise** | Silent (with passive cooler) | Silent (fanless models) | | **Form factor** | Tiny | Small | | **Ecosystem** | GPIO, Pi accessories | Standard x86 PC | | **Future-proof** | Limited (ARM, no HW transcode) | Better (x86, QSV, upgradeable) | ### Choose the Pi 5 + NVMe if: - All your clients Direct Play (no transcoding needed ever) - You have 1-2 simultaneous users maximum - You already own a Pi 5 and want to maximize it - You enjoy the Pi ecosystem (GPIO, HATs, tinkering) - Budget is extremely tight ($120 vs $130 is meaningful to you) ### Choose the N100 Mini PC if: - Any user might trigger a transcode (mobile clients, web browsers) - You have 3+ simultaneous users - You want hardware transcoding for 4K HDR tone mapping - You want the best performance per dollar - You plan to run additional services (Radarr, Sonarr, etc.) ### The $10 question The Pi 5 + NVMe HAT + SSD costs $120. An N100 mini PC costs $130. For $10 more, you get: - Hardware transcoding (3-4 simultaneous 4K streams) - Faster CPU (higher single-thread performance) - More RAM (16 GB vs 8 GB) - Built-in NVMe (no HAT needed) - x86 compatibility (wider Docker image support) **For Jellyfin specifically, the N100 is the better value at nearly the same price.** The Pi 5 only wins if you already own it or specifically need the Pi ecosystem. --- ## Optimizing Jellyfin on Pi 5 + NVMe ### 1. Boot from NVMe (not microSD) The single biggest improvement. Boot and run Jellyfin config entirely from NVMe. ### 2. Set gpu_mem=16 In `/boot/firmware/config.txt`: ``` gpu_mem=16 ``` Jellyfin cannot use the Pi GPU for transcoding. Free that RAM for the system. ### 3. Disable swap on microSD If you still have a microSD inserted, ensure swap is not using it: ```bash sudo dphys-swapfile swapoff sudo systemctl disable dphys-swapfile ``` ### 4. Use active cooling Sustained library scans and multiple Direct Play streams will thermal throttle without cooling. The official active cooler keeps the CPU at full speed. ### 5. Use Ethernet The Pi 5 has Gigabit Ethernet. Use it. Wi-Fi adds latency and reduces throughput for high-bitrate 4K streams. ### 6. Encode your library for Direct Play Since the Pi 5 cannot transcode, ensure your library is in formats all your clients support: - Video: H.264 or H.265 (universal support) - Audio: AAC or EAC3 (no TrueHD/DTS that might trigger audio transcode) - Subtitles: SRT only (no PGS that forces burn-in) --- ## FAQ **Can the Pi 5 do ANY hardware transcoding?** No. The VideoCore VII GPU supports video decode but not encode. Jellyfin requires encode capability for transcoding. The Pi 5 is Direct Play only. **Is the NVMe HAT worth it if I already have a Pi 5?** Absolutely. The $40 investment (HAT + SSD) transforms the Jellyfin experience from sluggish to responsive. It is the single best upgrade for a Pi 5 Jellyfin server. **What about the Pi 5 with 16 GB RAM (if released)?** More RAM helps with large libraries (Jellyfin 10.11 EF Core caching) but does not solve the transcoding limitation. The N100 would still be better for mixed-client environments. **Can I use an NVMe SSD for media storage too?** Yes, but NVMe is expensive per TB. Use NVMe for OS + Jellyfin config (fast random I/O). Use a USB 3.0 HDD for media (sequential reads are fine on HDD). **Does JellyWatch work with Jellyfin on Pi 5?** Yes. JellyWatch connects to the Jellyfin API regardless of the server hardware. It works identically on Pi 5, N100, or any other platform. --- > **Running Jellyfin on a Pi 5? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and push notifications. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Autopulse + Jellyfin: Instant Library Updates Without Scheduled Scans (2026) URL: https://jellywatch.app/blog/autopulse-jellyfin-instant-library-updates-no-scheduled-scans-2026 Published: 2026-06-01T07:23:00+00:00 Author: JellyWatch Team Category: Showcase Tags: autopulse, jellyfin, instant-scan, library-update, inotify, docker, automation, 2026 # Autopulse + Jellyfin: Instant Library Updates Without Scheduled Scans (2026) The default Jellyfin workflow for detecting new content is either: 1. **Scheduled library scans** (every 12 hours by default) - slow, CPU-intensive, and your content sits invisible for hours 2. **Radarr/Sonarr Connect notifications** - works but requires configuration in each arr app What if new content appeared in Jellyfin the instant it landed on disk? No scheduled scans. No arr app configuration. Just: file appears > Jellyfin knows about it within 5 seconds. **Autopulse** does exactly this. --- ## What Autopulse Does Autopulse is a lightweight service that: 1. **Watches your media folders** for new files using inotify (Linux filesystem events) 2. **Detects when a file is fully written** (waits for write completion, not just creation) 3. **Triggers a targeted Jellyfin scan** of only the specific folder that changed 4. **Debounces rapid changes** (multiple files arriving at once trigger one scan, not dozens) The result: content appears in Jellyfin within 5-15 seconds of the file being fully written to disk. --- ## Why Not Just Use Scheduled Scans? | Approach | Delay | CPU impact | Reliability | |---|---|---|---| | Scheduled scan (12h) | Up to 12 hours | High (full library scan) | Reliable but slow | | Scheduled scan (1h) | Up to 1 hour | Medium (frequent full scans) | Reliable but wasteful | | Radarr/Sonarr Connect | 1-5 seconds | Low (targeted scan) | Requires arr app config | | **Autopulse** | 5-15 seconds | Very low (targeted scan) | Works for ANY file source | Autopulse advantages over Radarr/Sonarr Connect: - Works for **any** file source (manual copies, Syncthing, Rclone, FTP uploads) - No configuration needed in each arr app - Catches files that arr apps miss (manual additions, scripts) - Single point of configuration --- ## Docker Setup ```yaml services: autopulse: image: ghcr.io/dan-online/autopulse:latest container_name: autopulse environment: - JELLYFIN_URL=http://jellyfin:8096 - JELLYFIN_API_KEY=your_jellyfin_api_key - WATCH_PATHS=/media/movies,/media/tv,/media/music - DEBOUNCE_SECONDS=10 - TZ=Europe/Paris volumes: - /mnt/media/movies:/media/movies:ro - /mnt/media/tv:/media/tv:ro - /mnt/media/music:/media/music:ro restart: unless-stopped ``` ```bash docker compose up -d ``` That is it. Autopulse watches the specified paths and triggers Jellyfin scans automatically. --- ## How It Works Internally ### 1. Filesystem Monitoring (inotify) Autopulse uses Linux inotify to receive kernel-level notifications when files are created, modified, or moved in the watched directories. This is zero-polling: the kernel tells Autopulse when something changes. ### 2. Write Completion Detection When a file is being downloaded (by qBittorrent, Radarr import, or any other process), it is written incrementally. Autopulse waits until the file has not been modified for a configurable period (default: 5 seconds) before considering it "complete." This prevents triggering a scan on a half-written file. ### 3. Debouncing When Radarr imports a movie, it may create the folder, move the file, and write metadata in rapid succession. Without debouncing, this would trigger 3 separate scans. Autopulse groups changes within a configurable window (default: 10 seconds) and triggers a single scan for the affected path. ### 4. Targeted Jellyfin Scan Instead of scanning the entire library, Autopulse calls the Jellyfin API to scan only the specific folder that changed: ``` POST /Library/Media/Updated {"Updates": [{"Path": "/media/movies/Dune Part Two (2024)", "UpdateType": "Created"}]} ``` This is dramatically faster and lighter than a full library scan. --- ## Configuration Options | Variable | Default | Description | |---|---|---| | `JELLYFIN_URL` | Required | Your Jellyfin server URL | | `JELLYFIN_API_KEY` | Required | API key from Jellyfin Dashboard | | `WATCH_PATHS` | Required | Comma-separated paths to monitor | | `DEBOUNCE_SECONDS` | 10 | Wait this long after last change before scanning | | `SETTLE_SECONDS` | 5 | Wait for file writes to complete | | `RECURSIVE` | true | Watch subdirectories | | `IGNORE_PATTERNS` | `.partial,.!qB` | Ignore files matching these patterns | | `LOG_LEVEL` | info | Logging verbosity | ### Ignore patterns Configure Autopulse to ignore temporary files: ``` IGNORE_PATTERNS=.partial,.!qB,.tmp,.nfo,Thumbs.db,.DS_Store ``` This prevents scans triggered by qBittorrent partial files, temporary files, or metadata writes. --- ## Autopulse vs Alternatives | Tool | Method | Jellyfin support | Emby support | Complexity | |---|---|---|---|---| | **Autopulse** | inotify + API call | Yes | Yes | Very low | | **Radarr/Sonarr Connect** | Webhook on import | Yes | Yes | Per-app config | | **Jellyfin scheduled scan** | Periodic full scan | Built-in | Built-in | Zero (but slow) | | **Custom inotifywait script** | DIY bash script | Manual | Manual | Medium | | **Autoscan (legacy)** | File watching | Plex/Emby | Yes | Medium | Autopulse is the simplest dedicated solution. If you already have Radarr/Sonarr Connect configured and it works, you may not need Autopulse. But if you add content from multiple sources (manual, scripts, Syncthing), Autopulse catches everything. --- ## Combining with Radarr/Sonarr You can use both Autopulse AND Radarr/Sonarr Connect notifications: - **Radarr/Sonarr Connect** triggers immediately on import (fastest for arr-managed content) - **Autopulse** catches everything else (manual additions, other tools) - **Disable scheduled scans** entirely (Dashboard > Scheduled Tasks > Scan Media Library > remove triggers) With both active, you never need scheduled scans again. Every file is detected within seconds regardless of source. --- ## Disabling Scheduled Scans Once Autopulse is running reliably: 1. Dashboard > Scheduled Tasks 2. Find "Scan Media Library" 3. Remove all triggers (or set to weekly as a safety net) 4. This eliminates the periodic CPU spikes from full library scans --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Files not detected | Path mismatch between container and host | Verify volume mounts match WATCH_PATHS | | Scan triggered but content not appearing | Jellyfin path different from Autopulse path | Ensure Jellyfin sees the same path | | Too many scans | Debounce too short | Increase DEBOUNCE_SECONDS to 15-30 | | Partial files triggering scans | Missing ignore pattern | Add .!qB and .partial to IGNORE_PATTERNS | | inotify limit reached | Too many watched files | Increase fs.inotify.max_user_watches | ### Increasing inotify limits For large libraries with many subdirectories: ```bash echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` --- ## FAQ **Does Autopulse work with NFS/CIFS mounts?** inotify does not work across network filesystems. For NFS/CIFS, Autopulse falls back to periodic polling (configurable interval). Local filesystems get instant inotify events. **Does it work with Emby?** Yes. Configure EMBY_URL and EMBY_API_KEY instead of Jellyfin variables. The API call is similar. **How much RAM does Autopulse use?** ~20-50 MB. It is extremely lightweight. **Can it trigger other actions besides Jellyfin scans?** Some implementations support webhooks, allowing you to trigger any HTTP endpoint when files change. **Should I still keep a weekly scheduled scan as backup?** Recommended. Set a weekly scan at 4 AM as a safety net to catch anything Autopulse might miss (edge cases, container restarts). --- > **Content appears instantly. Monitor who watches it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Dispatcharr + Jellyfin/Emby: The IPTV Connection Manager That Fixes Buffering and Stream Limits (2026) URL: https://jellywatch.app/blog/dispatcharr-jellyfin-emby-iptv-connection-manager-2026 Published: 2026-06-01T07:16:00+00:00 Author: JellyWatch Team Category: Showcase Tags: dispatcharr, iptv, jellyfin, emby, live-tv, connection-manager, stream-proxy, failover, docker, 2026 # Dispatcharr + Jellyfin/Emby: The IPTV Connection Manager That Fixes Buffering (2026) If you run IPTV through Jellyfin or Emby, you have hit this problem: your provider allows 2 simultaneous connections, but 3 family members try to watch Live TV at the same time. The third stream fails or all three start buffering. You have no visibility into which connections are active, no way to prioritize streams, and no failover if your provider goes down. **Dispatcharr** solves this. It is a self-hosted stream proxy that sits between your IPTV provider(s) and your media server, managing connections intelligently. --- ## What Dispatcharr Does Dispatcharr is a connection manager and stream proxy for IPTV: - **Connection pooling** - manages your provider's concurrent stream limit so you never exceed it - **Stream proxy** - all streams flow through Dispatcharr, giving you centralized control - **Multi-provider failover** - if Provider A goes down, automatically switches to Provider B - **Real-time dashboard** - see every active stream, bitrate, codec, and client - **Channel mapping** - merge channels from multiple providers into one unified playlist - **EPG management** - combine EPG data from multiple sources - **Stream statistics** - track uptime, bitrate history, and error rates per channel - **API for integration** - REST API for automation and monitoring --- ## The Problem Dispatcharr Solves Without Dispatcharr: ``` User A watches BBC One --> Provider (connection 1/2) User B watches CNN --> Provider (connection 2/2) User C watches ESPN --> Provider REJECTS (limit exceeded) OR all three buffer ``` With Dispatcharr: ``` User A watches BBC One --> Dispatcharr --> Provider (connection 1/2) User B watches CNN --> Dispatcharr --> Provider (connection 2/2) User C watches ESPN --> Dispatcharr --> Provider B (failover, connection 1/2) OR queues until a slot opens ``` Dispatcharr knows your provider limits and manages connections accordingly. It can also reuse connections: if two users watch the same channel, Dispatcharr opens one connection to the provider and serves both users from it. --- ## Docker Setup ```yaml services: dispatcharr: image: ghcr.io/dispatcharr/dispatcharr:latest container_name: dispatcharr ports: - "5500:5500" volumes: - ./dispatcharr/config:/config environment: - TZ=Europe/Paris restart: unless-stopped ``` ```bash docker compose up -d ``` Access the dashboard at `http://your-server:5500`. --- ## Step 1: Add Your IPTV Providers 1. Open Dispatcharr dashboard 2. Navigate to **Providers** 3. Click **Add Provider** 4. Enter: - Name: "My IPTV Provider" - Type: Xtream Codes or M3U - URL / Credentials - **Max Connections**: your provider's limit (e.g., 2) 5. Save Repeat for additional providers if you have backup services. ### Multi-Provider Setup The real power of Dispatcharr emerges with multiple providers: | Provider | Max Connections | Priority | Role | |---|---|---|---| | Provider A | 2 | Primary | Main service | | Provider B | 1 | Failover | Backup when A is full or down | | Provider C | 2 | Secondary | Overflow for peak times | Dispatcharr routes streams to the highest-priority provider with available connections. If all connections on Provider A are used, it automatically routes to Provider B. --- ## Step 2: Configure Channel Mapping When using multiple providers, the same channel may have different names or IDs. Dispatcharr's channel mapping merges them: 1. Navigate to **Channels** 2. Dispatcharr imports channel lists from all providers 3. Map channels: "BBC One HD" (Provider A) = "BBC 1" (Provider B) 4. Set priority: prefer Provider A's stream quality, fall back to Provider B The output is a single, unified M3U playlist that your media server consumes. --- ## Step 3: Connect to Jellyfin Dispatcharr generates an M3U playlist URL and XMLTV EPG URL that you add to Jellyfin: 1. In Dispatcharr: **Output** > copy the M3U URL (e.g., `http://dispatcharr:5500/output/playlist.m3u`) 2. Copy the EPG URL (e.g., `http://dispatcharr:5500/output/epg.xml`) 3. In Jellyfin: Dashboard > Live TV > Add Tuner Device > M3U Tuner 4. Paste the Dispatcharr M3U URL 5. Add TV Guide Data Provider > XMLTV > paste the EPG URL 6. Save and scan channels Jellyfin sees Dispatcharr as a regular M3U source. It does not know (or care) that Dispatcharr is managing connections behind the scenes. ### For Emby Same process: Dashboard > Live TV > Add TV Source > M3U Tuner > paste Dispatcharr URLs. --- ## Step 4: The Real-Time Dashboard Dispatcharr's dashboard shows: - **Active Streams** - which channels are being watched, by which client, through which provider - **Connection Usage** - visual indicator of how many connections are used per provider - **Stream Health** - bitrate, codec, resolution, and error rate per active stream - **History** - past streams with duration and quality metrics - **Provider Status** - up/down status for each configured provider This visibility is something you never get with a raw M3U playlist in Jellyfin. --- ## Advanced Features ### Connection Reuse If User A and User B both watch BBC One, Dispatcharr opens ONE connection to the provider and serves both users from it. This effectively doubles your connection capacity for popular channels. ### Graceful Degradation When all connections are exhausted: - New requests can be queued (with a configurable timeout) - Or routed to a lower-priority provider - Or rejected with a clear error message ### Stream Recording Dispatcharr can record streams to disk for later viewing (DVR-like functionality independent of Jellyfin's built-in DVR). ### Health Monitoring Dispatcharr monitors stream health continuously: - Detects buffering and stream drops - Automatically reconnects on failure - Switches to backup provider if primary stream quality degrades --- ## Dispatcharr vs Direct M3U in Jellyfin | Feature | Direct M3U | Via Dispatcharr | |---|---|---| | Connection management | None (exceeds limits) | Managed (respects limits) | | Multi-provider failover | No | Automatic | | Stream statistics | None | Full dashboard | | Channel merging | Manual | Automatic mapping | | Connection reuse | No | Yes (same channel = 1 connection) | | EPG merging | Manual | Automatic | | Buffering diagnosis | Blind | Real-time metrics | | Provider health | Unknown | Monitored | --- ## Integration with Xtream Tuner (Emby) If you use the Xtream Tuner plugin for Emby, Dispatcharr can sit in front of it: 1. Configure Dispatcharr with your Xtream credentials 2. Dispatcharr exposes its own Xtream-compatible API 3. Point Xtream Tuner at Dispatcharr instead of the provider directly 4. All connection management happens transparently --- ## Performance Impact Dispatcharr is lightweight: - **RAM:** ~100-200 MB - **CPU:** negligible (proxying streams is I/O bound, not CPU bound) - **Bandwidth:** streams pass through, so your server needs enough bandwidth for all active streams - **Latency:** adds <50ms to channel switching (connection setup) The proxy does not transcode or modify streams. It simply routes them. --- ## When You Need Dispatcharr | Scenario | Need Dispatcharr? | |---|---| | Single user, one provider | No | | Multiple users, limited connections | Yes | | Multiple IPTV providers | Yes (failover + merging) | | Want stream statistics | Yes | | Provider frequently drops | Yes (auto-reconnect) | | Shared server with Live TV | Yes | --- ## FAQ **Does Dispatcharr work with free IPTV sources (Pluto TV, Samsung TV Plus)?** Yes. Any M3U source works. Free sources typically have no connection limits, but Dispatcharr still provides statistics and failover. **Does it transcode streams?** No. Dispatcharr proxies streams as-is. Transcoding happens in Jellyfin/Emby if the client needs it. **Can I use Dispatcharr with Plex Live TV?** Yes. Plex accepts M3U tuners. Point it at Dispatcharr's output URL. **Is Dispatcharr free?** Yes. Open source and free to use. **Does JellyWatch show Live TV sessions through Dispatcharr?** Yes. JellyWatch shows all active Jellyfin sessions including Live TV. The stream appears as a normal session regardless of whether it flows through Dispatcharr. --- > **Running IPTV through Dispatcharr? Monitor every Live TV session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see active Live TV streams, CPU usage, and get alerts when your server is under load. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin Disaster Recovery: Real Stories of Data Loss and the Recovery Playbook That Saves You (2026) URL: https://jellywatch.app/blog/jellyfin-disaster-recovery-real-stories-playbook-2026 Published: 2026-05-29T10:56:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, disaster-recovery, backup, data-loss, corruption, recovery, sqlite, 2026 # Jellyfin Disaster Recovery: Real Stories and the Recovery Playbook (2026) Every self-hoster thinks "it will not happen to me" until it does. A power outage corrupts your database. A failed update wipes your watch history. A drive dies with 3 years of metadata. An accidental command deletes your config folder. These are real stories from the Jellyfin community. Each one is preventable. Each one has a recovery path. This guide covers both: what goes wrong and how to come back from it. --- ## Story 1: The 10.11 Migration That Ate Everything ### What happened A user upgraded from Jellyfin 10.10 to 10.11 without backing up. The EF Core database migration started, ran for 20 minutes, then the server crashed (out of memory on a 4 GB RAM system). On restart, Jellyfin refused to start. The database was partially migrated: half the tables in the new format, half in the old. Unrecoverable without a backup. **Lost:** 2 years of watch history, all user accounts, plugin configurations, custom metadata edits. ### What would have prevented it ```bash # 30 seconds of prevention docker stop jellyfin tar -czf jellyfin-backup-pre-upgrade.tar.gz ./jellyfin/config/ docker start jellyfin # THEN upgrade ``` ### Recovery (without backup) 1. Delete the corrupted database 2. Start Jellyfin fresh (new database created) 3. Recreate user accounts manually 4. Run a full library scan (metadata re-fetched from TMDB/TVDB) 5. Watch history: gone permanently. Import from Trakt if you had it synced. **Lesson:** Always backup before ANY version upgrade. The 10.11 migration is irreversible. --- ## Story 2: The Power Outage That Corrupted SQLite ### What happened A thunderstorm caused a power outage while Jellyfin was writing to the database (during a library scan). On restart, Jellyfin showed errors: "database disk image is malformed." The SQLite WAL file was corrupted mid-write. ### What would have prevented it - A UPS (Uninterruptible Power Supply) - $50-100 for basic protection - Or: automated daily backups (the corruption only affects the latest state) ### Recovery steps ```bash # Stop Jellyfin docker stop jellyfin # Check integrity sqlite3 /path/to/jellyfin.db "PRAGMA integrity_check;" # Output: "*** in database main *** # Page 1234: btree cell 5 is corrupted" # Attempt recovery via dump and reimport sqlite3 /path/to/jellyfin.db ".dump" > dump.sql 2>errors.txt sqlite3 /path/to/jellyfin-new.db < dump.sql # Replace corrupted database mv /path/to/jellyfin.db /path/to/jellyfin.db.corrupt mv /path/to/jellyfin-new.db /path/to/jellyfin.db # Remove WAL files (they reference the old corrupt state) rm -f /path/to/jellyfin.db-wal /path/to/jellyfin.db-shm # Restart docker start jellyfin ``` The dump/reimport process skips corrupted rows. You may lose some data from the damaged pages, but the server becomes functional. **Lesson:** Buy a UPS. Run automated backups. Both cost less than the time spent recovering. --- ## Story 3: The Drive That Died Silently ### What happened A user stored their Jellyfin config AND media on the same single HDD. The drive developed bad sectors over months (no SMART monitoring). One day, the drive failed completely. 4 TB of media and all Jellyfin configuration gone. ### What would have prevented it - SMART monitoring with alerts (smartmontools + notification) - Config on a SEPARATE drive from media - Any backup strategy at all - ZFS or Btrfs with scrubbing (detects corruption before failure) ### Recovery Media: re-download everything (weeks of work with Radarr/Sonarr). Config: start from scratch. All watch history, users, and settings lost permanently. **Lesson:** Never store config and media on the same single drive. Monitor drive health. Back up config to a different physical device. --- ## Story 4: The Accidental rm -rf ### What happened An admin meant to delete the Jellyfin cache folder to free space: ```bash rm -rf ./jellyfin/cache/ ``` But accidentally typed: ```bash rm -rf ./jellyfin/ ``` Entire config directory gone. Cache, config, database, plugins, everything. ### What would have prevented it - Automated backups (restore from last night's backup) - ZFS snapshots (rollback to 1 hour ago) - Using `trash-cli` instead of `rm` for dangerous operations ### Recovery If you have a backup: restore it. Time to recover: 5 minutes. If you do not: start from scratch. Time to recover: hours. **Lesson:** Automated backups are not optional. They are the difference between a 5-minute recovery and a day of rebuilding. --- ## Story 5: The Docker Volume That Vanished ### What happened A user ran `docker system prune -a --volumes` to free disk space. This command removes ALL unused Docker volumes, including the Jellyfin config volume that was not currently attached to a running container (because Jellyfin was stopped for maintenance). ### What would have prevented it - Using bind mounts instead of Docker volumes (visible in the filesystem, not pruned) - Never running `docker system prune --volumes` without checking what will be removed - Backups stored outside Docker ### Recovery Docker volumes are gone permanently after prune. No recovery without external backup. **Lesson:** Use bind mounts (`./jellyfin/config:/config`) instead of named volumes for important data. Bind mounts are visible in your filesystem and are not affected by Docker prune commands. --- ## The Disaster Recovery Playbook Implement this today. It takes 15 minutes and saves you from every scenario above. ### Level 1: Automated Daily Backup (Minimum) ```bash #!/bin/bash # /home/user/scripts/backup-jellyfin.sh BACKUP_DIR="/backups/jellyfin" CONFIG_DIR="./jellyfin/config" RETENTION_DAYS=14 mkdir -p "$BACKUP_DIR" docker stop jellyfin tar -czf "$BACKUP_DIR/jellyfin-$(date +%Y%m%d).tar.gz" "$CONFIG_DIR" docker start jellyfin find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete ``` Cron: `0 3 * * * /home/user/scripts/backup-jellyfin.sh` This gives you 14 days of daily backups. Recovery from any disaster: extract the tar.gz. ### Level 2: Off-Site Backup Sync backups to a different physical location: ```bash # After local backup, sync to cloud rclone sync /backups/jellyfin remote:jellyfin-backups/ ``` Protects against: house fire, theft, all local drives failing simultaneously. ### Level 3: ZFS Snapshots (If Available) If running TrueNAS or Proxmox with ZFS: ```bash # Automatic hourly snapshots, keep 24 zfs set com.sun:auto-snapshot:hourly=true pool/jellyfin-config ``` Recovery: `zfs rollback pool/jellyfin-config@autosnap_2026-05-26_03:00` Instant rollback to any snapshot. Zero downtime for the rollback itself. ### Level 4: Database Integrity Monitoring ```bash #!/bin/bash # Weekly integrity check RESULT=$(sqlite3 /path/to/jellyfin.db "PRAGMA integrity_check;") if [ "$RESULT" != "ok" ]; then curl -d "ALERT: Jellyfin database corruption detected!" http://ntfy:80/alerts fi ``` Catch corruption before it becomes unrecoverable. ### Level 5: SMART Drive Monitoring ```bash sudo apt install smartmontools # Enable SMART monitoring sudo smartctl -s on /dev/sda # Check health sudo smartctl -H /dev/sda ``` Configure alerts for SMART warnings (pending sectors, reallocated sectors, temperature). --- ## Recovery Time by Preparation Level | Disaster | No backup | Daily backup | ZFS snapshots | |---|---|---|---| | Corrupted database | Hours (rebuild from scratch) | 5 minutes (restore tar.gz) | 30 seconds (rollback) | | Accidental deletion | Hours-Days | 5 minutes | 30 seconds | | Failed upgrade | Hours | 5 minutes | 30 seconds | | Drive failure | Days (re-download everything) | 5 min (config) + re-download media | 5 min + re-download media | | Power outage corruption | 30 min (dump/reimport) | 5 minutes (restore clean backup) | 30 seconds | --- ## The Non-Negotiable Rules 1. **Back up before EVERY upgrade** - even minor point releases 2. **Automated daily backups** - human memory is unreliable 3. **Config on SSD, separate from media** - different failure modes 4. **Test your backups quarterly** - an untested backup is not a backup 5. **Monitor drive health** - SMART warnings give you days/weeks of notice 6. **Use bind mounts, not Docker volumes** - visible, not prunable 7. **Buy a UPS** - $50 prevents $500 of recovery work --- ## FAQ **How often should I backup?** Daily for config. Weekly for a full system snapshot. Before every upgrade. **Where should backups be stored?** Different physical device minimum. Different physical location ideal (cloud, friend's server, office). **Can I backup while Jellyfin is running?** For maximum safety, stop Jellyfin first (prevents mid-write corruption in the backup). For convenience, WAL checkpoint then backup without stopping (slightly riskier but usually fine). **How much space do backups need?** Jellyfin config is typically 1-5 GB. 14 daily backups = 14-70 GB. Negligible compared to media storage. **Does JellyWatch help with disaster recovery?** JellyWatch alerts you when your server goes offline (push notification). This gives you immediate awareness that something is wrong, reducing the time between failure and recovery. --- > **Get alerted the moment your server goes down. Recover faster.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server offline alerts, health monitoring, and push notifications. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin vs Immich vs Photoprism vs Nextcloud Photos 2026: Complete Self-Hosted Photo Comparison URL: https://jellywatch.app/blog/jellyfin-vs-immich-vs-photoprism-vs-nextcloud-photos-2026 Published: 2026-05-29T10:53:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, immich, photoprism, nextcloud, photos, comparison, self-hosted, google-photos, 2026 # Jellyfin vs Immich vs Photoprism vs Nextcloud Photos 2026: Complete Self-Hosted Photo Comparison Google Photos changed its unlimited storage policy in 2021. Since then, the self-hosted photo management space has exploded. In 2026, four platforms dominate the conversation: **Jellyfin** (media server with photo support), **Immich** (the Google Photos clone), **Photoprism** (the privacy-first option), and **Nextcloud Photos** (the all-in-one cloud). Each solves a different problem. This guide helps you pick the right one, or the right combination. --- ## The Fundamental Difference | Platform | Primary purpose | Photo handling | |---|---|---| | **Jellyfin** | Media server (video first) | Photos as a secondary library type | | **Immich** | Photo management (Google Photos replacement) | Purpose-built for photos and videos | | **Photoprism** | Photo organization and browsing | AI-powered, privacy-focused | | **Nextcloud Photos** | Cloud storage with photo features | Photos as part of a file sync ecosystem | --- ## Feature Comparison Matrix | Feature | Jellyfin | Immich | Photoprism | Nextcloud Photos | |---|---|---|---|---| | **AI Face Detection** | No | Yes (on-device ML) | Yes (TensorFlow) | Yes (Recognize app) | | **Object Recognition** | No | Yes (CLIP) | Yes | Limited | | **Mobile Auto-Upload** | No | Yes (Android + iOS) | No (use Syncthing) | Yes (native app) | | **Timeline View** | No (folder-based) | Yes (date-based) | Yes (date-based) | Yes (date-based) | | **Map View (GPS)** | No | Yes | Yes | Yes (Maps app) | | **Album Sharing** | No | Yes (links + users) | Yes (links) | Yes (links + users) | | **RAW Support** | No | Yes (with preview) | Yes (extensive) | Limited | | **Video Playback** | Excellent (transcoding) | Basic | Basic | Basic | | **Video Transcoding** | Yes (hardware accelerated) | Background (for previews) | No | No | | **Multi-User** | Yes | Yes | Yes | Yes | | **Offline Access** | Via clients | Yes (mobile app) | No | Yes (sync client) | | **Storage Deduplication** | No | Yes | No | No | | **External Library** | Yes | Yes (read-only) | Yes | Via external storage | | **Docker** | Yes | Yes | Yes | Yes | | **RAM Usage** | 500MB-2GB | 2-4GB (ML models) | 1-2GB | 512MB-1GB | | **GPU Acceleration** | Yes (video transcode) | Yes (ML inference) | Yes (TensorFlow) | No | --- ## Immich: The Google Photos Replacement Immich is the closest thing to a self-hosted Google Photos in 2026. It was built from day one to replicate the Google Photos experience: timeline browsing, face detection, search by content, mobile auto-upload, and shared albums. ### Strengths - **Mobile app quality** - the Android and iOS apps are polished, fast, and support background upload - **AI features** - CLIP-based search ("find photos of dogs at the beach"), face clustering, object detection - **Timeline** - photos organized by date with smooth infinite scroll - **Map view** - GPS-tagged photos displayed on a world map - **Sharing** - create shared albums with links or specific users - **Deduplication** - detects and handles duplicate uploads - **Partner sharing** - share your entire library with a partner (like Google Photos family sharing) - **Memories** - "On this day" feature showing photos from previous years ### Weaknesses - **Video handling is basic** - no transcoding, no HDR tone mapping, no multi-device streaming - **Resource hungry** - ML models consume 2-4GB RAM minimum - **PostgreSQL required** - adds complexity to the stack - **Still in active development** - breaking changes between versions are possible (though rare now) - **No file sync** - it is a photo manager, not a file storage system ### Docker Compose ```yaml services: immich-server: image: ghcr.io/immich-app/immich-server:release volumes: - /mnt/photos/upload:/usr/src/app/upload - /mnt/photos/external:/usr/src/app/external:ro environment: - DB_HOSTNAME=immich-db - DB_USERNAME=postgres - DB_PASSWORD=your_password - DB_DATABASE_NAME=immich - REDIS_HOSTNAME=immich-redis ports: - 2283:2283 depends_on: - immich-db - immich-redis restart: unless-stopped immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:release volumes: - ./immich/ml-cache:/cache restart: unless-stopped immich-redis: image: redis:7-alpine restart: unless-stopped immich-db: image: tensorchord/pgvecto-rs:pg16-v0.2.1 environment: - POSTGRES_PASSWORD=your_password - POSTGRES_USER=postgres - POSTGRES_DB=immich volumes: - ./immich/db:/var/lib/postgresql/data restart: unless-stopped ``` ### Best for - Replacing Google Photos completely - Families who want mobile auto-upload - Users who search photos by content ("sunset", "birthday cake") - Anyone who values the timeline + map experience --- ## Photoprism: Privacy-First Photo Organization Photoprism takes a different approach. It does not try to be Google Photos. Instead, it focuses on organizing and browsing an existing photo collection with AI assistance, without requiring a mobile app or cloud sync. ### Strengths - **RAW file support** - extensive support for camera RAW formats (CR2, NEF, ARW, DNG, etc.) - **AI classification** - automatic labels, colors, and categories without sending data anywhere - **Privacy** - all processing happens locally, no external API calls - **Existing library** - point it at your existing photo folder structure, no import needed - **Lightweight mobile** - works well in a mobile browser without a dedicated app - **Mature** - stable, well-documented, fewer breaking changes - **Places** - beautiful map integration with reverse geocoding ### Weaknesses - **No mobile auto-upload** - you need Syncthing or similar to get photos from your phone to the server - **No native mobile app** - PWA only (works but not as smooth as Immich) - **Slower AI** - TensorFlow-based classification is slower than Immich CLIP - **No partner sharing** - sharing is link-based only - **Freemium model** - some features require Photoprism+ (paid) ### Docker Compose ```yaml services: photoprism: image: photoprism/photoprism:latest environment: PHOTOPRISM_ADMIN_USER: admin PHOTOPRISM_ADMIN_PASSWORD: your_password PHOTOPRISM_ORIGINALS_PATH: /photoprism/originals PHOTOPRISM_STORAGE_PATH: /photoprism/storage PHOTOPRISM_DATABASE_DRIVER: mysql PHOTOPRISM_DATABASE_SERVER: mariadb:3306 PHOTOPRISM_DATABASE_NAME: photoprism PHOTOPRISM_DATABASE_USER: photoprism PHOTOPRISM_DATABASE_PASSWORD: your_db_password volumes: - /mnt/photos:/photoprism/originals:ro - ./photoprism/storage:/photoprism/storage ports: - 2342:2342 depends_on: - mariadb restart: unless-stopped mariadb: image: mariadb:11 environment: MARIADB_ROOT_PASSWORD: your_root_password MARIADB_DATABASE: photoprism MARIADB_USER: photoprism MARIADB_PASSWORD: your_db_password volumes: - ./photoprism/db:/var/lib/mysql restart: unless-stopped ``` ### Best for - Photographers with large RAW collections - Users who already have an organized photo folder structure - Privacy purists who want zero external dependencies - People who prefer browser-based access over mobile apps --- ## Nextcloud Photos: The All-in-One Approach Nextcloud is not a photo manager. It is a self-hosted cloud platform (file sync, calendar, contacts, office suite) that happens to include a Photos app. The photo features are good but not the primary focus. ### Strengths - **File sync** - full Dropbox-like sync client for desktop and mobile - **Mobile auto-upload** - built into the Nextcloud mobile app - **Ecosystem** - photos alongside documents, calendar, contacts, notes - **Recognize app** - face detection and object recognition (community app) - **Memories app** - timeline view with map, face clusters, and albums (community app by pulsejet) - **Sharing** - granular sharing with links, users, groups, and federation - **Mature** - 10+ years of development, massive community ### Weaknesses - **Performance** - Nextcloud is notoriously slow on large installations - **PHP-based** - inherent performance limitations compared to Go/Rust alternatives - **Photo features are add-ons** - not core functionality, quality varies - **Resource hungry** - the full Nextcloud stack (PHP, Redis, PostgreSQL, Collabora) is heavy - **Complexity** - many moving parts to maintain - **AI quality** - Recognize app is less accurate than Immich or Photoprism ### Best for - Users who want ONE platform for everything (files + photos + calendar + office) - Teams and families who need file sharing alongside photos - Users already running Nextcloud for other purposes --- ## Jellyfin: Photos as a Side Feature Jellyfin handles photos as a library type alongside movies, TV shows, and music. It is not a photo manager. It is a media server that can display photos. ### What Jellyfin does with photos - Displays photos in a folder-based grid - Slideshow playback - Basic EXIF data display - Multi-user access - Remote streaming (photos accessible from anywhere) ### What Jellyfin does NOT do with photos - No AI face detection or object recognition - No mobile auto-upload - No timeline view (folder-based only) - No map view - No album sharing links - No RAW file support - No search by content - No deduplication ### Best for - Displaying family photo slideshows on a TV - Basic remote access to a photo folder - Users who already run Jellyfin and want minimal photo browsing --- ## The Winning Combinations ### For most families: Immich + Jellyfin - **Immich** handles phone photo backup, face detection, search, and sharing - **Jellyfin** handles home video streaming to TVs with transcoding and HDR - Both can point at the same storage (Immich for photos, Jellyfin for videos) ### For photographers: Photoprism + Syncthing + Jellyfin - **Photoprism** organizes your RAW collection with AI classification - **Syncthing** auto-uploads from phone to server - **Jellyfin** streams video content separately ### For the all-in-one crowd: Nextcloud + Jellyfin - **Nextcloud** handles files, photos, calendar, contacts, and office - **Jellyfin** handles video streaming (Nextcloud video playback is terrible) ### For maximum coverage: Immich + Jellyfin + Kavita - **Immich** for photos - **Jellyfin** for video, music, and audiobooks - **Kavita** for comics and ebooks - Three specialized tools, each best-in-class for their domain --- ## Resource Requirements Comparison | Platform | Minimum RAM | Recommended RAM | Storage overhead | GPU useful? | |---|---|---|---|---| | Jellyfin (photos only) | 1 GB | 2 GB | Minimal | No | | Immich | 4 GB | 8 GB | ~20% (thumbnails + ML cache) | Yes (ML inference) | | Photoprism | 2 GB | 4 GB | ~15% (thumbnails + sidecar) | Yes (TensorFlow) | | Nextcloud + Memories | 2 GB | 4 GB | ~10% (previews) | No | --- ## Migration Paths ### From Google Photos to Immich 1. Use Google Takeout to export your library 2. Upload to Immich via the CLI tool or web interface 3. Immich processes faces, locations, and metadata automatically 4. Install the mobile app and enable auto-upload going forward ### From Apple Photos to Immich 1. Export from Photos app (File > Export > Export Unmodified Originals) 2. Upload to Immich 3. Face data does not transfer (Immich re-detects faces) ### From any platform to Photoprism 1. Copy your photo folder to the server 2. Point Photoprism at the folder 3. Run indexing (can take hours for large libraries) 4. All organization happens non-destructively (original files untouched) --- ## FAQ **Can I use Immich and Photoprism together?** Yes, but there is little reason to. They solve the same problem differently. Pick one based on whether you value mobile apps (Immich) or RAW support and privacy (Photoprism). **Does Immich replace Jellyfin for videos?** No. Immich video playback is basic. No transcoding, no HDR, no multi-device streaming. Use Jellyfin for video, Immich for photos. **Is Nextcloud Photos good enough on its own?** For casual use, yes. For serious photo management (face detection, search, RAW), Immich or Photoprism is significantly better. **Which uses the least resources?** Jellyfin (for basic photo display) uses the least. Photoprism is moderate. Immich is the heaviest due to ML models. **Can all four share the same photo files?** Yes. Use read-only mounts. All four can read the same folder without conflicts. --- ## The Verdict | Your priority | Choose | |---|---| | Replace Google Photos completely | **Immich** | | Organize a large existing collection | **Photoprism** | | One platform for everything | **Nextcloud** | | Just display photos on TV | **Jellyfin** | | Best of all worlds | **Immich + Jellyfin** | --- > **Running multiple self-hosted services? Monitor your Jellyfin server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and your complete homelab in your pocket. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## The Jellyfin Bandwidth Calculator: How Many Users Can Your Upload Speed Handle? (2026) URL: https://jellywatch.app/blog/jellyfin-bandwidth-calculator-how-many-users-upload-speed-2026 Published: 2026-05-29T10:52:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, bandwidth, upload-speed, calculator, remote-streaming, users, network, 2026 # The Jellyfin Bandwidth Calculator: How Many Users Can Your Upload Speed Handle? (2026) You built the perfect Jellyfin server. Hardware transcoding works. Your library is organized. Then you share it with 5 friends and everyone buffers simultaneously. The problem is not your server. It is your internet upload speed. This guide gives you the exact math to calculate how many remote users your connection can support. --- ## The Formula ``` Maximum concurrent remote streams = Upload speed (Mbps) / Bitrate per stream (Mbps) ``` That is it. Your upload speed divided by the bitrate each stream consumes. --- ## Bitrate by Content Type | Content type | Typical bitrate | Range | |---|---|---| | 1080p encode (H.264, CRF 20) | 8-12 Mbps | 5-20 Mbps | | 1080p encode (H.265, CRF 20) | 5-8 Mbps | 3-15 Mbps | | 1080p Blu-ray remux | 20-35 Mbps | 15-40 Mbps | | 4K encode (H.265, CRF 18) | 15-25 Mbps | 10-35 Mbps | | 4K Blu-ray remux | 50-80 Mbps | 40-100 Mbps | | Transcoded to 720p | 4-6 Mbps | 2-8 Mbps | | Transcoded to 1080p (8 Mbps limit) | 8 Mbps | Fixed | | Transcoded to 480p (mobile) | 2-3 Mbps | 1-4 Mbps | | Music (FLAC) | 1-2 Mbps | 0.8-3 Mbps | | Music (MP3 320) | 0.3 Mbps | 0.3 Mbps | --- ## Quick Reference: Streams by Upload Speed ### If your library is mostly 1080p H.265 encodes (~8 Mbps average) | Upload speed | Max concurrent streams | Comfortable (80% rule) | |---|---|---| | 10 Mbps | 1 stream | 1 stream | | 20 Mbps | 2 streams | 2 streams | | 30 Mbps | 3 streams | 3 streams | | 50 Mbps | 6 streams | 5 streams | | 100 Mbps | 12 streams | 10 streams | | 200 Mbps | 25 streams | 20 streams | | 500 Mbps | 62 streams | 50 streams | | 1 Gbps | 125 streams | 100 streams | ### If your library is mostly 4K remuxes (~60 Mbps average) | Upload speed | Max concurrent streams | Comfortable | |---|---|---| | 10 Mbps | 0 (impossible) | 0 | | 20 Mbps | 0 (impossible) | 0 | | 50 Mbps | 0 (barely 1, will buffer) | 0 | | 100 Mbps | 1 stream | 1 stream | | 200 Mbps | 3 streams | 2-3 streams | | 500 Mbps | 8 streams | 6-7 streams | | 1 Gbps | 16 streams | 13 streams | ### If you transcode everything to 8 Mbps for remote users | Upload speed | Max concurrent streams | Comfortable | |---|---|---| | 10 Mbps | 1 stream | 1 stream | | 20 Mbps | 2 streams | 2 streams | | 50 Mbps | 6 streams | 5 streams | | 100 Mbps | 12 streams | 10 streams | | 200 Mbps | 25 streams | 20 streams | --- ## The 80% Rule Never plan to use 100% of your upload bandwidth for Jellyfin. You need headroom for: - Other internet usage (browsing, video calls, cloud sync) - TCP overhead (~5-10%) - Burst handling (scene changes spike bitrate momentarily) - Quality of service (buffering starts before you hit the absolute limit) **Use 80% of your upload speed as the practical maximum for Jellyfin.** --- ## How to Check Your Upload Speed ```bash # From your server curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 - ``` Or visit [speedtest.net](https://www.speedtest.net) from a device on the same network as your server. **Important:** Test from the SERVER, not from a client device. Your server's upload is what matters for remote streaming. --- ## Strategies to Serve More Users with Limited Bandwidth ### Strategy 1: Force transcoding with bitrate limits Dashboard > Users > [Remote User] > Remote streaming bitrate limit: | Setting | Effect | Users supported (50 Mbps upload) | |---|---|---| | No limit (Original) | Full quality, high bandwidth | 1-2 (4K) or 4-6 (1080p) | | 20 Mbps | Good 1080p quality | 2 | | 8 Mbps | Decent 1080p | 6 | | 4 Mbps | 720p quality | 12 | | 2 Mbps | 480p (mobile) | 25 | This trades quality for capacity. More users can stream simultaneously at lower quality. ### Strategy 2: Encode your library for lower bitrates Use Tdarr or Handbrake to encode your library at lower bitrates: - H.265 CRF 22-24 instead of CRF 18-20 - Target 5-8 Mbps for 1080p instead of 10-15 Mbps - Smaller files = less bandwidth per stream = more concurrent users ### Strategy 3: Separate 4K and 1080p libraries Keep 4K content in a separate library. Only give local users access to 4K. Remote users see the 1080p library only. This prevents a remote user from requesting a 60 Mbps 4K stream over your 50 Mbps upload. ### Strategy 4: Use a VPS as a relay If your home upload is limited but you have fast local storage: 1. Run Jellyfin on a VPS with 1 Gbps bandwidth 2. Mount your home NAS via SSHFS or Rclone 3. Your home upload only needs to serve the VPS (one connection) 4. The VPS serves all remote users with its 1 Gbps pipe Your home upload becomes the bottleneck only for the VPS connection, not for every individual user. ### Strategy 5: Cloudflare Tunnel with caching Cloudflare Tunnel can cache static assets and reduce bandwidth for repeated requests (poster images, metadata). Video streams are not cached, but the overall bandwidth savings from cached UI assets can be 10-20%. --- ## ISP Upload Speed by Connection Type (2026 Averages) | Connection type | Typical upload | Jellyfin viability | |---|---|---| | DSL | 1-5 Mbps | 0-1 remote streams (barely viable) | | Cable (DOCSIS 3.1) | 10-35 Mbps | 1-4 streams | | Fiber (FTTH) | 100-1000 Mbps | 10-100+ streams | | 5G Home Internet | 20-100 Mbps | 2-12 streams | | Starlink | 10-25 Mbps | 1-3 streams | | VPS (Hetzner/Contabo) | 1000 Mbps | 100+ streams | **Fiber is the only home connection that comfortably supports 5+ remote users with high-quality streams.** --- ## Real-World Example Calculations ### Scenario: Family of 4, 50 Mbps upload - Parent 1 watches 4K locally (does not use upload) - Parent 2 watches 1080p remotely at work (~8 Mbps) - Kid 1 watches on tablet at school (~4 Mbps, transcoded) - Kid 2 watches on phone (~3 Mbps, transcoded) - **Total remote bandwidth:** 15 Mbps out of 50 Mbps available - **Verdict:** Comfortable, plenty of headroom ### Scenario: Shared server, 10 friends, 100 Mbps upload - 3 friends watching 1080p encodes simultaneously (~8 Mbps each = 24 Mbps) - 1 friend watching 4K remotely (~25 Mbps) - **Total:** 49 Mbps out of 100 Mbps - **Verdict:** Works, but adding more 4K users would push limits - **Fix:** Set remote bitrate limit to 20 Mbps for all users ### Scenario: Community server, 20 users, 30 Mbps upload (cable) - Even 3 simultaneous 1080p streams (24 Mbps) nearly saturates the connection - **Verdict:** Not viable for more than 2-3 concurrent remote users - **Fix:** Move to a VPS with 1 Gbps, or upgrade to fiber --- ## Monitoring Bandwidth Usage JellyWatch shows you the bitrate of every active session. When users report buffering: 1. Open JellyWatch 2. Check active sessions 3. Add up the bitrates of all remote streams 4. Compare to your upload speed 5. If total exceeds 80% of upload, that is your bottleneck --- ## FAQ **Does Direct Play use more bandwidth than transcoding?** Usually yes. Direct Play sends the file at its original bitrate (could be 60 Mbps for a 4K remux). Transcoding can compress it to any target bitrate (8 Mbps, 4 Mbps, etc.). For bandwidth-limited connections, transcoding to a lower bitrate actually helps. **Does local streaming use upload bandwidth?** No. Local network streaming uses your LAN (typically Gigabit). Only remote/internet streaming uses your ISP upload. **Can I prioritize Jellyfin traffic over other internet usage?** Yes. Configure QoS (Quality of Service) on your router to prioritize traffic from your Jellyfin server's IP address. **What upload speed do I need for one 4K remote stream?** Minimum 80 Mbps upload for a 4K remux. 40 Mbps for a 4K encode. 100+ Mbps recommended for comfortable 4K remote streaming. **Is symmetric fiber worth the extra cost?** For Jellyfin remote streaming, absolutely. Symmetric 500/500 Mbps fiber supports 50+ concurrent streams. Asymmetric cable (500 down / 20 up) supports only 2-3. --- > **See exactly how much bandwidth each stream uses. Monitor from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - bitrate per session, transcode status, and server health. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin Power Consumption Guide 2026: Real Measurements for N100, N305, NAS, and Old PCs (Kill-A-Watt Tested) URL: https://jellywatch.app/blog/jellyfin-power-consumption-electricity-cost-n100-nas-2026 Published: 2026-05-29T10:41:30+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, power-consumption, electricity, cost, n100, mini-pc, nas, energy, kill-a-watt, 2026 # Jellyfin Power Consumption Guide 2026: Real Measurements Your Jellyfin server runs 24/7/365. That is 8,760 hours per year. Even a small difference in power draw adds up to real money over time. An old desktop pulling 80W costs $105/year in electricity. An Intel N100 mini PC pulling 10W costs $13/year. That is $92/year in savings, which pays for the mini PC itself in 18 months. This guide provides real-world power measurements across common Jellyfin hardware, measured with a Kill-A-Watt meter under actual Jellyfin workloads. --- ## How We Measured - **Tool:** P3 Kill-A-Watt P4400 electricity meter - **Methodology:** Measured at the wall outlet (includes PSU efficiency losses) - **States tested:** Idle (server running, no streams), 1x 1080p transcode, 1x 4K transcode, 2x simultaneous transcodes - **Software:** Jellyfin 10.11.7, Docker, Ubuntu Server 24.04 - **Electricity cost:** $0.15/kWh (US average 2026) --- ## Power Measurements by Hardware ### Intel N100 Mini PC (Beelink Mini S12 Pro) | State | Power draw | Notes | |---|---|---| | Off (standby) | 0.8W | Wake-on-LAN enabled | | Idle (Jellyfin running, no streams) | 7-9W | Typical: 8W | | 1x Direct Play (1080p) | 8-10W | Almost no CPU increase | | 1x Direct Play (4K HEVC) | 9-11W | Minimal CPU for muxing | | 1x HW Transcode (4K to 1080p, QSV) | 12-16W | GPU active | | 2x HW Transcode (4K to 1080p, QSV) | 15-20W | GPU at ~60% | | 3x HW Transcode (4K to 1080p, QSV) | 18-24W | GPU near max | | Library scan (full) | 14-18W | CPU + disk active | | Tdarr encoding (QSV) | 18-25W | Sustained GPU load | **Annual cost at idle:** 8W x 8,760h x $0.15/kWh = **$10.51/year** **Annual cost typical use:** ~12W average = **$15.77/year** --- ### Intel N305 Mini PC (Beelink EQ13) | State | Power draw | Notes | |---|---|---| | Idle | 10-13W | 8 cores, slightly higher baseline | | 1x Direct Play | 11-14W | | | 1x HW Transcode (QSV) | 16-22W | | | 3x HW Transcode (QSV) | 22-30W | More headroom than N100 | | Full load (Tdarr + streams) | 28-35W | | **Annual cost at idle:** 12W average = **$15.77/year** **Annual cost typical use:** ~18W average = **$23.65/year** --- ### Synology DS224+ (NAS, Intel J4125) | State | Power draw | Notes | |---|---|---| | Idle (drives spinning) | 15-18W | 2x HDD spinning | | Idle (drives sleeping) | 8-10W | HDD hibernation enabled | | 1x Direct Play | 16-20W | | | 1x HW Transcode (QSV) | 20-25W | J4125 iGPU | | Library scan | 22-28W | Drives active | **Annual cost:** 17W average = **$22.34/year** Note: NAS power includes the hard drives. A diskless mini PC + external USB drive would be comparable. --- ### Raspberry Pi 5 (8GB) | State | Power draw | Notes | |---|---|---| | Idle | 4-5W | Minimal baseline | | 1x Direct Play | 5-7W | | | 1x Software Transcode (1080p) | 12-15W | CPU at 100%, throttling | | 4K Software Transcode | Not viable | Thermal throttle, unwatchable | **Annual cost:** 5W average = **$6.57/year** Cheapest to run, but no hardware transcoding. Direct Play only. --- ### Old Laptop (2018 Intel i5-8250U) | State | Power draw | Notes | |---|---|---| | Idle (lid closed) | 12-18W | Display off, Wi-Fi on | | 1x Direct Play | 14-20W | | | 1x HW Transcode (QSV) | 22-30W | 8th gen QSV | | 2x HW Transcode | 28-38W | | **Annual cost:** 16W average = **$21.02/year** Surprisingly efficient. Old laptops are underrated Jellyfin servers. --- ### Old Desktop PC (2016 Intel i5-6500, no dGPU) | State | Power draw | Notes | |---|---|---| | Idle | 45-65W | PSU inefficiency at low load | | 1x Direct Play | 50-70W | | | 1x HW Transcode (QSV) | 60-80W | 6th gen QSV | | 1x Software Transcode (4K) | 90-120W | CPU at 100% | **Annual cost:** 60W average = **$78.84/year** This is where the money bleeds. An old desktop costs 5-7x more to run than an N100 mini PC. --- ### Desktop PC with NVIDIA RTX 3060 | State | Power draw | Notes | |---|---|---| | Idle | 55-75W | GPU idle power + system | | 1x Direct Play | 58-78W | | | 1x HW Transcode (NVENC) | 70-95W | GPU video engine active | | 5x HW Transcode (NVENC) | 90-130W | GPU at moderate load | | Gaming + Transcoding | 250-350W | Full GPU + CPU | **Annual cost:** 70W average = **$91.98/year** Powerful but expensive to run 24/7. Best as a dual-purpose gaming/media PC that sleeps when not in use. --- ### Full Rack Server (Dell PowerEdge R730, Dual Xeon) | State | Power draw | Notes | |---|---|---| | Idle | 120-180W | Fans, dual PSU, ECC RAM | | Active (multiple transcodes) | 200-350W | | **Annual cost:** 150W average = **$197.10/year** Overkill for Jellyfin. Only justified if running 20+ other services alongside. --- ## Summary Table | Hardware | Idle watts | Typical watts | Annual cost | Best for | |---|---|---|---|---| | Raspberry Pi 5 | 5W | 6W | $7/year | Direct Play only, ultra-budget | | Intel N100 Mini PC | 8W | 12W | $16/year | Best value (recommended) | | Intel N305 Mini PC | 12W | 18W | $24/year | Multi-user, more headroom | | Old Laptop (2018) | 15W | 20W | $26/year | Free hardware, decent efficiency | | Synology NAS | 16W | 20W | $26/year | Already own it, dual-purpose | | Old Desktop (2016) | 55W | 65W | $85/year | Wasteful, upgrade recommended | | Desktop + RTX 3060 | 65W | 80W | $105/year | Dual-purpose only | | Rack Server | 150W | 180W | $237/year | Overkill, enterprise only | --- ## The Upgrade Break-Even Calculation Should you buy an N100 mini PC to replace your old desktop? | Factor | Old Desktop | Intel N100 Mini PC | |---|---|---| | Purchase cost | $0 (already own) | $130 | | Annual electricity | $85 | $16 | | Annual savings | - | $69/year | | **Break-even** | - | **22 months** | After 22 months, the N100 has paid for itself in electricity savings. After 3 years, you have saved $77 net. After 5 years, $215 net. If your old desktop draws 80W+ at idle, the upgrade pays for itself in under 2 years. --- ## Tips to Reduce Power Consumption ### 1. Use hardware transcoding Software transcoding uses 4-8x more power than hardware transcoding for the same task. Always enable Intel QSV or NVIDIA NVENC. ### 2. Optimize for Direct Play Direct Play uses near-zero additional power. Encode your library in H.265 with AAC/EAC3 audio so clients Direct Play without transcoding. ### 3. Enable HDD sleep on NAS If your media drives are not being accessed, let them spin down. Saves 5-8W per drive. ### 4. Schedule heavy tasks overnight Tdarr encoding, library scans, and Intro Skipper analysis spike power draw. Schedule them during off-peak electricity hours if your utility offers time-of-use pricing. ### 5. Use Wake-on-LAN (advanced) If your server is only used a few hours per day, configure Wake-on-LAN. The server sleeps at 1W and wakes when a client connects. Saves 50-80% of annual electricity for light-use servers. --- ## Environmental Impact | Hardware | Annual kWh | CO2 equivalent (US grid avg) | |---|---|---| | Intel N100 | 105 kWh | 44 kg CO2 | | Old Desktop | 570 kWh | 239 kg CO2 | | Rack Server | 1,314 kWh | 552 kg CO2 | Switching from an old desktop to an N100 saves ~195 kg of CO2 per year. That is equivalent to driving 480 fewer miles. --- ## FAQ **Does Jellyfin itself use much power?** No. Jellyfin at idle uses <1% CPU. The power draw is dominated by the hardware platform (PSU efficiency, fans, drives), not the software. **Does the number of library items affect power?** Minimally. A 10,000-item library uses the same idle power as a 100-item library. Power only increases during active scans or transcoding. **Is an N100 powerful enough despite using so little power?** Yes. The N100 handles 3-4 simultaneous 4K transcodes via QSV while drawing only 20W. Power efficiency and performance are not mutually exclusive with modern hardware. **Should I turn off my server at night?** For most users, no. The convenience of 24/7 availability outweighs the $1-2/month in overnight electricity. If you only use it 2-3 hours/day, Wake-on-LAN is a good compromise. --- > **Know what your server is doing (and costing you). Monitor from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU usage, active transcodes, and server health for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin for Kids 2026: Build a Safe, Ad-Free Streaming Platform Your Children Will Love URL: https://jellywatch.app/blog/jellyfin-for-kids-safe-streaming-platform-parental-controls-2026 Published: 2026-05-29T10:25:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, kids, parental-controls, safe-streaming, family, children, ad-free, 2026 # Jellyfin for Kids 2026: Build a Safe, Ad-Free Streaming Platform Netflix has ads now. YouTube Kids is a surveillance machine. Disney+ costs $14/month and still shows content you would rather your kids did not see. What if you could build a streaming platform specifically for your children: no ads, no tracking, no inappropriate content, and completely under your control? Jellyfin does exactly this. With the right configuration, your kids get their own streaming experience that looks and feels like a real platform, while you maintain complete control over what they can access. --- ## What Kids Get - A clean, simple interface with only their content visible - Big poster artwork they can browse with a TV remote - No ads, no autoplay of unrelated content, no algorithm pushing boundaries - Their own watch history and "Continue Watching" section - Access only during hours you define - Content filtered by age rating automatically ## What Parents Get - Complete control over what content is available - Time-based access restrictions - No external accounts or data collection - Ability to monitor what kids watch (via JellyWatch) - Zero monthly cost --- ## Step 1: Create Dedicated Kids Libraries The most important step: separate kids content into its own libraries. ### Folder structure ``` /mnt/media/ kids-movies/ <- Only age-appropriate movies kids-tv/ <- Only age-appropriate TV shows kids-music/ <- Children songs, audiobooks movies/ <- Adult library (kids cannot see this) tv/ <- Adult library (kids cannot see this) ``` ### Add kids libraries in Jellyfin 1. Dashboard > Libraries > Add Media Library 2. Create: - "Kids Movies" (type: Movies, folder: /media/kids-movies) - "Kids TV" (type: Shows, folder: /media/kids-tv) - "Kids Music" (type: Music, folder: /media/kids-music) ### Curating content What goes in the kids libraries: - Animated movies (Pixar, Disney, Ghibli, DreamWorks) - Age-appropriate live action (Harry Potter, Paddington) - Educational shows (Bluey, Sesame Street, Magic School Bus) - Music (children songs, movie soundtracks) What stays OUT: - Anything rated above your threshold (PG-13, TV-14) - Horror, violence, adult themes - Content you have not personally reviewed --- ## Step 2: Create Kids User Accounts Dashboard > Users > Add User ### Configuration for a kids account | Setting | Value | Why | |---|---|---| | Username | Their name ("Emma") | Easy to identify | | Password | Simple PIN (1234) or none | Kids need easy access | | Library access | Kids Movies, Kids TV, Kids Music ONLY | Cannot see adult content | | Allow media playback | Yes | Core functionality | | Allow media downloads | No | Prevent filling devices | | Allow remote connections | Your choice | For tablets outside home | | Allow SyncPlay | No | Avoid joining adult sessions | ### Parental Rating Limit Dashboard > Users > [Kids Account] > Parental Control: - **Maximum parental rating:** Set to G, PG, or TV-Y7 depending on age - Content rated above this threshold is hidden even if it somehow ends up in their library ### Access Schedule Dashboard > Users > [Kids Account] > Access Schedule: - **Weekdays:** 16:00 - 20:00 (after school, before bedtime) - **Weekends:** 08:00 - 20:00 - **Outside these hours:** Account cannot stream This is built into Jellyfin. No external tools needed. --- ## Step 3: Make the Interface Kid-Friendly ### Simplify the home screen For kids accounts, reduce the home screen to essentials: Dashboard > Display > Home Screen Sections (per user): 1. Continue Watching (so they can resume) 2. Latest Kids Movies 3. Latest Kids TV Remove: Favorites, Recently Added (confusing for young kids), Live TV, etc. ### Custom CSS for kids (optional) Make the interface more colorful and kid-friendly with custom CSS: ```css /* Larger, more colorful cards */ .card .cardContent { border-radius: 16px !important; } /* Bigger text */ .cardText { font-size: 1.2em !important; } /* Fun accent color */ :root { --accent: #FF6B35; /* Warm orange */ } ``` Apply per-user: User Settings > Display > Custom CSS. ### Collections for easy browsing Create collections that make sense for kids: - "Disney Classics" - "Superhero Movies" - "Bedtime Stories" (short episodes) - "Rainy Day Movies" (longer films) - "Learning Time" (educational content) --- ## Step 4: Device Setup for Kids ### Dedicated tablet Install Findroid or the official Jellyfin app. Log in with the kids account. The app only shows their libraries. **Tip:** Use Android's restricted user profiles or iOS Screen Time to prevent kids from accessing other apps or changing Jellyfin settings. ### TV in the kids room Install Jellyfin on a Fire TV Stick or Chromecast with Google TV. Log in with the kids account. They navigate with the remote and only see their content. **Tip:** Set the Fire TV Stick to open Jellyfin on boot (via a launcher app) so kids do not need to navigate the Fire TV home screen. ### Shared family TV On the family TV, set up multiple Jellyfin profiles. Kids select their profile (with a simple PIN or no PIN). Adults select theirs (with a PIN). --- ## Step 5: PIN Protection for Adult Profiles Prevent kids from accessing adult accounts: 1. Dashboard > Users > [Adult Account] 2. Set a strong password 3. On the TV client: the login screen shows all profiles. Kids tap theirs (no PIN). Adults enter their PIN. Alternatively, use the **Easy PIN** feature in some Jellyfin clients that allows a short numeric PIN instead of a full password. --- ## Step 6: Monitor What Kids Watch JellyWatch shows you exactly what your kids are watching: - Real-time: see the active session with title and progress - History: review what they watched this week - Time tracking: see total screen time per day This is not surveillance. It is parenting. You know what content your children consume without hovering over their shoulder. --- ## Content Acquisition for Kids ### Legal sources for kids content - **Your own DVD/Blu-ray collection** - rip with MakeMKV - **Digital purchases** - strip DRM and add to library - **Public domain** - classic cartoons, educational content - **Creative Commons** - independent animated shorts ### Organizing with Radarr/Sonarr Create a separate Radarr instance for kids content: - Root folder: /mnt/media/kids-movies/ - Quality profile: 1080p (no need for 4K on a tablet) - Tags: "kids" for easy filtering Same for Sonarr with kids TV shows. --- ## Age-Based Library Strategy | Age group | Libraries | Rating limit | Access hours | |---|---|---|---| | 2-5 years | Toddler TV, Toddler Movies | TV-Y, G | 08:00-18:00 | | 6-9 years | Kids TV, Kids Movies | TV-Y7, PG | 07:00-20:00 | | 10-12 years | Kids + Tween content | TV-PG, PG | 07:00-21:00 | | 13+ | Most content except adult | TV-14, PG-13 | 07:00-22:00 | Create separate user accounts for each age group. As kids grow, move them to the next tier. --- ## Jellyfin Kids vs Commercial Platforms | Feature | Jellyfin Kids | Disney+ | YouTube Kids | Netflix Kids | |---|---|---|---|---| | Monthly cost | $0 | $14/month | $0 (ads) | $7-23/month | | Ads | Never | Yes (ad tier) | Yes (heavy) | Yes (ad tier) | | Tracking/data collection | None | Extensive | Extensive | Extensive | | Content control | Complete | None (Disney decides) | Algorithmic | Limited | | Access schedule | Built-in | No | Limited | No | | Offline access | Yes (client-dependent) | Yes | Yes | Yes | | Custom libraries | Yes | No | No | No | | Works without internet | Yes (local network) | No | No | No | --- ## FAQ **Can kids accidentally access adult content?** No, if configured correctly. Library access restrictions are server-side. Even if a child somehow navigates to an adult library URL, the server refuses to serve content they do not have access to. **What if my kid shares the PIN with friends?** The kids account only has access to kids content. Even if shared, the worst case is someone watches Bluey on your server. **Can I see how much time my kids spend watching?** Yes. JellyWatch shows per-user viewing time. The Playback Reporting plugin also tracks this data. **Does the access schedule work on all clients?** Yes. Access schedules are enforced server-side. The client cannot override them regardless of which app is used. **Can kids request new content?** If you set up Seerr with a kids user, they can request content. You approve or deny from JellyWatch. This teaches them to ask rather than just consuming whatever an algorithm serves. --- > **Know what your kids are watching. Monitor from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see active sessions, viewing history, and screen time for every user on your Jellyfin server. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Tracearr: The Universal Playback Tracker for Jellyfin, Emby, and Plex (2026 Setup Guide) URL: https://jellywatch.app/blog/tracearr-universal-playback-tracker-jellyfin-emby-plex-2026 Published: 2026-05-28T08:22:00+00:00 Author: JellyWatch Team Category: Showcase Tags: tracearr, playback-tracking, jellyfin, emby, plex, history, analytics, docker, 2026 # Tracearr: Monitoring Plex, Jellyfin, and Emby from One Dashboard (2026 Setup Guide) Every media server has its own monitoring tool: Plex has Tautulli, Jellyfin and Emby have Jellystat. But if you run more than one server type, you end up with multiple dashboards, multiple setups, and no unified view. **Tracearr** solves that. Tracearr is a free, open-source, self-hosted monitoring platform that connects to Plex, Jellyfin, and Emby simultaneously and gives you a single dashboard for real-time session tracking, playback analytics, account sharing detection, and library management. > Source: [github.com/connorgallopo/Tracearr](https://github.com/connorgallopo/Tracearr) — [docs.tracearr.com](https://docs.tracearr.com) --- ## What Tracearr Actually Does Tracearr is a **full analytics and monitoring dashboard** — comparable to Tautulli or Jellystat, but covering all three platforms at once. Key features: - **Real-time session monitoring** — see every active stream the moment it starts, via WebSocket updates - **Multi-server dashboard** — Plex, Jellyfin, and Emby unified in one interface - **Session history** — complete watch history with device, location, quality, and codec data - **Account sharing detection** — automated rules for impossible travel, simultaneous locations, device velocity, geo restrictions, and more - **Trust scores** — every account starts at 100, violations lower it automatically - **Cross-server user identities** — merge accounts across platforms so one person has one profile - **Media catalog** — one unified library view across all servers with duplicate detection and storage analysis - **Newsletters** — email your users what was recently added, on a schedule - **Stream termination** — stop a stream directly from the dashboard - **Public REST API** — v1 and v2, with interactive Scalar reference at `/api-docs` - **Data import** — migrate history from Tautulli, Jellystat, or the Jellyfin/Emby Playback Reporting plugin - **Mobile app** — iOS and Android companion app --- ## How It Works Tracearr connects to your servers via their APIs and monitors activity continuously: - **Plex** uses Server-Sent Events natively — streams appear the moment they start - **Jellyfin and Emby** use the optional [Tracearr SSE plugin](https://github.com/Tracearr/Media-Server-SSE) for the same instant push-based detection; without it, Tracearr falls back to polling ``` [Plex] --SSE (native)-------> [Tracearr Dashboard] [Jellyfin] --SSE (plugin)-------> [Tracearr] <--> [TimescaleDB + Redis] [Emby] --SSE (plugin)-------> [Tracearr] ``` Session history is stored in **TimescaleDB** (a PostgreSQL extension built for time-series data), with **Redis** handling background jobs. This is what keeps dashboard stats fast over long histories — they are pre-computed, not recalculated on every page load. > Note: Emby webhooks exist but require an **Emby Premiere** subscription and a reachable HTTP listener. The SSE plugin is the recommended approach and has no such requirement. --- ## Docker Setup Tracearr requires **TimescaleDB and Redis** in addition to the application container. There are two deployment styles: ### Option 1 — All-in-One (easiest, recommended for home use) Everything bundled in a single container. Designed for Unraid and bare-metal hosts. Secrets are auto-generated on first boot. ```yaml services: tracearr: image: ghcr.io/connorgallopo/tracearr:supervised container_name: tracearr shm_size: 512mb mem_limit: 3g # minimum 3 GB required (PostgreSQL + Redis + Node.js) ports: - "3000:3000" environment: - TZ=Europe/Paris volumes: - tracearr_postgres:/data/postgres - tracearr_redis:/data/redis - tracearr_data:/data/tracearr - tracearr_backups:/data/backup restart: unless-stopped volumes: tracearr_postgres: tracearr_redis: tracearr_data: tracearr_backups: ``` ```bash docker compose up -d ``` ### Option 2 — Standard (separate containers) ```bash # Generate required secrets first echo "JWT_SECRET=$(openssl rand -hex 32)" > .env echo "COOKIE_SECRET=$(openssl rand -hex 32)" >> .env # Download the official compose file curl -O https://raw.githubusercontent.com/connorgallopo/Tracearr/main/docker/examples/docker-compose.pg18.yml docker compose -f docker-compose.pg18.yml up -d ``` Access Tracearr at `http://your-server:3000`. > **Default port is 3000**, not 7600 or any other port. --- ## Step 1: Connect Your Media Servers Open `http://your-server:3000` after startup and use the server connection wizard. You'll need: - **Plex**: your Plex URL and a Plex token - **Jellyfin**: your Jellyfin URL and an API key (Dashboard > API Keys) - **Emby**: your Emby URL and an API key (Dashboard > Advanced > Security) For **instant session detection on Jellyfin and Emby**, install the Tracearr SSE plugin: 1. Go to your Jellyfin or Emby dashboard → Plugins → Repositories 2. Add the Tracearr plugin repository 3. Install **Media Server SSE** 4. Restart Jellyfin/Emby Without the plugin, Tracearr falls back to polling — sessions still appear, just with a short delay. --- ## Step 2: Cross-Server User Identities If the same person has accounts on multiple servers, Tracearr can unify them: 1. Go to **Users** in the Tracearr dashboard 2. Merge accounts: "john" on Jellyfin + "john_doe" on Plex = one identity 3. All their history and trust score are now unified — the identity's score is the **lowest** of its active accounts, so merging never hides a problem --- ## Step 3: Import Historical Data Tracearr can import your existing history through the **Settings > Import** section in the UI: - **From Tautulli** — connect your Tautulli instance directly - **From Jellystat** — upload a Jellystat backup file - **From Playback Reporting plugin** — read directly from Jellyfin or Emby This is all done through the dashboard, not via manual API calls. --- ## Account Sharing Detection This is one of Tracearr's standout features. Twenty-two built-in automation templates ship out of the box, including: | Template | What it catches | |---|---| | Impossible Travel | Same account in NYC and London 30 min apart | | Simultaneous Locations | Two cities streaming at the same time | | Device Velocity | Too many unique IPs in a short window | | Concurrent Streams | Exceeds your per-user stream limit | | Geo Restrictions | Streams from blocked countries | | Account Inactivity | Dormant accounts that might be shared credentials | Automations follow a trigger → conditions → actions model. Actions can notify via Discord, ntfy, Pushover, SMTP email, mobile push, or stop the stream outright. --- ## Tracearr vs Jellystat vs Tautulli | Feature | Tracearr | Jellystat | Tautulli | |---|---|---|---| | Plex support | ✅ | ❌ | ✅ | | Jellyfin support | ✅ | ✅ | ❌ | | Emby support | ✅ | ✅ | ❌ | | Multi-server dashboard | ✅ | ❌ | ❌ | | Real-time sessions | ✅ | ✅ | ✅ | | Watch history & stats | ✅ | ✅ | ✅ | | Transcode analytics | ✅ | ✅ | ✅ | | Live TV & music tracking | ✅ | ✅ | ✅ | | Push notifications | ✅ | ❌ | ✅ | | Newsletters | ✅ | ❌ | ✅ | | Account sharing detection | ✅ | ❌ | ❌ | | Trust scoring | ✅ | ❌ | ❌ | | Cross-server user identities | ✅ | ❌ | ❌ | | Cross-server media catalog | ✅ | ❌ | ❌ | | Cross-server duplicate finding | ✅ | ❌ | ❌ | | Import from Tautulli | ✅ | ❌ | — | | Import from Jellystat | ✅ | — | ❌ | | Public API | ✅ | ✅ | ✅ | | Mobile app | ✅ | ❌ | ❌ | > Jellystat supports **both Jellyfin and Emby** — it is not Jellyfin-only as sometimes claimed. Tracearr is a **direct competitor** to Tautulli and Jellystat, not a data layer underneath them. If you only run Plex, Tautulli remains the mature, established choice. If you only run Jellyfin/Emby, Jellystat is solid. If you run multiple server types, or want account sharing detection, Tracearr is the only tool that handles all of it in one place. --- ## Storage and Infrastructure Tracearr is not a lightweight single-binary app. It requires: - **TimescaleDB** (PostgreSQL + time-series extension) for session history - **Redis** for background job processing - **Minimum 3 GB RAM** for the all-in-one supervised container Regular PostgreSQL works for short histories, but TimescaleDB is the reason long-term dashboard stats stay responsive — queries run against pre-aggregated hypertables rather than scanning raw rows. Storage usage is modest: roughly 1 MB per 1,000 playback events. A 5-user home server typically uses 50–100 MB per year. --- ## API Tracearr exposes a public REST API (v1 and v2). Generate an API key under **Settings > API Keys**, then browse the full reference at `/api-docs` on your own instance (interactive Scalar UI). There is no documented `trr_pub_` / `trr_prv_` key prefix format in the official docs — key management is handled through the settings UI. --- ## FAQ **Does Tracearr replace Tautulli or Jellystat?** It depends on your setup. If you only use one server type, the dedicated tool may be more feature-complete for that platform. If you run multiple types, Tracearr is the only tool that covers all three. **Does Tracearr affect playback performance?** No. Tracearr monitors via APIs and SSE — it does not sit in the playback path. **Can Tracearr be used without the SSE plugin on Jellyfin/Emby?** Yes. It falls back to polling. Sessions still appear, just not instantly. **Is Tracearr free?** Yes. Open source under AGPL-3.0. The platform is free to self-host. The companion mobile app is a separate paid product. **Does JellyWatch use Tracearr?** No. JellyWatch connects directly to the Jellyfin API for real-time session data and push notifications. Tracearr and JellyWatch serve different purposes and audiences: Tracearr is for server admins who want analytics and sharing detection across one or more servers; JellyWatch is for users who want to monitor their own Jellyfin activity on Android. --- > **Monitor your servers with Tracearr. Follow your own activity with JellyWatch.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) — real-time session monitoring and push notifications for Jellyfin. *Running Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin Multi-Server Architecture 2026: Load Balancing, Failover, and Geo-Distribution URL: https://jellywatch.app/blog/jellyfin-multi-server-load-balancing-failover-2026 Published: 2026-05-28T08:19:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, multi-server, load-balancing, failover, geo-distribution, scaling, high-availability, architecture, 2026 # Jellyfin Multi-Server Architecture 2026: Load Balancing, Failover, and Geo-Distribution A single Jellyfin server handles most home setups perfectly. An Intel N100 serves 3-4 simultaneous 4K transcodes. An i5 with a dedicated GPU handles 10+. But some scenarios push beyond what one server can deliver: - **20+ concurrent users** overwhelming a single GPU - **Geographic distribution** where users in Europe and the US both need low-latency access - **Zero-downtime maintenance** where you cannot take the server offline for updates - **Redundancy** where a hardware failure must not mean days without service This guide covers the architectures that solve these problems, and the honest limitations you will hit. --- ## The Fundamental Limitation: SQLite Before diving into architectures, understand the core constraint: **Jellyfin uses SQLite as its database**. SQLite does not support concurrent writes from multiple processes. This means: - You **cannot** run two Jellyfin instances writing to the same database simultaneously - You **cannot** have a true active-active cluster where both nodes serve requests - You **can** have active-passive (one serves, one waits) - You **can** have multiple independent servers synced via external tools The EF Core migration in Jellyfin 10.11 laid the groundwork for PostgreSQL support (which would enable true multi-instance). But as of mid-2026, SQLite remains the only supported backend. --- ## Architecture 1: Active-Passive Failover The simplest multi-server setup. One server handles all traffic. If it fails, a standby takes over. ``` [Load Balancer / DNS Failover] | | [Primary] [Standby] | | [Shared Storage (NFS/CIFS)] ``` ### How it works 1. **Primary server** runs Jellyfin and serves all users 2. **Standby server** has Jellyfin installed but stopped 3. **Shared storage** (NFS/CIFS) holds media files accessible to both 4. **Config replication** copies the Jellyfin database from primary to standby periodically 5. **Health check** monitors the primary. If it fails, the standby starts Jellyfin 6. **DNS or load balancer** switches traffic to the standby ### Implementation with Keepalived Keepalived provides a floating virtual IP that moves between servers: ```bash # On primary (/etc/keepalived/keepalived.conf) vrrp_script check_jellyfin { script "/usr/bin/curl -sf http://localhost:8096/health" interval 5 weight -20 } vrrp_instance JELLYFIN { state MASTER interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { 192.168.1.200 } track_script { check_jellyfin } } ``` ```bash # On standby vrrp_instance JELLYFIN { state BACKUP interface eth0 virtual_router_id 51 priority 90 virtual_ipaddress { 192.168.1.200 } notify_master "/usr/local/bin/start-jellyfin.sh" notify_backup "/usr/local/bin/stop-jellyfin.sh" } ``` When the primary fails the health check, Keepalived promotes the standby. The `notify_master` script starts Jellyfin on the new primary. ### Config Sync Sync the Jellyfin database from primary to standby every hour: ```bash # Cron on primary (every hour) 0 * * * * rsync -az /opt/jellyfin/config/ standby:/opt/jellyfin/config/ ``` The standby is always at most 1 hour behind. Watch history from the last hour before a failure may be lost. ### Limitations - **Not zero-downtime** - failover takes 10-30 seconds - **Data loss window** - up to 1 hour of watch history lost on failover - **Single point of failure** - shared storage must be reliable - **Manual failback** - returning to the primary requires stopping the standby --- ## Architecture 2: Geo-Distributed Independent Servers For users spread across continents, run independent Jellyfin servers in different regions with WatchState keeping them synchronized. ``` [User in Europe] --> [Jellyfin EU (Paris VPS)] | [WatchState] <-- syncs watch history | [User in US] --> [Jellyfin US (NYC VPS)] | [Shared Media via Rclone/Syncthing] ``` ### How it works 1. **Two independent Jellyfin servers** in different regions 2. **Same media library** synced via Rclone, Syncthing, or shared cloud storage 3. **WatchState** synchronizes watch history between both servers 4. **Users connect to their nearest server** for lowest latency 5. **DNS-based routing** (Cloudflare geo-steering) directs users to the closest server ### Media Sync Options | Method | Latency | Cost | Best for | |---|---|---|---| | Rclone to cloud (S3/B2) | Hours | Storage cost | Large libraries, async | | Syncthing (peer-to-peer) | Minutes | Bandwidth only | Small-medium libraries | | Shared NFS (same datacenter) | Instant | Network cost | Same-region servers | ### Cloudflare Geo-Steering Configure Cloudflare DNS to route users to the nearest server: 1. Create a Cloudflare Load Balancer 2. Add two origin pools: EU server and US server 3. Enable geo-steering: European users go to EU pool, American users go to US pool 4. Health checks ensure traffic routes away from a downed server ### Limitations - **Media sync delay** - new content takes time to propagate to all servers - **Independent databases** - each server has its own users, settings, and plugins - **WatchState sync delay** - watch history syncs periodically, not instantly - **Double storage cost** - media exists on both servers - **Operational complexity** - managing two servers instead of one --- ## Architecture 3: Transcoding Offload Keep one Jellyfin server but offload transcoding to dedicated workers. ``` [Jellyfin Main Server] -- serves UI, metadata, Direct Play | v (transcoding requests) [Transcode Worker 1 (GPU)] -- handles HW transcoding [Transcode Worker 2 (GPU)] -- handles HW transcoding ``` ### Current Reality (2026) Jellyfin does not natively support distributed transcoding. The transcoding process is tightly coupled to the main server. However, workarounds exist: **Option A: Tdarr for pre-transcoding** Instead of real-time transcoding, pre-convert your library so everything Direct Plays: - Tdarr workers (on separate machines with GPUs) process your library in the background - Once converted, Jellyfin serves everything via Direct Play - Zero real-time transcoding needed on the main server **Option B: Multiple Jellyfin instances with user routing** Run multiple Jellyfin instances, each with its own GPU: - Users who trigger transcoding are assigned to a specific instance - Users who Direct Play are assigned to the main instance - Manual user management (not automatic) --- ## Architecture 4: Read Replicas (Future - PostgreSQL) When Jellyfin adds PostgreSQL support (roadmap for 12.0+), true read replicas become possible: ``` [Primary Jellyfin] -- writes to PostgreSQL primary | [PostgreSQL Primary] --> [PostgreSQL Replica] | | [Read-Only Jellyfin 1] [Read-Only Jellyfin 2] ``` This would allow multiple Jellyfin instances to serve read requests (library browsing, metadata) while a single primary handles writes (watch state, user management). This is not available today but is the long-term direction. --- ## Practical Recommendations | Scenario | Recommended architecture | |---|---| | 1-10 users, single location | Single server (no multi-server needed) | | 10-20 users, single location | Single server with powerful GPU | | 20+ users, single location | Pre-transcode library (Tdarr) + powerful server | | Users on multiple continents | Geo-distributed independent servers + WatchState | | Zero-downtime requirement | Active-passive failover with Keepalived | | Maximum redundancy | Geo-distributed + active-passive at each site | ### The honest truth For 95% of self-hosters, a single well-configured server is sufficient. Multi-server architectures add significant operational complexity. Before scaling horizontally, exhaust vertical scaling: 1. Add a better GPU (Intel Arc A380 handles 6-8 simultaneous 4K transcodes) 2. Pre-transcode your library with Tdarr (eliminates real-time transcoding) 3. Optimize clients for Direct Play (set bitrate to Original) 4. Upgrade to an N305 or i5 for more CPU headroom Only pursue multi-server when a single machine genuinely cannot handle your load. --- ## FAQ **Can I run two Jellyfin instances on the same database?** No. SQLite does not support concurrent writes. Running two instances on the same database will corrupt it. **When will Jellyfin support PostgreSQL?** The EF Core migration in 10.11 was the prerequisite. PostgreSQL is on the roadmap for 12.0 or later. No confirmed release date. **Is there a Jellyfin clustering plugin?** No. Clustering requires database-level support that SQLite cannot provide. **How many users can one Jellyfin server handle?** With Direct Play: effectively unlimited (limited by network bandwidth). With transcoding: depends on GPU. An Intel Arc A380 handles 6-8 simultaneous 4K transcodes. **Does JellyWatch work with multi-server setups?** Yes. JellyWatch connects to a specific Jellyfin instance. For multi-server setups, you can add multiple servers in JellyWatch Premium and switch between them. --- > **Scaling your Jellyfin setup? Monitor every instance from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - multi-server support, real-time sessions, and push notifications. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## WatchState: Sync Watch History Between Jellyfin, Plex, Emby, and Trakt Simultaneously (2026 Guide) URL: https://jellywatch.app/blog/watchstate-sync-watch-history-jellyfin-plex-emby-trakt-2026 Published: 2026-05-28T08:15:00+00:00 Author: JellyWatch Team Category: Showcase Tags: watchstate, sync, watch-history, jellyfin, plex, emby, trakt, migration, docker, 2026 # WatchState: Sync Watch History Between Jellyfin, Plex, Emby, and Trakt (2026) You run Jellyfin for yourself and Plex for family members who refuse to switch. Both servers point at the same media files. You watch a movie on Jellyfin. Your partner watches it on Plex. Neither server knows about the other's watch state. Your "Continue Watching" is wrong on both. **WatchState** fixes this. It is a self-hosted synchronization engine that keeps watch history consistent across multiple media servers and tracking services simultaneously. --- ## What WatchState Does WatchState is a bidirectional sync engine for play state (watched/unwatched) and play progress (resume position). It supports: - **Jellyfin** (full support) - **Plex** (full support) - **Emby** (full support) - **Trakt** (full support) Any combination works. Jellyfin + Plex. Jellyfin + Trakt. Plex + Emby + Trakt. All four simultaneously. ### Sync capabilities | Data | Synced? | |---|---| | Watched/Unwatched status | Yes | | Play progress (resume point) | Yes | | Play date/time | Yes | | Ratings | Trakt only | | Collections/Playlists | No | | Metadata | No | --- ## Use Cases ### 1. Running Jellyfin + Plex simultaneously You migrated to Jellyfin but some family members still use Plex. Both servers read the same media files. WatchState keeps watched status synchronized so a movie marked as watched on Plex also shows as watched on Jellyfin, and vice versa. ### 2. Migrating from Plex to Jellyfin Transfer your entire watch history from Plex to Jellyfin in one sync. No Trakt intermediary needed. Direct server-to-server transfer. ### 3. Trakt as a universal backup Sync all your watch history to Trakt as a permanent backup. If you ever rebuild your server, import from Trakt to restore everything. ### 4. Multi-user sync WatchState supports per-user configuration. Each user on your server can have their own sync profile with their own Trakt account. --- ## Docker Setup ```yaml services: watchstate: image: ghcr.io/arabcoders/watchstate:latest container_name: watchstate ports: - 8080:8080 volumes: - ./watchstate/config:/config environment: - WS_TZ=Europe/Paris restart: unless-stopped ``` ```bash docker compose up -d ``` Access the web UI at `http://your-server:8080`. --- ## Step 1: Add Your Backends WatchState calls each connected service a "backend." Add them via the web UI or CLI: ### Add Jellyfin ```bash docker exec watchstate console config:add # Follow the interactive prompts: # Type: jellyfin # Name: my-jellyfin # URL: http://jellyfin:8096 # Token: your_jellyfin_api_key # User: your_username ``` ### Add Plex ```bash docker exec watchstate console config:add # Type: plex # Name: my-plex # URL: http://plex:32400 # Token: your_plex_token ``` ### Add Trakt ```bash docker exec watchstate console config:add # Type: trakt # Name: my-trakt # Follow OAuth flow to authenticate ``` ### Add Emby ```bash docker exec watchstate console config:add # Type: emby # Name: my-emby # URL: http://emby:8096 # Token: your_emby_api_key ``` --- ## Step 2: Import Current State Before enabling sync, import the current watch state from all backends: ```bash # Import from all backends docker exec watchstate console state:import # Or import from a specific backend docker exec watchstate console state:import --select-backend my-jellyfin ``` This reads the current watched/unwatched status from each server and stores it in WatchState's local database. --- ## Step 3: Enable Sync Once imported, enable ongoing synchronization: ```bash # Push local state to all backends docker exec watchstate console state:push # Or run a full sync (import + push) docker exec watchstate console state:sync ``` ### Automated sync via cron WatchState includes a built-in scheduler. Configure it to sync every 15 minutes: ```bash docker exec watchstate console system:cron --run ``` Or use the web UI to configure sync schedules. ### Webhook-based real-time sync For instant sync (no polling delay), configure webhooks: 1. In Jellyfin: install the Webhook plugin, point it at `http://watchstate:8080/v1/api/jellyfin/webhook` 2. In Plex: configure a webhook to `http://watchstate:8080/v1/api/plex/webhook` Now when you finish a movie on Jellyfin, WatchState immediately marks it as watched on Plex and Trakt. --- ## Conflict Resolution What happens when the same item has different states on different backends? ### Default behavior: newest wins WatchState uses timestamps. If a movie was marked watched on Jellyfin at 8:00 PM and is still unwatched on Plex, WatchState marks it as watched on Plex (because the Jellyfin event is newer). ### Manual override The web UI shows conflicts and lets you resolve them manually: - Force a specific backend's state as the source of truth - Ignore specific items from sync - Set per-backend priority --- ## Matching: How WatchState Identifies the Same Content WatchState matches items across backends using: 1. **Provider IDs** (TMDB, TVDB, IMDB) - most reliable 2. **Title + Year** - fallback for items without provider IDs 3. **File path** - if backends share the same media files For best results, ensure your libraries have proper metadata with TMDB/TVDB IDs on all backends. --- ## Multi-User Configuration WatchState supports multiple users, each with their own backend connections: ```bash # Add a second user docker exec watchstate console config:add --user partner # Configure their Jellyfin user, Plex user, and Trakt account separately ``` Each user's watch history syncs independently. --- ## WatchState vs JellyPlex-Watched vs Trakt Plugin | Feature | WatchState | JellyPlex-Watched | Trakt Plugin | |---|---|---|---| | Jellyfin support | Yes | Yes | Yes | | Plex support | Yes | Yes | No | | Emby support | Yes | No | Yes (Emby plugin) | | Trakt support | Yes | No | Yes | | Bidirectional | Yes | Configurable | Yes | | Real-time (webhooks) | Yes | No (scheduled) | Yes | | Multi-user | Yes | Limited | Per-user | | Resume position sync | Yes | No (watched only) | No | | Web UI | Yes | No (CLI only) | No | | Conflict resolution | Yes (UI) | Newest wins | Newest wins | WatchState is the most comprehensive option. JellyPlex-Watched is simpler for one-time Plex-to-Jellyfin migration. Trakt plugins are best if you only need Trakt sync. --- ## Performance and Resource Usage - **RAM:** ~100-200 MB - **CPU:** negligible (API calls only) - **Storage:** ~50-200 MB (local state database) - **Network:** minimal (API calls to each backend) WatchState is extremely lightweight. It makes API calls to your media servers, it does not process media files. --- ## Common Issues | Problem | Cause | Fix | |---|---|---| | Items not matching | Missing provider IDs | Ensure TMDB/TVDB metadata is set on all backends | | Sync not running | Cron not configured | Enable the built-in scheduler or set up webhooks | | Wrong user synced | Backend user mismatch | Verify the correct user is selected for each backend | | Duplicate entries | Same movie in multiple libraries | Configure library filtering in backend settings | --- ## FAQ **Does WatchState modify my media files?** No. It only reads and writes play state via media server APIs. Your files are never touched. **Can I sync between two Jellyfin servers?** Yes. Add both as separate backends. WatchState syncs between any combination of supported servers. **Does it sync ratings?** Only to/from Trakt. Jellyfin, Plex, and Emby ratings are not synced between each other (different rating systems). **Is it safe to run on a production server?** Yes. WatchState only marks items as watched/unwatched. It cannot delete content, modify metadata, or affect playback. **Can I use WatchState alongside the Trakt plugin?** Yes, but disable Trakt sync in the Jellyfin/Emby plugin to avoid conflicts. Let WatchState handle all sync centrally. --- > **Watch history synced across all your servers. Monitor active sessions from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Unraid vs TrueNAS vs Proxmox for Jellyfin 2026: Which NAS/Hypervisor OS Should You Choose? URL: https://jellywatch.app/blog/unraid-vs-truenas-vs-proxmox-jellyfin-2026 Published: 2026-05-26T21:10:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: unraid, truenas, proxmox, comparison, jellyfin, nas, hypervisor, zfs, docker, homelab, 2026 # Unraid vs TrueNAS vs Proxmox for Jellyfin 2026: Which OS Should You Choose? You have the hardware. Now you need an operating system to run Jellyfin and your media stack. Three platforms dominate the homelab space in 2026, each with a fundamentally different philosophy: - **Unraid** - flexibility-first NAS OS with Docker and VMs - **TrueNAS SCALE** - ZFS-powered NAS with native Docker (since Electric Eel v25) - **Proxmox VE** - bare-metal hypervisor with LXC containers and VMs All three run Jellyfin excellently. The difference is in everything around it: storage management, GPU passthrough, backup strategy, and operational complexity. --- ## Quick Decision Guide | Your priority | Choose | |---|---| | Easiest setup, mixed drive sizes | **Unraid** | | Best data integrity (ZFS), free | **TrueNAS SCALE** | | Maximum flexibility, run anything | **Proxmox** | | Already have matching drives for RAID | **TrueNAS SCALE** | | Want VMs alongside containers | **Proxmox** | | Best community Docker templates | **Unraid** | | Enterprise features, free | **Proxmox** | --- ## Platform Overview | Feature | Unraid | TrueNAS SCALE (v25) | Proxmox VE | |---|---|---|---| | **Base OS** | Slackware Linux | Debian Linux | Debian Linux | | **Filesystem** | XFS + FUSE (array) + Btrfs (cache) | ZFS | ext4/XFS/ZFS (your choice) | | **Container engine** | Docker (native) | Docker Compose (since v25) | LXC + Docker (in LXC/VM) | | **VM support** | Yes (KVM/QEMU) | Yes (limited) | Yes (KVM/QEMU, first-class) | | **GPU passthrough** | Docker extra params | Checkbox in app config | LXC device map or VM PCI passthrough | | **Storage pooling** | Parity-protected array (mixed drives) | ZFS pools (matched drives) | No built-in pooling | | **Snapshots** | Manual (Btrfs cache only) | ZFS snapshots (instant, free) | LXC/VM snapshots | | **Web UI** | Excellent | Good (improved in v25) | Excellent | | **Price** | $59 (Basic) / $89 (Plus) / $129 (Pro) | Free | Free | | **Community** | Very large (r/unraid) | Large (r/truenas) | Large (r/proxmox) | | **Learning curve** | Low | Medium | Medium-High | --- ## Unraid: The Flexible Choice ### Why Unraid for Jellyfin Unraid is the most popular homelab OS for media servers because of its unique storage architecture: you can mix drives of different sizes in one array with parity protection. Add a 4TB drive today, an 8TB drive next month, a 12TB drive next year. No need for matching drives. ### Jellyfin on Unraid 1. Go to **Apps** (Community Applications) 2. Search "Jellyfin" 3. Click **Install** 4. Configure paths and GPU passthrough 5. Done The Community Applications plugin provides pre-configured Docker templates for Jellyfin and every tool in the media stack. Setup takes minutes, not hours. ### GPU Passthrough on Unraid For Intel QSV: ``` Extra Parameters: --device=/dev/dri:/dev/dri ``` For NVIDIA: Install the NVIDIA Driver plugin from Community Applications, then select the GPU in the container template. ### Unraid Strengths - **Mixed drive sizes** - no need to buy matching drives - **Community Applications** - one-click install for 2000+ Docker containers - **Cache pool** - SSD cache for fast writes, mover transfers to array overnight - **Parity protection** - survive 1-2 drive failures - **User-friendly** - the easiest platform for non-Linux users - **VM support** - run Windows VMs alongside Docker containers ### Unraid Weaknesses - **Paid license** ($59-$129) - **No ZFS** - XFS + FUSE array is slower than ZFS for random I/O - **Parity rebuild is slow** - days for large drives - **Array speed** - limited by single-drive write speed (cache mitigates this) - **No instant snapshots** - unlike ZFS --- ## TrueNAS SCALE (Electric Eel v25): The ZFS Powerhouse ### Why TrueNAS for Jellyfin TrueNAS SCALE v25 (Electric Eel) replaced the old Kubernetes app system with native Docker Compose. This was a game-changer. You now get the data integrity of ZFS with the simplicity of Docker Compose, all for free. ### Jellyfin on TrueNAS SCALE v25 1. Go to **Apps > Discover Apps** 2. Search "Jellyfin" 3. Click **Install** 4. Configure storage datasets and GPU 5. Done Or use a custom Docker Compose file for full control. ### GPU Passthrough on TrueNAS For Intel: Check the GPU checkbox in the app configuration under Resources. For NVIDIA: System Settings > Advanced > select GPU, then assign to the app. ### TrueNAS Strengths - **ZFS** - best filesystem for data integrity (checksums, self-healing, instant snapshots) - **Free** - no license cost, ever - **ZFS snapshots** - instant, atomic backups of your Jellyfin config - **Docker Compose native** (since v25) - familiar workflow - **Excellent for NAS duties** - SMB/NFS sharing alongside Jellyfin - **Replication** - send ZFS snapshots to a remote server for off-site backup ### TrueNAS Weaknesses - **Matched drives required** - ZFS pools work best with identical drives - **RAM hungry** - ZFS ARC cache wants lots of RAM (1GB per TB of storage is the old rule) - **Less flexible storage** - cannot easily add a single drive to an existing pool - **TrueCharts dead** - the old Kubernetes app ecosystem is gone (Docker Compose replaces it) - **Learning curve** - ZFS concepts (vdevs, pools, datasets) take time to understand --- ## Proxmox VE: The Hypervisor ### Why Proxmox for Jellyfin Proxmox is not a NAS OS. It is a bare-metal hypervisor that runs virtual machines and LXC containers. You run Jellyfin inside an LXC container (near-zero overhead) or a full VM (complete isolation). Proxmox is the choice when you want maximum flexibility: run Jellyfin in an LXC, a Windows VM for gaming, a pfSense VM for routing, and a Home Assistant VM, all on one machine. ### Jellyfin on Proxmox **Option A: LXC Container (recommended)** 1. Create an Ubuntu/Debian LXC 2. Map /dev/dri for GPU passthrough 3. Install Jellyfin via Docker inside the LXC 4. Near-zero overhead **Option B: VM with PCI Passthrough** 1. Create an Ubuntu VM 2. Pass through the GPU via PCI passthrough 3. Install Docker and Jellyfin 4. Full isolation but more overhead ### GPU Passthrough on Proxmox For Intel in LXC (simplest): ``` # /etc/pve/lxc/100.conf lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir ``` For NVIDIA in VM: Enable IOMMU, blacklist host drivers, pass through via PCI. ### Proxmox Strengths - **Free** - no license cost (subscription optional for enterprise repo) - **Maximum flexibility** - LXC, VMs, Docker, anything - **ZFS support** - can use ZFS as the storage backend - **Snapshots** - LXC and VM snapshots for instant rollback - **Clustering** - multiple Proxmox nodes with live migration - **Enterprise features** - HA, replication, backup (all free) - **Isolation** - each service in its own container/VM ### Proxmox Weaknesses - **Not a NAS** - no built-in SMB/NFS sharing UI (must configure manually) - **Higher learning curve** - LXC configuration, networking, storage concepts - **GPU passthrough complexity** - more steps than Unraid or TrueNAS - **No app store** - you build everything yourself (or use community scripts) - **Overkill for simple setups** - if you just want Jellyfin + NAS, Unraid or TrueNAS is simpler --- ## Storage Architecture Comparison | Aspect | Unraid | TrueNAS SCALE | Proxmox | |---|---|---|---| | **Mixed drive sizes** | Yes (core feature) | No (matched drives in vdev) | N/A (pass-through or ZFS) | | **Parity protection** | 1-2 parity drives | RAIDZ1/Z2/Z3 | ZFS or hardware RAID | | **Add single drive** | Yes (anytime) | No (must add full vdev) | Depends on setup | | **Instant snapshots** | No (Btrfs cache only) | Yes (ZFS) | Yes (LXC/VM level) | | **Data integrity** | Basic (XFS) | Excellent (ZFS checksums) | Depends on filesystem | | **Performance** | Limited by single drive | Excellent (striped vdevs) | Depends on setup | | **SSD cache** | Yes (cache pool) | Yes (L2ARC, SLOG) | Manual configuration | --- ## Jellyfin Performance Comparison | Metric | Unraid | TrueNAS SCALE | Proxmox (LXC) | |---|---|---|---| | Container overhead | ~0% (native Docker) | ~0% (native Docker) | ~0% (LXC) | | GPU passthrough | Easy (extra params) | Easy (checkbox) | Medium (config file) | | Disk I/O for metadata | Good (SSD cache) | Excellent (ZFS ARC) | Depends on storage | | Library scan speed | Good | Excellent (ZFS read cache) | Depends on storage | | Transcoding performance | Same as bare metal | Same as bare metal | Same as bare metal | All three platforms deliver identical Jellyfin performance for playback and transcoding. The difference is in metadata/library operations where ZFS ARC caching gives TrueNAS an edge. --- ## Cost Comparison (5-Year TCO) | Cost | Unraid | TrueNAS SCALE | Proxmox | |---|---|---|---| | License | $59-$129 (one-time) | $0 | $0 | | Hardware (same for all) | $500 | $500 | $500 | | Drives (4x 8TB) | $400 | $400 | $400 | | RAM (32GB for ZFS) | $80 | $120 (more for ZFS) | $80 | | **5-year total** | **$1,039-$1,109** | **$1,020** | **$980** | The cost difference is minimal. Choose based on features, not price. --- ## Migration Paths | From | To | Difficulty | Data preserved? | |---|---|---|---| | Unraid > TrueNAS | Medium | Must rebuild array (copy data off first) | | Unraid > Proxmox | Medium | Pass through existing drives | | TrueNAS > Proxmox | Easy | Import ZFS pool directly | | TrueNAS > Unraid | Medium | Must rebuild (copy data off first) | | Proxmox > TrueNAS | Easy | Export ZFS pool | | Proxmox > Unraid | Medium | Must rebuild | --- ## FAQ **Which is best for a beginner?** Unraid. The Community Applications ecosystem and user-friendly UI make it the easiest to get started. **Which is best for data safety?** TrueNAS SCALE. ZFS checksums detect and correct silent data corruption that other filesystems miss entirely. **Which is most flexible?** Proxmox. You can run literally anything: LXC containers, full VMs (Windows, Linux, BSD), Docker, and even nested virtualization. **Can I switch later?** Yes, but it requires planning. Your media files are just files on a drive. The OS and container configs need rebuilding. **Which has the best Jellyfin experience?** All three are identical for Jellyfin itself. The difference is in the surrounding ecosystem (storage, backups, other services). --- > **Whichever OS you choose, monitor your Jellyfin server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - works with Jellyfin on Unraid, TrueNAS, Proxmox, or any platform. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Building a Jellyfin CDN with Cloudflare R2 and Workers: Global Media Delivery (2026) URL: https://jellywatch.app/blog/jellyfin-cdn-cloudflare-r2-workers-global-delivery-2026 Published: 2026-05-26T10:57:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, cdn, cloudflare, r2, workers, global, strm, edge, advanced, 2026 # Building a Jellyfin CDN with Cloudflare R2: Global Media Delivery (2026) Your Jellyfin server is in Paris. Your friend in Tokyo experiences 3 seconds of buffering at the start of every video because the data travels 10,000 km. A CDN (Content Delivery Network) solves this by placing your content closer to your users. Cloudflare R2 is an S3-compatible object storage with **zero egress fees**. Combined with Cloudflare Workers (edge compute), you can build a global media delivery system that serves your Jellyfin library from the nearest Cloudflare edge location to each user. This is an advanced architecture. It is not for everyone. But for admins with users on multiple continents, it eliminates geographic latency entirely. --- ## How It Works ``` User in Tokyo requests a movie | v [Cloudflare Worker (Tokyo edge)] -- checks auth, serves from R2 | v [Cloudflare R2 (global)] -- stores the actual media file | v User receives data from Tokyo edge (low latency) ``` Meanwhile, your Jellyfin server (in Paris) handles: - Library browsing and metadata - User authentication - Watch state tracking - Transcoding (if needed) The media FILES are served from R2 via Workers, not from your home server. Your home upload speed is no longer the bottleneck for remote users. --- ## The Architecture ### Component 1: Cloudflare R2 (Storage) R2 is S3-compatible object storage with a critical advantage: **zero egress fees**. You pay only for storage ($0.015/GB/month) and operations (reads/writes), not for bandwidth. For a 5 TB media library: - Storage cost: 5,000 GB x $0.015 = **$75/month** - Egress: **$0** (unlimited bandwidth) Compare to AWS S3: 5 TB storage ($115/month) + egress at $0.09/GB = potentially thousands per month. ### Component 2: Cloudflare Workers (Edge Logic) Workers run JavaScript/TypeScript at Cloudflare edge locations worldwide (~300 cities). They handle: - Authentication (verify the request is from a valid Jellyfin user) - Range request handling (video players request byte ranges for seeking) - Serving files from R2 with proper headers ### Component 3: Jellyfin with STRM Files Jellyfin supports STRM files: text files containing a URL. Instead of reading a local .mkv file, Jellyfin reads the STRM file and redirects the client to the URL inside it. ``` # /media/movies/Dune Part Two (2024)/Dune Part Two (2024).strm https://media.yourdomain.com/movies/dune-part-two-2024.mkv?token=xyz ``` The client fetches the video directly from R2 via the Worker, bypassing your home server entirely for the actual media data. --- ## Step 1: Upload Media to R2 ### Create an R2 bucket 1. Cloudflare Dashboard > R2 > Create Bucket 2. Name: `jellyfin-media` 3. Location: Auto (Cloudflare distributes globally) ### Upload with Rclone ```bash # Configure Rclone for R2 rclone config # Type: s3 # Provider: Cloudflare # Access Key ID: from R2 API tokens # Secret Access Key: from R2 API tokens # Endpoint: https://.r2.cloudflarestorage.com # Sync your media library to R2 rclone sync /mnt/media/movies r2:jellyfin-media/movies --progress rclone sync /mnt/media/tv r2:jellyfin-media/tv --progress ``` Initial upload depends on your upload speed. A 5 TB library at 100 Mbps upload takes ~4.5 days. ### Ongoing sync Schedule incremental sync after new content arrives: ```bash # Cron: sync new content daily at 2 AM 0 2 * * * rclone sync /mnt/media r2:jellyfin-media --progress --log-file /var/log/r2-sync.log ``` --- ## Step 2: Create the Cloudflare Worker The Worker authenticates requests and serves files from R2: ```javascript // worker.js export default { async fetch(request, env) { const url = new URL(request.url); const path = url.pathname.slice(1); // Remove leading / // Simple token authentication const token = url.searchParams.get("token"); if (!token || token !== env.AUTH_TOKEN) { return new Response("Unauthorized", { status: 401 }); } // Fetch from R2 const object = await env.MEDIA_BUCKET.get(path); if (!object) { return new Response("Not Found", { status: 404 }); } // Handle range requests (essential for video seeking) const range = request.headers.get("Range"); if (range) { const [start, end] = range.replace("bytes=", "").split("-").map(Number); const objectSize = object.size; const actualEnd = end || objectSize - 1; const chunk = await env.MEDIA_BUCKET.get(path, { range: { offset: start, length: actualEnd - start + 1 } }); return new Response(chunk.body, { status: 206, headers: { "Content-Range": `bytes ${start}-${actualEnd}/${objectSize}`, "Content-Length": actualEnd - start + 1, "Content-Type": object.httpMetadata?.contentType || "video/x-matroska", "Accept-Ranges": "bytes", }, }); } // Full file response return new Response(object.body, { headers: { "Content-Type": object.httpMetadata?.contentType || "video/x-matroska", "Content-Length": object.size, "Accept-Ranges": "bytes", }, }); }, }; ``` Deploy with Wrangler: ```bash npx wrangler deploy ``` Bind the R2 bucket to the Worker in `wrangler.toml`: ```toml [[r2_buckets]] binding = "MEDIA_BUCKET" bucket_name = "jellyfin-media" ``` --- ## Step 3: Generate STRM Files Create a script that generates STRM files for your Jellyfin library: ```bash #!/bin/bash # generate-strm.sh BASE_URL="https://media.yourdomain.com" TOKEN="your_secret_token" MEDIA_DIR="/mnt/media/movies" STRM_DIR="/mnt/jellyfin-strm/movies" find "$MEDIA_DIR" -name "*.mkv" -o -name "*.mp4" | while read file; do relative="${file#$MEDIA_DIR/}" strm_path="$STRM_DIR/${relative%.*}.strm" mkdir -p "$(dirname "$strm_path")" echo "${BASE_URL}/${relative}?token=${TOKEN}" > "$strm_path" done ``` Point Jellyfin at the STRM directory instead of (or alongside) your local media. --- ## Step 4: Configure Jellyfin 1. Add a new library pointing to the STRM directory 2. Jellyfin reads the STRM files and fetches metadata normally 3. When a user plays content, the client is redirected to the R2 URL 4. The video streams from the nearest Cloudflare edge --- ## Cost Analysis ### R2 CDN approach | Component | Cost (5 TB library) | |---|---| | R2 storage | $75/month | | Workers (free tier: 100K requests/day) | $0 (or $5/month for paid) | | Egress bandwidth | $0 (R2 has zero egress) | | **Total** | **$75-80/month** | ### Traditional VPS approach | Component | Cost | |---|---| | Hetzner VPS (CX32) | $8/month | | Hetzner Storage Box (5 TB) | $12.50/month | | **Total** | **$20.50/month** | ### Home server approach | Component | Cost | |---|---| | Electricity | $2/month | | Domain | $1/month | | **Total** | **$3/month** | --- ## When This Architecture Makes Sense | Scenario | R2 CDN worth it? | |---|---| | Users on one continent, good home upload | No (home server is fine) | | Users on multiple continents | Yes (eliminates geographic latency) | | Very large user base (50+) | Yes (unlimited bandwidth) | | Home upload under 20 Mbps | Maybe (R2 offloads bandwidth) | | Cost-sensitive | No ($75/month vs $3/month home) | --- ## Limitations - **No transcoding** - R2 serves files as-is. If a client needs transcoding, it must go through your Jellyfin server - **Upload delay** - new content takes time to sync to R2 - **Cost** - $75/month for 5 TB is significantly more than a home server - **Complexity** - Workers, STRM files, and sync scripts add operational overhead - **STRM limitations** - some Jellyfin clients handle STRM files differently; test your clients - **No Direct Play detection** - Jellyfin cannot determine if the client can Direct Play a STRM URL the same way it can for local files --- ## FAQ **Does this violate Cloudflare ToS?** R2 is designed for serving large files. Unlike the CDN proxy (which has Section 2.8 concerns for video), R2 is explicitly a storage product with no content-type restrictions. **Can I use this for transcoded streams?** No. Transcoding requires real-time processing on a server. R2 only serves static files. Use this for Direct Play content only. **What about Backblaze B2 + Cloudflare?** B2 has a bandwidth alliance with Cloudflare (free egress via Cloudflare CDN). Similar architecture is possible with B2 at $0.005/GB/month storage (cheaper than R2). **Does JellyWatch work with this setup?** Yes. JellyWatch monitors Jellyfin sessions regardless of where the media files are stored. STRM-based playback appears as a normal session. --- > **Global media delivery configured? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time sessions, bitrate monitoring, and server health. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Self-Hosted vs Netflix + Spotify + Cloud Storage: Total Cost of Ownership Over 5 Years (2026) URL: https://jellywatch.app/blog/self-hosted-vs-netflix-spotify-total-cost-comparison-2026 Published: 2026-05-26T10:52:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: self-hosted, netflix, spotify, cost-comparison, savings, streaming, jellyfin, 2026 # Self-Hosted vs Netflix + Spotify + Cloud Storage: 5-Year Cost Comparison (2026) The streaming landscape in 2026 is expensive. Netflix raised prices again. Spotify costs more. Disney+ has ads on the cheap tier. Google Photos charges for storage. YouTube Premium is $14/month. The average household spends $150-250/month on digital media subscriptions. Self-hosting promises to replace all of this with a one-time hardware investment and near-zero ongoing costs. But is it actually cheaper when you factor in hardware, storage, electricity, and your time? This guide does the math honestly. --- ## The Streaming Subscription Stack (2026 Prices) | Service | Monthly cost | Annual cost | What it provides | |---|---|---|---| | Netflix (Standard) | $17.99 | $216 | Movies, TV shows | | Spotify (Family) | $19.99 | $240 | Music | | Disney+ (No Ads) | $16.99 | $204 | Disney, Marvel, Star Wars | | YouTube Premium (Family) | $22.99 | $276 | Ad-free YouTube, YouTube Music | | Google One (200GB) | $2.99 | $36 | Photo backup | | Hulu (No Ads) | $18.99 | $228 | TV shows, movies | | **Total** | **$99.94** | **$1,200** | | Not everyone subscribes to all of these. A typical household might have 3-4 services: | Scenario | Monthly | Annual | 5-Year total | |---|---|---|---| | Minimal (Netflix + Spotify) | $38 | $456 | **$2,280** | | Moderate (Netflix + Spotify + Disney+ + Photos) | $58 | $696 | **$3,480** | | Full stack (all above) | $100 | $1,200 | **$6,000** | --- ## The Self-Hosted Stack (One-Time + Ongoing) ### Hardware (One-Time) | Component | Budget setup | Recommended setup | Premium setup | |---|---|---|---| | Server (Mini PC) | $130 (N100) | $250 (N305) | $500 (i5 + dGPU) | | Storage (media) | $100 (4TB HDD) | $250 (2x 8TB) | $600 (4x 8TB) | | Storage (OS) | Included (256GB SSD) | Included | $80 (1TB NVMe) | | **Hardware total** | **$230** | **$500** | **$1,180** | ### Ongoing Annual Costs | Cost | Budget | Recommended | Premium | |---|---|---|---| | Electricity | $16/year | $24/year | $50/year | | Domain name | $12/year | $12/year | $12/year | | Internet (already paying) | $0 | $0 | $0 | | Software | $0 | $0 | $0 | | **Annual ongoing** | **$28/year** | **$36/year** | **$62/year** | ### 5-Year Total Cost of Self-Hosting | Setup | Year 1 | Year 2-5 | 5-Year total | |---|---|---|---| | Budget | $230 + $28 = $258 | 4 x $28 = $112 | **$370** | | Recommended | $500 + $36 = $536 | 4 x $36 = $144 | **$680** | | Premium | $1,180 + $62 = $1,242 | 4 x $62 = $248 | **$1,490** | --- ## The Comparison | | Streaming (5 years) | Self-Hosted (5 years) | Savings | |---|---|---|---| | Minimal streaming vs Budget self-host | $2,280 | $370 | **$1,910 saved** | | Moderate streaming vs Recommended self-host | $3,480 | $680 | **$2,800 saved** | | Full streaming vs Premium self-host | $6,000 | $1,490 | **$4,510 saved** | **Self-hosting saves $1,900-$4,500 over 5 years** depending on how many streaming services you currently pay for. --- ## The Break-Even Point | Self-hosted setup | vs Minimal streaming | vs Moderate streaming | |---|---|---| | Budget ($230 upfront) | 6 months | 4 months | | Recommended ($500 upfront) | 13 months | 9 months | | Premium ($1,180 upfront) | 31 months | 20 months | A budget self-hosted setup pays for itself in **6 months** compared to Netflix + Spotify alone. --- ## What You Get vs What You Lose ### What self-hosting gives you - **No monthly fees** after initial investment - **No ads** ever, on any tier - **No content rotation** (movies do not disappear from your library) - **Full quality** (no compression, no bitrate limits) - **Privacy** (no viewing data sold to advertisers) - **Offline access** (works without internet on local network) - **Unlimited users** (share with family and friends) - **Your content, your rules** (no geo-restrictions, no censorship) ### What self-hosting costs you (honestly) - **Time investment** - initial setup takes 2-4 hours - **Content acquisition** - you need to source your own media - **Maintenance** - occasional updates, troubleshooting (1-2 hours/month) - **No original content** - no Netflix Originals, no Spotify exclusives - **No music discovery algorithm** - Spotify recommendations are genuinely good - **No live sports** (unless you add IPTV) - **Learning curve** - Docker, networking, media management --- ## The Hybrid Approach (Most Practical) Most self-hosters do not cancel ALL subscriptions. The practical approach: | Keep | Replace with self-hosting | |---|---| | Spotify ($11/month) - discovery algorithm is irreplaceable | Netflix, Disney+, Hulu (movies/TV) | | YouTube Premium ($14/month) - ad-free YouTube has no self-hosted equivalent | Google Photos (use Immich) | | | Cloud storage (use Nextcloud) | **Hybrid cost:** $25/month streaming + self-hosted media = $300/year + $36/year = **$336/year** **vs Full streaming:** $1,200/year **Annual savings with hybrid:** $864/year = **$4,320 over 5 years** --- ## Hidden Costs People Forget ### Storage growth Your library grows over time. Budget $50-100/year for additional storage: - Year 1: 4 TB (included in initial purchase) - Year 3: add 8 TB ($100) - Year 5: add 8 TB ($100) ### Hardware replacement Mini PCs last 5-7 years. Budget for replacement around year 5-6. Hard drives last 3-5 years under 24/7 operation. Budget for drive replacement. ### Internet upgrade (maybe) If your current upload speed is under 20 Mbps, you may want to upgrade for remote streaming. This cost varies wildly by location and ISP. --- ## The Value of Ownership Beyond pure cost savings, self-hosting provides value that subscriptions cannot: - **Content permanence** - your library never loses titles due to licensing deals - **Quality control** - 4K HDR remuxes are better quality than any streaming service - **No account sharing crackdowns** - share with whoever you want - **No price increases** - your costs are fixed after hardware purchase - **Skills development** - Linux, Docker, networking knowledge has career value - **Independence** - no company can take away your access --- ## FAQ **Is self-hosting really free after the hardware?** Almost. Electricity ($16-50/year) and a domain ($12/year) are the only ongoing costs. All software (Jellyfin, Radarr, Sonarr, etc.) is free. **What about the cost of acquiring media?** This guide does not include media acquisition costs as they vary enormously. Many self-hosters rip their own Blu-ray collection (cost: $0 beyond the discs they already own). **Can self-hosting replace Spotify?** For your own music collection, yes (Navidrome/Jellyfin). For music discovery and curated playlists, Spotify remains superior. Most self-hosters keep Spotify. **Is the time investment worth it?** If you value the learning experience and enjoy tinkering: absolutely. If you want zero maintenance: streaming services are simpler (but more expensive). **What if hardware fails?** With proper backups (automated, as covered in other guides), you can rebuild on new hardware in 1-2 hours. Your media files survive on the drives. --- > **Saving thousands on streaming? Monitor your investment from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health, session monitoring, and push notifications for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin on Kubernetes (K3s) 2026: High-Availability Media Server with Intel GPU and Persistent Storage URL: https://jellywatch.app/blog/jellyfin-kubernetes-k3s-high-availability-setup-2026 Published: 2026-05-26T10:47:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, kubernetes, k3s, high-availability, gpu, helm, ingress, homelab, devops, 2026 # Jellyfin on Kubernetes (K3s): High-Availability Media Server (2026) Docker Compose is great for single-node deployments. But what if you want automatic failover, rolling updates without downtime, resource limits, and the ability to scale across multiple nodes? That is where Kubernetes comes in. **K3s** is a lightweight Kubernetes distribution that runs on a single node or a cluster. It is the most popular way to run Kubernetes in a homelab because it uses minimal resources while providing the full Kubernetes API. This guide deploys Jellyfin on K3s with hardware transcoding, persistent storage, and HTTPS ingress. --- ## Why Kubernetes for Jellyfin? | Feature | Docker Compose | Kubernetes (K3s) | |---|---|---| | Auto-restart on crash | Yes (restart policy) | Yes (pod restart + health checks) | | Rolling updates | No (downtime during recreate) | Yes (zero-downtime updates) | | Resource limits | Basic | Granular (CPU/RAM requests and limits) | | Multi-node | No | Yes (schedule across nodes) | | Self-healing | Limited | Full (reschedule failed pods) | | GPU scheduling | Manual device mapping | Device plugin (automatic) | | Secret management | .env files | Kubernetes Secrets (encrypted at rest) | | Ingress/TLS | Separate reverse proxy | Built-in (Traefik + cert-manager) | | Monitoring | External tools | Prometheus + Grafana native | | Complexity | Low | Medium-High | ### When Kubernetes makes sense for Jellyfin - You already run K3s/K8s for other services - You want zero-downtime updates - You run multiple nodes and want automatic failover - You want centralized secret management - You enjoy the Kubernetes ecosystem (Helm, GitOps, ArgoCD) ### When Docker Compose is better - Single node, simple setup - You do not run other Kubernetes workloads - You want minimal operational overhead - Your homelab is a single mini PC --- ## Prerequisites - A Linux server (Ubuntu 22.04+ or Debian 12+) - At least 4 GB RAM and 2 CPU cores - An Intel GPU for hardware transcoding (optional but recommended) - A domain name for HTTPS ingress - Basic familiarity with kubectl commands --- ## Step 1: Install K3s K3s installs in under 30 seconds: ```bash curl -sfL https://get.k3s.io | sh - ``` Verify: ```bash sudo kubectl get nodes # NAME STATUS ROLES AGE VERSION # my-server Ready control-plane,master 30s v1.30.x+k3s1 ``` Set up kubectl for your user: ```bash mkdir -p ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config export KUBECONFIG=~/.kube/config ``` --- ## Step 2: Install Helm ```bash curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash ``` --- ## Step 3: Intel GPU Device Plugin (for Hardware Transcoding) The Intel Device Plugin for Kubernetes exposes `/dev/dri` devices to pods automatically. ```bash # Add the Intel Helm repo helm repo add intel https://intel.github.io/helm-charts helm repo update # Install the GPU device plugin helm install intel-gpu-plugin intel/intel-device-plugins-gpu \ --namespace kube-system \ --set nodeFeatureRule=false ``` Verify the GPU is detected: ```bash kubectl get nodes -o json | jq '.items[].status.allocatable | with_entries(select(.key | startswith("gpu.intel")))' # Expected: "gpu.intel.com/i915": "1" ``` --- ## Step 4: Create Namespace and Storage ```bash kubectl create namespace media ``` ### Persistent Volume for Jellyfin Config Create `jellyfin-pv.yaml`: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: jellyfin-config-pv spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce hostPath: path: /opt/jellyfin/config type: DirectoryOrCreate storageClassName: local-path --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jellyfin-config-pvc namespace: media spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: local-path ``` ```bash kubectl apply -f jellyfin-pv.yaml ``` --- ## Step 5: Deploy Jellyfin Create `jellyfin-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: jellyfin namespace: media labels: app: jellyfin spec: replicas: 1 selector: matchLabels: app: jellyfin strategy: type: Recreate template: metadata: labels: app: jellyfin spec: containers: - name: jellyfin image: jellyfin/jellyfin:latest ports: - containerPort: 8096 name: http volumeMounts: - name: config mountPath: /config - name: cache mountPath: /cache - name: media mountPath: /media readOnly: true resources: requests: cpu: "500m" memory: "1Gi" gpu.intel.com/i915: "1" limits: cpu: "4000m" memory: "4Gi" gpu.intel.com/i915: "1" livenessProbe: httpGet: path: /health port: 8096 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: httpGet: path: /health port: 8096 initialDelaySeconds: 30 periodSeconds: 10 volumes: - name: config persistentVolumeClaim: claimName: jellyfin-config-pvc - name: cache emptyDir: sizeLimit: 20Gi - name: media hostPath: path: /mnt/media type: Directory --- apiVersion: v1 kind: Service metadata: name: jellyfin namespace: media spec: selector: app: jellyfin ports: - port: 8096 targetPort: 8096 name: http type: ClusterIP ``` ```bash kubectl apply -f jellyfin-deployment.yaml ``` ### Key configuration explained - **gpu.intel.com/i915: "1"** - requests one Intel GPU from the device plugin - **strategy: Recreate** - ensures only one instance runs at a time (Jellyfin uses SQLite, cannot share) - **livenessProbe** - Kubernetes restarts the pod if /health stops responding - **readinessProbe** - traffic is only sent to the pod when it is ready - **resource requests/limits** - prevents Jellyfin from consuming all node resources --- ## Step 6: Ingress with HTTPS (cert-manager) K3s includes Traefik as the default ingress controller. Add cert-manager for automatic Let's Encrypt certificates: ```bash kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml ``` Create a ClusterIssuer for Let's Encrypt: ```yaml apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: you@yourdomain.com privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: traefik ``` Create the Ingress: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: jellyfin-ingress namespace: media annotations: cert-manager.io/cluster-issuer: letsencrypt-prod traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd spec: tls: - hosts: - jellyfin.yourdomain.com secretName: jellyfin-tls rules: - host: jellyfin.yourdomain.com http: paths: - path: / pathType: Prefix backend: service: name: jellyfin port: number: 8096 ``` ```bash kubectl apply -f ingress.yaml ``` Your Jellyfin server is now accessible at `https://jellyfin.yourdomain.com` with automatic certificate renewal. --- ## Step 7: Verify Everything Works ```bash # Check pod status kubectl get pods -n media # NAME READY STATUS RESTARTS AGE # jellyfin-xxxxx-xxxxx 1/1 Running 0 2m # Check GPU allocation kubectl describe pod -n media jellyfin-xxxxx-xxxxx | grep gpu # gpu.intel.com/i915: 1 # Check logs kubectl logs -n media deployment/jellyfin --tail=50 # Check ingress kubectl get ingress -n media ``` --- ## Step 8: Enable Hardware Transcoding in Jellyfin 1. Open `https://jellyfin.yourdomain.com` 2. Complete the setup wizard 3. Dashboard > Playback > Transcoding 4. Hardware acceleration: **Intel QuickSync (QSV)** 5. Enable: H.264, HEVC, VP9 decode 6. Enable: Hardware Tone Mapping 7. Save The Intel GPU device plugin handles all the `/dev/dri` mapping automatically. No manual device configuration needed. --- ## Updating Jellyfin (Zero-Downtime) With Kubernetes, updates are a single command: ```bash kubectl set image deployment/jellyfin -n media jellyfin=jellyfin/jellyfin:latest kubectl rollout status deployment/jellyfin -n media ``` Or if using the Recreate strategy (required for SQLite): ```bash kubectl rollout restart deployment/jellyfin -n media ``` Rollback if something goes wrong: ```bash kubectl rollout undo deployment/jellyfin -n media ``` --- ## Deploying the Full ARR Stack on K3s The same patterns apply to Radarr, Sonarr, Prowlarr, and other services. Each gets its own Deployment, Service, PVC, and Ingress. For a complete media stack on K3s, consider using a Helm chart that bundles everything: ```bash # Community media stack Helm chart helm repo add k8s-at-home https://k8s-at-home.com/charts/ helm install media-stack k8s-at-home/media-stack -n media ``` Or manage each service individually with GitOps (ArgoCD or Flux) for declarative, version-controlled deployments. --- ## K3s vs Docker Compose: Honest Assessment | Scenario | Winner | |---|---| | Single mini PC, simple setup | Docker Compose | | Multiple nodes, want failover | K3s | | Already using Kubernetes | K3s (obviously) | | Want GitOps and declarative config | K3s | | Minimal operational overhead | Docker Compose | | Learning Kubernetes | K3s (great learning project) | | Production-grade with monitoring | K3s + Prometheus | --- ## Monitoring on K3s Kubernetes has native monitoring integration: ```bash # Install kube-prometheus-stack helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install monitoring prometheus-community/kube-prometheus-stack -n monitoring --create-namespace ``` This gives you Prometheus + Grafana with pre-built dashboards for pod health, resource usage, and node metrics. For Jellyfin-specific monitoring, JellyWatch connects to the Jellyfin API regardless of whether it runs on Docker or Kubernetes. --- ## FAQ **Can Jellyfin run with multiple replicas?** No. Jellyfin uses SQLite which does not support concurrent writes from multiple instances. Use `replicas: 1` with `strategy: Recreate`. **Does the Intel GPU plugin work on K3s?** Yes. The Intel device plugin works on any Kubernetes distribution including K3s. **Is K3s overkill for a single-node homelab?** For Jellyfin alone, yes. But if you run 10+ services, K3s provides better resource management, health checking, and update workflows than Docker Compose. **Can I migrate from Docker Compose to K3s?** Yes. Your Jellyfin config directory and media files stay the same. Only the orchestration layer changes. **Does K3s use more resources than Docker?** K3s itself uses ~500MB RAM and minimal CPU. The overhead is acceptable on 8GB+ systems. --- > **Jellyfin on Kubernetes? Monitor it from your phone regardless of orchestration.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - works with Jellyfin on Docker, K3s, bare metal, or any deployment method. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## The Complete Self-Hosted Media Stack 2026: From Request to Stream (Full Architecture Guide) URL: https://jellywatch.app/blog/complete-self-hosted-media-stack-architecture-2026 Published: 2026-05-26T10:18:17+00:00 Author: JellyWatch Team Category: Tutorial Tags: self-hosted, media-stack, architecture, jellyfin, radarr, sonarr, prowlarr, seerr, docker-compose, homelab, 2026 # The Complete Self-Hosted Media Stack 2026: From Request to Stream You have seen the individual guides. Radarr here, Sonarr there, Jellyfin over there. But how does the entire system fit together? What talks to what? What is the exact sequence of events from "I want to watch Dune" to the movie playing on your TV? This guide maps the complete architecture of a professional self-hosted media stack in 2026. Every tool, every connection, every data flow. --- ## The Architecture Overview ``` User Request Flow: User (phone/browser) | v [Seerr] --- "I want Dune Part Two" | v [Radarr] --- "Find and grab Dune Part Two" | v [Prowlarr] --- "Search all indexers for releases" | v [qBittorrent] --- "Download the best release" | v [Radarr] --- "Import, rename, organize" | v [Bazarr] --- "Download subtitles" | v [Tdarr] --- "Optimize codec/size (optional)" | v [Jellyfin] --- "Serve to any device" | v User (TV/phone/browser) --- "Watching Dune Part Two" Monitoring Layer: [JellyWatch] --- Real-time sessions, push notifications [Uptime Kuma] --- Service availability [Jellystat] --- Historical analytics ``` --- ## Every Tool Explained ### Layer 1: User Interface #### Seerr (Media Requests) **What it does:** Provides a Netflix-like interface where users search for movies and TV shows and submit requests. **Connects to:** - Jellyfin/Emby (user authentication, library status) - Radarr (sends movie requests) - Sonarr (sends TV show requests) - TMDB (metadata and search) **Data flow:** User searches TMDB via Seerr UI > clicks Request > Seerr sends the TMDB ID to Radarr or Sonarr > request status tracked until content is available. **Port:** 5055 --- ### Layer 2: Media Management #### Radarr (Movie Automation) **What it does:** Monitors for movie releases, grabs them from indexers via download clients, imports and renames files into your library. **Connects to:** - Prowlarr (receives indexer configurations) - qBittorrent/Transmission (sends download commands) - Jellyfin (triggers library scan after import) - Seerr (receives requests) - Recyclarr/Profilarr (receives quality profile configurations) **Data flow:** Receives request from Seerr (or manual add) > searches indexers via Prowlarr > sends .torrent to qBittorrent > monitors download progress > on completion: renames file, moves to library folder, notifies Jellyfin. **Port:** 7878 #### Sonarr (TV Show Automation) **What it does:** Same as Radarr but for TV series. Monitors for new episodes, grabs them automatically as they air. **Connects to:** Same as Radarr. **Data flow:** Identical to Radarr but operates on series/seasons/episodes instead of movies. **Port:** 8989 #### Prowlarr (Indexer Management) **What it does:** Centralizes all your torrent/usenet indexer configurations. Configure indexers once in Prowlarr, they sync to all connected apps. **Connects to:** - Radarr (pushes indexer configs) - Sonarr (pushes indexer configs) - External indexers (searches for releases) **Data flow:** Radarr/Sonarr search requests are proxied through Prowlarr > Prowlarr queries all configured indexers > returns results to the requesting app. **Port:** 9696 --- ### Layer 3: Download #### qBittorrent (Download Client) **What it does:** Downloads torrent files. Manages seeding, bandwidth, and queue priority. **Connects to:** - Radarr (receives download commands, reports status) - Sonarr (receives download commands, reports status) - VPN (optional, for privacy) **Data flow:** Receives .torrent or magnet link from Radarr/Sonarr > downloads to /downloads/incomplete > moves to /downloads/complete on finish > Radarr/Sonarr detect completion and import. **Port:** 8080 (WebUI) --- ### Layer 4: Post-Processing #### Bazarr (Subtitle Automation) **What it does:** Automatically downloads subtitles for every movie and episode in your library from multiple providers. **Connects to:** - Radarr (reads movie library) - Sonarr (reads TV library) - OpenSubtitles, Addic7ed, Podnapisi (subtitle providers) **Data flow:** Scans Radarr/Sonarr libraries > identifies missing subtitles > searches providers > downloads best match > places .srt file next to the video file. **Port:** 6767 #### Tdarr (Library Transcoding - Optional) **What it does:** Automatically transcodes your library to a target codec/format. Converts H.264 to H.265 to save storage, adds compatibility audio tracks, removes unwanted subtitle tracks. **Connects to:** - Your media folder (reads and writes files) - Jellyfin (triggers library refresh after processing) **Data flow:** Scans media folders > identifies files not matching target specs > transcodes using GPU/CPU > replaces original (or saves alongside) > notifies Jellyfin. **Port:** 8265 (WebUI), 8266 (Server) --- ### Layer 5: Media Server #### Jellyfin (Streaming) **What it does:** Organizes your media library with metadata, serves it to any device with transcoding when needed. **Connects to:** - Radarr/Sonarr (receives library scan triggers) - All client devices (streams media) - JellyWatch (provides API data for monitoring) **Data flow:** Scans library folders > fetches metadata from TMDB/TVDB > serves content to clients > transcodes if client cannot Direct Play. **Port:** 8096 --- ### Layer 6: Monitoring #### JellyWatch (Mobile Admin) **What it does:** Native Android app for real-time server monitoring, push notifications, and arr stack management. **Connects to:** - Jellyfin API (sessions, server health) - Radarr API (download queue) - Sonarr API (download queue) - Seerr API (media requests) **Data flow:** Polls Jellyfin API every 5-10 seconds > displays active sessions > sends push notifications for events > allows request approval/denial. #### Uptime Kuma (Availability) **What it does:** Checks if all services are responding. Sends alerts when something goes down. **Connects to:** All services via HTTP health endpoints. **Port:** 3001 #### Jellystat (Analytics) **What it does:** Historical playback statistics, per-user analytics, library growth tracking. **Connects to:** Jellyfin API (playback history). **Port:** 3000 --- ## The Complete Docker Compose ```yaml services: # === REVERSE PROXY === caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped # === MEDIA SERVER === jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: host volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /mnt/media:/media:ro devices: - /dev/dri:/dev/dri restart: unless-stopped # === REQUESTS === seerr: image: ghcr.io/seerr-team/seerr:latest container_name: seerr init: true environment: - TZ=Europe/Paris volumes: - ./seerr/config:/app/config ports: - 5055:5055 restart: unless-stopped # === INDEXER MANAGEMENT === prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./prowlarr/config:/config ports: - 9696:9696 restart: unless-stopped # === MOVIE AUTOMATION === radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./radarr/config:/config - /mnt/media/movies:/movies - /mnt/downloads:/downloads ports: - 7878:7878 restart: unless-stopped # === TV AUTOMATION === sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./sonarr/config:/config - /mnt/media/tv:/tv - /mnt/downloads:/downloads ports: - 8989:8989 restart: unless-stopped # === DOWNLOAD CLIENT === qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - WEBUI_PORT=8080 volumes: - ./qbittorrent/config:/config - /mnt/downloads:/downloads ports: - 8080:8080 - 6881:6881 - 6881:6881/udp restart: unless-stopped # === SUBTITLES === bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./bazarr/config:/config - /mnt/media/movies:/movies - /mnt/media/tv:/tv ports: - 6767:6767 restart: unless-stopped # === LIBRARY TRANSCODING (OPTIONAL) === tdarr: image: ghcr.io/haveagitgat/tdarr:latest container_name: tdarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - serverIP=0.0.0.0 - serverPort=8266 - webUIPort=8265 - internalNode=true - inContainer=true - nodeName=InternalNode volumes: - ./tdarr/server:/app/server - ./tdarr/configs:/app/configs - ./tdarr/logs:/app/logs - /mnt/media:/media - /tmp/tdarr:/temp ports: - 8265:8265 - 8266:8266 devices: - /dev/dri:/dev/dri restart: unless-stopped # === MONITORING === uptime-kuma: image: louislam/uptime-kuma:1 container_name: uptime-kuma volumes: - ./uptime-kuma/data:/app/data ports: - 3001:3001 restart: unless-stopped volumes: caddy_data: ``` --- ## The Connection Map (Setup Order) 1. **Prowlarr > Indexers** - Add your torrent indexers 2. **Prowlarr > Radarr + Sonarr** - Sync indexers to both apps 3. **Radarr + Sonarr > qBittorrent** - Connect download client 4. **Radarr + Sonarr > Jellyfin** - Trigger library scans on import 5. **Bazarr > Radarr + Sonarr** - Read libraries for subtitle matching 6. **Seerr > Jellyfin + Radarr + Sonarr** - Setup wizard connects all three 7. **JellyWatch > All services** - Add each with URL and API key --- ## The Data Flow: A Complete Example 1. **User opens Seerr** on their phone, searches "Dune Part Two" 2. **Seerr queries TMDB**, shows the movie with poster and description 3. **User taps Request**. Seerr checks Jellyfin: not in library. Sends request to Radarr. 4. **Radarr receives the request**, adds the movie as monitored 5. **Radarr searches via Prowlarr**. Prowlarr queries all configured indexers simultaneously. 6. **Prowlarr returns results** ranked by quality profile scores 7. **Radarr selects the best release** based on custom format scoring 8. **Radarr sends the .torrent to qBittorrent** with category "radarr" 9. **qBittorrent downloads the file** to /downloads/incomplete, then moves to /downloads/complete 10. **Radarr detects completion**, renames the file, hardlinks to /movies/ 11. **Radarr notifies Jellyfin** to scan the Movies library 12. **Bazarr detects the new movie**, downloads English and French .srt files 13. **Tdarr detects the new file** (if configured), checks codec, skips if already optimal 14. **Jellyfin scans**, fetches TMDB metadata, downloads poster 15. **Seerr updates request status** to "Available" 16. **JellyWatch sends a push notification**: "Dune Part Two is now available" 17. **User opens Jellyfin** on their TV, finds Dune Part Two 18. **Jellyfin serves the file** via Direct Play 19. **JellyWatch shows the active session** with codec details Total time from request to watching: 10-30 minutes. --- ## Storage Architecture ``` /mnt/ downloads/ incomplete/ <- qBittorrent active downloads complete/ radarr/ <- Completed movie downloads (seeding) sonarr/ <- Completed TV downloads (seeding) media/ movies/ <- Radarr imports here (Jellyfin reads) tv/ <- Sonarr imports here (Jellyfin reads) music/ <- Manual or Lidarr audiobooks/ <- Manual ``` **Critical:** `/mnt/downloads` and `/mnt/media` must be on the **same filesystem** for hardlinks to work. --- ## Hardware Requirements by Stack Size | Stack size | CPU | RAM | Storage (OS+Apps) | Storage (Media) | |---|---|---|---|---| | Solo user | Intel N100 (4 cores) | 8 GB | 120 GB NVMe | 2-4 TB HDD | | Family (2-5 users) | Intel N100/N305 | 16 GB | 256 GB NVMe | 4-12 TB HDD | | Shared server (5-15 users) | Intel i5 12th gen+ | 32 GB | 512 GB NVMe | 12-40 TB | | Community (15+ users) | Intel i7/Xeon + dGPU | 64 GB | 1 TB NVMe | 40+ TB | --- ## Common Mistakes | Mistake | Consequence | Fix | |---|---|---| | Different filesystems for downloads and media | Hardlinks fail, storage doubles | Use same mount point | | Wrong PUID/PGID across containers | Permission denied on import | Set same UID/GID everywhere | | No Prowlarr (indexers in each app) | Configuration drift | Centralize in Prowlarr | | No Jellyfin notification in Radarr/Sonarr | Library does not update after import | Add Connect > Jellyfin | | Tdarr running during peak hours | Competes with active streams | Schedule off-peak | | No monitoring | Problems discovered by users complaining | Deploy JellyWatch + Uptime Kuma | --- ## FAQ **Do I need ALL of these tools?** No. The minimum viable stack is: Jellyfin + Radarr + Sonarr + Prowlarr + qBittorrent. Everything else is optional enhancement. **How much does this cost?** All software is free. Hardware cost: $130 (Intel N100 mini PC) + storage drives. Electricity: ~$15/year. **Can I add tools incrementally?** Yes. Start with Jellyfin alone. Add Radarr/Sonarr when you want automation. Add Seerr when you share with others. Add monitoring when you want visibility. **Does this work on a NAS?** Yes. Synology, TrueNAS, and Unraid all support Docker and can run this entire stack. --- > **Your stack is deployed. Monitor it all from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Jellyfin sessions, Radarr/Sonarr queues, Seerr requests, and server health in your pocket. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Replacing Tautulli After Leaving Plex: The Complete Jellyfin and Emby Monitoring Guide (2026) URL: https://jellywatch.app/blog/replacing-tautulli-after-leaving-plex-jellyfin-emby-monitoring-2026 Published: 2026-05-20T19:00:00+00:00 Author: JellyWatch Team Category: Other Tags: tautulli, replacement, jellyfin, emby, monitoring, jellywatch, embywatch, jellystat, plex-migration, push-notifications, 2026 # Replacing Tautulli After Leaving Plex: The Complete Monitoring Guide for Jellyfin and Emby (2026) You migrated from Plex to Jellyfin or Emby. Your library is set up, your clients are configured, hardware transcoding works. Then you realize: you have no idea who is watching what. For years, **Tautulli** was your window into your Plex server. Active sessions, watch history, per-user statistics, notification rules, and beautiful graphs. It was the first thing you checked every morning and the last thing you looked at before bed. **Tautulli does not work with Jellyfin or Emby.** It is Plex-only, always has been, always will be. This guide covers every tool that replaces Tautulli in the Jellyfin and Emby ecosystem, from mobile-first monitoring to full web dashboards. --- ## What Tautulli Actually Did Before looking at replacements, let us be specific about what Tautulli provided: | Feature | Description | |---|---| | **Active sessions** | Who is watching, what, on which device, right now | | **Transcode info** | Whether a stream is Direct Play or transcoding, and why | | **Watch history** | Complete log of every play event with timestamps | | **Per-user statistics** | Total watch time, most-watched content, activity patterns | | **Notifications** | Alerts for new sessions, playback events, server issues | | **Library statistics** | Most popular content, play counts, growth over time | | **Graphs and charts** | Visual representation of usage over time | | **Newsletter** | Automated email with recently added content | | **API** | Programmatic access to all data | No single tool replaces all of this. But the combination of **JellyWatch** (or EmbyWatch) + **Jellystat** covers 100% of Tautulli's functionality and adds features Tautulli never had. --- ## The Replacement Stack | Tautulli feature | JellyWatch / EmbyWatch | Jellystat | Streamystats | |---|---|---|---| | Active sessions (real-time) | ✅ Best-in-class | ✅ | ✅ | | Transcode diagnostics | ✅ With reason | ✅ | ✅ | | Push notifications | ✅ Native Android | ❌ | ❌ | | Watch history | ✅ | ✅ Full | ✅ | | Per-user statistics | ✅ | ✅ Detailed | ✅ | | Interactive charts | Basic | ✅ | ✅ | | Home screen widget | ✅ | ❌ | ❌ | | Radarr/Sonarr/Seerr | ✅ Integrated | ❌ | ❌ | | Media request management | ✅ | ❌ | ❌ | | Server health (CPU/RAM) | ✅ | ❌ | ❌ | | Mobile-first | ✅ Native app | ❌ (web) | ❌ (web) | | Newsletter | ❌ | ❌ | ❌ | | Platform | Android | Web (Docker) | Web (Docker) | | Cost | Free + Premium | Free | Free | **The recommended setup:** JellyWatch (mobile, real-time, notifications) + Jellystat (desktop, historical, graphs). --- ## Option 1: JellyWatch - The Tautulli You Carry in Your Pocket JellyWatch is a native Android app built specifically for Jellyfin server administrators. It is not a web wrapper, it is a purpose-built mobile application that connects directly to your Jellyfin API. For Emby users, **EmbyWatch** provides the identical feature set built for the Emby API. ### What Makes JellyWatch Better Than Tautulli for Daily Use Tautulli was a web dashboard. You had to open a browser, navigate to the URL, and wait for it to load. JellyWatch is on your home screen. One tap and you see everything. **Push notifications** are the killer feature Tautulli never truly had natively. JellyWatch sends instant Android notifications when: - A new session starts on your server - A session stops or pauses - A new device connects - CPU spikes above a threshold - Your server goes offline You know what is happening on your server without opening any app. Your phone buzzes and you glance at the notification. That is the experience Tautulli users always wanted but had to hack together with external notification services. ### JellyWatch Feature Breakdown #### Real-Time Session Monitoring The main dashboard shows every active session with: - User name and avatar - Media title and poster - Playback progress with animated bar - Playback state (Playing / Paused / Buffering) - Device name and client application - IP address (admin view) - **Playback method badge**: Direct Play, Direct Stream, or Transcode - **Transcode reason**: exactly why the server is transcoding (codec, bandwidth, subtitle) This is more information per session than Tautulli showed by default. #### Transcoding Diagnostics When a session is transcoding, JellyWatch tells you **why**: - Unsupported video codec (e.g., HEVC on Firefox) - Unsupported audio codec (e.g., TrueHD on Fire TV) - Bandwidth limit set too low - Subtitle burn-in (PGS/VobSub) - HDR to SDR tone mapping This is actionable information. You can message the user, adjust their settings, or fix the underlying issue. #### Server Health - CPU usage in real time - RAM usage - Storage space per drive - Active stream count - Server uptime #### Arr Stack Integration This is something Tautulli never offered. JellyWatch integrates with: - **Seerr/Jellyseerr** - view, approve, or reject media requests with one tap - **Radarr** - monitor movie download queue, retry failed downloads - **Sonarr** - monitor TV episode downloads, check upcoming episodes You manage your entire media stack from one app. No browser tabs, no switching between web UIs. #### Watch History and Statistics - Per-user viewing time (daily, weekly, monthly, yearly) - Most-watched content - Content type breakdown (movies vs TV vs music) - Interactive trend charts - Shareable statistics cards #### Android Home Screen Widget A widget that shows active session count and server status at a glance. No app to open, the information is always visible on your home screen. ### Installing JellyWatch 1. Download from [Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) 2. Open the app → Add Server → enter your Jellyfin URL 3. Log in with your admin credentials 4. Enable push notifications in Settings → Notifications Total setup time: under 2 minutes. ### JellyWatch Free vs Premium | Feature | Free | Premium | |---|---|---| | Active sessions | ✅ | ✅ | | Basic server info | ✅ | ✅ | | Push notifications | ❌ | ✅ | | Detailed transcode info | ❌ | ✅ | | Multiple servers | ❌ | ✅ | | Arr stack integration | ❌ | ✅ | | Home screen widget | ❌ | ✅ | | Watch history & stats | ❌ | ✅ | | Watch Pass (user sharing) | ❌ | ✅ | The free tier covers basic session monitoring. Premium unlocks the full Tautulli-replacement experience. --- ## Option 2: Jellystat - The Web Dashboard for Deep Analytics If you want Tautulli's web dashboard experience with historical graphs and detailed per-user analytics, Jellystat is the closest equivalent. ### What Jellystat Provides - **Playback history** - every play event with user, device, codec, duration, completion % - **Per-user analytics** - total watch time, most-watched genres, activity heatmaps - **Library statistics** - most popular content, least-watched items, growth over time - **Playback method breakdown** - Direct Play vs Transcode ratio over time - **Device breakdown** - which clients are used most - **Interactive charts** - visual trends by day, week, month, year ### Docker Setup ```yaml services: jellystat-db: image: postgres:15-alpine environment: POSTGRES_DB: jfstat POSTGRES_USER: postgres POSTGRES_PASSWORD: your_secure_password volumes: - ./jellystat/db:/var/lib/postgresql/data restart: unless-stopped jellystat: image: cyfershepard/jellystat:latest environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: your_secure_password POSTGRES_IP: jellystat-db POSTGRES_PORT: 5432 JWT_SECRET: your_jwt_secret ports: - 3000:3000 volumes: - ./jellystat/backup-data:/app/backend/backup-data depends_on: - jellystat-db restart: unless-stopped ``` ```bash docker compose up -d ``` Access at `http://your-server:3000`. Connect your Jellyfin server with an API key. ### Jellystat vs Tautulli: Feature Comparison | Feature | Tautulli (Plex) | Jellystat (Jellyfin) | |---|---|---| | Active sessions | ✅ | ✅ | | Watch history | ✅ | ✅ | | Per-user stats | ✅ | ✅ | | Graphs and charts | ✅ Extensive | ✅ Good | | Notifications | ✅ Built-in | ❌ (use JellyWatch) | | Newsletter | ✅ | ❌ | | API | ✅ | ✅ | | Mobile app | ❌ (web only) | ❌ (use JellyWatch) | | Historical backfill | ✅ | ✅ (from Playback Reporting plugin) | | Platform | Plex only | Jellyfin only | Jellystat covers ~80% of Tautulli's web dashboard functionality. The missing 20% (notifications, newsletter) is handled by JellyWatch and webhook plugins. --- ## Option 3: Streamystats - The Lightweight Alternative If Jellystat's PostgreSQL requirement feels heavy, Streamystats is a simpler alternative that uses SQLite: ```yaml services: streamystats: image: ghcr.io/fredrikburmester/streamystats:latest ports: - 3000:3000 volumes: - ./streamystats/data:/app/data restart: unless-stopped ``` One container, no separate database. Lighter than Jellystat but with fewer features. | Feature | Jellystat | Streamystats | |---|---|---| | Database | PostgreSQL (separate container) | SQLite (built-in) | | Setup complexity | Medium | Simple | | UI design | Functional | More modern | | Feature depth | Deeper | Lighter | | Active development | Active | Very active | --- ## The Recommended Setup for Ex-Plex Users ### Minimum (replaces 70% of Tautulli) **JellyWatch only** - install the app, connect your server, done. You get real-time sessions, transcode diagnostics, push notifications, and basic stats from your phone. Time to set up: 2 minutes. ### Recommended (replaces 95% of Tautulli) **JellyWatch + Jellystat** - JellyWatch for daily mobile monitoring and instant notifications. Jellystat for deep historical analytics when you want to dig into data on a desktop. Time to set up: 10 minutes. ### Full Stack (replaces 100% + adds features Tautulli never had) **JellyWatch + Jellystat + Uptime Kuma** - Add Uptime Kuma for server availability monitoring and a public status page your users can check. Time to set up: 20 minutes. --- ## Migrating Your Monitoring Mindset ### What Changes | Tautulli habit | New equivalent | |---|---| | Open browser → check Tautulli | Glance at JellyWatch widget on home screen | | Check who is streaming | JellyWatch push notification tells you instantly | | Debug a buffering complaint | JellyWatch shows transcode reason per session | | Check monthly stats | Jellystat web dashboard | | Get notified of new sessions | JellyWatch push notifications (native, no setup) | | Share stats on Reddit | JellyWatch shareable stats cards | ### What Improves - **Faster access** - native app vs web dashboard - **Push notifications** - instant, no external service needed - **Arr stack in one place** - Radarr, Sonarr, Seerr alongside monitoring - **Media request approval** - approve/reject from your phone - **Server health** - CPU, RAM, storage visible alongside sessions - **Widget** - server status always visible on your home screen ### What You Lose (Honestly) - **Newsletter generation** - no direct equivalent (use Discord/Telegram notification plugins for new media alerts) - **Tautulli's specific graph styles** - Jellystat has graphs but they look different - **iOS app** - JellyWatch is Android-only currently --- ## For Emby Users: EmbyWatch Everything described above for JellyWatch applies identically to **EmbyWatch** for Emby servers. Same team, same features, different API: - Real-time session monitoring - Transcoding diagnostics with reason - Push notifications - Radarr/Sonarr/Seerr integration - Watch history and statistics - Android home screen widget - Watch Pass for user sharing If you migrated from Plex to Emby instead of Jellyfin, EmbyWatch is your Tautulli replacement. --- ## Setting Up Notifications (The #1 Tautulli Feature People Miss) ### JellyWatch Push Notifications (Easiest) 1. Install JellyWatch → Settings → Notifications 2. Toggle on: New session, Session stopped, New device 3. Done. Native Android notifications, no external service. ### Jellyfin Webhook Plugin + Discord/Telegram (For Non-Android Users) 1. Dashboard → Plugins → Catalog → **Webhook** → Install 2. Add a Discord webhook or Telegram bot 3. Select events: Playback Start, Playback Stop, Item Added 4. Rich embeds with poster artwork ### Jellyfin + Ntfy (Self-Hosted Push) For privacy-first push notifications without Google services: 1. Deploy Ntfy alongside Jellyfin 2. Configure Jellyfin Webhook plugin to POST to Ntfy 3. Subscribe on your phone via the Ntfy app --- ## FAQ **Is JellyWatch free?** Yes. The free tier includes basic session monitoring. Premium unlocks push notifications, detailed transcode info, arr stack integration, and the widget. **Does Jellystat work with Emby?** Jellystat is designed for Jellyfin. For Emby, use EmbyWatch for monitoring and the Emby Playback Reporting plugin for basic server-side statistics. **Can I use JellyWatch without Jellystat?** Absolutely. JellyWatch is standalone. Many users only run JellyWatch and find it sufficient for daily monitoring. **Is there an iOS equivalent of JellyWatch?** Not currently. JellyWatch and EmbyWatch are Android-only. iOS users can use Jellystat (web) or the Jellyfin web dashboard for monitoring. **How does JellyWatch compare to Tautulli in terms of data depth?** For real-time monitoring and notifications, JellyWatch is superior (native app, push notifications, widget). For historical analytics with detailed graphs, Jellystat is the closer Tautulli equivalent. Use both together for complete coverage. **Will Tautulli ever support Jellyfin?** No. Tautulli is built specifically for the Plex API and the developer has stated it will remain Plex-only. **I used Tautulli's API for custom scripts. What replaces that?** The Jellyfin API itself is well-documented and provides all the data Tautulli exposed. Jellystat also has an API. For webhook-based automation, use the Jellyfin Webhook plugin. --- ## The Bottom Line Tautulli was great for Plex. But it was a web dashboard from 2017 that never got a proper mobile app. The Jellyfin/Emby monitoring ecosystem in 2026 is actually better: - **JellyWatch/EmbyWatch** gives you instant mobile monitoring that Tautulli never offered - **Jellystat** gives you the web dashboard and historical analytics - **Together** they cover 100% of Tautulli's functionality plus features it never had The monitoring gap is not a reason to stay on Plex. It is solved. --- > **Ready to replace Tautulli? Start here.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the Tautulli replacement built for Jellyfin. Real-time sessions, push notifications, and your entire media stack in one app. > **On Emby?** [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience for Emby servers. --- *Tautulli is a trademark of its respective developer. JellyWatch and EmbyWatch are not affiliated with the Tautulli project.* --- ## Plex Lifetime Pass Triples to $750: Why Everyone Is Migrating to Jellyfin and Emby Right Now (2026) URL: https://jellywatch.app/blog/plex-lifetime-pass-750-dollars-migration-jellyfin-emby-2026 Published: 2026-05-20T18:00:00+00:00 Author: JellyWatch Team Category: Other Tags: plex, plex-pass, $750, price-increase, migration, jellyfin, emby, tautulli, jellywatch, self-hosting, 2026 # Plex Lifetime Pass Triples to $750: The Self-Hosting Exodus Has Begun On May 19, 2026, Plex dropped a bombshell: the Lifetime Plex Pass will increase from $249.99 to **$749.99** on July 1, 2026. That is a 200% increase, a $500 jump, for a one-time purchase that was $119 for over a decade before 2025. The reaction from the self-hosting community has been immediate and brutal. How-To Geek published an article titled "Jellyfin just won the streaming wars without lifting a finger." Ars Technica called it a move "forcing users to another subscription." Kotaku said Plex "burns through any remaining goodwill." This is not just a price increase. It is the final signal that Plex has pivoted away from its self-hosting roots toward a high-margin subscription model. And the community is responding by leaving. --- ## The Price History: From $119 to $750 in 18 Months | Date | Lifetime Plex Pass Price | Change | |---|---|---| | 2013–2024 | $119.99 | Stable for 11+ years | | Early 2025 | $249.99 | +108% increase | | July 1, 2026 | **$749.99** | +200% increase | The monthly ($6.99) and annual ($69.99) plans remain unchanged. But the message is clear: Plex wants recurring revenue, not one-time purchases. Their blog post states the new price reflects the "real, ongoing value" of the software. --- ## What the Plex Pass Actually Locks For users who have never paid, here is what Plex locks behind the paywall: | Feature | Without Plex Pass | With Plex Pass | |---|---|---| | **Hardware transcoding** | No (CPU only) | Yes (GPU acceleration) | | **Remote streaming** | Requires Plex Pass or Remote Watch Pass ($2/month/viewer) | Included | | **Intro/Credits skip** | No | Yes | | **Offline downloads** | No | Yes | | **Live TV & DVR** | No | Yes | | **Mobile sync** | No | Yes | | **Server management** | Limited | Full | Every single one of these features is **free in Jellyfin**. Every single one is available in **Emby Premiere for $119 lifetime**, the price Plex used to charge. --- ## Why This Is the Breaking Point This is not the first Plex controversy. But it is the one that breaks the camel's back because it compounds with everything else: ### The Remote Access Paywall (April 2025–2026) Plex made remote streaming require either a Plex Pass or a Remote Watch Pass ($2/month per viewer). As of April 2026, this applies to Samsung TVs, LG TVs, Fire TV, Xbox, PlayStation, and more. You literally cannot watch your own media remotely on most devices without paying. ### The Ad Creep Plex's free tier now includes ad-supported movies, a "Discover" tab, streaming recommendations, and rental suggestions injected into your personal library interface. ### The Cloud Dependency Plex routes all authentication through its cloud servers. When Plex servers go down, and they have multiple times, you cannot access your own local server. Your media, your hardware, inaccessible because a company's cloud is offline. ### The $750 Lifetime Pass And now: $750 for a one-time purchase. For context, that is more than: - A PlayStation 5 ($499) - An Apple TV 4K ($129) + 5 years of any streaming service - An Intel N100 mini PC ($130) running Jellyfin with ALL features free forever --- ## The Two Alternatives: Jellyfin (Free) and Emby ($119) ### Jellyfin: Everything Plex Does, for $0 Jellyfin is the open-source media server that has been gaining market share steadily since 2022. In 2024, it surpassed Plex in the r/selfhosted community survey with 51% market share among homelab users. | Plex Pass Feature | Jellyfin | |---|---| | Hardware transcoding | Free | | Remote streaming | Free | | Intro/Credits skip | Free (Intro Skipper plugin) | | Offline downloads | Free (client-dependent) | | Live TV & DVR | Free | | Mobile apps | Free | | Account required | No | | Open source | Yes | **Total cost: $0. Forever.** ### Emby: The Polished Middle Ground ($119 Lifetime) Emby is the commercially supported alternative. It requires Emby Premiere for hardware transcoding and full mobile access, but at $119 lifetime, it costs what Plex used to charge before the price hikes began. | Feature | Emby Free | Emby Premiere | |---|---|---| | Hardware transcoding | No | Yes | | Full mobile app | No | Yes | | Live TV & DVR | No | Yes | | Offline sync | No | Yes | | Price | $0 | ~$119 lifetime | For users who want a polished, commercially supported experience without the $750 price tag, Emby is the logical landing spot. --- ## How to Migrate This Weekend ### Your Media Files Do Not Move Both Jellyfin and Emby read the exact same folder structure and file naming conventions as Plex. Your media stays exactly where it is. Point the new server at the same folders and it works. ### Watch History Transfer The biggest concern for most users. Three methods: **Method 1: JellyPlex-Watched (Docker, automated)** ```yaml services: jellyplex-watched: image: luigi311/jellyplex-watched:latest environment: - PLEX_BASEURL=http://plex:32400 - PLEX_TOKEN=YOUR_PLEX_TOKEN - JELLYFIN_BASEURL=http://jellyfin:8096 - JELLYFIN_TOKEN=YOUR_JELLYFIN_API_KEY - SYNC_FROM_PLEX_TO_JELLYFIN=true restart: "no" ``` **Method 2: Trakt as intermediary** 1. Install Trakt plugin on Plex → sync all history to Trakt 2. Install Trakt plugin on Jellyfin/Emby → import from Trakt 3. All watched status transfers **Method 3: WatchState (most comprehensive)** Handles Plex, Jellyfin, Emby, and Trakt simultaneously with bidirectional sync. ### Install Jellyfin in 5 Minutes ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin ports: - "8096:8096" volumes: - ./config:/config - ./cache:/cache - /path/to/media:/media:ro devices: - /dev/dri:/dev/dri restart: unless-stopped ``` ```bash docker compose up -d ``` Hardware transcoding included. No license key. No account. No paywall. ### Install Emby in 5 Minutes ```yaml services: emby: image: emby/embyserver:latest container_name: emby environment: - UID=1000 - GID=1000 volumes: - ./config:/config - /path/to/media:/media:ro devices: - /dev/dri:/dev/dri ports: - "8096:8096" restart: unless-stopped ``` Activate Emby Premiere ($119 lifetime) from Dashboard → Emby Premiere for hardware transcoding. --- ## The Tautulli Problem: What Replaces Your Monitoring? This is the question every migrating Plex user asks within 48 hours of switching. Tautulli was the dashboard that showed who was watching what, when, on which device, and whether it was transcoding. It was essential for server management. **Tautulli does not work with Jellyfin or Emby.** It is Plex-only. ### The Replacement: JellyWatch (Jellyfin) and EmbyWatch (Emby) JellyWatch and EmbyWatch are native Android apps that replace Tautulli with a mobile-first experience that Tautulli never offered: | Feature | Tautulli (Plex) | JellyWatch / EmbyWatch | |---|---|---| | Real-time sessions | Yes (web) | Yes (native Android) | | Push notifications | Via external services | Built-in | | Transcode diagnostics | Yes | Yes (with reason) | | Watch history & stats | Yes | Yes | | Home screen widget | No | Yes | | Radarr/Sonarr/Seerr | No | Yes (integrated) | | Mobile-first | No (web dashboard) | Yes (native app) | | Approve media requests | No | Yes (Seerr integration) | | Server health (CPU/RAM) | Limited | Yes | JellyWatch is not just a Tautulli replacement, it is a Tautulli upgrade. You get everything Tautulli did plus push notifications, a home screen widget, and full arr stack management from your pocket. ### For Desktop Analytics: Jellystat If you also want a Tautulli-style web dashboard with historical graphs and per-user analytics, deploy Jellystat alongside JellyWatch: ```yaml services: jellystat: image: cyfershepard/jellystat:latest environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: your_password POSTGRES_IP: jellystat-db POSTGRES_PORT: 5432 JWT_SECRET: your_jwt_secret ports: - 3000:3000 depends_on: - jellystat-db restart: unless-stopped jellystat-db: image: postgres:15-alpine environment: POSTGRES_DB: jfstat POSTGRES_USER: postgres POSTGRES_PASSWORD: your_password volumes: - ./jellystat/db:/var/lib/postgresql/data restart: unless-stopped ``` **Use both together:** Jellystat for deep historical analytics on desktop. JellyWatch for real-time monitoring and management from your phone. --- ## The Cost Comparison: 5-Year Total | Scenario | Plex (2026 pricing) | Jellyfin + JellyWatch | Emby + EmbyWatch | |---|---|---|---| | Server software | $750 lifetime or $420 (5yr monthly) | $0 | $119 lifetime | | Remote access for 4 viewers | Included in Pass (or $480 over 5yr) | $0 | $0 | | Hardware transcoding | Included in Pass | $0 | Included in Premiere | | Monitoring (Tautulli equivalent) | $0 (Tautulli is free) | $0 (JellyWatch free tier) | $0 (EmbyWatch free tier) | | **5-year total** | **$750–$900** | **$0** | **$119** | The math is not close. Jellyfin saves you $750. Emby saves you $631. Both give you the same features Plex locks behind its paywall. --- ## What You Gain by Leaving Plex Beyond the cost savings: - **No cloud dependency** - your server works even if the company's servers go down - **No account required** - Jellyfin needs zero external authentication - **No ads** - no Discover tab, no streaming recommendations, no rental suggestions - **No remote access paywall** - stream your own media from anywhere, free - **Better plugin ecosystem** - Intro Skipper, Skin Manager, SSO, 70+ community plugins - **Better HDR tone mapping** - community-tested, Jellyfin leads on Linux/Docker - **Privacy** - zero telemetry, zero data collection --- ## The Timeline: Act Before July 1 If you are still on the fence: - **Now through June 30:** You can still buy the Lifetime Plex Pass at $249.99 if you want to stay - **July 1, 2026:** Price jumps to $749.99 permanently - **The smart move:** Spend this weekend migrating to Jellyfin or Emby instead of spending $250–$750 on a platform that keeps raising prices The self-hosting community has spoken. The exodus is happening now. --- ## FAQ **Will my existing Plex Pass still work?** Yes. Existing Lifetime Plex Pass holders are grandfathered in. The price increase only affects new purchases. **Can I run Plex and Jellyfin simultaneously during migration?** Yes. They use different ports (32400 vs 8096) and can share the same media files. **How long does migration take?** Library scan: 15-60 minutes depending on size. Watch history sync: 10-30 minutes. Client reconfiguration: varies by number of devices. **Is Jellyfin as stable as Plex?** Jellyfin 10.11.7 is mature and stable for home use. The main difference is Plex has a paid team; Jellyfin is volunteer-maintained. **What about Plex's free movies and TV?** Jellyfin does not include ad-supported free content. If you use Plex's free streaming library, you lose that. Your personal media library migrates completely. **Do I need a powerful server for Jellyfin?** Same hardware requirements as Plex. An Intel N100 mini PC ($130) handles 3-4 simultaneous 4K transcodes. Hardware transcoding is free, no license needed. --- > **Leaving Plex? Get the monitoring app that replaces Tautulli.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time sessions, push notifications, Radarr/Sonarr/Seerr integration, and server health monitoring for Jellyfin. > **Switching to Emby instead?** [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience built for Emby. --- *Sources: [PCMag](https://uk.pcmag.com/video-streaming-services/165068/need-a-plex-lifetime-pass-buy-now-or-pay-triple-starting-july), [MacRumors](https://www.macrumors.com/2026/05/19/lifetime-plex-pass-price-increase/), [Engadget](https://www.engadget.com/2176760/plexs-lifetime-subscription-cost-is-tripling-to-dollar750/), [9to5Mac](https://9to5mac.com/2026/05/19/plex-increasing-lifetime-plex-pass-cost-to-whopping-750/), [How-To Geek](https://www.howtogeek.com/jellyfin-just-won-the-streaming-wars-without-lifting-a-finger-thanks-to-plex-controversial-decision/). Content was rephrased for compliance with licensing restrictions.* --- ## Profilarr: The Configuration Management Platform for Radarr and Sonarr (2026) URL: https://jellywatch.app/blog/profilarr-configuration-management-radarr-sonarr-custom-formats-2026 Published: 2026-05-18T10:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: profilarr, radarr, sonarr, custom-formats, quality-profiles, trash-guides, dictionarry, configuration, sync, docker, self-hosting, 2026 # Profilarr: The Configuration Management Platform for Radarr and Sonarr (2026) If you manage a media server with Radarr and Sonarr, you have spent hours configuring quality profiles. Copying custom formats from TRaSH Guides. Pasting JSON. Adjusting scores. Then doing it all again on your second Radarr instance for 4K content. And again when TRaSH updates their recommendations. **Profilarr** eliminates this entire workflow. It is a centralized platform where you build, test, and deploy configurations across any number of Radarr and Sonarr instances. Link a curated database (TRaSH Guides, Dictionarry, Dumpstarr), customize what you need, test your regex patterns against real release names, simulate how profiles score releases, then push everything to your instances with a single sync. No more manual JSON pasting. No more configuration drift between instances. No more guessing whether your custom format actually matches what you think it matches. --- ## What Profilarr Does Profilarr is organized around three core workflows: **Build**, **Test**, and **Deploy**. ### Build Create and manage your Radarr/Sonarr configurations from a single interface: - **Link databases** - connect to curated community databases like Dictionarry, TRaSH Guides, or Dumpstarr. Import their custom formats and quality profiles directly. - **Build your own** - create custom formats, quality profiles, and regex patterns from scratch using the visual editor. - **Quality profiles** - group and order qualities, assign custom format scores per application (Radarr vs Sonarr can have different scores for the same format). - **Custom formats** - match releases by resolution, source, release group, file size, language, and more. - **Regular expressions** - reusable regex patterns shared across multiple custom formats. - **Media management** - naming conventions, media settings, and quality definitions. - **Delay profiles** - protocol preferences, delays, and score gates. - **Local tweaks** - your customizations persist across upstream database updates with smart conflict handling. The local tweaks feature is particularly important. When TRaSH Guides or Dictionarry update their recommendations, Profilarr merges the changes while preserving your personal modifications. No more "update wiped my custom scores" situations. ### Test This is where Profilarr separates itself from every other configuration tool: - **Regex testing** - validate patterns with embedded Regex101-style test cases directly in the UI. - **Custom format testing** - test releases against your custom format conditions with a full breakdown of how each condition passes or fails, with match visualization. Powered by a **C# parser that matches Radarr and Sonarr own parsing logic**. - **Quality profile simulation** - simulate how a profile scores and ranks releases for a given movie or series. See exactly which release would be selected and why. The C# parser is the key differentiator. Other tools let you write custom formats and hope they work. Profilarr lets you verify they work before deploying, using the same parsing engine that Radarr and Sonarr use internally. ### Deploy Push your configurations to your media stack: - **Sync** - push configurations to any number of Arr instances simultaneously. - **Upgrades** - automated searches with configurable filters, selectors, and cooldowns. - **Rename** - bulk rename files and folders with dry-run previews before committing. - **Jobs** - scheduled automation for sync, upgrades, renames, backups, and cleanup. - **Notifications** - Discord, Telegram, Slack, ntfy, Pushover, Gotify, Apprise, and generic webhooks. --- ## The Database Ecosystem Profilarr is not just a standalone tool. It connects to a growing ecosystem of curated configuration databases: ### Dictionarry The primary database maintained by the Profilarr team. Curated custom formats and quality profiles designed to work together as a cohesive system. ### TRaSH Guides The community standard for Radarr/Sonarr configuration. Profilarr can link directly to TRaSH Guides and import their custom formats and quality profiles. ### Dumpstarr A community-maintained database of custom formats covering codecs, sources, HDR, audio, and release groups. Designed specifically for use with Profilarr. ### Build Your Own (PCD Template) Profilarr provides a template for creating and sharing your own configuration database. If you have a specialized setup (anime-focused, 4K-only, bandwidth-constrained), you can package your configurations as a linkable database that others can use. --- ## Why This Matters for Jellyfin and Emby Users Profilarr does not interact with Jellyfin or Emby directly. But it dramatically improves the quality of content that flows into your media server through Radarr and Sonarr. Better custom formats mean: - **Fewer transcodes** - files are grabbed in codecs your clients support - **Better HDR handling** - proper HDR metadata is prioritized - **Consistent quality** - no more random low-quality grabs mixed with remuxes - **Optimal file sizes** - releases match your storage and bandwidth constraints - **Better audio** - Atmos and DTS-X prioritized when available The content that arrives in your Jellyfin or Emby library is only as good as your Radarr/Sonarr configuration. Profilarr makes that configuration reliable and testable. --- ## Docker Setup ```yaml services: profilarr: image: ghcr.io/dictionarry-hub/profilarr:latest container_name: profilarr ports: - "6868:6868" volumes: - ./config:/config environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - PARSER_HOST=parser - PARSER_PORT=5000 depends_on: parser: condition: service_healthy # Optional - only needed for custom format and quality profile testing parser: image: ghcr.io/dictionarry-hub/profilarr-parser:latest container_name: profilarr-parser expose: - "5000" ``` The parser service is optional. It is only required for the custom format and quality profile testing features. Linking databases, syncing to instances, and all other features work without it. Remove the parser service if you do not need testing capabilities. ```bash docker compose up -d ``` Access at `http://your-server:6868`. --- ## Configuration | Variable | Default | Description | |---|---|---| | `PUID` | 1000 | User ID for file permissions | | `PGID` | 1000 | Group ID for file permissions | | `UMASK` | 022 | File creation mask | | `TZ` | Etc/UTC | Timezone for scheduling | | `PORT` | 6868 | Web UI port | | `HOST` | 0.0.0.0 | Bind address | | `AUTH` | on | Auth mode (on, oidc, off) | | `ORIGIN` | - | Public URL when behind a reverse proxy | | `PARSER_HOST` | localhost | Parser service host | | `PARSER_PORT` | 5000 | Parser service port | --- ## How Profilarr Compares to Recyclarr Recyclarr is the other major tool for syncing TRaSH Guides to Radarr/Sonarr. Here is how they differ: | Feature | Profilarr | Recyclarr | |---|---|---| | Interface | Web UI (visual) | CLI (YAML config) | | Custom format testing | Yes (C# parser) | No | | Quality profile simulation | Yes | No | | Multiple databases | Yes (Dictionarry, TRaSH, Dumpstarr, custom) | TRaSH Guides only | | Local tweaks with conflict handling | Yes | Manual YAML editing | | Automated upgrades | Yes (with filters and cooldowns) | No | | Bulk rename with dry-run | Yes | No | | Scheduled jobs | Yes (sync, upgrades, rename, backup) | Cron-based sync only | | Notifications | Yes (Discord, Telegram, ntfy, etc.) | No | | Regex testing | Yes (built-in) | No | | Learning curve | Lower (visual) | Higher (YAML) | | Docker footprint | 2 containers (app + optional parser) | 1 container | Recyclarr is simpler and lighter if you just want to sync TRaSH Guides on a schedule. Profilarr is the choice when you want to build, test, and manage configurations visually with full control over multiple databases and instances. --- ## The Testing Engine The testing capabilities deserve special attention because they solve a real problem. When you write a custom format in Radarr, you are essentially writing a set of regex conditions that match against release names. If your regex is wrong, you silently grab the wrong releases or miss the ones you want. You only discover the problem after a bad file lands in your library. Profilarr testing workflow: 1. Write your custom format conditions in the visual editor 2. Enter sample release names (real ones from your indexers) 3. Click Test 4. See exactly which conditions matched, which failed, and why 5. The parser uses the same C# logic as Radarr/Sonarr, so results are accurate 6. Fix your regex, test again, deploy with confidence The quality profile simulation goes further: give it a movie title and it shows you how your profile would rank all available releases, which one it would select, and the score breakdown. You can verify your entire scoring system before it touches a real download. --- ## Multi-Instance Sync Many admins run multiple Radarr/Sonarr instances: - Radarr (1080p) + Radarr (4K) - Sonarr (standard) + Sonarr (anime) - Separate instances per user or per quality tier Profilarr syncs to all of them from a single configuration. Define your profiles once, push to every instance. When you update a custom format score, it propagates everywhere on the next sync. This eliminates configuration drift, the silent problem where your 4K Radarr instance gradually diverges from your 1080p instance because you forgot to apply a change to both. --- ## Automated Upgrades Beyond syncing configurations, Profilarr can trigger automated upgrade searches: - Configure filters (only upgrade files below a certain score) - Set selectors (which instances to target) - Define cooldowns (do not re-search items that were already searched recently) - Schedule via jobs (run upgrades nightly at 3 AM) This means your library continuously improves over time. A movie grabbed as a WEB-DL gets automatically upgraded to a Blu-ray encode when one becomes available, without manual intervention. --- ## Bulk Rename with Dry-Run Renaming files in Radarr/Sonarr is nerve-wracking. One wrong naming format and thousands of files get renamed incorrectly. Profilarr rename feature: 1. Configure your naming format 2. Run a dry-run preview 3. See exactly what every file will be renamed to before committing 4. Approve and execute No surprises. No "I accidentally renamed 4,000 files and now Plex cannot find them" moments. --- ## Scheduled Jobs Profilarr supports scheduled automation for: - **Sync** - push configuration changes on a schedule - **Upgrades** - automated quality upgrades - **Renames** - scheduled bulk rename operations - **Backups** - configuration backup on schedule - **Cleanup** - remove orphaned data All jobs support cron-style scheduling and notification on completion or failure. --- ## OIDC Authentication Profilarr supports OIDC (OpenID Connect) authentication, meaning you can integrate it with Authelia, Authentik, or any other SSO provider. Set `AUTH=oidc` and configure your provider. --- ## Getting Started Workflow 1. Deploy Profilarr with Docker 2. Link a database (Dictionarry or TRaSH Guides) 3. Browse available custom formats and quality profiles 4. Customize scores and preferences for your setup 5. Test your custom formats against real release names 6. Simulate quality profile scoring 7. Connect your Radarr/Sonarr instances 8. Sync 9. Schedule recurring sync jobs The entire process from zero to fully configured instances takes 15-30 minutes instead of the hours it takes manually. --- ## FAQ **Does Profilarr replace Radarr/Sonarr?** No. Profilarr manages the configuration of Radarr and Sonarr. It does not download, organize, or serve media. It makes your existing Arr instances better configured. **Does it work with Jellyfin/Emby/Plex directly?** No. Profilarr configures Radarr and Sonarr, which feed content into your media server. The quality improvements benefit your media server indirectly through better source files. **Is the parser service required?** Only for testing custom formats and simulating quality profiles. All other features (linking, syncing, jobs, notifications) work without it. **Can I use it with TRaSH Guides and Recyclarr?** You can use Profilarr instead of Recyclarr. Both sync TRaSH Guides to your instances, but Profilarr adds testing, visual editing, and multi-database support. Running both simultaneously is not recommended as they would conflict. **Is it free?** Yes. AGPL-3.0 licensed. Every feature is free for everyone. **How does it handle TRaSH Guide updates?** When the linked database updates, Profilarr merges changes while preserving your local tweaks. Conflicts are surfaced for manual resolution rather than silently overwriting your customizations. **Can multiple users access it?** Yes. Profilarr supports authentication (built-in or OIDC) with user management. --- ## Links - **GitHub**: [github.com/Dictionarry-Hub/profilarr](https://github.com/Dictionarry-Hub/profilarr) - **Documentation**: [dictionarry.dev](https://dictionarry.dev) - **Dumpstarr database**: [dumpstarr.dev](https://dumpstarr.dev) - **Docker image**: `ghcr.io/dictionarry-hub/profilarr:latest` - **Reddit**: [r/profilarr](https://www.reddit.com/r/profilarr/) --- > **Better Radarr/Sonarr configs mean better content in your library. Monitor what arrives.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, Direct Play verification, and server health for Jellyfin. > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers. --- ## Reclaimerr: Automatically Reclaim Disk Space from Your Jellyfin, Plex, or Emby Library (2026) URL: https://jellywatch.app/blog/reclaimerr-automatic-media-cleanup-jellyfin-plex-emby-2026 Published: 2026-05-17T21:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: reclaimerr, disk-space, cleanup, jellyfin, plex, emby, radarr, sonarr, media-management, self-hosting, docker, 2026 # Reclaimerr: Automatically Reclaim Disk Space from Your Media Library (2026) Your media server has a storage problem. Not because you do not have enough drives, but because half your library is content nobody has watched in two years. That 4K remux of a movie with a 4.2 rating that someone requested once and never touched is consuming 60 GB. Multiply that by a few hundred titles and you are looking at terabytes of dead weight. **Reclaimerr** solves this. It is a self-hosted application that analyzes your media library, identifies content eligible for cleanup based on customizable rules, and manages the deletion process through your existing Radarr/Sonarr setup or directly through your media server. Think of it as Seerr in reverse. Seerr adds content to your library. Reclaimerr removes what nobody watches. --- ## Why Reclaimerr Exists The developer built Reclaimerr when 100 TB of storage on their home server was nearly full and the cost of new drives kept rising. Rather than buying more hardware, they decided to clean up the unwatched and low-rated media that had accumulated over years of automated downloads. The project was inspired by Maintainerr, but needed features Maintainerr did not offer at the time: simultaneous Jellyfin and Plex support (using both servers to gather watch data for the same physical library), and a protection system that lets users save content from deletion. --- ## Core Features ### Rule-Based Space Reclamation Configure rules that define what qualifies for cleanup. Rules can combine multiple criteria: - Watch status (unwatched for X days/months) - Rating thresholds (below X on TMDB/IMDB) - Age (added more than X months ago) - File size (target the largest files first) - Media type (movies vs TV shows) Reclaimerr scans your library against these rules on a configurable schedule and identifies content eligible for reclamation. ### Multi-Server Support (Jellyfin + Plex + Emby) This is the standout feature. Reclaimerr connects to Jellyfin, Plex, and Emby simultaneously. You designate one server as the primary, and supplemental watch data is gathered from the others. Why this matters: many admins run multiple media servers pointing at the same physical library. A movie might be unwatched on Jellyfin but watched on Plex by a different family member. Reclaimerr sees both and will not flag content as unwatched if anyone on any server has seen it. All servers must manage the same physical media library for this to work correctly. ### Protection System Not everything that meets cleanup rules should be deleted. The protection system lets users save content: - **Admin protection** - admins can protect any item from deletion - **User requests** - users can request protection for content they want to keep - **Approval workflow** - protection requests go to admins for approval or denial - **Time-based control** - protection can be set for a specific duration (protect for 6 months, then re-evaluate) This turns media cleanup from a unilateral admin decision into a collaborative process. Users feel heard, admins maintain control. ### User Deletion Requests The flip side of protection: users can also request that specific media be deleted. Useful for shared servers where users want to flag content they consider low quality or inappropriate. ### Managed Deletions via Radarr/Sonarr When Radarr or Sonarr are configured, Reclaimerr processes deletions through them rather than deleting files directly. This means: - Radarr/Sonarr remove the item from their database - Download client cleanup happens automatically - The item can be unmonitored instead of deleted (configurable) - Seerr requests for the item are also removed If Radarr/Sonarr are not configured, Reclaimerr falls back to deleting through the primary media server. ### Move Instead of Delete If permanent deletion makes you nervous, enable the move option. Reclaimerr moves files to an archive directory instead of deleting them. You can review the archive later and permanently delete when you are confident nothing important was caught. ### Notifications via Apprise Reclaimerr uses Apprise for notifications, which supports over 133 services: Discord, Telegram, Slack, email, Ntfy, Gotify, Pushover, and many more. Get notified when: - New items are flagged for reclamation - Protection requests are submitted - Deletions are processed - Errors occur during cleanup ### Watch Data Supplementation - **Jellyfin/Emby**: automatically supplements watch data via the Playback Reporting plugin if installed - **Plex**: supports Tautulli to supplement watch data with detailed history This gives Reclaimerr the most complete picture of what has actually been watched across your entire user base. --- ## How It Works ``` Reclaimerr scans your library (via Jellyfin/Plex/Emby API) > Applies your configured rules > Identifies eligible items > Checks protection list > Presents candidates in the UI > Admin approves deletions (or automatic in future) > Deletion processed via Radarr/Sonarr (or direct) > Notifications sent > Disk space reclaimed ``` Important: Reclaimerr is lightweight and avoids spinning up disks outside of actual deletions. All data is sourced from your media server APIs, not by scanning the filesystem directly. --- ## Current Status: Beta with Safety Rails Reclaimerr is in early beta. The developer has deliberately disabled fully automatic deletion until the system is thoroughly tested by the community: - Automatic deletion tasks are not enabled in the UI yet - Only admins or users with appropriate permissions can manage deletions - Once automatic deletions are added, they will be opt-in This cautious approach is the right call. A bug in an automatic deletion system could permanently destroy irreplaceable media. Manual approval during beta ensures nothing is lost unexpectedly. --- ## Installation ### Docker (Recommended) Create a `.env` file: ```env DATA_DIR=./data API_HOST=0.0.0.0 API_PORT=8000 CORS_ORIGINS=http://localhost:3000 # TZ=America/New_York # PUID=1000 # PGID=1000 ``` Create `docker-compose.yml`: ```yaml services: reclaimerr: image: ghcr.io/jessielw/reclaimerr:latest container_name: reclaimerr restart: unless-stopped env_file: ".env" volumes: - ./data:/app/data - /media:/media # bind mount for media files (needed for direct deletion) ports: - "8000:8000" ``` Deploy: ```bash docker compose up -d ``` Access at `http://your-server:8000`. Create your admin account on first visit. ### Desktop Builds Pre-built binaries are available for Windows (8+), macOS, and Linux from the GitHub Releases page. Run the executable and it creates a system tray icon. Double-click to open in your browser. ### Volume Mounts The media bind mount (`/media:/media`) is needed for Reclaimerr to clean up additional files on delete when deleting via the main media server directly. If you only delete through Radarr/Sonarr, this mount is less critical but still recommended. Optional: mount an archive directory for the move-instead-of-delete feature. --- ## Configuration | Variable | Required | Description | |---|---|---| | `DATA_DIR` | No | Directory for app data (default: ./data) | | `API_HOST` | No | Listen address (default: 0.0.0.0 for Docker, 127.0.0.1 for desktop) | | `API_PORT` | No | Port (default: 8000) | | `PUID` / `PGID` | No | LinuxServer-style user/group mapping for Unraid/NAS | | `UMASK` | No | File permission mask (common: 022, 002) | | `TZ` | No | Timezone for cron schedules (e.g., America/New_York) | | `JWT_SECRET` | No | Auto-generated on first launch (or set your own, min 32 chars) | | `ENCRYPTION_KEY` | No | Auto-generated on first launch (or set your own) | | `ADMIN_PASSWORD` | No | Set/reset admin password on launch (remove after use) | | `COOKIE_SECURE` | No | Set to true when serving over HTTPS | | `LOG_LEVEL` | No | DEBUG, INFO, WARNING, ERROR, CRITICAL | | `LOG_RETENTION_DAYS` | No | Keep N daily rotated log files (default: 30) | --- ## Multi-User and Permissions Reclaimerr supports multiple users with a permission system: - **Admin** - full control: configure rules, approve/deny requests, manage deletions - **Users** - can browse flagged content, request protection, request deletions The first account created becomes admin. Additional users can be added through the admin interface. --- ## Reclaimerr vs Maintainerr Maintainerr is the closest alternative. Here is how they compare: | Feature | Reclaimerr | Maintainerr | |---|---|---| | Jellyfin support | Yes (native) | Yes (v3.0+) | | Plex support | Yes | Yes | | Emby support | Yes | No | | Multi-server simultaneous | Yes (all three at once) | Single server | | Protection system | Yes (with user requests) | Collections-based | | User deletion requests | Yes | No | | Move instead of delete | Yes | No | | Desktop builds | Yes (Windows/Mac/Linux) | Docker only | | Seerr request removal | Yes | Yes | | Tautulli integration | Yes | Yes | | Notifications | Apprise (133+ services) | Limited | | Automatic deletion | Coming (beta safety) | Yes | | Maturity | Beta (2026) | Stable | Reclaimerr wins on multi-server support, the protection/request system, and platform flexibility. Maintainerr wins on maturity and fully automatic operation. --- ## Security - **Encrypted credentials** - API keys and tokens are encrypted at rest using a generated encryption key - **JWT authentication** - all endpoints require valid session tokens - **Auto-generated secrets** - JWT secret and encryption key are generated on first launch if not provided - **HTTPS support** - set `COOKIE_SECURE=true` when behind a reverse proxy with SSL --- ## Post-Action Webhooks Reclaimerr supports generic post-action webhooks that fire after deletions. This integrates with tools like Autopulse for triggering library rescans or other automation after content is removed. --- ## Use Cases ### The overflowing server You have 80 TB of media and drives are full. Set rules: delete movies unwatched for 12+ months with a rating below 6.0 and file size above 20 GB. Reclaimerr identifies candidates. You review and approve. Terabytes freed without buying new hardware. ### The shared family server Multiple family members use the server. Enable the protection system. When cleanup rules flag a movie, family members can request protection for content they plan to watch. Admins approve or deny. Nobody loses something they care about. ### The multi-server admin You run Plex for some users and Jellyfin for others, both pointing at the same library. Reclaimerr checks watch history from both servers before flagging anything. A movie watched on Plex is not flagged as unwatched just because the Jellyfin users have not seen it. ### The cautious admin Enable move-instead-of-delete. Reclaimerr moves flagged content to an archive folder. After 30 days with no complaints, permanently delete the archive. Zero risk of accidental loss. --- ## Troubleshooting | Problem | Fix | |---|---| | Cannot connect to Jellyfin | Add Docker bridge subnet (172.28.0.0/16) to Jellyfin LAN Networks | | Permission denied on delete | Check PUID/PGID match your media file ownership | | Admin password forgotten | Set ADMIN_PASSWORD in .env and restart | | Port conflict | Change API_PORT in .env | --- ## FAQ **Will Reclaimerr automatically delete my media?** Not yet. During beta, all deletions require manual approval. Automatic deletion will be opt-in once the system is thoroughly tested. **Does it work with all three servers at once?** Yes. Connect Jellyfin, Plex, and Emby simultaneously. Designate one as primary; the others supplement watch data. **Can users prevent their favorite content from being deleted?** Yes. The protection system lets users request that specific items be protected from cleanup rules. **Does it delete files directly?** If Radarr/Sonarr are configured, deletions go through them. Otherwise, it deletes via the primary media server. You can also enable move-instead-of-delete for safety. **Is it lightweight?** Yes. Reclaimerr sources all data from media server APIs. It does not scan your filesystem directly, which means it does not spin up drives unnecessarily. **Does it support Unraid?** Yes. Use PUID/PGID environment variables for proper file permissions on Unraid. **Is there a mobile UI?** The web interface is responsive and works well on mobile browsers. --- ## Links - **GitHub**: [github.com/jessielw/Reclaimerr](https://github.com/jessielw/Reclaimerr) - **Matrix community**: [#reclaimerr:matrix.org](https://matrix.to/#/#reclaimerr:matrix.org) - **Docker image**: `ghcr.io/jessielw/reclaimerr:latest` --- > **Reclaiming space from your library? Monitor what remains from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, storage alerts, and server health for Jellyfin. > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers. --- ## ChartHound: The Self-Hosted Music and Media Management Engine with Billboard Data, Playlist Building, and Album Hunting (2026) URL: https://jellywatch.app/blog/charthound-music-media-management-billboard-playlists-plex-emby-jellyfin-2026 Published: 2026-05-17T20:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: charthound, music, playlists, billboard, metadata, plex, emby, jellyfin, navidrome, prowlarr, self-hosting, docker, 2026 # ChartHound: The Self-Hosted Music and Media Management Engine (2026) Most music tools do one thing. A tagger. A playlist builder. A downloader. ChartHound does all of them, and ties them together with something no other self-hosted tool offers: a pre-loaded database of over 108,000 real Billboard chart entries that it uses to tag your files, build playlists, and discover what your library is missing. It is a single Docker container that connects to your existing Plex, Emby, or Jellyfin server, your Prowlarr indexers, your download client, and your Radarr/Sonarr instances. It writes metadata directly to your physical audio files (not just a database), builds chart-based playlists and pushes them to your media server, hunts missing albums from any artist via MusicBrainz, and even tracks missing movies and TV episodes through Radarr and Sonarr. Built by a solo developer who wanted his Plex music library to stop being a graveyard of mistagged albums and missing chart hits. --- ## The Five Tabs ChartHound is organized into five main tools (plus a connection vault and a database admin panel). You do not need to use all of them. Pick the ones that solve your problems. ### The Retriever: Metadata Tagger Scans your music library through your media server and writes genre, mood, and year tags directly to your physical audio files using Mutagen. It uses a multi-source waterfall to find the best metadata: **MusicBrainz > Last.fm > ListenBrainz > Deezer > Discogs > iTunes** The key principle: tags are written to the actual file on disk, not just your media server database. If you switch from Plex to Jellyfin tomorrow, your metadata goes with you because it lives in the files. ### The Sniffer: Chart Hit Finder Cross-references your music library against the master chart database and shows you what you own and what you are missing. Two modes: - **Chart Gap Fill** - select genres, decades, and a notability tier (Essential/Notable/Deep Cuts). See every charting song you do not own. Narrowing to a single genre gives up to 1,000 of that genre biggest hits. - **Trending** - browse top tracks by genre using Last.fm data. For any missing track, click to search Prowlarr for album torrents. Results show seeders, size, and indexer. One-click grab sends the torrent to qBittorrent. ### The Groomer: Playlist Builder Scans your library, looks up each track against the chart reference database, and writes chart performance data into the COMMENT tag of your music files. A track that peaked at #4 on the Hot 100 for 12 weeks gets a comment like: ``` Hot 100: #4 (12 wks) | Adult Pop: #1 (18 wks) ``` It also generates star ratings (1-5) based on chart performance and builds smart playlists that you push directly to Plex, Emby, or Jellyfin. Recent updates added Navidrome playlist support as well. The skip cache system means re-scans skip tracks that have already been checked, making 33,000+ track libraries manageable. ### The Bloodhound: Album Hunter Four search modes powered by MusicBrainz: - **Artist Search** - find an artist, browse their complete discography filtered by release type (Albums, Compilations, Singles, All) - **Album Search** - search for any album by name across all of MusicBrainz - **Compilation Search** - 31 preset compilation series (Now That is What I Call Music, WOW Hits, Grammy Nominees, etc.) plus custom search - **Genre Browse** - browse by primary genre with automatic sub-genre inclusion Every result shows whether you already own it. Missing releases can be searched on Prowlarr and grabbed to qBittorrent directly from the results table. ### The Tracker: Missing Media Hunter Monitors your Radarr and Sonarr libraries for missing movies and TV episodes, then automatically tells them to search for downloads. ChartHound fires search commands through Radarr/Sonarr own API, so they handle indexer selection and download client handoff exactly as they normally would. Key features: - Default OFF (must be explicitly enabled) - Smart TV ordering (searches earliest missing season first) - Season search (fires a single SeasonSearch when an entire season is missing) - Cooldown system (will not re-search unfindable items until cooldown expires) - Daily cap (limits total searches per day) - Request jitter (randomized delays so indexers see human-like patterns) - Runs in background (continues hunting even when the browser is closed) --- ## The Billboard Chart Database This is what makes ChartHound unique. The application ships with a read-only SQLite database containing over 108,000 real Billboard chart entries. This is not scraped data or estimates. It is actual chart performance data: peak position, weeks on chart, chart name. The Groomer uses this database to write chart performance directly into your file metadata. The Sniffer uses it to identify which chart hits your library is missing. The playlist builder uses it to create playlists ranked by chart performance. For tracks not in the static database (independent releases, international hits, deep cuts), ChartHound falls back to Last.fm popularity scores for chart estimation. --- ## Security Model ChartHound takes security seriously for a self-hosted tool: - **Encrypted vault** - every API key and token is Fernet-encrypted (AES-128-CBC with HMAC-SHA256) before storage. No "show password" button exists. - **Zero key transmission** - API calls happen server-side inside the Docker container. Your browser never sees credentials. - **Auto-lockdown registration** - first user becomes admin, then registration is permanently disabled. - **JWT session auth** - every endpoint requires a valid token. No backdoor routes. - **Reverse proxy recommended** - the app runs HTTP internally; your proxy handles HTTPS. --- ## Requirements and Integrations ### Required - Docker and Docker Compose - A music library on a local or network drive ### For metadata tagging - Plex, Emby, or Jellyfin (to scan your library) - Last.fm API key (free, strongly recommended for popularity lookups) ### For music discovery and downloading - Prowlarr (indexer manager) - qBittorrent, Deluge, or Transmission (download client) ### For movie/TV hunting - Radarr (movie management) - Sonarr (TV management) ### Optional - Discogs personal access token (excellent genre data for classic rock, jazz, soul) - Navidrome (playlist push support) --- ## Docker Setup ```bash git clone https://github.com/CurtisColby/ChartHound.git cd ChartHound cp docker-compose_example.yml docker-compose.yml ``` Generate your encryption key: ```bash python3 -c "import secrets; print(secrets.token_hex(32))" ``` Edit `docker-compose.yml` with your settings: ```yaml services: charthound: build: . container_name: charthound ports: - "8585:8000" environment: - SECRET_KEY=your_generated_key_here - MEDIA_SERVER_MUSIC_PREFIX=/path/your/server/uses/for/music volumes: - /path/to/your/music:/music - /path/to/your/music:/path/to/your/music - ./charthound_static.db:/data/charthound_static.db:ro - charthound_data:/data restart: unless-stopped volumes: charthound_data: ``` Build and start: ```bash docker compose up --build -d ``` Access at `http://your-server:8585`. Create your admin account on first visit. --- ## The Connection Vault (The Kennel) After first login, head to The Kennel to connect your services. Each service gets a card with URL and API key fields. Save encrypts the credentials. Test verifies the connection works. Supported services: | Service | Purpose | |---|---| | Plex / Emby / Jellyfin | Library scanning, playlist push | | Last.fm | Popularity lookups for non-chart tracks | | Discogs | Genre and style metadata | | Prowlarr | Indexer searches for missing music/media | | qBittorrent / Deluge / Transmission | Download client | | Radarr | Missing movie tracking | | Sonarr | Missing TV episode tracking | --- ## What Makes ChartHound Different ### File-first metadata Every tag write goes to the physical file via Mutagen before asking your media server to refresh. Your metadata survives server migrations. Switch from Plex to Jellyfin and your chart data, genres, and ratings come with you. ### The metadata waterfall ChartHound does not rely on a single source. It cascades through MusicBrainz, Last.fm, ListenBrainz, Deezer, Discogs, and iTunes to find the best available metadata for each track. If one source is sparse, the next one fills the gap. ### Album batching When scanning your library, ChartHound groups tracks by album folder and makes one API call per album instead of one per track. For a 33,000-track library, that is roughly 3,000 API calls instead of 33,000. ### Aggressive caching The static chart database ships with the project (read-only SQLite). Lookups check local data first, external APIs second. The dynamic database accumulates knowledge over time. Every scan teaches it something. The first scan is the slowest. Every subsequent scan gets faster. ### No Spotify dependency ChartHound deliberately avoids Spotify. Spotify changed their developer terms to require a Premium account for API access. ChartHound gets popularity, charting, and metadata signals from MusicBrainz, Last.fm, ListenBrainz, Deezer, Discogs, iTunes, and the static Billboard database. All free, all working without strings attached. --- ## Navidrome Playlist Support A recent addition: ChartHound can now push playlists to Navidrome in addition to Plex, Emby, and Jellyfin. If you run Navidrome as your dedicated music server alongside Jellyfin for video, ChartHound covers both. --- ## Usenet Support Another recent addition: ChartHound now supports Usenet downloads alongside torrents. If your Prowlarr setup includes Usenet indexers, ChartHound can grab releases through your Usenet download client. --- ## The Veterinarian: Database Admin The admin panel shows database health: track counts, artist counts, album counts, skip cache statistics, and database sizes. Includes maintenance tools (VACUUM, integrity checks) and a debug console for troubleshooting scans. The "Clear Full Database" button is in a danger zone for good reason. ChartHound database accumulates valuable scan knowledge over time. Clearing it sends you back to first-scan speeds and discards weeks of learned data. --- ## Updating ```bash cd ~/ChartHound git pull docker compose up --build -d ``` Your dynamic database is stored in a Docker named volume and survives rebuilds. Connections, scan history, and user accounts are preserved. --- ## Tech Stack - **Backend**: Python (FastAPI) - **Database**: SQLite (dynamic + static read-only chart DB) - **Frontend**: Vanilla JavaScript - **File tagging**: Mutagen - **Container**: Docker - **Port**: 8585 (external) / 8000 (internal) --- ## FAQ **Does ChartHound work with Jellyfin?** Yes. Full support for library scanning, metadata tagging, and playlist push to Jellyfin. **Does it modify or move my music files?** ChartHound writes metadata tags to your files (genre, mood, year, chart data, ratings). It never moves, renames, or deletes files. **How big is the Billboard chart database?** Over 108,000 entries covering decades of chart history across multiple Billboard charts. **Do I need all the integrations?** No. Use only what you need. Just want playlists? Connect your media server and use The Groomer. Just want metadata tagging? Connect your server and use The Retriever. Just want to find missing albums? Use The Bloodhound with Prowlarr. **Is it free?** Free for personal, non-commercial use. The source code is viewable but the license restricts redistribution and commercial use. **Does it work with Navidrome?** Yes. Playlist push to Navidrome was added recently. **What about Spotify integration?** Deliberately excluded. Spotify requires a Premium account for API access. ChartHound uses free alternatives (Last.fm, MusicBrainz, Deezer, etc.) that work without subscriptions. **Can multiple users access it?** The first user becomes admin and registration auto-locks. Additional users can be added by temporarily enabling open registration. --- ## Links - **GitHub**: [github.com/CurtisColby/ChartHound](https://github.com/CurtisColby/ChartHound) --- > **Managing your music library with ChartHound? Monitor your media server from your phone.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time session monitoring for Emby servers. > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same monitoring experience for Jellyfin. --- ## Poster Tools: The Browser-Based Poster and Title Card Designer for Plex, Emby, and Jellyfin (2026) URL: https://jellywatch.app/blog/poster-tools-browser-poster-title-card-designer-plex-emby-jellyfin-2026 Published: 2026-05-17T19:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: poster-tools, posters, title-cards, plex, emby, jellyfin, design, artwork, browser-based, media-server, 2026 # Poster Tools: The Browser-Based Poster and Title Card Designer for Plex, Emby, and Jellyfin (2026) A well-curated media library is not just about the content. It is about how it looks. Consistent poster sets, matching season artwork, and custom title cards transform a folder of files into something that feels like a premium streaming platform. The problem: creating that level of visual consistency used to require Photoshop, hours of manual work, and genuine design skills. Most self-hosters either settle for whatever TMDB provides or spend entire weekends in image editors. **Poster Tools** changes that equation entirely. It is a free, browser-based design suite built specifically for the Plex, Emby, and Jellyfin community. No software to install. No design experience required. Open a browser tab, pull artwork from TMDB, adjust your layout, and push finished posters directly to your media server. --- ## What Is Poster Tools? Poster Tools is a web application at [postertools.org](https://postertools.org) that provides focused design tools for media server artwork. It runs entirely in the browser with nothing to install on your computer or server. The suite currently includes three labs: | Lab | Purpose | |---|---| | **Poster Lab** | Create season and show poster sets with logos, gradients, and badges | | **Card Lab** | Design episode title cards with typography controls and custom separators | | **Showcase Lab** | Build showcase layouts for displaying your library | Each lab provides live previews as you design, export-ready output, and direct integration with your media server for one-click deployment. --- ## Poster Lab: Season and Show Poster Sets Poster Lab is the core tool. It solves the most common visual problem in media libraries: inconsistent poster artwork across seasons of the same show. Season 1 has a dark, moody poster. Season 2 has a bright promotional image. Season 3 uses a completely different art style. The result looks messy on your home screen. Poster Lab lets you build a unified set: 1. **Pull artwork from TMDB** - search for your show and select base images 2. **Add a logo** - drop in the show logo for consistent branding 3. **Adjust the gradient** - control the color overlay and fade 4. **Customize text** - season numbers, titles, custom labels 5. **Add badges** - resolution indicators, audio format labels, or custom badges 6. **Apply finishing passes** - fine-tune the final look 7. **Push to your server** - send the entire set directly to Emby or Jellyfin in one click (Plex support coming soon) The key workflow advantage: you design one poster, then the tool generates matching variants for every season automatically. Consistent artwork across your entire library without repeating the design process for each season. ### TMDB Integration Poster Lab connects to TMDB for source artwork. Search for any movie or show, browse available backdrops and posters, and use them as your base layer. The tool fetches high-resolution images suitable for display on 4K screens. ### Direct Server Push This is the feature that separates Poster Tools from generic image editors. Once your poster set is ready, push it directly to your media server without manually downloading files, navigating to each season, and uploading one by one. Supported servers: - Emby - Jellyfin - Plex (coming soon) Configure your server connection once, and every future poster push is a single click. --- ## Card Lab: Episode Title Cards Title cards are the images displayed for individual episodes in your library. A good title card shows the episode title over a relevant still frame, making your episode list look like a professional streaming service. Card Lab provides: - **Full typography controls** - font selection, size, weight, spacing, positioning - **Custom separator images** - decorative elements between text lines - **Per-episode customization** - adjust individual cards while maintaining set consistency - **Background image selection** - pull stills or use custom backgrounds - **Batch generation** - create cards for an entire season at once - **Sonarr integration** - pull episode data directly from Sonarr for Card Lab - **Export options** - format, quality, and naming conventions ### Typography Focus Card Lab treats typography as a first-class feature. You control: - Font family (upload custom fonts or use the built-in library) - Font size and weight - Letter spacing and line height - Text color and shadow - Position and alignment - Separator style between title elements This level of control was previously only available in Photoshop or specialized tools like TitleCardMaker (which requires Docker and technical setup). Card Lab puts it in a browser tab. --- ## Showcase Lab Showcase Lab creates display layouts for presenting your library. Think of it as a tool for building visual showcases of your collection, useful for sharing on Reddit, Discord, or social media. --- ## How It Compares to Other Poster Tools The media server community has several poster-related tools. Here is how Poster Tools fits in: | Tool | Type | Setup | Design control | Server push | Cost | |---|---|---|---|---|---| | **Poster Tools** | Browser app | None (web) | High (visual editor) | Yes (Emby/Jellyfin, Plex soon) | Free + Premium | | **Posterizarr** | Docker container | Docker setup | Automated (templates) | Yes | Free | | **TitleCardMaker** | Docker container | Docker + config | Template-based | Yes | Free | | **Kometa** | Docker container | Docker + YAML | Overlay-based | Yes (Plex/Jellyfin) | Free | | **Photoshop/GIMP** | Desktop app | Install | Unlimited | Manual upload | Paid/Free | | **ThePosterDB** | Website | None | Browse only (community) | Manual download | Free | ### When to use Poster Tools - You want **visual, interactive design** rather than template configuration - You prefer **browser-based** tools with no Docker or installation - You want **direct server push** without manual file management - You need **consistent season sets** generated from a single design - You value **typography control** for title cards ### When to use alternatives - **Posterizarr/Kometa**: you want fully automated poster generation with zero manual design - **TitleCardMaker**: you need batch title card generation for hundreds of episodes via config files - **ThePosterDB**: you want to browse and download community-made posters rather than design your own --- ## Account and Pricing Poster Tools uses a freemium model: ### Free tier - Full access to all three labs - Design and export posters and title cards - TMDB artwork integration - Config sync across all labs - Creation stats - Export overrides (custom format, quality, and naming) - Font library (up to 10 uploads) ### Premium features - **Server integration** - direct push to Emby and Jellyfin (and Sonarr for Card Lab) - **Unlimited fonts** - upload as many custom fonts as you need - **Unlimited separator images** - custom decorative elements for Card Lab The free tier is genuinely usable for creating and exporting artwork with full design control. Premium adds server integration for direct push and removes upload limits for fonts and separators. --- ## Getting Started 1. Open [postertools.org](https://postertools.org) in your browser 2. Create a free account 3. Choose a lab (Poster Lab for show posters, Card Lab for title cards) 4. Search for your show via TMDB 5. Design your artwork with the visual editor 6. Export or push directly to your server No installation. No Docker. No command line. The entire workflow happens in your browser. --- ## Server Integration Setup To push posters directly to your media server (premium feature): ### Emby 1. Get your Emby API key (Dashboard > API Keys) 2. Enter your Emby server URL and API key in Poster Tools settings 3. Browse your library from within Poster Tools 4. Push finished artwork with one click ### Jellyfin 1. Get your Jellyfin API key (Dashboard > API Keys) 2. Enter your Jellyfin server URL and API key 3. Push artwork directly to items in your library ### Plex (Coming Soon) Plex integration is currently in development. The push-to-server feature for Plex is not yet available but is planned for a future update. ### Sonarr (Card Lab) Card Lab can pull episode data directly from Sonarr, making it easy to generate title cards with accurate episode titles and numbering without manual entry. --- ## Use Cases ### Consistent season poster sets The most common use case. You have a show with 5 seasons and each season poster looks completely different. Open Poster Lab, design one base poster with the show logo and your preferred gradient style, and generate matching posters for all seasons in minutes. ### Custom title cards for a favorite show You want your episode list to look like Netflix or Disney+. Open Card Lab, select your font and layout style, pull episode stills, and generate title cards for an entire season. Upload them to your server and your episode grid transforms. ### Library showcase for sharing You want to show off your curated library on Reddit or Discord. Open Showcase Lab, arrange your best posters into a display layout, and export a shareable image. ### Matching artwork for collections You have a Marvel collection, a Star Wars collection, a Nolan filmography. Design matching collection posters with consistent branding using Poster Lab. --- ## Why Browser-Based Matters The self-hosting community loves Docker containers. But for a design tool, browser-based has real advantages: - **No server resources consumed** - your Jellyfin/Emby/Plex server is not running another container - **Works from any device** - design on your laptop, desktop, or tablet - **Always up to date** - no pulling new images or rebuilding containers - **No configuration files** - visual interface instead of YAML - **Instant access** - open a tab and start designing The trade-off is that Poster Tools requires an internet connection and depends on the postertools.org service being available. For fully offline, self-hosted alternatives, Posterizarr and TitleCardMaker are the options. --- ## Tips for Great Media Server Artwork ### Poster consistency - Pick one style (dark gradient, minimal text, logo-focused) and apply it across your entire library - Use the same font family for all text overlays - Keep badge placement consistent (always top-right, always bottom-left, etc.) ### Title card readability - Use high-contrast text (white on dark backgrounds, with shadow) - Keep episode titles short on the card (abbreviate if needed) - Choose a still frame that does not compete with the text ### Resolution - Export at 1000x1500 minimum for posters (2000x3000 for 4K displays) - Title cards should be 1920x1080 or higher - Use TMDB backdrop images as source material (they are typically 3840x2160) --- ## FAQ **Is Poster Tools free?** Yes. The core design tools, config sync, creation stats, export overrides, and font library (up to 10 uploads) are all free. Premium adds server integration, unlimited fonts, and unlimited separator images. **Does it work with Jellyfin?** Yes. Poster Tools supports Emby and Jellyfin for direct artwork push. Plex support is coming soon. **Do I need to install anything?** No. Poster Tools runs entirely in your browser at postertools.org. **Can I use my own fonts?** Yes. Free accounts can upload up to 10 custom fonts. Premium accounts have unlimited font uploads. **Is there a mobile app?** No dedicated app, but the web interface works on tablets. Phone screens are too small for detailed poster design. **Does it replace Posterizarr or TitleCardMaker?** Not exactly. Poster Tools is a manual design tool with visual controls. Posterizarr and TitleCardMaker are automated tools that generate artwork from templates and config files. They solve different problems. Use Poster Tools when you want creative control. Use automated tools when you want hands-off generation for large libraries. **Is my server data safe?** Server credentials are stored in your Poster Tools account for the push feature. The service proxies requests to your server. If this concerns you, use the export feature instead and upload artwork manually. **Can multiple users share an account?** Each account is individual. There is no team or shared workspace feature currently. **Does Card Lab work with Sonarr?** Yes. Card Lab can pull episode data directly from Sonarr for accurate title card generation. --- ## Links - **Website**: [postertools.org](https://postertools.org) --- ## The Bigger Picture: Library Aesthetics in 2026 The self-hosted media community has matured beyond "does it play?" to "does it look good?" Tools like Poster Tools, Posterizarr, Kometa overlays, and community poster databases (ThePosterDB, MediUX) reflect a community that cares about presentation as much as functionality. A well-designed library is not vanity. It makes content discoverable. It makes the experience feel premium for your users. And it makes you proud of what you have built. Poster Tools lowers the barrier to that level of polish from "knows Photoshop" to "can use a web browser." That is a meaningful contribution to the community. --- > **Your library looks curated. Now monitor who is enjoying it.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time session monitoring for your Emby server. > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same monitoring experience for Jellyfin. --- ## Emby Wrapped: A Spotify Wrapped-Style Year-in-Review for Your Emby Server (2026) URL: https://jellywatch.app/blog/emby-wrapped-spotify-style-year-in-review-emby-server-2026 Published: 2026-05-17T18:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: emby, emby-wrapped, statistics, year-in-review, spotify-wrapped, docker, self-hosting, tracearr, seerr, 2026 # Emby Wrapped: A Spotify Wrapped-Style Year-in-Review for Your Emby Server (2026) Every December, Spotify users share their Wrapped stats on social media. Total minutes listened, top artists, listening personality. It is fun, shareable, and makes you reflect on the year. Now your Emby media server gets the same treatment. **Emby Wrapped** is a free, open-source web application that generates a beautiful, animated year-in-review experience from your Emby playback data. Total watch time, top shows, genre breakdowns, binge sessions, viewing personality types, and downloadable share cards. It looks stunning. It runs in Docker. And it takes about 5 minutes to set up. --- ## What Is Emby Wrapped? Emby Wrapped is a self-hosted web app that connects to your Emby server API and generates personalized viewing statistics presented as an animated, swipeable card experience. Think Spotify Wrapped, but for your movies, TV shows, music, and live TV. The project is an enhanced fork maintained by CtznSniiips, building on earlier work by davidtorcivia and tonghongte. The 2026 version adds music statistics, Tracearr integration, Seerr request stats, Emby authentication, and shareable image cards. --- ## Features ### Core Statistics - **Total Watch Time** - days and hours spent watching across the year - **Top Shows and Movies** - most-watched content with poster artwork - **Genre Breakdown** - discover your viewing preferences visually - **Viewing Patterns** - peak hours and favorite days of the week - **Viewing Personality** - a fun personality type based on your habits (similar to Spotify archetypes) - **Binge Sessions** - your longest viewing marathons identified - **Monthly Journey** - track how your viewing changed across the year - **Device Breakdown** - see which devices you watched on most - **Live TV** - total Live TV time and your top 5 channels ### Enhanced Music Statistics This fork adds detailed music tracking that the original lacked: - Top artists with full artwork - Top tracks with album art - Listening time breakdown - High-quality artist images fetched automatically ### Share Cards Every stat screen can be downloaded as a shareable image card. Post your Emby Wrapped to Discord, Reddit, or social media the same way people share Spotify Wrapped. ### Integrations | Integration | What it adds | |---|---| | **Tracearr** | Use Tracearr playback history instead of the Emby Playback Reporting plugin | | **Seerr/Overseerr/Jellyseerr** | Shows total media requests broken down by movie, series, and user | | **TMDB** | Enhanced poster images in higher resolution | ### Security and Privacy - **Emby authentication required** - users must log in with their Emby credentials to see stats - **API keys stored server-side only** - never exposed to the browser - **All requests proxied** through the server - **No user data stored** - stats are fetched fresh on each visit - **CORS handled server-side** via built-in image proxy --- ## How It Works Emby Wrapped reads playback history from either the **Emby Playback Reporting Plugin** or **Tracearr**. It processes this data into statistics and presents them as an animated card-by-card experience in the browser. The flow: 1. User opens Emby Wrapped in their browser 2. User authenticates with their Emby username and password 3. User selects a time period (year or month) 4. The app fetches playback data from the Emby API (or Tracearr) 5. Statistics are calculated and displayed as animated cards 6. User swipes through their personalized Wrapped experience 7. Individual cards can be downloaded as images for sharing --- ## Requirements - **Emby Server 4.7+** with an API key - **Playback Reporting Plugin** installed on Emby (unless using Tracearr) - **Docker** (recommended) or Node.js 18+ ### Optional - **Tracearr** - alternative playback history source - **TMDB API key** - for enhanced poster images (free at themoviedb.org) - **Seerr/Overseerr/Jellyseerr** - for request statistics --- ## Docker Setup (5 Minutes) Emby Wrapped provides a pre-built Docker image on GitHub Container Registry. ```yaml services: emby-wrapped: image: ghcr.io/ctznsniiips/emby-wrapped:latest container_name: emby-wrapped ports: - "3003:3003" environment: - EMBY_URL=http://your-emby-server:8096 - EMBY_API_KEY=your-api-key-here - TMDB_API_KEY= # Optional: enhanced poster images - SEERR_URL= # Optional: request stats - SEERR_API_KEY= # Optional: Seerr API key - TRACEARR_URL= # Optional: use Tracearr instead of Playback Reporting - TRACEARR_API_KEY= # Optional: Tracearr public API key (trr_pub_*) - TRACEARR_USERNAME_ALIASES= # Optional: oldname1:newname1,oldname2:newname2 - PUBLIC_URL= # Optional: for share links - CACHE_TTL=86400 # Optional: cache duration in seconds - FILTER_USER_ID= # Optional: filter by user library volumes: - ./music:/app/static/music:ro # Optional: custom background music restart: unless-stopped ``` ### Get your Emby API key 1. Open Emby Dashboard 2. Navigate to **API Keys** 3. Create a new key named "Emby Wrapped" 4. Copy the key into your docker-compose.yml ### Deploy ```bash mkdir emby-wrapped && cd emby-wrapped # Create docker-compose.yml with the content above docker compose up -d ``` Access Emby Wrapped at `http://your-server:3003`. --- ## Configuration Reference | Variable | Required | Description | |---|---|---| | `EMBY_URL` | Yes | Full URL to your Emby server | | `EMBY_API_KEY` | Yes | API key from Emby Dashboard | | `TMDB_API_KEY` | No | TMDB API key for higher-resolution posters | | `SEERR_URL` | No | Seerr/Overseerr/Jellyseerr URL for request stats | | `SEERR_API_KEY` | No | Seerr API key | | `TRACEARR_URL` | No | Tracearr URL (replaces Playback Reporting plugin) | | `TRACEARR_API_KEY` | No | Tracearr public API key (format: trr_pub_*) | | `TRACEARR_USERNAME_ALIASES` | No | Username mapping for Tracearr (oldname:newname,old2:new2) | | `PUBLIC_URL` | No | Public URL for share links (defaults to request origin) | | `FILTER_USER_ID` | No | Emby User ID for library filtering (hide NSFW content) | | `CACHE_TTL` | No | Cache duration in seconds (default: 86400 = 24 hours) | | `PORT` | No | Server port (default: 3003) | | `ANALYTICS_SCRIPT` | No | Analytics script tag to inject (Umami, Plausible) | --- ## Tracearr Integration If you run Tracearr for playback tracking, Emby Wrapped can pull history from it instead of the Emby Playback Reporting plugin. This is useful if: - You already use Tracearr and do not want to install another Emby plugin - Tracearr has longer historical data than the Playback Reporting plugin - You want a single source of truth for playback history Configure both `TRACEARR_URL` and `TRACEARR_API_KEY`. If both Tracearr and the Playback Reporting plugin are available, Tracearr data takes priority. If usernames changed over time (e.g., a user renamed their Emby account), use `TRACEARR_USERNAME_ALIASES` to map old Tracearr usernames to current Emby usernames: ``` TRACEARR_USERNAME_ALIASES=oldusername:newusername,john_old:john ``` --- ## Seerr Integration Connect Seerr (or Overseerr/Jellyseerr) to show request statistics in the Wrapped experience: - Total number of media requests made during the period - Breakdown by movies vs TV series - Per-user request counts This adds a fun "you requested X movies this year" card to the experience. --- ## Custom Background Music Emby Wrapped supports background music during the animated presentation. To add your own tracks: 1. Create a `music/` directory next to your docker-compose.yml 2. Add MP3 files to the directory 3. Mount it as shown in the Docker Compose example: `./music:/app/static/music:ro` 4. Music plays automatically during the Wrapped experience --- ## URL Parameters for Pre-Selected Time Periods You can share direct links to specific time periods: - `http://yourserver:3003?2025` - pre-selects the 2025 yearly review - `http://yourserver:3003?06-2025` - pre-selects June 2025 monthly review This is useful for sending links to your users at the end of the year. --- ## Library Filtering If your Emby server has libraries you do not want included in Wrapped statistics (adult content, test libraries), use the `FILTER_USER_ID` environment variable. Set it to the Emby User ID whose library access should define what content appears in stats. For example, if you have a "Family" user that only sees clean libraries, use that user ID as the filter. Wrapped will only show statistics for content visible to that user. --- ## Tech Stack - **Framework**: SvelteKit - **Styling**: Tailwind CSS - **Animations**: CSS animations + Svelte transitions - **Image Capture**: html2canvas (for share cards) - **Fonts**: Space Grotesk, JetBrains Mono - **Container**: Node.js 18+ in Docker --- ## Updating ```bash docker compose pull docker compose up -d ``` The pre-built image on GHCR is updated with each release. --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | "No users found" | Wrong EMBY_URL or API key | Verify URL is reachable and API key has permissions | | Stats seem incomplete | Playback Reporting plugin not installed | Install the plugin from Emby Catalog and wait for data collection | | Images not loading | Emby server not reachable from container | Check Docker networking and firewall rules | | No music stats | Music playback not tracked | Ensure Playback Reporting tracks music or use Tracearr | | Share cards blank | html2canvas CORS issue | The built-in image proxy should handle this; check server logs | --- ## Emby Wrapped vs Jellystat vs JellyWatch Statistics | Feature | Emby Wrapped | Jellystat | JellyWatch/EmbyWatch | |---|---|---|---| | Platform | Emby | Jellyfin | Both | | Purpose | Annual review experience | Ongoing analytics dashboard | Real-time monitoring + stats | | Presentation | Animated cards (Spotify-style) | Web dashboard with charts | Native Android app | | Shareable | Yes (image cards) | No | Yes (share feature) | | Real-time | No (historical) | Yes | Yes | | Self-hosted | Yes | Yes | N/A (mobile app) | | Data source | Playback Reporting / Tracearr | Jellyfin API | Emby/Jellyfin API | Emby Wrapped is not a replacement for ongoing monitoring. It is a fun, annual (or monthly) experience that celebrates your viewing habits. Use it alongside EmbyWatch for day-to-day server management. --- ## Who Is This For? - **Emby server admins** who want to give their users a fun end-of-year experience - **Families** who want to see their collective viewing habits - **Self-hosting enthusiasts** who enjoy data visualization - **Anyone who loves Spotify Wrapped** and wants the same thing for their media server --- ## FAQ **Does Emby Wrapped work with Jellyfin?** No. This project is Emby-specific. For Jellyfin, look at Jellystat or the Playback Reporting plugin dashboard. **Does it store my viewing data?** No. Statistics are fetched fresh from your Emby server (or Tracearr) on each visit. Nothing is persisted by Emby Wrapped itself. **Can my users see each other stats?** No. Each user authenticates with their own Emby credentials and only sees their own statistics. **How far back does the data go?** As far back as the Playback Reporting plugin (or Tracearr) has been collecting data. The plugin only tracks plays after installation. **Can I run this once a year or keep it running?** Either way. You can spin it up in December for the annual review and shut it down after, or keep it running year-round for monthly reviews. **Is there a mobile app?** No. Emby Wrapped is a web application accessed via browser. It works well on mobile browsers. **Does it support multiple Emby servers?** One instance of Emby Wrapped connects to one Emby server. Run multiple containers for multiple servers. --- ## Contributing Emby Wrapped is open source under the MIT license. Contributions are welcome via pull requests on the beta branch. --- ## Links - **GitHub**: [github.com/CtznSniiips/emby-wrapped](https://github.com/CtznSniiips/emby-wrapped) - **Unraid Support Thread**: [forums.unraid.net/topic/198106-support-embywrapped](https://forums.unraid.net/topic/198106-support-embywrapped/) - **Docker Image**: `ghcr.io/ctznsniiips/emby-wrapped:latest` --- > **Love your Emby stats? Monitor your server in real time too.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time session monitoring, transcoding diagnostics, and push notifications for your Emby server. *Also running Jellyfin? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same monitoring experience built for Jellyfin.* --- ## Awesome Emby Plugins and Ecosystem in 2026: Every Plugin, Client, and Integration Worth Knowing URL: https://jellywatch.app/blog/awesome-emby-plugins-ecosystem-complete-guide-2026 Published: 2026-05-16T18:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: emby, plugins, ecosystem, awesome, emby-plugins, emby-credits, emby-icons, home-screen-companion, watch-party, webstreams, trakt, xtream, iptv, xc2emby, clients, 2026, guide # The Awesome Emby Plugin Ecosystem in 2026: Every Plugin, Client, and Integration Worth Knowing Emby is often dismissed as "the paid Jellyfin" by the self-hosting community. That framing misses the point. Emby is a commercially supported media server with a dedicated development team, a polished client ecosystem spanning every major platform, and a plugin catalog that has grown significantly in 2025-2026. This guide covers the full Emby ecosystem: official plugins, community plugins, supported clients, notification integrations, and the tools that transform a basic Emby installation into a professional-grade streaming platform. Every Emby plugin below that is indexed on the JellyWatch Hub links to a dedicated page with install instructions and live GitHub releases — [browse all Emby plugins on the Hub](https://jellywatch.app/hub) to compare options side by side. --- ## How Emby Plugins Work Plugins are installed directly from the Emby dashboard under **Dashboard > Plugins > Catalog**. The catalog is curated by the Emby team, with both official and community-contributed plugins available. | Category | Description | |---|---| | Channels | Internet channels for streaming audio or video | | Content Providers | Adds new media types (books, games) or related content | | Live TV | Provides access to live TV channels and tuners | | Metadata | Adds new metadata scrapers or filters | | Notifications | Adds notification targets (Discord, Telegram, email) | | Social Integration | Access to social networking features | To install: Dashboard > Plugins > Catalog > click a plugin > Install > Restart Emby Server. --- # Official and Popular Plugins ## Metadata and Library Management ### Auto Box Sets (Now Built-In) Previously a standalone plugin, Auto Box Sets functionality has been merged directly into Emby Server. It automatically creates movie collections based on TMDB collection data. **How to enable:** Dashboard > Libraries > [Library] > enable "Import Collections from internet metadata providers." The old plugin can be safely uninstalled if still present. ### Cover Art **Hub page:** [Cover Art on the JellyWatch Hub](https://jellywatch.app/hub/emby-cover-art-imp) Enhances your media images with format-specific cases, automatic overlays for resolution, audio format, 3D, and subtitle indicators. Creates automatic multi-image treatments for box sets and collections. - Resolution badges (4K, 1080p, 720p) - Audio format indicators (Atmos, DTS:X, TrueHD) - 3D content markers - Subtitle availability indicators - Custom collection artwork generation ### EmbyIcons (Community - by yocksers) A more advanced alternative to Cover Art. EmbyIcons overlays informational icons directly onto media posters in Emby: audio/subtitle languages, codecs, resolution, HDR/Dolby Vision, ratings (IMDb, Rotten Tomatoes via MDBList), custom tags, and more. **Advantages over Cover Art:** - Multi-profile system: create distinct profiles and assign them to different libraries - Smart series and collection aggregation (shows icons only when all episodes share the same property) - Icon Manager to identify missing, unused, and found icons in your collection - Series Troubleshooter to find episodes with inconsistent properties causing missing icons - Live Preview: see layout changes in real-time before saving - Profile Import/Export for backup and sharing configurations - MDBList integration for Rotten Tomatoes audience scores (free API key) - Flexible layout control: position icons in any corner with custom priority ordering and horizontal/vertical stacking **Installation:** Place `EmbyIcons.dll` in your Emby Server's `/plugins` directory, restart, and configure via Dashboard → Plugins → EmbyIcons. **Hub page:** [EmbyIcons on the JellyWatch Hub](https://jellywatch.app/hub/embyicons-imp) ### GameBrowser **Hub page:** [GameBrowser on the JellyWatch Hub](https://jellywatch.app/hub/emby-gamebrowser-imp) Adds game support to Emby. Fetches game art and metadata automatically, organizes your ROM collection with proper artwork, and can launch games using supported Emby clients. Supports multiple platforms including NES, SNES, PlayStation, N64, and more. ### Bookshelf **Hub page:** [Bookshelf on the JellyWatch Hub](https://jellywatch.app/hub/emby-bookshelf-imp) Adds book and comic support to your Emby library. Supports EPUB, PDF, and CBZ/CBR formats with metadata fetching from online sources. --- ## Playback Enhancement Plugins ### EmbyCredits (Community - by yocker) The Emby equivalent of Jellyfin Intro Skipper for end credits. EmbyCredits detects end credits in TV episodes and adds markers that Emby uses to enable automatic credit skipping. **Detection methods:** - **Chroma fingerprinting** - compares episodes to find repeated credit sequences - **OCR via Tesseract** - extracts images from the video, sends them to a Tesseract Docker container for text recognition, identifies credit text patterns **Hub page:** [EmbyCredits on the JellyWatch Hub](https://jellywatch.app/hub/embycredits-imp) **Requirements:** Emby Server 4.9+, optionally a Tesseract Docker container for OCR-based detection. This plugin fills a gap that Emby users have requested for years. Combined with Emby native intro skip support (which uses chapter markers or segment data), you get a Netflix-like skip experience for both intros and credits. ### Segment Reporting (Community) **Hub page:** [Segment Reporting on the JellyWatch Hub](https://jellywatch.app/hub/emby-segment-reporting-imp) A companion plugin for EmbyCredits that provides a dashboard view of your intro and credit marker coverage across your library. **Features:** - Dashboard showing which episodes have markers and which do not - Filter by show for missing credits or intros - Trigger EmbyCredits detection from the dashboard - Bulk set markers for shows with no end credits - Manual marker editing This is the management layer that makes EmbyCredits practical for large libraries. Without it, you have no visibility into which episodes are covered. ### Watch Party (Community) **Hub page:** [Watch Party on the JellyWatch Hub](https://jellywatch.app/hub/emby-watch-party-imp) Enables synchronized group watching directly within Emby. Choose a movie, invite users, and everyone watches in sync. **How it works:** 1. Admin creates a Watch Party and selects a movie 2. Plugin creates a STRM file in a designated library 3. Users who start that file are synced together 4. Configurable sync behavior (strict or relaxed) 5. External webpage available for users to create parties without admin access **Recommendation:** Create a separate library specifically for Watch Party STRM files to avoid cluttering your main libraries. --- ## Home Screen and UI Plugins ### Home Screen Companion (Community - by soderlund) **Hub page:** [Home Screen Companion on the JellyWatch Hub](https://jellywatch.app/hub/emby-home-screen-companion-imp) One of the most actively developed Emby community plugins in 2026. Automatically manages tags and collections for your movies and TV shows, and keeps home screen sections synchronized across multiple users. **Features:** - Automatic tag management based on configurable rules - Collection creation and maintenance - Home screen section synchronization across all users - Scheduled task-based automation - Manual sorting with drag-and-drop - Filter options (show only collections, scheduled items, etc.) - Improved collection handling with poster, description, and metadata management **Previously known as:** AutoTag This plugin solves a common Emby frustration: keeping the home screen curated and consistent for all users without manual intervention. --- ## Streaming and Content Plugins ### WebStreams (Official - Premiere Required) **Hub page:** [WebStreams on the JellyWatch Hub](https://jellywatch.app/hub/emby-webstreams-imp) A newer official plugin (requires Emby Server 4.9+) that allows importing both single streams and M3U lists directly into Emby Server. **Features:** - Import single streams or full M3U playlists - TV episodes within M3U displayed with Series and Season hierarchies - Rich metadata support using TMDB and TVDB - Potential future RSS and podcast support **Use cases:** - IPTV integration beyond the standard Live TV system - Web-based content libraries - Podcast feeds (planned) ### Podcasts **Hub page:** [Podcasts on the JellyWatch Hub](https://jellywatch.app/hub/emby-podcasts-imp) Adds podcast support to Emby. Subscribe to RSS feeds and listen to episodes directly through Emby clients. --- ## IPTV / Xtream Codes Plugins For users with Xtream-compatible IPTV services, two community plugins bring full integration directly into Emby — Live TV, VOD, series, and EPG without external tools. ### Xtream Tuner (Community - by firestaerter3) A comprehensive Emby plugin that turns any Xtream-compatible IPTV service into a full Live TV, Movies, and Series library with EPG, TMDB/TVDb metadata matching, and a built-in dashboard. **Live TV & EPG:** - Full Live TV integration with Emby's native TV guide - M3U playlist generation with channel metadata, logos, and EPG channel IDs - XMLTV electronic program guide with configurable fetch window (1-14 days) - Category-based filtering and adult content toggle - Stream format selection: MPEG-TS or HLS (M3U8) **VOD Movie Library:** - STRM file generation — one file per movie, Emby handles metadata and artwork - Folder organization modes: single folder, multiple folders by category, or custom mapping - TMDB metadata matching with fallback lookup via Emby's providers **TV Series Library:** - Full season/episode STRM structure (Show Name/Season 01/S01E01.strm) - TVDb / TMDB ID folder naming for reliable metadata matching - Manual ID overrides for shows that don't auto-match **Smart Sync Engine:** - Skips writing STRM files that already exist on disk - Configurable parallelism (1-10 concurrent operations) - Orphan cleanup and cross-listing deduplication - Content name cleaning (strips provider prefix tags) - Real-time progress with phase/total/completed/skipped/failed counters **Dispatcharr Integration (optional):** - Stream proxy routing for connection management - Pre-populated media info from Dispatcharr's stream stats - FFprobe bypass for faster channel switching **Hub page:** [Xtream Tuner for Emby on the JellyWatch Hub](https://jellywatch.app/hub/emby-xtream-tuner-imp) ### XC2EMBY (Community - by sftech13) Another Xtream Codes plugin for Emby, focused on performance and stability. Connects directly to any Xtream-compatible IPTV provider and manages Live TV, VOD movies, documentaries, TV shows, and docu-series from a single configuration page. **Live TV:** - Registers as a native Emby tuner host — channels appear in Live TV like any other tuner - Supports MPEG-TS and HLS stream output formats - Optional direct play — clients connect straight to the Xtream URL, bypassing Emby's transcoder - Category filtering with optional adult content exclusion **Guide Data (EPG):** - Registered as a native Emby IListingsProvider - Three guide modes: Xtream server XMLTV, custom XMLTV URL, or disabled - Full XMLTV field passthrough: sub-title, categories, production year, content rating, icons, season/episode numbers **Codec Detection & OSD Display:** - Background ffprobe on first tune to detect video codec, resolution, and audio codec - Results cached per stream (persisted across restarts, 30-day TTL) - On subsequent tunes, codec and resolution appear in the player OSD immediately **Additional features:** - VOD movie and series sync with NFO metadata files - Orphan cleanup for removed content - Responsive mobile-friendly configuration interface - Admin API endpoints secured with role-based authentication - Auto-sync scheduling **Hub page:** [XC2EMBY on the JellyWatch Hub](https://jellywatch.app/hub/xc2emby-imp) --- ## Subtitle Plugins Emby supports multiple subtitle providers through its plugin system: | Plugin | Best for | Notes | |---|---|---| | **OpenSubtitles** | General use | Requires opensubtitles.com account (v2 API) | | **Addic7ed** | TV shows | High-quality community subtitles | | **Podnapisi** | European languages | Good coverage for non-English content | | **SubDb** | Hash-based matching | Accurate but smaller database | | **NapiSub** | Polish content | Specialized provider | **Important:** OpenSubtitles migrated to opensubtitles.com (v2 API). You must create an account on the new platform and configure it in Emby settings. The old .org API no longer works. --- ## Social and Tracking Plugins ### Trakt Synchronizes watch history between Emby and Trakt. Supports scrobbling (automatic tracking as you watch), history sync, and collection sync. **Features:** - Automatic scrobbling during playback - Full history sync (Emby to Trakt and Trakt to Emby) - Collection sync - Per-user configuration **Hub page:** [Emby Trakt Plugin on the JellyWatch Hub](https://jellywatch.app/hub/emby-trakt-imp) **Known issue (2026):** Some users report connection issues after Trakt API changes. Check the Emby community forums for the latest workarounds. ### Trakt List to Collections (Community) **Hub page:** [Trakt List to Collections on the JellyWatch Hub](https://jellywatch.app/hub/emby-trakt-list-collections-imp) Automatically syncs your Trakt lists directly into Emby collections. **Features:** - Automatic collection creation from Trakt lists - Scheduled syncing via a unified task - User-friendly configuration within Emby - Supports multiple Trakt lists simultaneously This is particularly useful for maintaining curated collections (IMDb Top 250, Letterboxd lists, custom watchlists) without manual management. ### Last.fm Scrobbler **Hub page:** [Last.fm Scrobbler on the JellyWatch Hub](https://jellywatch.app/hub/emby-lastfm-imp) Scrobbles your music listening activity to Last.fm. Tracks artist, album, and song plays automatically during Emby music playback. --- ## Notification Plugins Emby supports extensive notification configuration through both built-in and plugin-based targets. ### Built-In Notification Targets - **Email** (SMTP) - **Push notifications** (Emby mobile apps) ### Plugin Notification Targets | Target | Plugin | Notes | |---|---|---| | Discord | Webhook-based | Send events to Discord channels | | Telegram | Bot-based | Requires Telegram bot token | | Slack | Webhook-based | Enterprise messaging | | Pushover | API-based | Mobile push notifications | | Gotify | Self-hosted | Privacy-first push notifications | ### Webhooks (Premiere Required) Emby Premiere includes webhook support for custom integrations. Trigger external services when events occur: - Playback started/stopped - New media added - User authenticated - Library scan completed - Server started/stopped **Use cases:** - Dim smart lights when a movie starts (Home Assistant) - Send a tweet after finishing an episode - Trigger a backup script after library changes - Post to Discord when new content arrives --- ## Live TV Plugins Emby supports Live TV natively with Emby Premiere. The plugin catalog extends tuner support beyond the built-in options. ### Built-In Tuner Support - HDHomeRun (network tuners) - M3U Tuner (IPTV playlists) - SAT>IP ### Plugin Tuners Additional tuner plugins are available in the catalog for specialized hardware and IPTV providers. Check Dashboard > Plugins > Catalog > Live TV for the current list. ### EPG Providers - **Schedules Direct** - high-quality North American EPG ($25/year) - **XMLTV** - import any XMLTV-format guide data - **Emby Guide Data** - built-in guide for supported regions --- # Emby Client Ecosystem Emby has one of the widest official client ecosystems of any media server. All clients are maintained by the Emby team (not community volunteers). ## Mobile | Platform | App | Premiere Required | Notes | |---|---|---|---| | **Android** | Emby for Android | Yes (full features) | Google Play | | **iOS** | Emby for iOS | Yes (full features) | App Store | ## TV and Streaming Devices | Platform | App | Notes | |---|---|---| | **Android TV** | Emby for Android TV | Google Play, native D-pad | | **Amazon Fire TV** | Emby for Fire TV | Amazon Appstore | | **Apple TV** | Emby for Apple TV | tvOS App Store | | **Roku** | Emby for Roku | Roku Channel Store | | **Samsung Tizen** | Emby for Samsung | Samsung App Store (no sideload needed) | | **LG webOS** | Emby for LG | LG Content Store | | **Xbox** | Emby for Xbox | Microsoft Store | | **PlayStation** | Web-based | Via PS browser | | **Chromecast** | Cast support | From Android/iOS/Web | ### Store availability on Samsung and LG Emby has had **official apps in the Samsung and LG app stores** for years. Jellyfin has also reached both stores: the LG webOS app has been available since 2022, and the Samsung Tizen app rolled out officially in late 2025 — though the Tizen rollout is still limited to newer models (Tizen 6.0+). For older Samsung TVs, sideloading remains the only option for Jellyfin. ## Desktop | Platform | App | Notes | |---|---|---| | **Windows** | Emby Theater / Web | Microsoft Store or browser | | **macOS** | Web interface | Browser-based | | **Linux** | Web interface | Browser-based | ## Kodi Integration | Plugin | Description | |---|---| | **Emby for Kodi (Next Gen)** | Full library sync into Kodi database | | **EmbyCon** | Lighter integration, stream directly | The Emby for Kodi Next Gen plugin (version 11.x in 2026) provides deep integration with Kodi, syncing your entire library including watched status, metadata, and artwork. ## Web Interface The Emby web interface is accessible from any modern browser at `http://your-server:8096`. It supports: - Full library browsing and playback - Admin dashboard - User management - Plugin configuration - Live TV guide --- # Emby Server 4.9 and 4.10 (2026) ## Current Stable: 4.9.3 Released in January 2026, Emby Server 4.9.3 includes: - Updated Intel drivers on Linux platforms - User option to set auto remote quality - Legacy folder scanning method option - Music transcoding fixes - Landing tab option for book libraries - YouTube trailer player volume control - Mixed content tabs combining Movies and Shows - Maintenance mode improvements - Embedded audio field rescanning fixes ## Beta: 4.10 Emby 4.10 is currently in public beta with a native Linux build (Emby Linux). Key changes include: - Native Linux runtime (no longer Mono-based) - Performance improvements - Updated media processing pipeline --- # Emby Premiere: What It Unlocks Emby Premiere is required for many features that are free in Jellyfin. Here is the complete feature matrix: ## Playback Features (Premiere Required) - Hardware accelerated transcoding (Intel QSV, NVIDIA NVENC, AMD AMF) - Offline media sync to mobile devices - Cloud sync for backup and multi-resolution storage - Cinema Mode (trailers before features) ## Server Features (Premiere Required) - Live TV and DVR - Smart playlists - Backup and restore - Webhooks - Cover Art plugin - WebStreams plugin ## Client Features (Premiere Required) - Full mobile app functionality (Android/iOS) - Offline downloads - Premium themes ## Pricing (2026) | Plan | Price | |---|---| | Monthly | ~$4.99/month | | Yearly | ~$54/year | | Lifetime | ~$119 one-time | The lifetime plan remains the best value for long-term self-hosters. --- # Integrations and Companion Tools ## EmbyWatch (Android Admin App) The dedicated Android monitoring companion for Emby servers: - Real-time session monitoring - Transcoding diagnostics - CPU, RAM, and storage alerts - Push notifications for new sessions and server events - Radarr, Sonarr, and Seerr integration - Watch history and viewing statistics - Android home screen widget - Watch Pass for sharing access with users ## Radarr and Sonarr Both Radarr and Sonarr support Emby as a notification target: 1. Settings > Connect > Add > Emby/Jellyfin 2. Enter your Emby server URL and API key 3. New content triggers automatic library scans ## Seerr / Jellyseerr / Overseerr Seerr (the unified successor) supports Emby as a media server backend. Users can request content that flows through Radarr/Sonarr and appears in your Emby library automatically. ## Tdarr Tdarr supports Emby library refresh notifications after transcoding files. Configure a webhook to trigger Emby library scans when Tdarr finishes processing. ## Home Assistant The Emby integration for Home Assistant creates media_player entities for active sessions. Automate your smart home based on Emby playback state: - Dim lights when playback starts - Pause on doorbell ring - Display now-playing on dashboard --- # Building Your Emby Plugin Stack ## Essential for Most Servers | Plugin | Why | |---|---| | OpenSubtitles | Automatic subtitle downloads | | Trakt | Watch history backup and sync | | EmbyCredits | Skip end credits automatically | | Home Screen Companion | Curated, consistent home screen | | EmbyIcons | Professional poster overlays with languages, codecs, ratings | ## For Large Shared Servers | Plugin | Why | |---|---| | Segment Reporting | Manage intro/credit markers at scale | | Watch Party | Synchronized group viewing | | Trakt List to Collections | Automated curated collections | | EmbyIcons | Professional-looking library with multi-profile badges | ## For IPTV and Live TV Users | Plugin | Why | |---|---| | WebStreams | Import M3U and single streams | | Xtream Tuner | Full Xtream IPTV integration (Live TV + VOD + Series) | | XC2EMBY | Alternative Xtream plugin with codec detection and OSD | | Live TV tuner plugins | Extended hardware support | | Schedules Direct | High-quality EPG data | ## For Music Lovers | Plugin | Why | |---|---| | Last.fm Scrobbler | Track listening history | | Podcasts | Subscribe to RSS feeds | --- # Emby vs Jellyfin Plugin Ecosystem: Honest Comparison | Aspect | Emby | Jellyfin | |---|---|---| | Plugin count | ~30-40 in catalog | 70+ (official + community) | | Plugin quality | Curated, stable | Variable (some experimental) | | Intro/Credits skip | EmbyCredits (community) | Intro Skipper (very mature) | | Home screen curation | Home Screen Companion | jellyfin-editors-choice + home-sections | | SSO/LDAP | Not available | jellyfin-plugin-sso, LDAP plugin | | Anime metadata | Limited | AnimeMultiSource, Shokofin | | Discord Rich Presence | Not available | jellyfin-rpc (two implementations) | | Stream limiting | Built-in (Premiere) | Jellyfin.Plugin.StreamLimit | | Theming | CSS customization | Skin Manager + extensive CSS | | Watch Party | Plugin available | SyncPlay (built-in) | | IPTV/Xtream integration | Xtream Tuner, XC2EMBY | Jellyfin-Xtream-Library | | Poster overlays | Cover Art, EmbyIcons | Similar community plugins | | Development pace | Steady (paid team) | Fast (large volunteer community) | Jellyfin has a larger and more experimental plugin ecosystem. Emby has fewer plugins but they tend to be more stable and better integrated with the core server. --- # Security and Maintenance ## Securing Your Emby Server Emby provides built-in security features: - HTTPS support (self-signed or custom certificate) - User authentication with password policies - Remote access controls per user - Device management and authorization - Activity logging For internet-exposed servers, add: - Reverse proxy (Caddy, Nginx, Traefik) with proper SSL - Fail2Ban for brute-force protection - GeoIP blocking at the reverse proxy level - Regular server updates ## Backup Strategy Emby Premiere includes built-in backup and restore: - Dashboard > Scheduled Tasks > Server Configuration Backup - Backs up server configuration, users, and metadata references - Does not back up media files (handle separately) For comprehensive backups, also back up: - `/config/` directory (Docker) or `%AppData%/Emby-Server/` (Windows) - Plugin configurations - Custom CSS and branding --- # FAQ **How many plugins does Emby have?** The official catalog contains approximately 30-40 plugins. Community plugins on the Emby forums and GitHub add another 10-15 actively maintained options. **Are Emby plugins free?** Most plugins are free. Some features (WebStreams, Webhooks, Cover Art advanced features) require Emby Premiere. **Can I write my own Emby plugin?** Yes. Emby provides a plugin development SDK at [dev.emby.media/doc/plugins](https://dev.emby.media/doc/plugins/). Plugins are written in C# and can be submitted to the catalog. **Does Emby have an intro skip feature like Netflix?** Emby supports intro skipping natively using chapter markers or segment data. The EmbyCredits community plugin adds automatic end-credit detection. Combined with Segment Reporting, you get comprehensive skip coverage. **Is the Emby plugin ecosystem growing or shrinking?** Growing. 2025-2026 saw several significant community plugins (EmbyCredits, EmbyIcons, Home Screen Companion, Segment Reporting, Watch Party, Xtream Tuner, XC2EMBY) that address long-standing feature requests. **Does Emby support Stremio addons like Jellyfin (Gelato)?** No. There is no Stremio integration for Emby. The WebStreams plugin handles M3U and single stream imports, which covers some similar use cases. **Can I use Emby plugins without Premiere?** Most metadata, subtitle, and social plugins work without Premiere. Plugins that involve transcoding, Live TV, webhooks, or advanced server features require Premiere. **What is the best Emby plugin for managing a large library?** Home Screen Companion for curation, Trakt List to Collections for automated collections, and EmbyIcons for visual polish. Combined, they make a large library feel organized and professional. **Can I use Xtream IPTV with Emby?** Yes. Two community plugins support Xtream Codes providers: Xtream Tuner (by firestaerter3) and XC2EMBY (by sftech13). Both provide Live TV, VOD, and series sync with EPG support. --- # The Admin Layer: EmbyWatch Plugins extend what Emby can do. But managing an Emby server, watching active streams, diagnosing transcoding issues, and monitoring CPU and storage requires a dedicated tool. **EmbyWatch** is the Android admin companion for Emby: - Real-time session monitoring with transcoding diagnostics - Server health: CPU, RAM, GPU, storage - Push notifications for new sessions and CPU spikes - Radarr, Sonarr, and Seerr integration - Watch history and viewing statistics - Android home screen widget - Watch Pass: share premium access with your users While your plugins handle automation, you keep the server running smoothly from your pocket. --- # Final Thoughts The Emby ecosystem in 2026 is more capable than its reputation suggests. The combination of a commercially supported core server, official apps on every major platform (including Samsung and LG app stores without sideloading), and a growing community plugin scene makes it a legitimate choice for self-hosters who value stability and polish. The plugin ecosystem is smaller than Jellyfin but focused on quality. EmbyCredits, EmbyIcons, Home Screen Companion, Segment Reporting, and the Xtream IPTV plugins represent a new wave of community development that addresses real user needs. The official WebStreams plugin shows the Emby team is still actively expanding server capabilities. For users who want a polished, supported media server with a plugin ecosystem that covers the essentials, Emby delivers. For users who want maximum extensibility and zero cost, Jellyfin remains the alternative. Your server, your choice. **Stay current:** new Emby and Jellyfin tools are added to the Hub every month. Bookmark [the newest plugins added in the last 30 days](https://jellywatch.app/hub/new-this-month) or browse the [community-curated awesome list](https://jellywatch.app/hub/awesome) for the highest-engagement picks. --- > **Running an Emby server? Monitor it from your pocket.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time session monitoring, transcoding diagnostics, and server health for Emby admins on Android. *Also running Jellyfin? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same complete monitoring experience built for Jellyfin.* --- ## ARVIO: The Open-Source Android TV Media Hub That Unifies Jellyfin, Plex, Stremio Addons & Live TV (2026) URL: https://jellywatch.app/blog/arvio-android-tv-media-hub-jellyfin-plex-stremio-2026 Published: 2026-05-14T14:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: arvio, android-tv, media-hub, jellyfin, plex, emby, stremio, iptv, trakt, open-source, 2026 # ARVIO: The Open-Source Android TV Media Hub That Unifies Everything (2026) What if one app on your Android TV could connect to your Jellyfin server, your Plex library, your Stremio addons, your IPTV playlists, your Trakt watchlist, and streaming service catalogs - all in a single, beautiful interface designed for the remote control? That app exists. It is called **ARVIO**, and it is free, open source, and available on Google Play right now. --- ## What Is ARVIO? ARVIO is an Android media hub built from the ground up for the TV form factor. It is not a media server - it is a **unified frontend** that connects to the services and sources you already use, presenting everything in one cohesive home screen. No server required. No account required. No ads. No premium tier. Just install and connect your stuff. - **Website:** [arvio.tv](https://arvio.tv) - **Google Play:** [ARVIO on Play Store](https://play.google.com/store/apps/details?id=com.arvio.tv) - **GitHub:** [ProdigyV21/ARVIO](https://github.com/ProdigyV21/ARVIO) - **Discord:** [ARVIO Community](https://discord.com/invite/bGBBGKFZVh) - **License:** Apache 2.0 (open source) --- ## Why ARVIO Matters for Self-Hosters If you run a Jellyfin, Plex, or Emby server, you already have dedicated apps for each. But the Android TV experience is fragmented: - Jellyfin for your local library - A separate Stremio app for addon-based content - A separate IPTV app for live TV - Trakt integration scattered across multiple apps - No unified "home screen" that brings it all together ARVIO solves this by acting as a single entry point. You open one app, and everything is there - your Jellyfin library, your Stremio addons, your IPTV channels, your Trakt watchlist, and curated streaming catalogs. All navigable with a D-pad remote. --- ## Core Features ### Media Server Integration (Jellyfin, Plex, Emby) ARVIO connects to your self-hosted media servers as catalog sources: - **Jellyfin** - browse your library, play content, sync watch state - **Plex** - connect your Plex server alongside other sources - **Emby** - full integration as a catalog source Your server libraries appear as rows on the ARVIO home screen, mixed with other content sources in whatever order you prefer. ### Stremio Addons - Native on TV This is the feature that sets ARVIO apart from every other Android TV app. ARVIO runs **Stremio addons natively** in a remote-first interface: - Paste addon URLs directly into ARVIO - Browse addon catalogs with metadata, posters, and descriptions - Subtitles from OpenSubtitles integrated - Provider selection for streams - No separate Stremio app needed Built-in metadata sources include Cinemeta, TMDB, and WatchHub. You bring your own addons for streams. ### Live TV (M3U and Xtream) ARVIO includes a full IPTV player: - Import M3U or Xtream playlists - Channel grouping and favorites - EPG (Electronic Program Guide) support - Mini-player that stays active while you browse - Category management with hidden categories No separate IPTV app needed. Live TV lives alongside your movies and shows in one interface. ### Trakt Integration (First-Class) Trakt is not an afterthought in ARVIO - it is a core feature: - **Scrobbling** - automatic watch history tracking - **Continue Watching** - resume points synced across devices - **Watchlist** - your Trakt watchlist appears as a home screen row - **History** - full watch history accessible - **Per-profile** - each ARVIO profile can link its own Trakt account ### Streaming Service Catalogs ARVIO includes built-in catalog rows for major streaming services: - Netflix, Disney+, Apple TV+, Prime Video, HBO Max, Hulu, Paramount+, and more - Genre shortcuts and artwork - These are discovery catalogs (what is available on each service) - not streams Useful for browsing what is new on services you subscribe to, then playing via your preferred source. ### ARVIO Cloud (Optional) For multi-device sync without typing passwords on a TV keyboard: - Pair devices via QR code - Sync profiles, addons, catalogs, settings, and watch state - Works across multiple Android TVs - Completely optional - the app works fully offline --- ## The Player ARVIO uses **ExoPlayer (Media3)** with the FFmpeg extension. Codec support is comprehensive: | Category | Supported formats | |---|---| | Video | H.264, H.265/HEVC, VP9, AV1, Dolby Vision | | Audio | AAC, AC3, EAC3, DTS, DTS-HD, TrueHD, Dolby Atmos | | Containers | MKV, MP4, WebM, HLS, DASH | | Subtitles | SRT, VTT, ASS/SSA, PGS | | Quality | 4K HDR, multi-track audio and subtitle selection | Passthrough and hardware decode depend on your device and Android audio pipeline - same as any Android TV app. --- ## Supported Devices ARVIO is designed for the 10-foot experience first: | Device type | Support level | |---|---| | **Android TV** | Primary - D-pad optimized | | **Google TV** (Chromecast, etc.) | Primary | | **Fire TV** | Supported (sideload or Play Store) | | **NVIDIA Shield** | Supported | | **Android phone** | Companion UI | | **Android tablet** | Companion UI | Notably absent: iOS, Apple TV, and LG webOS are not supported. ARVIO is Android-only. --- ## How ARVIO Compares | Feature | ARVIO | Stremio | Kodi | Jellyfin App | Stock TV | |---|---|---|---|---|---| | Built for TV remote | Native | Partial | Skin-dependent | Yes | Yes | | Stremio addons | Built-in | Native | No | No | No | | Jellyfin/Plex/Emby | Connected | No | Add-on | Native | No | | Live TV (M3U) | Built-in | Add-on | Add-on | Free | No | | Trakt sync | First-class | Add-on | Add-on | Plugin | No | | Streaming catalogs | 10+ built-in | Limited | Manual | No | Single feed | | No server required | Yes | Yes | Yes | Needs server | Yes | | Free and ad-free | Open source | Free | Open source | Free | Ads | ARVIO occupies a unique position: it combines the addon ecosystem of Stremio, the server connectivity of dedicated media apps, and the live TV capabilities of IPTV players into one unified interface. --- ## Installation ### Google Play (Recommended) 1. On your Android TV, open the **Google Play Store** 2. Search for **ARVIO** 3. Install (free, no in-app purchases) 4. Open and start configuring The Play Store path gives you automatic updates. ### APK Sideload (Fire TV or Direct) 1. Download the latest APK from [GitHub Releases](https://github.com/ProdigyV21/ARVIO/releases) 2. On your device, enable "Install unknown apps" for your file manager 3. Transfer and install the APK 4. Open ARVIO ### From Install to First Stream The setup takes under 3 minutes: 1. **Install** from Play Store 2. **Add sources** - connect a Jellyfin server, paste a Stremio addon URL, or import an M3U playlist 3. **Press play** - browse, select, watch. Trakt picks up watch state automatically if connected. --- ## Multi-Profile Support ARVIO supports multiple profiles on a single device: - Each profile has its own watchlist, continue watching, and watch history - Profile PINs for access control - Custom profile avatars (synced via ARVIO Cloud) - Per-profile Trakt accounts - Per-profile addon and catalog configuration Perfect for family TVs where each person wants their own home screen. --- ## Open Source and Privacy ARVIO is licensed under **Apache 2.0**. The full source code is available on GitHub for review, forking, and contributions. Privacy highlights: - No ads, no analytics, no tracking - No account required for basic use - ARVIO Cloud sync is optional and can be deleted at any time - The app does not host, store, or distribute any media content - Users are responsible for the sources they connect --- ## Who Should Use ARVIO? ### Ideal for: - **Jellyfin/Plex/Emby users** who also use Stremio addons and want one app for everything - **IPTV users** who want live TV alongside on-demand content - **Cord-cutters** who want a unified home screen across multiple sources - **Android TV owners** tired of switching between 5 different apps - **Trakt users** who want first-class scrobbling and watchlist integration - **Privacy-conscious users** who want an open-source, ad-free media hub ### Not ideal for: - **Apple TV / iOS users** - Android only - **Users who want a media server** - ARVIO is a client/hub, not a server - **Users who need transcoding** - ARVIO plays streams as-is; transcoding happens on your server --- ## ARVIO + JellyWatch: The Complete Android Stack ARVIO handles the watching experience on your TV. **JellyWatch** handles the server administration from your phone. Together they cover both sides: | Role | App | |---|---| | Watch content on TV | ARVIO | | Monitor server health | JellyWatch | | Manage Radarr/Sonarr/Seerr | JellyWatch | | Approve media requests | JellyWatch | | Track active sessions | JellyWatch | | Get push notifications | JellyWatch | ARVIO is for your couch. JellyWatch is for your pocket. --- ## Current Status and Development As of May 2026, ARVIO is at version **1.9.92** with active development. Recent work has focused on: - IPTV category handling and large-list navigation - Watchlist and continue-watching reliability - Catalog discovery improvements - Home-server source and catalog integration - Profile avatar sync - Mobile and tablet layout fixes - Player navigation improvements The project has 74 stars on GitHub and an active Discord community for support and feature requests. --- ## FAQ **Is ARVIO free? Are there ads?** Completely free, open source, no ads, no analytics, no premium tier. A Ko-fi link exists for voluntary support but nothing in the app is gated. **Does ARVIO host or stream content?** No. ARVIO is a hub that connects to the addons, servers, and playlists you configure. It ships metadata providers (Cinemeta, TMDB) and subtitle providers (OpenSubtitles) but does not host video. **Which devices are supported?** Android TV and Google TV are primary (Chromecast with Google TV, NVIDIA Shield, Onn 4K, Sony Bravia, TCL). Android phones and tablets get a companion UI. iOS, Apple TV, and webOS are not supported. **Do I need a media server?** No. ARVIO runs entirely on the TV. Server connections (Jellyfin, Plex, Emby) are optional additions. **Can I use ARVIO alongside the official Jellyfin app?** Yes. They are independent apps. You might use the Jellyfin app for pure library browsing and ARVIO for the unified experience with addons and live TV. **How do I install on Fire TV?** Grab the APK from GitHub releases and sideload it. Enable "Install unknown apps" in Fire TV settings first. The Play Store version also works if your Fire TV has Play Store access. **Is there Dolby Vision and Atmos support?** Yes, where the device hardware supports it. ExoPlayer handles DV and Atmos passthrough on compatible Android TV devices. --- ## Getting Involved ARVIO is open source and welcomes contributions: - **Report bugs:** [GitHub Issues](https://github.com/ProdigyV21/ARVIO/issues) - **Join the community:** [Discord Server](https://discord.com/invite/bGBBGKFZVh) - **Contribute code:** Fork the repo, build with Android Studio + JDK 17 - **Support development:** Ko-fi link available on the website --- ## Sources - Official website: [https://arvio.tv](https://arvio.tv) - GitHub repository: [https://github.com/ProdigyV21/ARVIO](https://github.com/ProdigyV21/ARVIO) - Google Play Store: [https://play.google.com/store/apps/details?id=com.arvio.tv](https://play.google.com/store/apps/details?id=com.arvio.tv) - Discord community: [https://discord.com/invite/bGBBGKFZVh](https://discord.com/invite/bGBBGKFZVh) --- > **Running a Jellyfin server behind ARVIO? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and push notifications for Jellyfin admins. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## JellyEmu: Play Retro Games Directly in Jellyfin - Complete Setup Guide (2026) URL: https://jellywatch.app/blog/jellyemu-retro-gaming-jellyfin-emulator-plugin-2026 Published: 2026-05-13T22:00:00+00:00 Author: JellyWatch Team Category: Showcase Tags: jellyfin, jellyemu, retro-gaming, emulator, emulatorjs, rom, plugin, nes, snes, playstation, 2026 # JellyEmu: Play Retro Games Directly in Jellyfin (2026) Jellyfin handles movies, TV shows, music, audiobooks, and photos. But what about your ROM collection? Those thousands of NES, SNES, PlayStation, and Game Boy Advance files sitting on your NAS - until now, they needed a separate frontend like EmulatorJS or RetroArch. **JellyEmu** changes that. It is a Jellyfin plugin that turns your media server into a full retro gaming platform - complete with box art, game descriptions, and in-browser emulation. Your users browse games the same way they browse movies, click Play, and a fully functional emulator launches directly in the Jellyfin web interface. No separate app. No client-side installation. Just Jellyfin. --- ## What Is JellyEmu? JellyEmu is a community-built Jellyfin plugin that: - **Imports your ROM library** into Jellyfin as a browsable collection - **Fetches metadata** (box art, descriptions, ratings, release dates) from IGDB and RAWG - **Launches games in-browser** using EmulatorJS - no downloads, no client software - **Supports 30+ platforms** from Atari 2600 to PlayStation and Nintendo DS - **Includes Pico-8 support** for indie retro games - **Shares your collection** with all Jellyfin users via the standard library system Source: [github.com/Jellyfin-PG/JellyEmu](https://github.com/Jellyfin-PG/JellyEmu) --- ## Supported Platforms JellyEmu supports an impressive range of retro consoles: | Platform | Extensions | |---|---| | Nintendo (NES) | .nes | | Super Nintendo (SNES) | .sfc, .smc | | Nintendo 64 | .n64, .z64 | | Game Boy / Color | .gb, .gbc | | Game Boy Advance | .gba | | Nintendo DS | .nds | | Virtual Boy | .vb | | PlayStation (PSX) | .iso, .bin, .cue, .chd | | PlayStation Portable (PSP) | .iso, .cso | | Sega Genesis / Mega Drive | .md, .gen, .bin | | Sega CD | .iso, .bin, .cue, .chd | | Sega Saturn | .iso, .bin, .cue | | Sega Game Gear | .gg | | Sega Master System | .sms | | Sega 32X | .32x | | Atari 2600 | .a26, .bin | | Atari 5200 | .a52, .bin | | Atari 7800 | .a78, .bin | | Atari Jaguar | .j64, .jag | | Atari Lynx | .lnx | | MAME / Arcade / CPS | .zip, .7z | | 3DO | .iso, .bin, .cue | | Commodore 64 | .d64, .g64, .t64 | | Amiga | .adf, .ipf, .lha | | ColecoVision | .col, .rom | | PC Engine / TurboGrafx-16 | .pce, .bin, .cue | | Neo Geo Pocket | .ngp, .ngc | | WonderSwan | .ws, .wsc | | DOS | .exe, .com, .conf, .zip | | Pico-8 | .p8, .p8.png, .zip | That is over 30 platforms playable directly in your browser. --- ## How It Works The architecture is elegant: ``` Your ROM files on disk → JellyEmu scans and identifies them → Metadata fetched from IGDB + RAWG (box art, descriptions) → Games appear in Jellyfin library (browsable like movies) → User clicks Play → EmulatorJS launches in the browser → Game runs client-side (zero server CPU for emulation) ``` The emulation happens entirely in the browser via WebAssembly. Your Jellyfin server only serves the ROM file - the actual emulation runs on the client device. This means: - **Zero server CPU usage** during gameplay - **Any device with a modern browser** can play (PC, tablet, phone) - **No client software** to install - **Multi-user** - everyone on your server can play simultaneously --- ## Prerequisites - **Jellyfin 10.11+** (required) - An **IGDB API key** (free - register at [api.igdb.com](https://api.igdb.com)) - A **RAWG API key** (free - register at [rawg.io/apidocs](https://rawg.io/apidocs)) - Your ROM collection organized on disk --- ## Installation JellyEmu depends on the **File Transformation** plugin to inject CSS and JavaScript into the Jellyfin web interface. Both plugins must be installed. ### Step 1: Add the Plugin Repository 1. Open Jellyfin Dashboard 2. Go to **Administration → Plugins → Repositories** 3. Click **Add** and enter: ``` https://raw.githubusercontent.com/Jellyfin-PG/Repository/refs/heads/main/manifest.json ``` 4. Click **Save** ### Step 2: Install File Transformation 1. Go to **Administration → Plugins → Catalogue** 2. Find **File Transformation** and click **Install** 3. Confirm the installation ### Step 3: Install JellyEmu 1. Still in the Catalogue, find **JellyEmu** and click **Install** 2. Confirm the installation ### Step 4: Restart Jellyfin Restart your Jellyfin server. Both plugins must be active simultaneously - File Transformation handles the page injection, JellyEmu manages your ROMs. --- ## Configuration ### Step 1: Configure API Keys 1. Navigate to **Dashboard → Plugins** 2. Open the **Emulator Library** configuration page 3. Enter your **IGDB API Key** (Client ID and Client Secret) 4. Enter your **RAWG API Key** 5. Save ### Step 2: Create the Game Library 1. Go to **Dashboard → Libraries → Add Media Library** 2. Select **Books** as the Content Type > **Important:** You must select "Books" as the content type. This is required for JellyEmu to map game data correctly within the Jellyfin database structure. 3. Name it something like "Video Games" or "Retro Games" 4. Add the folder path where your ROMs are stored 5. Under **Metadata Downloaders**, enable **IGDB** and **RAWG** 6. Click **OK** ### Step 3: Scan Your Library 1. Go to **Dashboard → Libraries** 2. Click the three dots on your game library → **Scan Library Files** 3. Jellyfin matches your files against IGDB and RAWG 4. Box art, descriptions, and metadata download automatically Once the scan completes, your games appear on the home screen - ready to browse and play. --- ## Organizing Your ROM Library JellyEmu uses a smart 3-step detection system to identify which platform a ROM belongs to: 1. **Inline tokens** - platform name in brackets or parentheses in the filename 2. **Folder names** - parent and grandparent folder names 3. **File extensions** - only for unambiguous extensions (like .nes or .z64) ### Method 1: Organize by Folder (Recommended) The easiest approach for large collections: ``` /ROMs/ ├── /SNES/ │ └── Super Mario World.sfc ├── /PlayStation/ │ ├── /Final Fantasy VII/ │ │ └── Disc 1.chd └── /Sega Genesis/ └── Sonic The Hedgehog.md ``` JellyEmu checks up to two directories up, so subfolders for multi-disc games or series work perfectly. Accepted folder names include official names and common abbreviations: `SNES`, `Super Nintendo`, `Super Famicom` all map to the same platform. ### Method 2: Inline Naming Tokens For flat directory structures, add the platform in brackets: ``` Sonic CD [Sega CD].chd → UI Display: Sonic CD Crash Bandicoot (PS1).chd → UI Display: Crash Bandicoot Super Mario 64 [Nintendo 64].z64 → UI Display: Super Mario 64 ``` JellyEmu automatically hides platform tags in the user interface - game titles remain clean. ### Handling Ambiguous Formats Formats shared across multiple consoles (`.iso`, `.chd`, `.cue`, `.bin`) are ambiguous. For these files, you **must** use either an inline token or a properly named folder. Otherwise the platform is marked as "Unknown". ### Forcing Specific Metadata For ambiguous titles (like "Doom" matching the 2016 reboot instead of the 1993 original), force a specific database entry: ``` Doom [igdb-1039].iso → Forces the 1993 IGDB entry Aladdin (Sega) [rawg-871812].md → Forces the exact RAWG entry ``` Supported provider tags: | Provider | Tag format | |---|---| | IGDB | `[igdb-1039]` | | RAWG | `[rawg-19291]` | | Wikipedia | `[wiki-8482]` | | LexalOffle (Pico-8) | `[loid-819821]` | You can combine provider IDs and platform tokens: ``` Sonic Adventure [igdb-3273][Sega CD].chd ``` This matches the exact IGDB entry, assigns the Sega CD platform, and displays cleanly as "Sonic Adventure". --- ## The User Experience Once configured, your users see games exactly like they see movies: - **Home screen** shows recently added games with box art - **Library browsing** displays a grid of game covers - **Game detail page** shows description, platform, release date, and rating - **Click Play** → EmulatorJS launches in a full-screen overlay - **Controller support** via the browser Gamepad API (USB and Bluetooth controllers work) - **Save states** handled by EmulatorJS locally in the browser - **Region flags** (like `(USA)`) are parsed and added to game details The experience is seamless. Non-technical users do not need to know anything about emulation - they just browse and play. --- ## Performance and Compatibility ### Server-side - **Zero CPU usage during gameplay** - emulation runs client-side in WebAssembly - **Minimal storage overhead** - only metadata and artwork are stored alongside your ROMs - **Standard Jellyfin library scan** - no special background processes ### Client-side - **Any modern browser** - Chrome, Firefox, Edge, Safari - **Mobile browsers** - works on Android and iOS (touch controls available) - **Performance depends on the client device** - a phone handles NES/SNES easily; PSX/N64 need a decent CPU - **Controller support** - USB and Bluetooth gamepads via the Gamepad API ### Platform performance expectations | Platform | Client requirement | |---|---| | NES, SNES, Game Boy | Any device (phone, tablet, PC) | | Genesis, Game Gear | Any device | | N64, PSX | Mid-range phone or any PC | | PSP, DS | Modern phone or PC | | Arcade (MAME) | Depends on the game | --- ## JellyEmu vs Standalone EmulatorJS The LinuxServer.io team maintains a standalone [docker-emulatorjs](https://github.com/linuxserver/docker-emulatorjs) container. How does JellyEmu compare? | Feature | JellyEmu (Jellyfin plugin) | Standalone EmulatorJS | |---|---|---| | Integration | Native Jellyfin library | Separate web app | | User management | Jellyfin users (multi-user) | Separate auth or none | | Metadata | IGDB + RAWG (automatic) | Manual or basic | | UI | Jellyfin interface (familiar) | Custom web frontend | | Sharing | Via Jellyfin (Watch Pass, etc.) | Direct URL sharing | | Setup | Plugin install | Docker container | | Emulation engine | EmulatorJS (same) | EmulatorJS (same) | JellyEmu wins on integration. If you already run Jellyfin, your games live alongside your movies and shows in one unified interface. Standalone EmulatorJS is better if you want a dedicated gaming-only frontend. --- ## Tips for the Best Experience ### Use CHD format for disc-based games CHD (Compressed Hunks of Data) is the recommended format for PlayStation, Sega CD, and Saturn games: - Significantly smaller than raw BIN/CUE - Single file per disc (no multi-file headaches) - Fully supported by EmulatorJS Convert with `chdman`: ```bash chdman createcd -i game.cue -o game.chd ``` ### Organize multi-disc games in subfolders ``` /PlayStation/ /Final Fantasy VII/ Final Fantasy VII - Disc 1.chd Final Fantasy VII - Disc 2.chd Final Fantasy VII - Disc 3.chd ``` JellyEmu detects the platform from the parent folder. ### Use IGDB IDs for accurate metadata For games with common names (Doom, Pac-Man, Tetris), add the IGDB ID to ensure the correct version is matched: ``` Tetris [igdb-2918][Game Boy].gb ``` ### Pair with JellyWatch for monitoring JellyEmu sessions appear as regular Jellyfin activity. JellyWatch shows you who is playing what game, on which device, in real time. --- ## Limitations - **No save sync across devices** - EmulatorJS saves are stored in the browser localStorage - **No multiplayer** - single-player only (local multiplayer works with multiple controllers on one device) - **No achievements** - no RetroAchievements integration - **Browser-dependent performance** - older phones may struggle with N64/PSX - **No native client support** - only works in the Jellyfin web interface (not Findroid, Swiftfin, etc.) - **Requires "Books" library type** - a workaround that may confuse users initially --- ## FAQ **Does JellyEmu work on mobile?** Yes. EmulatorJS provides touch controls for mobile browsers. Performance depends on the device and the emulated platform. **Can I use a controller?** Yes. Any USB or Bluetooth controller recognized by the browser Gamepad API works. Xbox, PlayStation, and 8BitDo controllers are all compatible. **Does this use server CPU for emulation?** No. The server only serves the ROM file. All emulation runs client-side in WebAssembly. **Why does it require the "Books" content type?** This is a technical requirement for how JellyEmu maps game metadata into the Jellyfin database structure. It does not affect functionality. **Can multiple users play simultaneously?** Yes. Each user runs their own emulator instance in their browser. The server just serves files. **Are save states preserved?** Yes, in the browser localStorage. They do not sync across devices or browsers. **Does JellyEmu work with Jellyfin 10.10?** No. Jellyfin 10.11+ is required. **Is this legal?** JellyEmu is a legal plugin. Emulation itself is legal. The legality of ROMs depends on your jurisdiction and whether you own the original games. This guide does not provide legal advice. **Does it work on Android TV or Fire TV?** Only if the device has a web browser that supports WebAssembly. The native Jellyfin Android TV app does not support JellyEmu - it requires the web interface. **Can I restrict game access to certain users?** Yes. Standard Jellyfin library permissions apply. Restrict the game library to specific users from Dashboard → Users → Library Access. --- ## Conclusion JellyEmu is one of the most creative Jellyfin plugins to emerge in 2026. It takes something that previously required a separate Docker container, a separate frontend, and separate user management - and collapses it into a single Jellyfin library. Your ROM collection gets the same treatment as your movie collection: beautiful metadata, organized browsing, and instant playback. The fact that "playback" means launching a full retro emulator in the browser is almost magical. For homelab enthusiasts who already run Jellyfin and have a ROM collection gathering dust, JellyEmu is a no-brainer addition. --- > **Your Jellyfin server now handles movies, music, AND retro games. Monitor it all from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and your complete homelab in your pocket. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Security Hardening 2026: CrowdSec, GeoIP Blocking, Rate Limiting & Intrusion Detection URL: https://jellywatch.app/blog/jellyfin-security-hardening-crowdsec-geoip-waf-2026 Published: 2026-05-11T12:47:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, security, crowdsec, geoip, hardening, rate-limiting, docker, intrusion-detection, 2026 # Jellyfin Security Hardening 2026: Beyond Fail2Ban If your Jellyfin server is accessible from the internet, it is being attacked. Right now. Automated bots scan the entire IPv4 space in hours looking for exposed services. Fail2Ban is a good start - but it is reactive (bans after attacks) and isolated (each server learns independently). In 2026, better tools exist. This guide covers a layered security approach that goes far beyond basic password protection. --- ## The Security Stack | Layer | Tool | What it does | |---|---|---| | 1. Network | GeoIP blocking | Block entire countries you never access from | | 2. Edge | Rate limiting | Prevent brute-force at the reverse proxy | | 3. Detection | CrowdSec | Collaborative IPS with crowd-sourced blocklists | | 4. Authentication | 2FA + SSO | Second factor for all accounts | | 5. Container | Docker hardening | Minimize attack surface | | 6. Monitoring | JellyWatch + alerts | Real-time visibility | --- ## Layer 1: GeoIP Country Blocking If you only access your server from 2-3 countries, block everything else. This eliminates 80%+ of automated attacks instantly. ### With Caddy + MaxMind GeoIP ``` # Caddyfile with geoip module jellyfin.yourdomain.com { @blocked { not maxmind_geolocation { db_path /etc/caddy/GeoLite2-Country.mmdb allow_countries FR US DE GB CA } } respond @blocked 403 reverse_proxy jellyfin:8096 } ``` ### With Nginx + ngx_http_geoip2_module ```nginx # In http block geoip2 /etc/nginx/GeoLite2-Country.mmdb { auto_reload 24h; $geoip2_country_code country iso_code; } # In server block if ($geoip2_country_code !~ ^(FR|US|DE|GB|CA)$) { return 403; } ``` ### With Cloudflare (easiest) If you use Cloudflare Tunnel or proxy: 1. Security → WAF → Custom Rules → Create Rule 2. Expression: `(not ip.geoip.country in {"FR" "US" "DE" "GB" "CA"})` 3. Action: Block Zero server-side configuration needed. --- ## Layer 2: Rate Limiting Prevent brute-force login attempts at the reverse proxy level - before they even reach Jellyfin. ### Caddy rate limiting ``` jellyfin.yourdomain.com { rate_limit { zone jellyfin_login { key {remote_host} events 5 window 1m } } reverse_proxy jellyfin:8096 } ``` ### Nginx rate limiting ```nginx # In http block limit_req_zone $binary_remote_addr zone=jellyfin_login:10m rate=5r/m; # In location block for login endpoint location /Users/AuthenticateByName { limit_req zone=jellyfin_login burst=3 nodelay; proxy_pass http://jellyfin:8096; } ``` This limits login attempts to 5 per minute per IP - legitimate users never hit this limit. --- ## Layer 3: CrowdSec - The Modern Fail2Ban CrowdSec is an open-source, collaborative intrusion prevention system. Unlike Fail2Ban: - **Crowd-sourced blocklists** - when one CrowdSec user detects an attacker, ALL users benefit - **Behavioral detection** - not just regex on logs, but scenario-based analysis - **Multi-service** - one agent protects Jellyfin, SSH, Nginx, and more - **Remediation components** - block at firewall, reverse proxy, or Cloudflare level ### Docker Compose setup ```yaml services: crowdsec: image: crowdsecurity/crowdsec:latest container_name: crowdsec environment: - COLLECTIONS=crowdsecurity/linux crowdsecurity/nginx LePresidente/jellyfin - GID=1000 volumes: - ./crowdsec/config:/etc/crowdsec - ./crowdsec/data:/var/lib/crowdsec/data - /var/log:/var/log:ro - ./jellyfin/config/log:/var/log/jellyfin:ro restart: unless-stopped crowdsec-bouncer: image: fbonalair/traefik-crowdsec-bouncer:latest container_name: crowdsec-bouncer environment: - CROWDSEC_BOUNCER_API_KEY=your_bouncer_key - CROWDSEC_AGENT_HOST=crowdsec:8080 restart: unless-stopped ``` ### Install the Jellyfin collection ```bash docker exec crowdsec cscli collections install LePresidente/jellyfin ``` This installs: - **Parser**: understands Jellyfin log format - **Scenario**: detects brute-force login attempts - **Blocklist**: community-shared attacker IPs ### How CrowdSec protects Jellyfin 1. CrowdSec reads Jellyfin logs (`/var/log/jellyfin/`) 2. Detects patterns: 5 failed logins from same IP in 1 minute 3. Creates a **decision**: ban this IP for 4 hours 4. The **bouncer** (at your reverse proxy) enforces the ban 5. The attacker IP is shared with the CrowdSec community 6. Other CrowdSec users preemptively block this IP ### CrowdSec vs Fail2Ban | Feature | CrowdSec | Fail2Ban | |---|---|---| | Detection | Behavioral scenarios | Regex on logs | | Sharing | Crowd-sourced blocklists | Isolated per server | | Performance | Go binary, fast | Python, slower | | Multi-service | One agent, many services | One jail per service | | Remediation | Multiple bouncers | iptables only | | Dashboard | Yes (web console) | No | | Docker native | Yes | Requires log access | --- ## Layer 4: Authentication Hardening Beyond 2FA (covered in our dedicated guide): ### Disable password authentication for admin Use SSO (Authelia/Authentik) as the only login method for admin accounts. Even if someone guesses the password, they cannot log in without the SSO provider. ### API key rotation Rotate your Jellyfin API keys quarterly: 1. Dashboard → API Keys → Create new key 2. Update all integrations (JellyWatch, Radarr, Sonarr, etc.) 3. Delete the old key ### Session timeout Dashboard → Networking → set reasonable session timeouts for inactive users. --- ## Layer 5: Docker Container Hardening ### Run as non-root ```yaml jellyfin: user: "1000:1000" read_only: true tmpfs: - /tmp security_opt: - no-new-privileges:true ``` ### Limit capabilities ```yaml cap_drop: - ALL cap_add: - CHOWN - SETUID - SETGID ``` ### Network isolation ```yaml networks: frontend: # Only reverse proxy connects here backend: # Internal services only ``` --- ## Layer 6: Monitoring and Alerting ### JellyWatch push notifications JellyWatch alerts you on: - Failed login attempts - New device connections - Unusual session patterns - Server offline detection ### CrowdSec dashboard Access the CrowdSec web console to see: - Blocked IPs in real time - Attack patterns and origins - Community threat intelligence ### Uptime Kuma Monitor your Jellyfin `/health` endpoint. Get alerted the moment your server goes down. --- ## The Complete Hardened docker-compose.yml ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data networks: - frontend restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest user: "1000:1000" read_only: true tmpfs: - /tmp - /cache security_opt: - no-new-privileges:true volumes: - ./jellyfin/config:/config - /mnt/media:/media:ro devices: - /dev/dri:/dev/dri networks: - frontend restart: unless-stopped crowdsec: image: crowdsecurity/crowdsec:latest environment: - COLLECTIONS=crowdsecurity/linux LePresidente/jellyfin volumes: - ./crowdsec/config:/etc/crowdsec - ./crowdsec/data:/var/lib/crowdsec/data - ./jellyfin/config/log:/var/log/jellyfin:ro networks: - backend restart: unless-stopped networks: frontend: backend: internal: true volumes: caddy_data: ``` --- ## Security Checklist | Layer | Tool | Status | |---|---|---| | HTTPS | Caddy/Nginx + Let's Encrypt | ☐ | | GeoIP blocking | Cloudflare or reverse proxy | ☐ | | Rate limiting | Reverse proxy config | ☐ | | IPS | CrowdSec + Jellyfin collection | ☐ | | 2FA | TOTP plugin or Authelia | ☐ | | Container hardening | non-root, read-only, no-new-privileges | ☐ | | Monitoring | JellyWatch + Uptime Kuma | ☐ | | API key rotation | Quarterly schedule | ☐ | | Updates | Watchtower or manual weekly | ☐ | --- ## FAQ **Is CrowdSec free?** Yes. The Security Engine is open source and free. The community blocklists are free. Premium blocklists (more comprehensive) are paid. **Does GeoIP blocking affect VPN users?** Yes. If a user connects via a VPN in a blocked country, they will be blocked. Whitelist your VPN provider's IP ranges if needed. **Can I use CrowdSec AND Fail2Ban?** You can, but it is redundant. CrowdSec replaces Fail2Ban with better detection and crowd-sourced intelligence. **Does this slow down Jellyfin?** No. GeoIP and rate limiting happen at the reverse proxy (before Jellyfin). CrowdSec reads logs asynchronously. Zero impact on playback. --- > **Your server is hardened - now monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - failed login alerts, session monitoring, and server health for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin + Stremio with Gelato: Stream Any Catalog Directly in Your Library (2026 Guide) URL: https://jellywatch.app/blog/jellyfin-gelato-stremio-integration-plugin-2026 Published: 2026-05-11T12:45:00+00:00 Author: JellyWatch Team Category: Showcase Tags: jellyfin, gelato, stremio, streaming, plugin, strm, catalog, integration, 2026 # Jellyfin + Stremio with Gelato: Stream Any Catalog Directly in Your Library (2026) Jellyfin serves your local files. Stremio streams from online sources via addons. **Gelato** merges both worlds - it brings Stremio's addon ecosystem directly into your Jellyfin server. The result: search Stremio catalogs from the Jellyfin UI, auto-import metadata into your library, and stream content without downloading it first. --- ## What Is Gelato? Gelato is a Jellyfin plugin that: 1. **Replaces Jellyfin's search** with Stremio-powered results 2. **Imports catalogs** from Stremio addons as virtual libraries in Jellyfin 3. **Streams content** via STRM files - no local storage needed 4. **Runs scheduled imports** to keep catalogs current It is open source: [github.com/lostb1t/Gelato](https://github.com/lostb1t/Gelato) --- ## How It Works (Architecture) ``` User searches in Jellyfin UI → Gelato intercepts the search → Queries configured Stremio addons → Returns results with metadata + poster → User clicks Play → Gelato resolves the stream URL via Stremio addon → Jellyfin plays the stream (or passes to client) ``` No files are downloaded to your server. Content streams directly from the source provided by the Stremio addon. --- ## Installation ### Add the repository Dashboard → Plugins → Repositories → Add: ``` Name: Gelato URL: https://raw.githubusercontent.com/lostb1t/Gelato/main/manifest.json ``` ### Install the plugin Dashboard → Plugins → Catalog → **Gelato** → Install → Restart Jellyfin ### Configure Stremio addons Dashboard → Plugins → Gelato → **Addon Configuration**: 1. Add your Stremio addon URLs (the same URLs you use in the Stremio app) 2. Common addons that work with Gelato: - **Cinemeta** - metadata for movies and TV - **The Movie Database Addon** - TMDB catalogs - **Trakt lists** - trending, popular, watchlist - **Streaming Catalogs** - what's available on Netflix, Disney+, etc. ### Configure catalog import (optional) If you want Stremio catalogs to appear as Jellyfin libraries: 1. Gelato settings → **Scheduled Tasks** 2. Enable catalog import 3. Set schedule (e.g., daily at 4 AM) 4. Select which catalogs to import Gelato creates STRM files in a designated folder. Jellyfin scans them as a regular library - complete with posters, descriptions, and ratings. --- ## Use Cases ### 1. Discovery without downloading Browse trending content from Stremio catalogs directly in Jellyfin. See what's popular without committing storage. ### 2. "Try before you download" Stream a movie via Gelato. If you like it, add it to Radarr for a proper download. If not, no storage wasted. ### 3. Unified search Instead of switching between Jellyfin and Stremio apps, search everything from one interface. ### 4. Streaming catalogs for guests Give Watch Pass users access to streaming catalogs without giving them Stremio accounts. --- ## Important Considerations ### Legal status Gelato itself is legal - it is just a plugin that connects to Stremio addons. The legality depends entirely on **which addons you configure**: - **Legal addons**: Cinemeta (metadata only), Streaming Catalogs (shows what's on paid services), Trakt lists - **Gray area**: Addons that provide direct streams of copyrighted content Use responsibly. This guide covers the technical setup, not legal advice. ### Performance - Gelato adds ~100ms to search queries (addon API calls) - Streaming quality depends on the addon source - No server CPU usage for transcoding (streams pass through) - STRM files are tiny (~100 bytes each) - negligible storage ### Limitations - Stream quality varies by addon (no guarantee of 4K/HDR) - No offline support (streams require internet) - Some addons have rate limits - Subtitle support depends on the stream source --- ## Gelato vs Running Stremio Separately | Feature | Gelato (in Jellyfin) | Stremio (separate app) | |---|---|---| | Interface | Jellyfin UI (familiar) | Stremio UI | | Local + streaming | Unified | Separate apps | | Watch history | Synced with Jellyfin | Separate | | Multi-user | Yes (Jellyfin users) | Per-device | | Controller support | Via Jellyfin clients | Limited | | Offline | No | No | --- ## FAQ **Does Gelato download files to my server?** No. It creates STRM files (text files with a URL). Content streams directly from the source. **Can I use Gelato alongside my local library?** Yes. Gelato catalogs appear as separate libraries. Your local content is untouched. **Does this work with JellyWatch?** Yes. Gelato streams appear as regular Jellyfin sessions in JellyWatch. **Is Gelato the same as the Jellyfin Stremio addon?** No. The "Jellyfin to Stremio" addon does the opposite - it makes your Jellyfin library available IN Stremio. Gelato brings Stremio INTO Jellyfin. --- > **Streaming from Gelato? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring for all Jellyfin streams. --- ## Jellyfin on Steam Deck in 2026: Complete Setup for Desktop Mode, Game Mode & Offline Viewing URL: https://jellywatch.app/blog/jellyfin-steam-deck-setup-guide-2026 Published: 2026-05-11T12:43:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, steam-deck, linux, portable, game-mode, jmp, hdr, offline, 2026 # Jellyfin on Steam Deck in 2026: Desktop Mode, Game Mode & Offline Viewing The Steam Deck is not just a gaming handheld - it is a full Linux PC running Arch-based SteamOS. Unlike the Nintendo Switch (which requires homebrew for Jellyfin), the Steam Deck runs Jellyfin **natively** with zero hacks. You have three options: the web browser, Jellyfin Media Player (JMP) in Desktop Mode, or JMP as a non-Steam game in Game Mode with full controller support. --- ## Why the Steam Deck Is Great for Jellyfin - **No homebrew required** - it is a standard Linux PC - **Full codec support** - H.264, H.265, AV1, VP9 hardware decode via AMD APU - **HDR on OLED model** - Steam Deck OLED supports HDR10 - **Controller navigation** - works in Game Mode with Steam Input - **Wi-Fi 6E** (OLED model) - fast enough for 4K remux streaming - **720p/800p display** - even 1080p encodes look sharp at this size - **Offline potential** - download files to microSD for travel --- ## Method 1: Jellyfin Media Player in Desktop Mode (Best Quality) ### Install JMP via Flatpak 1. Switch to **Desktop Mode** (hold Power → Switch to Desktop) 2. Open **Discover** (the app store) 3. Search for **Jellyfin Media Player** 4. Click **Install** 5. Launch JMP from the application menu ### Connect to your server 1. Enter your Jellyfin server URL 2. Log in with your credentials 3. Start watching ### Why JMP over the browser | Feature | JMP (Flatpak) | Firefox/Chrome | |---|---|---| | H.265 Direct Play | Yes (hardware) | No (transcodes) | | AV1 Direct Play | Yes | Yes | | HDR passthrough (OLED) | Yes | No | | Subtitle rendering (ASS) | Full styling | Basic | | Keyboard shortcuts | Full | Limited | | Gapless audio | Yes | No | JMP uses MPV as its playback engine - the same engine that powers the best Linux media players. It hardware-decodes everything the Steam Deck APU supports. --- ## Method 2: JMP in Game Mode (Controller Support) This is the killer feature. You can launch Jellyfin from Game Mode and navigate entirely with the Steam Deck controls. ### Add JMP as a non-Steam game 1. In Desktop Mode, open **Steam** 2. Click **Games → Add a Non-Steam Game** 3. Browse to: `/var/lib/flatpak/exports/bin/com.github.iwalton3.jellyfin-media-player` 4. Add it 5. Rename it to "Jellyfin" in your library ### Configure Steam Input for Jellyfin In Game Mode, press the **Steam button** on Jellyfin → **Controller Settings**: | Steam Deck control | Map to | Action in JMP | |---|---|---| | D-pad | Arrow keys | Navigate UI | | A button | Enter | Select/Play | | B button | Escape/Back | Go back | | X button | Space | Play/Pause | | Left stick | Mouse | Pointer (for web UI) | | L1/R1 | Left/Right arrow | Seek ±10 seconds | | Start | F | Toggle fullscreen | ### Launch from Game Mode Switch back to Game Mode. Jellyfin appears in your library. Launch it - full controller navigation, no keyboard needed. --- ## Method 3: Web Browser (Simplest, Least Capable) 1. In Game Mode, add Firefox or Chrome as a non-Steam game 2. Navigate to your Jellyfin server URL 3. Works but H.265 will transcode on your server Only use this if you cannot install JMP for some reason. --- ## Codec Support on Steam Deck The Steam Deck uses an AMD Van Gogh APU (custom RDNA 2 + Zen 2): | Codec | Hardware decode | Notes | |---|---|---| | H.264 (AVC) | Yes | Universal | | H.265 (HEVC) Main 10 | Yes | 4K HDR capable | | AV1 | Yes (OLED model) | LCD model: software only | | VP9 | Yes | | | MPEG-2 | Yes | Legacy content | ### HDR on Steam Deck OLED The OLED model supports HDR10 output: 1. In SteamOS: Settings → Display → Enable HDR 2. In JMP: HDR content passes through automatically 3. The 90Hz OLED panel displays HDR natively The LCD model does NOT support HDR - content plays in SDR regardless. --- ## Offline Viewing: Download to microSD The Steam Deck has a microSD slot. For travel without internet: ### Option A: Sync files directly 1. In Desktop Mode, mount your microSD 2. Use `rsync` or a file manager to copy media files 3. In JMP, add the microSD path as a local media source 4. Watch offline - no server needed ### Option B: Use Jellyfin's download feature (experimental) Some Jellyfin clients support offline downloads. JMP does not natively, but you can: 1. Install **Findroid** via sideloaded APK (Android layer not available on Deck) 2. Or simply copy files manually - the Steam Deck is a Linux PC ### Recommended format for offline For maximum battery life and smooth playback on the Deck: - **Codec**: H.265 (hardware decode = low power) - **Resolution**: 1080p (overkill for 800p screen but future-proof) - **Bitrate**: 5-10 Mbps (plenty for the small screen) - **Audio**: AAC stereo (saves battery vs surround decode) --- ## Performance and Battery Life | Activity | Battery life (LCD) | Battery life (OLED) | |---|---|---| | Streaming 1080p H.265 (Wi-Fi) | ~5-6 hours | ~6-7 hours | | Streaming 4K H.265 (Wi-Fi) | ~4-5 hours | ~5-6 hours | | Local playback (microSD) | ~6-7 hours | ~7-8 hours | | Gaming (comparison) | ~2-3 hours | ~3-4 hours | Media playback is dramatically more efficient than gaming. The GPU idles during video decode. ### Tips for maximum battery - Set screen brightness to 50% - Use H.265 content (hardware decode uses less power than H.264 on AMD) - Disable Wi-Fi if playing from microSD - Set TDP limit to 4W in Game Mode (Power → TDP Limit) --- ## Steam Deck vs Other Portable Jellyfin Options | Device | Price | Jellyfin app | Offline | HDR | Battery (video) | |---|---|---|---|---|---| | Steam Deck LCD | ~$399 | JMP (native) | Yes (manual) | No | ~6h | | Steam Deck OLED | ~$549 | JMP (native) | Yes (manual) | Yes | ~7h | | Android tablet | ~$200+ | Findroid | Yes (built-in) | Varies | ~8-10h | | iPad | ~$329+ | Swiftfin/Infuse | Yes (Infuse) | Yes | ~10h | | Nintendo Switch | ~$299 | Switchfin (homebrew) | No | No | ~4h | The Steam Deck wins on codec support and controller integration. Tablets win on battery life and offline downloads. --- ## FAQ **Do I need to install Windows on the Steam Deck?** No. JMP runs natively on SteamOS (Linux). No dual-boot needed. **Does Jellyfin work in Game Mode?** Yes - add JMP as a non-Steam game and configure controller mapping. **Can the Steam Deck handle 4K?** Yes for decode (hardware H.265/AV1). But the screen is 800p/720p, so 1080p is the sweet spot. **Does the Steam Deck 2 work with Jellyfin?** The Steam Deck 2 (if/when released) will also run SteamOS Linux - JMP will work identically. **Is there a Jellyfin app in the Steam Store?** No. Install JMP via Flatpak in Desktop Mode, then add as non-Steam game. --- > **Streaming Jellyfin on your Steam Deck? Monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see every active session including Steam Deck streams. --- ## Jellyfin AI Recommendations in 2026: LocalRecs, Smart Collections & Privacy-First Discovery URL: https://jellywatch.app/blog/jellyfin-ai-recommendations-local-privacy-first-2026 Published: 2026-05-11T12:40:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, recommendations, ai, machine-learning, localrecs, privacy, plugins, discovery, 2026 # Jellyfin AI Recommendations in 2026: Privacy-First Discovery Without the Cloud Plex has Discover. Netflix has its algorithm. Jellyfin has... nothing built-in. And that is intentional - Jellyfin does not phone home, does not track you, and does not sell your viewing habits. But "no tracking" does not have to mean "no recommendations." In 2026, the community has built tools that deliver personalized suggestions **entirely on your server** - no external API calls, no cloud dependency, no data leaving your network. This guide covers every method available. --- ## The Recommendation Stack | Tool | Method | Privacy | Setup | |---|---|---|---| | **LocalRecs** | ML embeddings (TF-IDF) | 100% local | Plugin install | | **jellynext** | Trakt lists per user | Trakt account needed | Plugin + Trakt | | **Smart Collections** | Rule-based dynamic lists | 100% local | Plugin install | | **Kometa** | External list sync | TMDB/Trakt API calls | Docker container | --- ## Method 1: LocalRecs - Machine Learning, 100% Local **LocalRecs** is the most exciting Jellyfin plugin of 2026. It generates personalized movie and TV recommendations using machine learning - entirely on your server, with zero external API calls. ### How it works 1. LocalRecs scans your library metadata (genres, actors, directors, tags, decades, ratings) 2. It builds **TF-IDF embeddings** (~1200-dimension vectors) for each item 3. It creates a **taste profile** from each user's watch history 4. It ranks unwatched items by **cosine similarity** to the user's taste 5. Results appear as a "Recommended For You" section This is the same mathematical approach used by Spotify's Discover Weekly - but running locally on your hardware. ### Installation 1. Dashboard → Plugins → Repositories → Add: ``` https://raw.githubusercontent.com/rdpharr/jellyfin-plugin-localrecs/main/manifest.json ``` 2. Dashboard → Plugins → Catalog → **LocalRecs** → Install 3. Restart Jellyfin ### Configuration Dashboard → Plugins → LocalRecs: | Setting | Recommended | Why | |---|---|---| | Minimum watch history | 10 items | Need enough data for meaningful recommendations | | Include genres weight | 0.4 | Genres are the strongest signal | | Include actors weight | 0.2 | Actors indicate taste | | Include directors weight | 0.2 | Directors indicate style preference | | Include tags weight | 0.1 | Tags add nuance | | Include decade weight | 0.1 | Era preference matters | | Refresh interval | Daily (3 AM) | Recalculate after new watches | ### What users see After configuration, each user gets a personalized "Suggested For You" row on their home screen. The recommendations improve as they watch more content. ### Performance impact - Initial embedding calculation: 2-5 minutes for 1000 movies - Daily refresh: under 1 minute - RAM usage: ~50-100 MB for the model - CPU: negligible after initial build ### Limitations - Needs at least 10 watched items per user for meaningful results - Works best with well-tagged libraries (use TMDB metadata) - Does not consider ratings (only watched/unwatched) - Movie-focused - TV show support is basic --- ## Method 2: jellynext - Trakt-Powered Per-User Recommendations **jellynext** creates virtual libraries for each user containing personalized Trakt recommendations and upcoming new seasons. ### How it works 1. Each user links their Trakt account 2. jellynext fetches Trakt's personalized recommendations for that user 3. It creates a virtual "Recommended" library visible only to that user 4. It also shows upcoming new seasons for shows the user watches ### Installation ``` Repository: https://raw.githubusercontent.com/luall0/jellynext/main/manifest.json ``` Install from catalog → Restart → Configure Trakt API credentials. ### Trade-off: Privacy Unlike LocalRecs, jellynext requires a Trakt account and makes API calls to Trakt servers. Your watch history is shared with Trakt. For users who already use Trakt for scrobbling, this is not a new concern. For privacy purists, use LocalRecs instead. ### Best for - Users who already scrobble to Trakt - Discovering content NOT in your library (Trakt recommends from its full database) - Tracking upcoming seasons --- ## Method 3: Smart Collections with jellyfin-smartlists-plugin Dynamic collections that auto-update based on rules - a simpler but effective recommendation system. ### Example smart lists that feel like recommendations | Collection name | Rule | Effect | |---|---|---| | "Because You Watched Sci-Fi" | Genre = Sci-Fi AND unwatched AND rating > 7 | Shows high-rated unwatched sci-fi | | "Hidden Gems" | Rating > 7.5 AND plays = 0 (across all users) | Nobody has watched these yet | | "New This Month" | Added in last 30 days | Fresh content discovery | | "Short Films for Tonight" | Runtime < 100 min AND unwatched | Quick watch suggestions | | "Critically Acclaimed" | Rating > 8.0 AND unwatched | Top-rated unwatched content | ### Installation ``` Repository: https://raw.githubusercontent.com/jyourstone/jellyfin-smartlists-plugin/main/manifest.json ``` ### Configuration example After install, create lists in Dashboard → Plugins → Smart Lists: ``` Name: Hidden Gems Type: Movie Filters: - Community Rating >= 7.5 - Play Count = 0 - Year >= 2020 Sort: Rating descending Limit: 50 Auto-refresh: Daily ``` --- ## Method 4: Kometa for Curated Discovery Kometa (formerly Plex Meta Manager) can sync external recommendation lists into Jellyfin collections: - **IMDb Top 250** - auto-updated collection - **Trakt Trending** - what's popular right now - **Trakt Anticipated** - upcoming releases people are excited about - **Letterboxd Top Films** - curated by the film community - **MDBList custom lists** - community-curated themed lists ```yaml # kometa config.yml libraries: Movies: metadata_path: - pmm: imdb # IMDb Top 250, Popular - pmm: trakt # Trending, Anticipated - pmm: basic # Decades, Genres ``` This is not personalized per-user, but it surfaces content your users might not find on their own. --- ## Combining Methods: The Ultimate Discovery Stack For the best experience, layer multiple approaches: 1. **LocalRecs** - personalized per-user ML recommendations (home screen row) 2. **Smart Lists** - rule-based collections visible to everyone 3. **Kometa** - curated external lists (IMDb Top 250, Trending) 4. **Editors Choice plugin** - manually featured content on the home page hero banner This gives you: - Personal recommendations (LocalRecs) - Dynamic discovery (Smart Lists) - Cultural relevance (Kometa/Trakt) - Admin curation (Editors Choice) --- ## FAQ **Does LocalRecs send my data anywhere?** No. All computation happens locally on your server. Zero network calls. **How is this different from Jellyfin's built-in "Suggestions"?** Jellyfin's built-in suggestions are basic (recently added, continue watching). LocalRecs uses actual ML embeddings to find content similar to your taste profile. **Can I use LocalRecs and jellynext together?** Yes. They create separate recommendation sources that complement each other. **Does this work for TV shows?** LocalRecs is primarily movie-focused. For TV, jellynext (via Trakt) and Smart Lists work better. **How much watch history is needed?** LocalRecs needs ~10 watched items minimum. Quality improves significantly after 30+ items. **Will this slow down my server?** No. The initial model build takes 2-5 minutes. After that, daily refreshes take under a minute. RAM usage is ~50-100 MB. --- > **Recommendations running? Monitor who is discovering new content.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing statistics, watch history, and server health for Jellyfin. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Jellyfin on TrueNAS Electric Eel (v25) in 2026: Docker Setup, GPU Passthrough & ZFS Snapshots URL: https://jellywatch.app/blog/jellyfin-truenas-electric-eel-v25-docker-setup-2026 Published: 2026-05-11T12:36:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, truenas, electric-eel, v25, docker, zfs, gpu-passthrough, nas, 2026 # Jellyfin on TrueNAS Electric Eel (v25): Complete Setup Guide (2026) TrueNAS Electric Eel (v25.04) changed everything about how apps work. The old Kubernetes-based system (TrueCharts, Helm charts) is gone. In its place: **native Docker Compose** - simpler, faster, and more familiar to anyone who has run containers before. If you are upgrading from Dragonfish (24.04) or starting fresh, this guide covers the complete Jellyfin setup on the new architecture. --- ## What Changed in Electric Eel | Feature | Dragonfish (24.04) | Electric Eel (25.04) | |---|---|---| | App engine | Kubernetes (k3s) | Docker Compose | | TrueCharts | Supported | **Not compatible** | | Custom apps | Helm charts | docker-compose.yml | | GPU passthrough | Complex (k8s device plugin) | Simple (Docker devices) | | Migration | N/A | Automatic (k8s_to_docker) | | App catalog | TrueCharts + Official | Official + Community | The migration from Kubernetes to Docker is automatic on upgrade, but Jellyfin users who relied on TrueCharts need to reconfigure. This guide starts from scratch. --- ## Prerequisites - TrueNAS SCALE 25.04 (Electric Eel) or newer - A pool with at least one dataset for apps - An Intel CPU with iGPU for hardware transcoding (recommended) - Your media files accessible on the NAS --- ## Step 1: Create ZFS Datasets Proper dataset structure is critical for ZFS snapshots and permissions. ### From the TrueNAS UI 1. **Storage → Datasets → Create Dataset** 2. Create these datasets on your pool: | Dataset | Purpose | Preset | |---|---|---| | `pool/apps/jellyfin/config` | Jellyfin configuration & metadata | Apps | | `pool/apps/jellyfin/cache` | Transcoding cache | Apps | | `pool/media` | Your media library | Generic (if not existing) | ### Why separate datasets? - **Config dataset**: snapshot this for backups - small, changes frequently - **Cache dataset**: never snapshot - temporary transcoding files - **Media dataset**: separate backup strategy - large, changes rarely ### Set permissions ``` Datasets → pool/apps/jellyfin/config → Permissions User: apps (UID 568) or your custom user Group: apps (GID 568) Apply recursively: Yes ``` --- ## Step 2: Install Jellyfin from the App Catalog ### Method A: Official App Catalog (Easiest) 1. **Apps → Discover Apps → Search "Jellyfin"** 2. Click **Install** 3. Configure: - **Application Name**: jellyfin - **Storage → Config**: select your `pool/apps/jellyfin/config` dataset - **Storage → Cache**: select your `pool/apps/jellyfin/cache` dataset - **Storage → Additional Storage**: add your media dataset as read-only mount - **Networking → Port**: 8096 (default) - **Resources → GPU**: select your Intel GPU (see Step 3) 4. Click **Install** ### Method B: Custom Docker Compose (Full Control) If you prefer writing your own compose file: 1. **Apps → Discover Apps → Custom App** 2. Paste this docker-compose.yml: ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: "568:568" network_mode: host volumes: - /mnt/pool/apps/jellyfin/config:/config - /mnt/pool/apps/jellyfin/cache:/cache - /mnt/pool/media:/media:ro devices: - /dev/dri:/dev/dri environment: - TZ=Europe/Paris restart: unless-stopped ``` 3. Click **Save** and **Deploy** --- ## Step 3: GPU Passthrough for Hardware Transcoding ### Intel iGPU (QSV) Electric Eel makes GPU passthrough trivial compared to the old Kubernetes system. #### Verify the GPU is available SSH into your TrueNAS or use the Shell: ```bash ls -la /dev/dri/ # Expected: card0 renderD128 ``` #### In the App configuration If using the official catalog app: 1. Edit the Jellyfin app 2. **Resources → GPU Configuration → Intel GPU**: check the box 3. Save If using custom Docker Compose, the `devices: - /dev/dri:/dev/dri` line handles it. #### Enable QSV in Jellyfin 1. Open Jellyfin at `http://YOUR_NAS_IP:8096` 2. Dashboard → Playback → Transcoding 3. Hardware acceleration: **Intel QuickSync (QSV)** 4. Enable: H.264, HEVC, VP9 decode 5. Enable: **Hardware Tone Mapping** 6. Save #### Verify it works Play a file that forces transcoding (set client quality to 720p). In the Jellyfin dashboard, the session should show **HW** badge. ### NVIDIA GPU If you have a discrete NVIDIA GPU: 1. **System → Advanced → Isolated GPU Devices**: do NOT isolate it 2. In the app config, select the NVIDIA GPU under Resources 3. In Jellyfin, select **NVIDIA NVENC** as hardware acceleration --- ## Step 4: ZFS Snapshots for Bulletproof Backups This is TrueNAS superpower over Docker on bare metal. ZFS snapshots are instant, atomic, and zero-cost. ### Automatic snapshot schedule 1. **Data Protection → Periodic Snapshot Tasks → Add** 2. Configure: - Dataset: `pool/apps/jellyfin/config` - Recursive: No - Schedule: Daily at 3 AM - Lifetime: 14 days 3. Save ### Manual snapshot before upgrades ```bash zfs snapshot pool/apps/jellyfin/config@pre-upgrade-$(date +%Y%m%d) ``` ### Restore from snapshot ```bash # List snapshots zfs list -t snapshot | grep jellyfin # Rollback (destroys changes after snapshot) zfs rollback pool/apps/jellyfin/config@pre-upgrade-20260510 ``` No need to stop Jellyfin for snapshots - ZFS handles consistency at the filesystem level. --- ## Step 5: Migrating from Dragonfish (24.04) If you are upgrading from TrueNAS 24.04 with the old Kubernetes-based Jellyfin: ### Automatic migration Electric Eel attempts automatic migration on upgrade: ```bash # Check migration status midclt call -job k8s_to_docker ``` ### If migration fails Common issue: TrueCharts apps do not migrate cleanly. 1. Note your current Jellyfin config path (usually `/mnt/pool/ix-applications/...`) 2. Copy the config to your new dataset: ```bash cp -a /mnt/pool/ix-applications/releases/jellyfin/volumes/ix_volumes/*/config/* /mnt/pool/apps/jellyfin/config/ ``` 3. Install Jellyfin fresh using Step 2 4. Point it to the copied config 5. Verify users, watch history, and plugins are intact ### Preserving watch history Your watch history lives in `/config/data/jellyfin.db`. As long as you copy this file to the new config dataset, all history is preserved. --- ## Step 6: Network Configuration ### Host networking (recommended) Using `network_mode: host` gives Jellyfin direct access to your LAN - best for DLNA discovery and client auto-detection. ### Bridge networking (isolated) If you prefer isolation: ```yaml ports: - "8096:8096" - "8920:8920" - "1900:1900/udp" # DLNA - "7359:7359/udp" # Discovery ``` --- ## Step 7: Performance Tuning for TrueNAS ### RAM considerations TrueNAS uses RAM for ZFS ARC cache. Jellyfin 10.11+ also uses more RAM due to EF Core caching. **Recommendation:** - 16 GB total: set ARC max to 8 GB, leave 8 GB for apps - 32 GB total: set ARC max to 16 GB, leave 16 GB for apps - 64 GB total: no tuning needed Set ARC limit: **System → Advanced → Sysctl → Add** - Variable: `vfs.zfs.arc_max` - Value: `8589934592` (8 GB in bytes) ### SSD for config If your pool is HDD-based, consider a special vdev (SSD) for the config dataset. Metadata access is random I/O - SSDs make a massive difference. ### Disable unnecessary TrueNAS services If you only use TrueNAS for Jellyfin + NAS: - Disable SMB if not needed - Disable NFS if not needed - Disable iSCSI - This frees RAM for ARC and Jellyfin --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | App won't start after upgrade | k8s_to_docker migration failed | Run `midclt call -job k8s_to_docker` manually | | GPU not visible in app | GPU isolated in System settings | Un-isolate the GPU in Advanced settings | | Permission denied on media | UID mismatch | Set dataset owner to UID 568 (apps user) | | Jellyfin slow to browse | Config on HDD | Move config dataset to SSD pool/vdev | | Transcoding falls back to CPU | /dev/dri not mapped | Verify GPU checkbox in app Resources | | Can't access from LAN | Bridge networking + firewall | Switch to host networking | --- ## TrueNAS Electric Eel vs Other NAS Platforms for Jellyfin | Feature | TrueNAS EE (v25) | Synology DSM 7 | Unraid | |---|---|---|---| | App engine | Docker Compose | Docker (Container Manager) | Docker | | GPU passthrough | Simple checkbox | Device mapping | Extra parameters | | Filesystem | ZFS (snapshots!) | Btrfs / ext4 | XFS + FUSE | | Instant backups | ZFS snapshots | Btrfs snapshots | Manual | | Free | Yes | Hardware purchase | $59 license | | Community | Large | Very large | Very large | TrueNAS wins on ZFS snapshots and free cost. Synology wins on ease of use. Unraid wins on flexibility. --- ## FAQ **Is TrueCharts still supported on Electric Eel?** No. TrueCharts relied on Kubernetes which was removed. Use the official app catalog or custom Docker Compose instead. **Can I run Jellyfin and Plex simultaneously?** Yes. They use different ports and can share the same media dataset (read-only). **How much RAM does Jellyfin need on TrueNAS?** Jellyfin itself needs 1-4 GB. But TrueNAS needs RAM for ZFS ARC. Minimum 16 GB total, 32 GB recommended. **Does ZFS snapshot include my media files?** Only if you snapshot the media dataset. For Jellyfin config backups, snapshot only the config dataset - it is small and fast. **Can I use NVIDIA GPU on TrueNAS?** Yes. Electric Eel supports NVIDIA GPU passthrough to Docker containers natively. --- > **Running Jellyfin on TrueNAS? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, CPU alerts, and server health for your TrueNAS Jellyfin server. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin on Nintendo Switch: Switchfin Setup Guide (2026) URL: https://jellywatch.app/blog/jellyfin-nintendo-switch-switchfin-setup-2026 Published: 2026-05-04T17:34:27+00:00 Author: JellyWatch Team Category: Showcase Tags: jellyfin, nintendo-switch, switchfin, client, 2026 # Jellyfin on Nintendo Switch: Switchfin Setup Guide (2026) Yes, you can stream your Jellyfin library on a Nintendo Switch. **Switchfin** is an open-source Jellyfin client that runs on homebrew-enabled Switch consoles. It turns your portable gaming device into a media player for road trips, hotel rooms, or anywhere you want to watch your library without a phone or laptop. --- ## What Is Switchfin? Switchfin is a native Jellyfin client for the Nintendo Switch, built with C++ and the Switch homebrew SDK. It connects to your Jellyfin server and streams media directly to the Switch screen or to a TV via the dock. - **Source:** [github.com/dragonflylee/switchfin](https://github.com/dragonflylee/switchfin) - **License:** Open source - **Status:** Beta (actively maintained) - **Requirements:** A Nintendo Switch with homebrew access (CFW) --- ## Requirements Before you start, you need: - A **Nintendo Switch** (original or OLED model - Switch Lite works for handheld only) - **Custom Firmware (CFW)** installed (Atmosphère is the standard) - A **microSD card** with enough space for the Switchfin NRO file - Your Jellyfin server accessible from the Switch network ### Important: Homebrew Requirement Switchfin requires a homebrew-enabled Switch. This means: - Your Switch must be running custom firmware (Atmosphère) - You need access to the Homebrew Menu - This is only possible on certain Switch hardware revisions - Running CFW may void your warranty and carries a ban risk for online services If your Switch is not already running homebrew, this guide does not cover the CFW installation process. Refer to the Switch homebrew community for setup instructions. --- ## Installation ### Step 1: Download Switchfin 1. Go to the [Switchfin Releases page](https://github.com/dragonflylee/switchfin/releases) 2. Download the latest `switchfin.nro` file 3. Copy it to your Switch microSD card at: `/switch/switchfin.nro` ### Step 2: Launch Switchfin 1. Boot your Switch into CFW 2. Open the **Homebrew Menu** (hold R while launching a game, or use the Album app) 3. Find **Switchfin** in the homebrew list 4. Launch it ### Step 3: Connect to Your Jellyfin Server 1. On the Switchfin main screen, select **Add Server** 2. Enter your Jellyfin server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 3. Enter your username and password 4. Connect Your library appears on screen. Browse and play. --- ## Codec and Resolution Support The Nintendo Switch has a Tegra X1 processor with hardware video decoding capabilities: | Codec | Support | Notes | |---|---|---| | H.264 (AVC) | Yes (hardware decode) | Up to 1080p | | H.265 (HEVC) | Yes (hardware decode) | Up to 1080p | | VP9 | Partial | Software decode, limited performance | | AV1 | No | Not supported by Tegra X1 | | AAC audio | Yes | | | AC3/EAC3 | Yes | | | TrueHD/DTS | No | Server transcodes to compatible format | ### Resolution limits | Mode | Maximum resolution | |---|---| | Handheld | 720p | | Docked (TV) | 1080p | The Switch cannot output 4K. If your files are 4K, the Jellyfin server transcodes them down to 1080p (or the Switch requests a lower quality stream). --- ## Features Switchfin supports: - Library browsing (Movies, TV Shows) - Video playback with hardware decoding - Subtitle display (SRT, ASS) - Audio track selection - Resume playback (syncs progress with Jellyfin) - D-pad and touchscreen navigation - Docked mode (output to TV via HDMI) - Multiple server support - User switching --- ## Limitations - **No 4K** - Switch hardware caps at 1080p - **No HDR** - Switch display is SDR only - **No AV1** - Tegra X1 does not have an AV1 decoder - **No Live TV** - not implemented - **No music playback** - video-focused client - **Requires CFW** - not available on stock Switch firmware - **No auto-update** - must manually download new NRO versions - **Performance varies** - complex H.265 content may stutter in software decode scenarios --- ## Is It Worth It? ### Good use cases - **Travel** - watch your library on a plane, train, or hotel without carrying a laptop - **Bedtime viewing** - the Switch OLED screen is excellent for handheld media consumption - **Kids** - give kids access to their Jellyfin library on a device they already own - **Docked backup** - a secondary TV client when your main streaming device is in use ### Not ideal for - **Primary home theater** - a $50 streaming stick is better in every way for TV use - **4K HDR content** - the Switch cannot display it - **Large libraries** - navigation with Joy-Cons is slower than a proper remote - **Users without CFW** - if your Switch is not already homebrew-enabled, the barrier to entry is high --- ## Performance Tips ### Optimize for the Switch 1. **Set client bitrate to 8-20 Mbps** - the Switch Wi-Fi is not the fastest; avoid requesting full remux bitrates 2. **Use H.264 content when possible** - hardware decode is most reliable for H.264 3. **Connect to 5 GHz Wi-Fi** - the Switch supports 5 GHz and it provides better throughput than 2.4 GHz 4. **Use Ethernet in docked mode** - with a USB-to-Ethernet adapter, you get stable wired connectivity 5. **Avoid PGS subtitles** - they trigger a full video transcode on your server; use SRT instead ### Server-side settings for Switch users In Jellyfin, you can create a user profile specifically for Switch viewing: - Dashboard → Users → Create a "Switch" user - Set remote streaming bitrate limit to 15 Mbps - This prevents the Switch from requesting streams it cannot handle smoothly --- ## Updating Switchfin Switchfin does not auto-update. To update: 1. Check the [GitHub Releases page](https://github.com/dragonflylee/switchfin/releases) for new versions 2. Download the latest `switchfin.nro` 3. Replace the old file on your microSD card at `/switch/switchfin.nro` 4. Relaunch from the Homebrew Menu --- ## Alternatives for Portable Jellyfin If you do not have a homebrew Switch, other portable options exist: | Device | Price | Jellyfin app | Offline downloads | |---|---|---|---| | Android phone/tablet | Varies | Findroid / Official | Yes (Findroid) | | iPad | From $329 | Swiftfin / Infuse | Yes (Infuse) | | Steam Deck | ~$399 | Jellyfin Media Player | No | | Nintendo Switch (CFW) | Already owned | Switchfin | No | For most users, a phone or tablet with Findroid (Android) or Swiftfin (iOS) is the more practical portable Jellyfin solution. Switchfin is best for users who already have a homebrew Switch and want to consolidate devices. --- ## FAQ **Does Switchfin work on Switch Lite?** Yes, in handheld mode only (Switch Lite has no dock/HDMI output). Resolution is capped at 720p. **Does Switchfin work on the Switch 2?** As of May 2026, the Switch 2 homebrew scene is in its infancy. Switchfin is built for the original Switch (Tegra X1). A Switch 2 port may come later as the homebrew community matures. **Can I download content for offline viewing?** No. Switchfin is streaming-only. You need an active network connection to your Jellyfin server. **Will using Switchfin get my Switch banned?** Switchfin itself does not connect to Nintendo servers. However, running CFW in general carries a ban risk for Nintendo Online services. Use airplane mode or a dedicated "offline" Switch for homebrew to minimize risk. **Does it support controller input?** Yes. Joy-Cons, Pro Controller, and touchscreen are all supported. D-pad navigates the library, A selects, B goes back. **Can I use Switchfin while docked?** Yes. When docked, output is 1080p via HDMI. The experience is similar to any other streaming device connected to your TV. **Is there audio passthrough to a soundbar when docked?** The Switch outputs PCM audio via HDMI. There is no bitstream passthrough for Dolby or DTS. Audio is decoded on the Switch and sent as PCM. --- ## Conclusion Switchfin is a niche but genuinely useful Jellyfin client. For homebrew Switch owners who travel frequently, it eliminates the need to carry a separate streaming device. The 720p OLED screen on the Switch OLED model is surprisingly good for media consumption in handheld mode. It is not a replacement for a proper streaming stick on your TV. But as a portable companion to your Jellyfin server, it fills a unique gap that no other device quite matches. --- > **Streaming Jellyfin on your Switch? Monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see every active session including Switchfin, with codec details and transcode status. --- ## How to Make Jellyfin Look Like Netflix in 5 Minutes (2026) URL: https://jellywatch.app/blog/make-jellyfin-look-like-netflix-css-theme-2026 Published: 2026-05-04T17:34:27+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, netflix, theme, css, jellyflix, skin-manager, 2026 # How to Make Jellyfin Look Like Netflix in 5 Minutes (2026) The default Jellyfin interface is clean and functional. But if you share your server with family or friends, a Netflix-like theme makes the experience feel premium and familiar. The **JellyFlix** theme transforms Jellyfin into something that looks remarkably like Netflix - red accents, bold typography, hero banners, and cinematic card hover effects. This takes less than 5 minutes. --- ## Method 1: Skin Manager Plugin (One Click) The fastest method. No CSS knowledge required. ### Step 1: Install Skin Manager 1. Dashboard → **Plugins** → **Repositories** → Add: - Name: `Awesome Jellyfin` - URL: `https://raw.githubusercontent.com/awesome-jellyfin/awesome-jellyfin/main/catalog.json` 2. Dashboard → **Plugins** → **Catalog** → search **Skin Manager** → **Install** 3. **Restart Jellyfin** ### Step 2: Add the JellyFlix Repository 1. Dashboard → **Plugins** → **Skin Manager** 2. Click **Add Repository** 3. Enter: `https://raw.githubusercontent.com/prayag17/JellyFlix/master/skin.json` 4. Click **Save** ### Step 3: Apply JellyFlix 1. In Skin Manager, find **JellyFlix** in the theme list 2. Click **Apply** 3. Refresh your browser (Ctrl+Shift+R) Done. Your Jellyfin now looks like Netflix. --- ## Method 2: Manual CSS (Copy-Paste) If you prefer not to install a plugin, paste the CSS directly: 1. Dashboard → **General** → scroll to **Custom CSS Code** 2. Paste the JellyFlix CSS from the [GitHub repository](https://github.com/prayag17/JellyFlix) 3. Click **Save** 4. Refresh your browser The full CSS is available at: `https://raw.githubusercontent.com/prayag17/JellyFlix/master/default.css` You can use an `@import` statement instead of pasting the entire CSS: ```css @import url("https://raw.githubusercontent.com/prayag17/JellyFlix/master/default.css"); ``` Paste this single line into the Custom CSS field. Jellyfin loads the theme from GitHub on each page load. --- ## What Changes JellyFlix transforms the following elements: ### Home page - **Hero banner** - a full-width featured content section at the top, just like Netflix - **Red accent color** (#E50914) throughout the interface - **Card hover effects** - posters scale up smoothly on hover with a shadow - **Cleaner navigation bar** - simplified top bar with Netflix-style layout ### Library browsing - **Larger poster cards** with rounded corners - **Bold white typography** on dark backgrounds - **Smooth transitions** between pages - **Backdrop blur** behind content sections ### Player - **Minimal player controls** with Netflix-style progress bar - **Dark overlay** during playback controls --- ## Customizing the Accent Color JellyFlix uses Netflix red by default. To change it, add this after the JellyFlix import: ```css :root { --accent: #0071EB; /* Disney+ blue */ } ``` Popular alternatives: | Color | Hex | Looks like | |---|---|---| | Netflix red | #E50914 | Netflix (default) | | Disney+ blue | #0071EB | Disney+ | | Spotify green | #1DB954 | Spotify | | HBO purple | #B535F6 | HBO Max | | Amazon blue | #00A8E1 | Prime Video | | Warm orange | #FF6B35 | Crunchyroll | --- ## Before and After ### Before (default Jellyfin) - Standard blue accent color - Flat poster grid - Simple navigation bar - No hero section - Basic hover effects ### After (JellyFlix) - Netflix red accent throughout - Full-width hero banner on home page - Cinematic poster hover with scale and shadow - Bold typography - Dark, immersive background - Smooth page transitions The transformation is dramatic. Users who have never seen Jellyfin before often mistake it for a commercial streaming service. --- ## Does It Work on TV Clients? No. Custom CSS only applies to the **Jellyfin web interface** (browser, Jellyfin Media Player, and web-based TV apps like the LG webOS and Samsung Tizen apps). Native clients (Findroid, Swiftfin, Jellyfin Android TV) have their own UI and do not load web CSS. | Client | JellyFlix visible? | |---|---| | Web browser | Yes | | Jellyfin Media Player (desktop) | Yes | | LG webOS app | Yes (web-based) | | Samsung Tizen app | Yes (web-based) | | Findroid (Android) | No | | Swiftfin (iOS/tvOS) | No | | Jellyfin Android TV | No | | Infuse | No | --- ## Combining JellyFlix with Other Tweaks JellyFlix is a base theme. You can add additional CSS on top: ### Hide the Cast & Crew section ```css #castCollapsible { display: none !important; } ``` ### Make the scrollbar darker ```css ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #111; } ::-webkit-scrollbar-thumb { background: #333; border-radius: 3px; } ``` ### Hide the "Shuffle" button ```css .btnShuffle { display: none !important; } ``` ### Increase poster size ```css .card { font-size: 1.1vw !important; } ``` Add these snippets below the JellyFlix import in your Custom CSS field. --- ## Troubleshooting | Problem | Fix | |---|---| | Theme not applying | Hard refresh: Ctrl+Shift+R | | Theme partially broken | Clear browser cache completely | | Theme reverts after Jellyfin update | Re-apply via Skin Manager or re-paste CSS | | Some elements look wrong | JellyFlix may need an update for the latest Jellyfin version - check GitHub | | @import not loading | Some browsers block cross-origin CSS - paste the full CSS instead | --- ## Other Netflix-Like Themes If JellyFlix is not quite right, alternatives exist: | Theme | Style | Install | |---|---|---| | **JellyFlix** | Netflix clone (closest match) | Skin Manager | | **Ultrachromic** | Dark, cinematic, vibrant | Skin Manager | | **Jellyfin-Netflix** (DevilsDesigns) | Another Netflix interpretation | Skin Manager | | **Custom CSS** | Build your own | Dashboard | All are available via Skin Manager with their respective repository URLs. --- ## FAQ **Does JellyFlix affect performance?** No. CSS is purely visual - it does not add any processing load to your server or client. **Can each user have a different theme?** Yes. Each user can set their own CSS in User Settings → Display → Custom CSS. This overrides the server-wide theme for that user only. **Will JellyFlix break after a Jellyfin update?** Possibly. Major Jellyfin updates sometimes change CSS class names. Check the JellyFlix GitHub for compatibility updates after upgrading Jellyfin. **Can I use JellyFlix on Emby?** No. JellyFlix targets Jellyfin-specific CSS classes. Emby has a different UI structure. --- ## Conclusion Five minutes. One plugin install or one CSS paste. Your Jellyfin server goes from "functional open-source project" to "this looks like Netflix." Your users will notice the difference immediately. The best part: it is completely free, reversible, and does not affect server performance in any way. --- > **Your Jellyfin looks like Netflix - now monitor it like a pro.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and push notifications for Jellyfin admins. --- ## FluentFin Review 2026: The Best-Looking Jellyfin Client for Windows 11 URL: https://jellywatch.app/blog/fluentfin-jellyfin-windows-client-review-2026 Published: 2026-05-04T17:34:27+00:00 Author: JellyWatch Team Category: Showcase Tags: fluentfin, jellyfin, windows, client, winui3, 2026 # FluentFin Review 2026: The Best-Looking Jellyfin Client for Windows 11 If you use Windows 11 and Jellyfin, you have probably been using Jellyfin Media Player (JMP) - a Qt-based wrapper around the web UI with MPV as the playback engine. It works well, but it looks like a 2018 app on a 2026 operating system. **FluentFin** changes that. It is a native Windows 11 Jellyfin client built with **WinUI 3** - Microsoft's modern UI framework. It follows Fluent Design guidelines with Mica materials, rounded corners, smooth animations, and proper dark mode. It looks and feels like it belongs on Windows 11. --- ## What Is FluentFin? FluentFin is a free, open-source Jellyfin client built specifically for Windows. It is not a web view, not Electron, not a wrapper - it is a genuine native Windows application using WinUI 3 and the Windows App SDK. - **Source:** [github.com/insomniachi/FluentFin](https://github.com/insomniachi/FluentFin) - **License:** MIT - **Status:** Beta (active development, frequent updates) - **Platform:** Windows 10/11 only --- ## Installation ### Method 1: GitHub Releases 1. Go to the [FluentFin Releases page](https://github.com/insomniachi/FluentFin/releases) 2. Download the latest `.msix` package 3. Double-click to install (Windows handles MSIX natively) 4. FluentFin appears in your Start menu ### Method 2: WinGet (if available) ```powershell winget install FluentFin ``` Check the GitHub README for the latest winget package name. --- ## First Impressions: The UI The moment you open FluentFin, the difference from JMP is striking: - **Mica material** - the translucent background effect that adapts to your wallpaper - **Rounded corners** on every element - cards, buttons, dialogs - **Smooth animations** - page transitions, hover effects, loading states - **System dark/light mode** - follows your Windows theme automatically - **Proper window management** - snap layouts, title bar integration, taskbar preview The library grid displays your movies and shows with clean poster cards. Navigation uses a sidebar with icons for Home, Libraries, Search, and Settings. Everything feels responsive and native. --- ## Codec Support FluentFin uses Windows' built-in media decoders (Media Foundation) for playback. This means codec support depends on what Windows has installed: | Codec | Support | Notes | |---|---|---| | H.264 (AVC) | Yes | Built into Windows | | H.265 (HEVC) | Yes* | Requires HEVC Video Extensions from Microsoft Store (~$0.99 or free via device manufacturer) | | AV1 | Yes | Built into Windows 10 1903+ | | VP9 | Yes | Built into Windows | | AAC | Yes | Built into Windows | | AC3/EAC3 | Yes | Built into Windows | | TrueHD | Partial | Depends on audio driver | | DTS | Requires DTS codec | Available from Microsoft Store | **Important:** If you have not installed the HEVC Video Extensions, H.265 content will trigger a server-side transcode. Install it from the Microsoft Store for Direct Play. ### Compared to JMP JMP uses MPV as its playback engine, which includes its own decoders for virtually every codec. JMP handles H.265, TrueHD, DTS, and exotic formats without any additional Windows codecs. **FluentFin relies on Windows codecs. JMP brings its own.** This is the main technical trade-off. --- ## HDR Support FluentFin supports HDR playback on Windows 11 with HDR-capable displays: - HDR10 passthrough works when Windows HDR mode is enabled - The app respects the system HDR toggle - Dolby Vision is not supported (falls back to HDR10) HDR support is improving with each release but is not yet as mature as JMP, which has had years of MPV-based HDR refinement. --- ## Features ### What FluentFin does well - **Beautiful library browsing** - the primary use case, and it excels here - **Fast startup** - lighter than JMP, launches in under 2 seconds - **Search** - instant search with results as you type - **Continue Watching** - prominent on the home screen - **Next Up** - TV show episode tracking - **User switching** - multiple Jellyfin users supported - **Keyboard shortcuts** - Space (play/pause), F (fullscreen), arrow keys (seek) ### What is still in development - **Offline downloads** - not yet available - **SyncPlay** - group watch support is planned - **Live TV** - basic support, still maturing - **Music playback** - functional but not the focus - **Chromecast** - not supported --- ## FluentFin vs Jellyfin Media Player: When to Use Each | Priority | Choose FluentFin | Choose JMP | |---|---|---| | Modern Windows 11 UI | ✓ | | | Maximum codec support | | ✓ | | HDR reliability | | ✓ | | Fast, lightweight | ✓ | | | Subtitle rendering (ASS) | | ✓ | | TrueHD/DTS without extra codecs | | ✓ | | Native Windows feel | ✓ | | | Stability (production use) | | ✓ | ### The honest recommendation **If your library is mostly H.264 and H.265** (with HEVC Extensions installed) and you value a modern, beautiful interface: **use FluentFin**. **If you have exotic codecs, need reliable HDR, or want guaranteed Direct Play on everything:** stick with **JMP** until FluentFin matures further. **Many users run both** - FluentFin for casual browsing and JMP for problematic files. --- ## Performance FluentFin is noticeably lighter than JMP: | Metric | FluentFin | JMP | |---|---|---| | Startup time | ~1.5 seconds | ~3-4 seconds | | RAM at idle | ~80 MB | ~200 MB | | RAM during playback | ~150-300 MB | ~300-500 MB | The WinUI 3 framework is efficient. The app feels snappy even on modest hardware. --- ## Known Limitations (Beta) As of May 2026, FluentFin is still in beta. Known issues: - Some subtitle formats render incorrectly (ASS styling not fully supported) - Occasional playback stalls on very high bitrate files (80+ Mbps remuxes) - No picture-in-picture mode - No system media transport controls integration (yet) - Updates require manual download from GitHub (no auto-update) The developer is active and responsive on GitHub. Issues are typically addressed within days. --- ## FAQ **Is FluentFin free?** Yes. Free and open source under the MIT license. **Does it work on Windows 10?** Yes, but the Mica material effects require Windows 11. On Windows 10 it falls back to a solid background. **Can I use FluentFin and JMP on the same machine?** Yes. They are independent applications that both connect to your Jellyfin server. **Does FluentFin support multiple servers?** Yes. You can add multiple Jellyfin servers and switch between them. **Is there a macOS or Linux version?** No. FluentFin is Windows-only (WinUI 3 is a Windows framework). For macOS use Infuse or JMP. For Linux use Delfin or JMP. --- ## Conclusion FluentFin is the Jellyfin client Windows 11 deserves. It is beautiful, fast, and actively developed. The codec gap compared to JMP is real but narrowing. For daily library browsing and H.264/H.265 playback, it is already the better experience on Windows. Keep JMP installed for edge cases. Use FluentFin for everything else. --- > **Watching on FluentFin? Monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see every active session including desktop clients, with codec details and transcode status. --- ## Breezyfin for LG webOS: The Alternative Jellyfin Client for LG Smart TVs (2026) URL: https://jellywatch.app/blog/breezyfin-jellyfin-lg-webos-alternative-client-2026 Published: 2026-05-04T17:34:27+00:00 Author: JellyWatch Team Category: Showcase Tags: breezyfin, jellyfin, lg, webos, client, 2026 # Breezyfin for LG webOS: The Alternative Jellyfin Client for LG Smart TVs (2026) The official Jellyfin app for LG webOS is a web-based wrapper - it packages the Jellyfin web interface into a webOS application. It works, but it inherits all the limitations of a browser: slower navigation, higher memory usage, and occasional input lag with the LG Magic Remote. **Breezyfin** is a community-developed alternative that aims to deliver a faster, more native-feeling Jellyfin experience on LG TVs. --- ## What Is Breezyfin? Breezyfin is an open-source Jellyfin client built specifically for the LG webOS platform. Unlike the official app (which wraps the generic Jellyfin web UI), Breezyfin is designed from the ground up for the TV form factor and webOS constraints. - **Source:** [github.com/nicknsy/breezyfin](https://github.com/nicknsy/breezyfin) - **License:** Open source - **Status:** Beta (active development) - **Platform:** LG webOS 5.0+ (2020 and newer LG TVs) --- ## How It Differs from the Official App | Feature | Official Jellyfin (webOS) | Breezyfin | |---|---|---| | Architecture | Web UI wrapper | Purpose-built for webOS | | Navigation speed | Moderate (web rendering) | Faster (optimized rendering) | | Memory usage | Higher (full web app) | Lower (lighter framework) | | Remote control | Pointer + D-pad | Optimized for D-pad | | Startup time | 3-5 seconds | 1-3 seconds | | Customization | Limited | TV-focused layout | | Maturity | Stable | Beta | The key advantage: Breezyfin is built to work within webOS memory and performance constraints rather than fighting against them. LG TVs have limited RAM (1.5-3 GB shared with the OS), and a lighter client means smoother operation. --- ## Installation ### Method 1: webOS Dev Mode (Sideload) Breezyfin is not in the LG Content Store. You need to sideload it via Developer Mode. **Prerequisites:** - LG TV with webOS 5.0 or newer - A computer on the same network - An LG Developer account (free at [webostv.developer.lge.com](https://webostv.developer.lge.com)) **Steps:** 1. On your LG TV, install the **Developer Mode** app from the LG Content Store 2. Open Developer Mode, sign in with your LG Developer account 3. Enable **Dev Mode** and note the TV IP address 4. On your computer, install the webOS CLI tools: ```bash npm install -g @pocketnet/webos-cli ``` 5. Download the latest Breezyfin `.ipk` file from the GitHub Releases page 6. Connect to your TV: ```bash ares-setup-device --add tv --info "{"host":"TV_IP", "port":"9922"}" ares-novacom --device tv --getkey ``` 7. Install the IPK: ```bash ares-install --device tv breezyfin_latest.ipk ``` 8. Breezyfin appears in your app list ### Method 2: Homebrew Channel (if available) Some LG TV homebrew communities provide easier installation methods. Check the Breezyfin GitHub for community-maintained installation guides. ### Important: Dev Mode Expiration LG Developer Mode sessions expire after **50 hours** unless you renew them. You must open the Developer Mode app on your TV periodically to extend the session. If it expires, sideloaded apps stop working until you renew. This is the biggest drawback of sideloading on LG TVs compared to Samsung (which has no such limitation in Developer Mode). --- ## Current Features As of May 2026, Breezyfin supports: - Library browsing (Movies, TV Shows, Music) - Video playback with webOS native player - D-pad optimized navigation - User authentication - Continue Watching and Next Up - Subtitle selection - Audio track selection - Server discovery on local network ### Codec Support Breezyfin uses the LG TV native media player, so codec support is identical to the official app: - H.264, H.265, VP9: Direct Play on all supported models - AV1: Direct Play on 2022+ models - HDR10, Dolby Vision: supported on compatible hardware - Audio: AAC, AC3, EAC3, Dolby Atmos (via DD+) The codec capabilities are determined by your TV hardware, not the app. --- ## What Is Still Missing Breezyfin is in beta. Features not yet implemented: - Live TV and DVR - SyncPlay (group watch) - Music-focused interface - Parental controls UI - Multiple server support - Search functionality (in progress) - Intro Skip button integration The developer is active and accepts community contributions. --- ## Should You Switch from the Official App? ### Switch to Breezyfin if: - The official app feels sluggish on your TV - You prefer D-pad navigation over the Magic Remote pointer - You have a 2020-2022 LG TV with limited RAM where the official app struggles - You enjoy testing community software and providing feedback ### Stay with the official app if: - You need Live TV support - You want guaranteed stability - You do not want to deal with Developer Mode expiration - Your TV runs the official app smoothly already --- ## The Developer Mode Problem The 50-hour Developer Mode expiration is the elephant in the room. Every 50 hours, you must: 1. Open the Developer Mode app on your TV 2. Click "Extend" to renew the session 3. If you forget, all sideloaded apps (including Breezyfin) stop working This is an LG platform limitation, not a Breezyfin issue. It affects all sideloaded webOS apps. **Workaround:** Some community tools automate the renewal process via the webOS CLI. Check the LG homebrew community for scripts that handle this. --- ## FAQ **Is Breezyfin free?** Yes. Free and open source. **Does it work on older LG TVs (pre-2020)?** webOS 4.x (2019) may work but is not officially supported. webOS 3.x and earlier are not compatible. **Will Breezyfin ever be in the LG Content Store?** Unlikely in the short term. LG Content Store submission requires a business entity and compliance review. Community apps typically remain sideload-only. **Can I run both the official app and Breezyfin?** Yes. They are separate applications and do not conflict. **Does Breezyfin support Dolby Vision?** Yes, if your LG TV hardware supports it. The app uses the native webOS media player. --- ## Conclusion Breezyfin is a promising alternative for LG TV owners who want a faster, lighter Jellyfin experience. The Developer Mode expiration is a real friction point, but for users willing to manage it, the performance improvement over the official web-based app is noticeable - especially on older or RAM-constrained LG models. Watch the GitHub repository for updates. As the project matures, it may become the recommended LG client for power users. --- > **Jellyfin on your LG TV? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see what is playing on every client including LG webOS, with codec details and transcode status. --- ## Sync Jellyfin Watch History to Letterboxd in 2026: Plugin Setup Guide URL: https://jellywatch.app/blog/jellyfin-letterboxd-sync-plugin-guide-2026 Published: 2026-05-04T17:34:27+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, letterboxd, sync, plugin, movies, 2026 # Sync Jellyfin Watch History to Letterboxd in 2026: Plugin Setup Guide Letterboxd is the social network for film lovers - a place to log movies, write reviews, and discover what friends are watching. If you watch movies on Jellyfin, manually logging each one to Letterboxd is tedious. The **jellyfin-plugin-letterboxd-sync** plugin automates this entirely. Every movie you finish on Jellyfin automatically appears in your Letterboxd diary. --- ## What the Plugin Does The Letterboxd sync plugin: - Detects when you finish watching a movie on Jellyfin - Marks it as watched on your Letterboxd account - Syncs the watch date - Works for all users on your server (each with their own Letterboxd account) It does **not**: - Sync ratings (Letterboxd API limitation) - Sync TV shows (Letterboxd is movies only) - Import Letterboxd history back into Jellyfin - Sync watchlists --- ## Prerequisites - Jellyfin 10.9 or newer - A Letterboxd account (free or Pro) - The plugin repository added to your Jellyfin server --- ## Step 1: Add the Plugin Repository 1. Open Jellyfin Dashboard 2. Navigate to **Plugins → Repositories** 3. Click **Add** 4. Enter: - Name: `Letterboxd Sync` - URL: `https://raw.githubusercontent.com/Gizmo091/jellyfin-plugin-letterboxd-sync/main/manifest.json` 5. Click **Save** --- ## Step 2: Install the Plugin 1. Go to **Plugins → Catalog** 2. Search for **Letterboxd** 3. Click **Install** 4. **Restart Jellyfin** --- ## Step 3: Configure Your Letterboxd Account After restart: 1. Go to **Plugins → Letterboxd Sync** 2. Enter your Letterboxd credentials: - **Username:** your Letterboxd username - **Password:** your Letterboxd password 3. Select which Jellyfin user to link to this Letterboxd account 4. Click **Save** ### For multiple users If multiple people on your server use Letterboxd, configure each Jellyfin user with their own Letterboxd credentials in the plugin settings. --- ## Step 4: Test the Sync 1. Watch a movie on Jellyfin (or mark one as played) 2. Wait a few minutes for the sync cycle 3. Check your Letterboxd diary - the movie should appear with today's date --- ## How the Sync Works The plugin runs on a schedule (configurable interval, default: every 30 minutes). On each cycle: 1. It checks Jellyfin for newly completed movies (played status = true) 2. It matches the movie to Letterboxd using TMDB ID 3. It logs the movie to your Letterboxd diary with the watch date 4. It marks the sync as complete to avoid duplicates ### Matching accuracy The plugin uses **TMDB IDs** for matching. Since both Jellyfin and Letterboxd use TMDB as a metadata source, matching is highly accurate. Mismatches are rare and typically only occur with very obscure titles. --- ## Configuration Options | Setting | Default | Description | |---|---|---| | Sync interval | 30 minutes | How often the plugin checks for new watches | | Sync on mark played | Yes | Sync when manually marking a movie as played | | Minimum watch percentage | 80% | How much of the movie must be watched to trigger sync | --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Movie not syncing | Watch percentage below threshold | Watch more of the movie or lower the threshold | | Wrong movie logged | TMDB ID mismatch | Fix the movie metadata in Jellyfin (Edit → Identify) | | Authentication error | Wrong Letterboxd credentials | Re-enter username and password in plugin settings | | Duplicate entries | Plugin re-syncing old watches | Check the plugin logs for sync state issues | | TV shows not syncing | Expected behavior | Letterboxd only supports movies | ### Check plugin logs Dashboard → Logs → filter for "Letterboxd" to see sync activity and any errors. --- ## Limitations - **Movies only** - Letterboxd does not support TV shows, so episodes are never synced - **One-way sync** - Jellyfin → Letterboxd only. Movies logged directly on Letterboxd do not appear in Jellyfin - **No rating sync** - the Letterboxd API does not support writing ratings programmatically - **No review sync** - reviews must be written on Letterboxd directly - **Requires Letterboxd credentials** - the plugin authenticates directly with Letterboxd --- ## Privacy Considerations The plugin stores your Letterboxd credentials in the Jellyfin plugin configuration. This data is stored on your server only - it is never sent to any third party other than Letterboxd itself for authentication. If you are uncomfortable storing credentials, consider using the Trakt plugin instead (which uses OAuth tokens rather than passwords) and syncing Trakt to Letterboxd via third-party tools. --- ## Alternative: Manual CSV Import If you prefer not to use the plugin, Letterboxd supports CSV diary imports: 1. Export your Jellyfin watch history (via Playback Reporting plugin or JellyWatch) 2. Format it as a CSV with columns: `Title, Year, WatchedDate` 3. Import at [letterboxd.com/import](https://letterboxd.com/import/) This is a one-time bulk import rather than ongoing sync. --- ## FAQ **Does this work with Letterboxd Pro?** Yes. The plugin works with both free and Pro Letterboxd accounts. **Can I sync my entire watch history retroactively?** The plugin syncs from the moment it is installed. For historical data, use the CSV import method or run a manual sync from the plugin settings. **Does it sync re-watches?** Yes. If you watch a movie again, it logs a new diary entry on Letterboxd. **Will this affect my Letterboxd statistics?** Yes. Synced movies count toward your Letterboxd stats, diary, and year-in-review. **Is there an Emby equivalent?** Not currently. This plugin is Jellyfin-specific. --- ## Conclusion The Letterboxd sync plugin is a small quality-of-life improvement that film lovers appreciate. Watch a movie on Jellyfin, and it appears in your Letterboxd diary automatically. No manual logging, no forgetting to add it later. Combined with the Trakt plugin (for broader watch history backup) and JellyWatch (for viewing statistics on your phone), your movie-watching life is fully tracked and automated. --- > **Track your movies across Jellyfin and Letterboxd - and monitor your server too.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing statistics, watch history, and server monitoring for Jellyfin. --- ## qBittorrent 5.2.0 Released: What's New and Why It Matters URL: https://jellywatch.app/blog/qbittorrent-5-2-0-release-whats-new-2026 Published: 2026-05-04T12:00:00+00:00 Author: JellyWatch Team Category: Release Tags: qbittorrent, release, 5.2.0, radarr, sonarr, jellyfin, download-client, update, 2026, webui # qBittorrent 5.2.0 Released: What's New and Why It Matters qBittorrent 5.2.0 dropped on May 3rd, 2026. This is a major version release with a massive changelog accumulated over months of development. If you run qBittorrent as the download client behind Radarr, Sonarr, and Jellyfin, here is everything that changed and what you should know before upgrading. --- ## Library Versions | Library | Version | |---|---| | libtorrent | 1.2.20 / 2.0.12 | | Qt | 6.10.3 | | Boost | 1.86 / 1.91 | Qt 6.10.3 is a significant jump. Qt 6.5 support is also dropped in this release. If you run qBittorrent on older hardware or a minimal Linux install, verify your system libraries are compatible before upgrading. --- ## The Biggest New Features ### Category-Level Share Limits You can now set seeding ratio and time limits per category instead of only globally or per torrent. For Jellyfin admins who use Radarr and Sonarr with separate categories (`radarr`, `sonarr`), this means you can configure different seeding behavior for movies vs TV shows without touching individual torrents. **How to use it:** Right-click a category in the sidebar, select **Edit Category**, and configure the share limits there. ### Subcategories Are Now Unconditional Previously subcategories were an opt-in feature. In 5.2.0 they are always enabled. If you had subcategories disabled, your category structure will now show the full hierarchy. Torrents are also automatically moved to the parent category when a subcategory is removed. ### Free Disk Space in the Status Bar The status bar now shows free disk space at a glance. For media server admins who are constantly watching storage, this is a welcome addition that saves you from opening a separate terminal or dashboard. ### Style and Color Scheme on All Platforms You can now configure the application style and color scheme on all platforms, not just Windows. Progress bar colors are also customizable, including an option to follow the torrent state color or disable state colors entirely. ### Reboot Option on Download Completion You can now configure qBittorrent to reboot the system when all downloads complete. Niche use case, but useful for scheduled overnight download sessions on dedicated hardware. ### Persistent Additional Trackers Additional trackers added via the tracker list are now persisted and loaded on startup. Previously these were session-only. ### "Created On" Column A new **Created On** column is available in the transfer list, showing when the torrent file was originally created. Useful for sorting and identifying old content. ### Advanced Tracker Status Filter A new separate tracker status filter in the sidebar lets you filter torrents by tracker state (working, not working, etc.) independently from the main status filters. ### Asynchronous Piece Calculation Piece hash calculation now runs asynchronously, which means the UI stays responsive when adding large torrents or rechecking files. On slower hardware like an Intel N100 mini PC, this is a noticeable improvement. ### Other Notable Feature Additions - **Torrent Creator toolbar button**: Quick access to the torrent creator directly from the toolbar - **Copy content paths**: You can now copy the content paths of selected torrents - **Hostname resolver cache expiry interval**: New advanced control for DNS caching behavior - **Pass torrent comment to external program**: The comment field is now available as a variable in the "Run External Program" feature - **New translations**: Albanian, Bosnian, Kazakh, Nepali, and Serbian (Latin) added --- ## WebUI Improvements The WebUI received a substantial number of updates in 5.2.0. Key highlights: - **Torrent creator in WebUI**: You can now create new .torrent files directly from the web interface - **Virtual list for table performance**: Large torrent lists render significantly faster - **Tracker status filter support**: The new tracker filter is available in the WebUI too - **Add/remove trackers from selected torrents**: Bulk tracker management from the WebUI - **New Add Torrent experience**: Redesigned dialog for adding torrents - **Basic auth support**: The WebUI now supports authenticating via HTTP Basic auth - **Horizontal tab scrolling**: Tabs scroll horizontally when there are too many to display - **Ctrl+F to focus filter field**: Keyboard shortcut for faster navigation - **Category download path management**: Manage category download paths from the WebUI - **Reannounce individual trackers**: Per-tracker reannounce from the WebUI - **Share limit action**: Implement share limit directly from the WebUI context menu - **Torrent availability bar**: Visual availability indicator added - **I2P peers in peer list**: I2P peers are now visible in the WebUI peer list - **Redesigned login form**: Cleaner login page - **Display density option**: New option to increase display density in tables - **Default date format**: Configurable date format in the WebUI - **Mobile improvements**: Footer scrollable on mobile, better search page on mobile, mobile keyboard no longer auto-capitalizes username - **Escape key closes dialogs**: Consistent keyboard behavior across all dialogs - **Preferences window stays open after failed save**: No longer closes on error --- ## WebAPI Changes Several new endpoints and improvements for automation: - `app/processInfo` endpoint with `launch_time` field - `setComment` endpoint for setting torrent comments - Announce stats now included in sync data - Optional files info in torrent list responses - **API key authentication**: New support for authenticating via API key (in addition to session cookies) - Permanent cookies replacing session-only cookies - Port appended to session cookie name - Better error messages for missing required parameters - 204 response when no data is returned - Metadata added to `/app/getDirectoryContent` response - No error thrown when editing a category without changes If you use any custom scripts or tools that interact with the qBittorrent WebAPI, review the API changes before upgrading. --- ## Bug Fixes Worth Noting Several crash fixes are included that affect common workflows: - Fix crash when exiting immediately after adding a torrent (two separate fixes) - Fix crash when closing the app with AddNewTorrentDialog open - Fix crash due to invalid entry in ipfilter.dat - Fix crash when moving an RSS folder into its own subfolder - Fix incorrect save path when torrent is added from a watched folder - Fix failure to start seeding a newly created torrent in Torrent Creator - Fix active torrents filter not reflecting actual transfers - Block invalid file names when renaming torrent content - Reannounce DHT when reannouncing all trackers - Raise connection max limits and torrent share ratio maximum limit The watched folder save path fix is particularly relevant for Radarr/Sonarr users who use watched folders as an alternative import method. --- ## RSS Improvements - Per-feed refresh interval: you can now set different refresh rates for individual RSS feeds - Simple string filtering for RSS (in addition to regex) - Smart filter now rejects articles with unrecognized episode numbers - RSS entry date now uses short format - "Open link" added to RSS article header - RSS article icons replaced with SVG --- ## Search Engine - SOCKS4/SOCKS4a proxy support added to the search engine - SOCKS proxy settings are now enforced in search engine plugins - CTRL+W closes search tabs - Improved search results filtering and parsing performance - Better error propagation from search engine plugins - Python installer version updated --- ## Platform-Specific Changes ### Windows - ARM64 build support added to the NSIS installer - Symbolic links now allowed in the torrent creator - Additional language translations in the installer (Hindi, Bosnian, Turkish, Russian, Ukrainian, Swedish) ### Linux - "Physical memory (RAM) usage limit" option removed (was already non-functional on most systems) - Orphan processes are no longer allowed ### macOS - Proper keyboard shortcut for deleting items - Fixed shift-click selection - Status bar menu with DL/UL display - Semi-native Window menu added - Improved icons - Option to toggle speed indicator in dock - Option to show/hide status bar icon - Fixed text cutoff in About dialog - Fixed priority text overlap when editor is active - Fixed app freezing on quit due to Qt accessibility deadlock - Fixed crash when deleting torrents --- ## Performance Two notable performance improvements: - **Resume queue load performance**: Faster startup when you have many torrents - **Avoid copying resume data when loading torrents**: Reduced memory allocation on startup Both matter if you run qBittorrent with hundreds of active torrents, which is common on a Jellyfin server with an active Radarr/Sonarr setup. --- ## How to Upgrade ### Docker (recommended) ```bash docker compose pull docker compose up -d ``` If you pin your image version, update to `qbittorrentteam/qbittorrent:5.2.0` or switch back to `latest`. ### Linux (package manager) Check your distribution's package repository. The official qBittorrent PPA for Ubuntu/Debian typically updates within a few days of a release. ### Windows Download the installer from [qbittorrent.org](https://www.qbittorrent.org/download). The 5.2.0 release includes ARM64 builds for the first time. ### macOS macOS builds are self-signed, which may trigger security warnings. This is expected behavior noted in the official release announcement. --- ## Integration with Radarr, Sonarr, and Jellyfin Nothing in 5.2.0 breaks existing Radarr/Sonarr integration. The WebAPI remains backward compatible. The new category-level share limits are additive and do not affect existing configurations. If you use the WebUI to manage downloads alongside JellyWatch for session monitoring, the WebUI performance improvements in 5.2.0 make the interface noticeably faster on large libraries. The watched folder save path fix is worth noting if you have ever seen Radarr or Sonarr imports land in the wrong directory after being added via a watched folder. --- ## Should You Upgrade? Yes. The crash fixes alone make this a worthwhile update. The category-level share limits and WebUI improvements are genuinely useful for media server setups. There are no known breaking changes for standard Radarr/Sonarr/Jellyfin configurations. As always, back up your qBittorrent config before upgrading if you have a complex setup. --- > **Running qBittorrent with Jellyfin? Monitor your active downloads and streams from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Radarr, Sonarr, and Jellyfin session monitoring in a single Android app. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellystat: The Tautulli Alternative for Jellyfin , Setup, Features, and Dashboard Guide (2026) URL: https://jellywatch.app/blog/jellystat-tautulli-alternative-jellyfin-statistics-setup-2026 Published: 2026-05-02T17:30:00+00:00 Author: JellyWatch Team Category: Showcase Tags: jellystat, jellyfin, statistics, tautulli, dashboard, analytics, docker, 2026, monitoring # Jellystat: The Tautulli Alternative for Jellyfin , Setup, Features, and Dashboard Guide (2026) Plex users have **Tautulli** , a dedicated statistics dashboard that shows who watched what, when, on which device, and how. Jellyfin users have had no equivalent for years. That changed with **Jellystat**. Jellystat is a free, open-source statistics application built specifically for Jellyfin. It connects to your server via the Jellyfin API and provides a rich web dashboard with per-user analytics, library statistics, playback history, and more. This guide covers the full setup and how to get the most out of your data. --- ## What Is Jellystat? Jellystat is a self-hosted web application that: - Pulls playback data from your Jellyfin server via the API - Stores it in a PostgreSQL database for historical analysis - Presents it in a clean web dashboard - Shows per-user watch history, most-played content, and playback method breakdown - Tracks library growth over time - Provides session logs with device and codec details It is the closest thing to Tautulli available for Jellyfin in 2026. --- ## Jellystat vs Tautulli vs JellyWatch | Feature | Jellystat | Tautulli (Plex) | JellyWatch | |---|---|---|---| | Platform | Web dashboard | Web dashboard | Android native app | | Real-time sessions | Yes | Yes | Yes | | Historical statistics | Yes (PostgreSQL) | Yes | Basic | | Per-user analytics | Yes | Yes | Yes | | Push notifications | No | Yes | Yes | | Arr stack integration | No | No | Yes | | Mobile-first | No | No | Yes | | Works with Jellyfin | Yes | No (Plex only) | Yes | | Cost | Free | Free | Free + Premium | **Use Jellystat for:** deep historical analytics, library reports, and a Tautulli-style web dashboard. **Use JellyWatch for:** real-time monitoring from your phone, push notifications, and managing your entire media stack on the go. They complement each other perfectly. --- ## Step 1: Deploy Jellystat with Docker Compose Jellystat requires a PostgreSQL database alongside the main application. ```yaml services: jellystat-db: image: postgres:15.2-alpine container_name: jellystat-db environment: POSTGRES_DB: jfstat POSTGRES_USER: postgres POSTGRES_PASSWORD: your_secure_password volumes: - ./jellystat/db:/var/lib/postgresql/data restart: unless-stopped jellystat: image: cyfershepard/jellystat:latest container_name: jellystat environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: your_secure_password POSTGRES_IP: jellystat-db POSTGRES_PORT: 5432 JWT_SECRET: your_jwt_secret_change_this ports: - 3000:3000 volumes: - ./jellystat/backup-data:/app/backend/backup-data depends_on: - jellystat-db restart: unless-stopped ``` **Important:** Change `your_secure_password` and `your_jwt_secret_change_this` to strong random strings before deploying. ```bash docker compose up -d ``` Open `http://your-server:3000` to access the Jellystat dashboard. --- ## Step 2: Connect Jellystat to Your Jellyfin Server ### Get your Jellyfin API key 1. Open Jellyfin Dashboard 2. Navigate to **API Keys** 3. Click **Create** and name it "Jellystat" 4. Copy the generated key ### Configure Jellystat 1. Open Jellystat at `http://your-server:3000` 2. Create your admin account on first launch 3. Go to **Settings, Jellyfin** 4. Enter: - **Jellyfin URL:** `http://jellyfin:8096` (Docker service name) or your server IP - **API Key:** the key you just created 5. Click **Test Connection** then **Save** Jellystat immediately begins pulling data from your Jellyfin server. --- ## Step 3: Understanding the Dashboard ### Home Overview The main dashboard shows: - **Active sessions** , who is currently watching - **Total plays today / this week / this month** - **Most popular content** , top movies and shows by play count - **Recent activity** , last 10 playback events - **Library size** , total items per library type ### Playback History The history view shows every playback event with: - User who watched - Media title, season, episode - Date and time - Duration watched and completion percentage - Device name and client app - Playback method (Direct Play / Transcode) - Video codec, resolution, audio codec This is the data Tautulli users are used to , now available for Jellyfin. ### User Statistics For each user on your server: - Total watch time (all time, monthly, weekly) - Most-watched genres - Favorite shows and movies - Device breakdown (which clients they use) - Playback method ratio (Direct Play vs Transcode) - Activity heatmap (which hours and days they watch) ### Library Statistics - Total items per library - Most-played movies and episodes - Least-played content (useful for identifying what nobody watches) - Library growth over time - Storage usage per library --- ## Step 4: Configure Data Sync Jellystat syncs data from Jellyfin on a schedule. Configure the sync interval: 1. Settings, Sync 2. Set **Sync Interval** to your preference: - **5 minutes** , near real-time, higher database load - **15 minutes** , good balance (recommended) - **1 hour** , minimal load, less granular history ### Backfill historical data Jellystat can import historical playback data from Jellyfin's activity log: 1. Settings, Sync 2. Click **Sync All History** 3. Jellystat imports all available historical data from Jellyfin This gives you statistics going back to when you first installed Jellyfin, not just from when you installed Jellystat. --- ## Step 5: Expose Jellystat via Reverse Proxy For access from outside your network: **Caddyfile:** ``` stats.yourdomain.com { reverse_proxy jellystat:3000 } ``` **Security note:** Jellystat contains detailed information about your users' viewing habits. Protect it with authentication. Add basic auth in Caddy: ``` stats.yourdomain.com { basicauth { admin $2a$14$your_hashed_password } reverse_proxy jellystat:3000 } ``` Generate a bcrypt hash: `caddy hash-password --plaintext yourpassword` --- ## Jellystat vs Streamystats A newer alternative, **Streamystats**, has emerged as a competitor to Jellystat: | Feature | Jellystat | Streamystats | |---|---|---| | Database | PostgreSQL | SQLite | | Setup complexity | Medium (needs Postgres) | Simple (single container) | | UI design | Functional | More modern | | Active development | Active | Very active | | GitHub stars | ~1,200 | ~336 | | Maturity | More mature | Newer | **Jellystat** is more established with a larger community. **Streamystats** is simpler to deploy (no separate database) and has a more modern UI. Both are worth trying. ### Streamystats Docker Compose ```yaml services: streamystats: image: fredrikburmester/streamystats:latest container_name: streamystats ports: - 3000:3000 volumes: - ./streamystats/data:/app/data restart: unless-stopped ``` Even simpler than Jellystat , no separate database container needed. --- ## Practical Use Cases ### Find out who is actually using your server Jellystat's user statistics reveal which users are active and which accounts are dormant. Useful for deciding who to keep on your server. ### Identify transcoding offenders The playback method breakdown shows which users are constantly triggering transcodes. You can then help them configure their client for Direct Play. ### Justify hardware upgrades When asking for a new GPU or more RAM, Jellystat's data shows concrete usage: "We had 847 playback sessions last month, 23% were transcoding, and CPU peaked at 94% during 4K streams." ### Find content nobody watches The least-played content report helps you identify movies and shows that have never been watched. Useful for storage cleanup decisions. ### Share stats with your users Jellystat's per-user statistics can be shared with users so they can see their own watch history and stats , similar to Spotify Wrapped but for your media server. --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Cannot connect to Jellyfin | Wrong URL or API key | Verify URL is reachable from Jellystat container | | No historical data | Sync not run yet | Click "Sync All History" in Settings | | Database connection error | Wrong Postgres credentials | Check environment variables match in both containers | | Sessions not updating | Sync interval too long | Reduce sync interval in Settings | | Missing users | User has no playback history | Play something on that account | | High database disk usage | Large history | PostgreSQL stores all events; normal for active servers | --- ## FAQ **Is Jellystat the same as Tautulli?** No, but it serves the same purpose for Jellyfin. Tautulli is Plex-only. Jellystat is Jellyfin-only. Feature parity is not 100% but the core analytics are comparable. **Does Jellystat work with Emby?** Jellystat is designed for Jellyfin. For Emby, the API is similar but not identical. Some users report partial compatibility. **Does Jellystat send data anywhere?** No. Jellystat is fully self-hosted. All data stays on your server in your PostgreSQL database. **Can I use Jellystat and JellyWatch together?** Yes, and it is the recommended setup. Jellystat for deep historical analytics on a desktop browser. JellyWatch for real-time monitoring and management from your phone. **How much storage does Jellystat use?** The PostgreSQL database grows with usage. A server with 5 active users generates roughly 50-200 MB of data per year. Very manageable. **Is there a Jellystat mobile app?** No. Jellystat is a web application. For mobile monitoring, use JellyWatch. **Can Jellystat send notifications?** Not natively. For push notifications when sessions start or CPU spikes, use JellyWatch or Uptime Kuma. --- > **Jellystat shows you the history. JellyWatch shows you what is happening right now.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, push notifications, and Arr stack management for Jellyfin admins on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Plex Just Paywalled Remote Access in 2026: How to Switch to Jellyfin This Weekend URL: https://jellywatch.app/blog/plex-paywall-2026-switch-to-jellyfin-migration-guide Published: 2026-05-02T17:00:00+00:00 Author: JellyWatch Team Category: Other Tags: jellyfin, plex, migration, plex-pass, paywall, switch, remote-access, 2026, guide # Plex Just Paywalled Remote Access in 2026: How to Switch to Jellyfin This Weekend In March 2026, Plex expanded its paywall to cover remote streaming on Smart TVs, Fire TV, Xbox, PlayStation, and more. As of today, streaming your own media library remotely from a Plex server requires either a **Plex Pass ($249 lifetime or $7/month)** or a **Remote Watch Pass ($2/month per viewer)**. This is not a rumor. It is live. Plex's own support page confirms it. Jellyfin does everything Plex does , remote streaming, hardware transcoding, Live TV, mobile apps , and charges exactly **$0**. No account required. No paywall. No ads. This guide gets you migrated this weekend. --- ## What Plex Changed and Why It Matters ### The timeline | Date | What changed | |---|---| | April 2025 | Remote streaming of personal media requires Plex Pass or Remote Watch Pass | | March 2026 | Requirement expanded to Smart TVs (Samsung, LG, Vizio), Fire TV, Xbox, PlayStation | | Ongoing | Plex Pass lifetime price raised from $119 to $249 (108% increase) | ### What this means in practice If you host a Plex server for your family: - **You** need Plex Pass ($249 lifetime or $7/month) to allow remote access - **OR** each remote viewer needs a Remote Watch Pass ($2/month each) - Local network streaming still works without payment - The old $119 lifetime deal is gone For a family of 4 watching remotely: $249 one-time (server owner) or $8/month ongoing (4 viewers at $2 each). Every year. ### Jellyfin's position Jellyfin remote streaming: **free**. Always has been. Always will be. It is open-source software with no company extracting subscription revenue. --- ## What You Keep When You Switch | Data | Migrates? | How | |---|---|---| | Media files | Yes (zero effort) | Same folders, same files | | Folder structure | Yes | Jellyfin reads the same naming conventions | | Metadata (posters, descriptions) | Yes (re-fetched) | Jellyfin pulls from TMDB/TVDB automatically | | Watch history | Yes (with tool) | Via Trakt or JellyPlex-Watched | | Playlists | Partial | Manual recreation or M3U export | | Custom artwork | No | Re-upload manually | | Plex-specific features | No | Discover, Watchlist, Plex TV | The most important thing: **your media files do not move**. Jellyfin reads the exact same folders Plex uses. --- ## Step 1: Install Jellyfin Alongside Plex (Do Not Uninstall Plex Yet) Run both servers simultaneously during migration. Plex on port 32400, Jellyfin on port 8096. ### Docker Compose ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin ports: - "8096:8096" volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /path/to/your/media:/media:ro # same path Plex uses devices: - /dev/dri:/dev/dri # Intel GPU for hardware transcoding restart: unless-stopped ``` ```bash docker compose up -d ``` Open `http://your-server:8096` and complete the setup wizard. ### Add your libraries Point Jellyfin at the exact same folders Plex uses: - Movies: `/media/movies` - TV Shows: `/media/tv` - Music: `/media/music` Jellyfin scans and fetches metadata automatically. For a 1,000-movie library, expect 15-30 minutes. --- ## Step 2: Migrate Watch History This is the step most guides skip. Nobody wants to lose years of watched status. ### Method A: JellyPlex-Watched (Docker, automated) The cleanest tool for direct Plex-to-Jellyfin watch history sync: ```yaml services: jellyplex-watched: image: luigi311/jellyplex-watched:latest environment: - PLEX_BASEURL=http://plex:32400 - PLEX_TOKEN=YOUR_PLEX_TOKEN - JELLYFIN_BASEURL=http://jellyfin:8096 - JELLYFIN_TOKEN=YOUR_JELLYFIN_API_KEY - SYNC_FROM_PLEX_TO_JELLYFIN=true - SYNC_FROM_JELLYFIN_TO_PLEX=false - RUN_ONLY_ONCE=true restart: "no" ``` Get your Plex token: open Plex Web, click any media item, click the three dots, **Get Info**, **View XML** , the token is in the URL as `X-Plex-Token=`. Get your Jellyfin API key: Dashboard, API Keys, Create. ```bash docker compose run --rm jellyplex-watched ``` The tool matches items by filename and provider IDs (TMDB, TVDB). It handles movies and TV episodes. ### Method B: Trakt (no Docker required) 1. Install the **Trakt plugin** on Plex → sync all watched history to Trakt 2. Install the **Trakt plugin** on Jellyfin → import from Trakt 3. All watched status transfers via Trakt as intermediary This is slower but requires no additional Docker containers. ### Method C: WatchState (most comprehensive) WatchState is a self-hosted sync engine that handles Plex, Jellyfin, Emby, Trakt, and more: ```yaml services: watchstate: image: ghcr.io/arabcoders/watchstate:latest volumes: - ./watchstate/config:/config ports: - 8080:8080 restart: unless-stopped ``` Configure both Plex and Jellyfin as backends, then run a one-time sync. --- ## Step 3: Enable Hardware Transcoding (Free in Jellyfin) This is what Plex charges $249 for. In Jellyfin it is free. 1. Dashboard, Playback, Transcoding 2. Select your GPU: **Intel Quick Sync**, **NVIDIA NVENC**, or **AMD AMF** 3. Enable **Hardware Tone Mapping** for HDR content 4. Save For Docker, ensure `/dev/dri` is mapped (Intel/AMD) or the NVIDIA runtime is configured. --- ## Step 4: Set Up Remote Access Jellyfin remote access is free. Choose your method: ### Cloudflare Tunnel (recommended, no port forwarding) ```yaml services: cloudflared: image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token YOUR_TOKEN restart: unless-stopped ``` Free, no open ports, works behind CGNAT. Your Jellyfin server is accessible at `https://jellyfin.yourdomain.com`. ### Reverse proxy with Caddy ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } ``` Automatic SSL via Let's Encrypt. ### Tailscale (VPN, most private) Install Tailscale on your server and all client devices. Access Jellyfin at its Tailscale IP from anywhere. No public exposure. --- ## Step 5: Switch Your Clients | Device | Plex app | Jellyfin replacement | |---|---|---| | Android phone | Plex | Findroid (recommended) or official Jellyfin | | iPhone/iPad | Plex | Swiftfin (free, official) or Infuse | | Apple TV | Plex | Swiftfin or Infuse | | Android TV / Fire TV | Plex | Official Jellyfin for Android TV | | Samsung TV | Plex | Jellyfin for Tizen (sideload) | | LG TV | Plex | Jellyfin for WebOS (LG Content Store) | | Roku | Plex | Jellyfin for Roku (Channel Store) | | Windows / Mac | Plex | Jellyfin Media Player | | Kodi | Plex for Kodi | Jellyfin for Kodi addon | All Jellyfin clients are free. No Remote Watch Pass required. --- ## Step 6: Verify and Decommission Plex Before cancelling Plex Pass and uninstalling: - [ ] All media appears correctly in Jellyfin - [ ] Watch history transferred for all users - [ ] All family members can log in and stream remotely - [ ] Hardware transcoding works (test with a forced transcode) - [ ] Clients configured on all devices - [ ] Remote access working via your chosen method Once confirmed: ```bash docker stop plex docker rm plex ``` Cancel your Plex Pass subscription from the Plex account settings. --- ## What Jellyfin Does Not Have (Honest Assessment) Jellyfin is not a perfect Plex replacement for everyone. Be aware of the gaps: | Plex feature | Jellyfin equivalent | Notes | |---|---|---| | Plex Discover | None | Jellyfin shows only your content | | Plex Watchlist | None | Use Trakt or Letterboxd externally | | Plex free streaming (ad-supported) | None | Jellyfin is your content only | | Built-in relay (no setup) | Manual setup required | Cloudflare Tunnel is easy but not zero-config | | Plex Dash admin app | JellyWatch (Android) | Different app, same concept | | Tautulli analytics | Jellystat | Separate tool, free | For users who only want to stream their own media library remotely, Jellyfin covers 100% of the use case. For users who also use Plex's free streaming content, you lose that. --- ## The Cost Comparison | Scenario | Plex (2026) | Jellyfin | |---|---|---| | Local streaming only | Free | Free | | Remote streaming (server owner) | $7/month or $249 lifetime | Free | | Remote streaming (each viewer) | $2/month each | Free | | Hardware transcoding | Included in Plex Pass | Free | | Live TV / DVR | Included in Plex Pass | Free | | 5-year total cost (family of 4) | $420-$669 | $0 | --- ## FAQ **Do I lose my Plex Pass if I switch?** Your Plex Pass remains valid for Plex. If you fully migrate to Jellyfin, you no longer need it. Cancel from your Plex account settings. **Can I run Plex and Jellyfin at the same time?** Yes. They use different ports (32400 vs 8096) and can share the same media files simultaneously. Run both during migration. **Will my media files be affected?** No. Jellyfin reads your files in read-only mode. Nothing is moved, renamed, or modified. **How long does the migration take?** For a typical 500-movie library: 2-4 hours for the initial scan and metadata fetch, plus 30 minutes for watch history sync. You can be fully migrated in a single afternoon. **Is Jellyfin as stable as Plex?** For a home media server with a few users, yes. Jellyfin 10.11 is mature and stable. The main difference is that Plex has a paid team; Jellyfin is volunteer-maintained. **What about Plex's free movies and TV?** Jellyfin does not include ad-supported free content. If you use Plex's free streaming library, you lose that. Your personal media library migrates completely. **Is there a Jellyfin admin app like Plex Dash?** Yes. JellyWatch on Android provides real-time session monitoring, transcoding diagnostics, push notifications, and Radarr/Sonarr/Seerr integration , everything Plex Dash does and more. --- > **Switched to Jellyfin? Get the admin app that replaces Plex Dash.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, hardware transcoding diagnostics, and push notifications for your Jellyfin server. *Still running Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Database Maintenance Guide (2026): VACUUM, Repair, and Optimization After the EF Core Migration URL: https://jellywatch.app/blog/jellyfin-database-maintenance-optimization-guide-2026 Published: 2026-05-02T16:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, database, maintenance, vacuum, sqlite, optimization, ef-core, performance, 2026 # Jellyfin Database Maintenance Guide (2026): VACUUM, Repair, and Optimization After the EF Core Migration Jellyfin 10.11 consolidated everything into a single `jellyfin.db` file managed by Entity Framework Core. This was the right architectural move, but it means your entire server state lives in one SQLite database: users, watch history, metadata references, plugin data, activity logs, and scheduled task history. Over months of use, this database grows, fragments, and accumulates dead rows. The result: slower library browsing, longer startup times, and increased disk usage. Regular maintenance fixes all of this. --- ## Where Is the Database? | Installation | Database path | |---|---| | Docker (default) | `/config/data/jellyfin.db` | | Native Linux | `/var/lib/jellyfin/data/jellyfin.db` | | Windows | `C:\ProgramData\Jellyfin\Server\data\jellyfin.db` | The database is accompanied by two WAL (Write-Ahead Log) files: - `jellyfin.db-wal` - pending writes not yet committed to the main database - `jellyfin.db-shm` - shared memory file for WAL coordination --- ## Why Maintenance Matters SQLite databases do not automatically reclaim space when data is deleted. When Jellyfin removes old activity logs, cleans up metadata, or you delete a user, the space is marked as free internally but the file size does not shrink. Over time: - **Database file grows** beyond what the actual data requires - **Fragmentation increases** as free pages scatter throughout the file - **Query performance degrades** as SQLite reads through more pages to find data - **Startup time increases** as EF Core loads cached data from a bloated database A 500 MB database that should be 200 MB after cleanup is common on servers running for 6+ months without maintenance. --- ## Maintenance Task 1: VACUUM VACUUM rebuilds the entire database file from scratch, reclaiming unused space and defragmenting the data. ### How to run VACUUM **Step 1: Stop Jellyfin** ```bash # Docker docker stop jellyfin # Native Linux sudo systemctl stop jellyfin # Windows Stop-Service JellyfinServer ``` Stopping Jellyfin is mandatory. Running VACUUM on an active database can cause corruption. **Step 2: Run VACUUM** ```bash sqlite3 /path/to/config/data/jellyfin.db "VACUUM;" ``` For Docker: ```bash docker run --rm -v ./jellyfin/config:/config alpine \ sh -c "apk add sqlite && sqlite3 /config/data/jellyfin.db 'VACUUM;'" ``` **Step 3: Restart Jellyfin** ```bash docker start jellyfin ``` ### What VACUUM does - Rebuilds the database into a new file with zero fragmentation - Reclaims all unused space from deleted rows - Resets the free page list - Can reduce database size by 20-60% on unmaintained servers ### How often to VACUUM Once per month is sufficient for most servers. Servers with heavy activity (many users, frequent library changes) benefit from bi-weekly VACUUM. --- ## Maintenance Task 2: Integrity Check Before any maintenance, verify your database is not corrupted: ```bash sqlite3 /path/to/config/data/jellyfin.db "PRAGMA integrity_check;" ``` Expected output: `ok` If the output shows errors, your database has corruption. See the Repair section below. --- ## Maintenance Task 3: WAL Checkpoint The WAL (Write-Ahead Log) file accumulates pending writes. A checkpoint flushes these writes into the main database file. Jellyfin performs automatic checkpoints, but after a crash or unexpected shutdown, the WAL file can grow large. ```bash sqlite3 /path/to/config/data/jellyfin.db "PRAGMA wal_checkpoint(TRUNCATE);" ``` This flushes all pending writes and truncates the WAL file to zero bytes. **When to run:** After any unexpected shutdown, before taking a backup, or if `jellyfin.db-wal` is larger than 100 MB. --- ## Maintenance Task 4: Clean Activity Logs Jellyfin logs every event: logins, playback starts, library scans, plugin actions. On active servers, the activity log table grows to millions of rows. ### From the Dashboard 1. Dashboard, Scheduled Tasks, **Clean Activity Log** 2. Set retention to **30 days** (default is often 365 days or unlimited) 3. Run the task manually ### From SQLite directly For aggressive cleanup: ```bash sqlite3 /path/to/config/data/jellyfin.db \ "DELETE FROM ActivityLogs WHERE DateCreated < datetime('now', '-30 days');" ``` Follow with a VACUUM to reclaim the freed space. --- ## Maintenance Task 5: Optimize Indexes SQLite indexes can become fragmented over time. The REINDEX command rebuilds all indexes: ```bash sqlite3 /path/to/config/data/jellyfin.db "REINDEX;" ``` This is lightweight and can be run without stopping Jellyfin, though stopping is recommended for consistency. --- ## Maintenance Task 6: Analyze Query Performance The ANALYZE command updates SQLite's internal statistics about table and index contents, helping the query planner make better decisions: ```bash sqlite3 /path/to/config/data/jellyfin.db "ANALYZE;" ``` Run this after large library changes (adding or removing thousands of items). --- ## Automated Maintenance Script Combine all maintenance tasks into a single script and schedule it with cron: ```bash #!/bin/bash # /home/user/scripts/jellyfin-db-maintenance.sh # Run monthly via cron DB_PATH="/path/to/jellyfin/config/data/jellyfin.db" CONTAINER="jellyfin" LOG="/var/log/jellyfin-maintenance.log" DATE=$(date +"%Y-%m-%d %H:%M") echo "[$DATE] Starting database maintenance..." >> "$LOG" # Check integrity before maintenance RESULT=$(sqlite3 "$DB_PATH" "PRAGMA integrity_check;") if [ "$RESULT" != "ok" ]; then echo "[$DATE] ERROR: Database integrity check failed!" >> "$LOG" exit 1 fi # Stop Jellyfin docker stop "$CONTAINER" # Get size before SIZE_BEFORE=$(du -sh "$DB_PATH" | cut -f1) # WAL checkpoint sqlite3 "$DB_PATH" "PRAGMA wal_checkpoint(TRUNCATE);" # Clean old activity logs (keep 30 days) sqlite3 "$DB_PATH" "DELETE FROM ActivityLogs WHERE DateCreated < datetime('now', '-30 days');" # Rebuild indexes sqlite3 "$DB_PATH" "REINDEX;" # Update statistics sqlite3 "$DB_PATH" "ANALYZE;" # VACUUM (reclaim space and defragment) sqlite3 "$DB_PATH" "VACUUM;" # Get size after SIZE_AFTER=$(du -sh "$DB_PATH" | cut -f1) # Restart Jellyfin docker start "$CONTAINER" echo "[$DATE] Maintenance complete. Before: $SIZE_BEFORE, After: $SIZE_AFTER" >> "$LOG" ``` ### Schedule with cron ```bash crontab -e # Run on the 1st of every month at 4 AM 0 4 1 * * /home/user/scripts/jellyfin-db-maintenance.sh ``` --- ## Docker-Based Maintenance The community has created a dedicated Docker container for Jellyfin database optimization: ```yaml services: jellyfin-db-optimize: image: waazaafr/jellyfin-db-optimize:latest volumes: - ./jellyfin/config/data:/data environment: - DB_PATH=/data/jellyfin.db restart: "no" ``` Run it as a one-shot container: ```bash docker compose run --rm jellyfin-db-optimize ``` This container creates timestamped backups, runs integrity checks, cleans up, and applies optimizations automatically. --- ## Repairing a Corrupted Database If `PRAGMA integrity_check` returns errors, your database is corrupted. Common causes: - Power loss during a write operation - Disk full during a library scan - Interrupted EF Core migration (10.11 upgrade) - NFS/SMB storage with unreliable connectivity ### Recovery method ```bash # Stop Jellyfin docker stop jellyfin # Export the database to SQL sqlite3 /path/to/jellyfin.db ".dump" > jellyfin-dump.sql # Create a new database from the dump sqlite3 /path/to/jellyfin-new.db < jellyfin-dump.sql # Replace the old database mv /path/to/jellyfin.db /path/to/jellyfin.db.corrupt mv /path/to/jellyfin-new.db /path/to/jellyfin.db # Restart Jellyfin docker start jellyfin ``` The `.dump` and reimport process skips corrupted rows and rebuilds the database structure cleanly. You may lose some data from corrupted rows, but the server will be functional. ### If .dump fails Restore from your most recent backup. This is why automated backups are non-negotiable. --- ## Database Size Expectations | Library size | Healthy DB size | Bloated DB size | |---|---|---| | 500 items | 20-50 MB | 100-200 MB | | 2,000 items | 50-150 MB | 300-500 MB | | 10,000 items | 150-400 MB | 500 MB - 1 GB | | 50,000+ items | 400 MB - 1 GB | 1-3 GB | If your database is significantly larger than the "healthy" range, a VACUUM will likely reclaim substantial space. --- ## EF Core Specific Considerations Jellyfin 10.11's EF Core migration introduced several changes that affect maintenance: ### Higher memory usage is normal EF Core caches query results in memory. This is by design and improves performance. Do not be alarmed if Jellyfin uses 500 MB - 2 GB of RAM on large libraries. ### The migration is irreversible Once you upgrade to 10.11, the database format changes permanently. You cannot downgrade to 10.10 without restoring a pre-upgrade backup. ### WAL mode is the default EF Core uses WAL (Write-Ahead Logging) mode, which allows concurrent reads during writes. This is better for performance but means the WAL file can grow if checkpoints are delayed. ### PostgreSQL is on the roadmap The EF Core migration was the prerequisite for external database support. PostgreSQL support is planned for Jellyfin 12.0 or a subsequent release. When available, PostgreSQL will handle maintenance (VACUUM, ANALYZE) through its own built-in mechanisms. --- ## Monitoring Database Health Check your database size periodically: ```bash # Database file size du -sh /path/to/config/data/jellyfin.db # WAL file size du -sh /path/to/config/data/jellyfin.db-wal # Row counts for major tables sqlite3 /path/to/config/data/jellyfin.db \ "SELECT 'ActivityLogs', COUNT(*) FROM ActivityLogs UNION ALL SELECT 'TypedBaseItems', COUNT(*) FROM TypedBaseItems;" ``` If ActivityLogs has millions of rows, it is time to clean up. **JellyWatch** shows server health metrics including storage usage, which helps you spot when the config drive is filling up due to database bloat. --- ## Maintenance Schedule Recommendation | Task | Frequency | Downtime required | |---|---|---| | Clean activity logs | Weekly (via scheduled task) | No | | WAL checkpoint | After crashes / before backups | No | | ANALYZE | After large library changes | No (recommended to stop) | | REINDEX | Monthly | No (recommended to stop) | | VACUUM | Monthly | Yes (must stop Jellyfin) | | Integrity check | Before every VACUUM | No | | Full backup | Weekly | Yes (recommended to stop) | --- ## FAQ **Can I run VACUUM while Jellyfin is running?** Technically possible with WAL mode, but strongly discouraged. VACUUM rewrites the entire database file. Running it on an active server risks corruption. Always stop Jellyfin first. **How much space does VACUUM reclaim?** Typically 20-60% on servers that have never been vacuumed. A 500 MB database might shrink to 200-300 MB. **Does VACUUM improve performance?** Yes. Defragmentation means SQLite reads fewer disk pages per query. Library browsing and search become noticeably faster on large libraries. **Will maintenance delete my watch history?** No. VACUUM, REINDEX, and ANALYZE do not delete any data. Only the activity log cleanup removes old log entries (not watch history). **How do I know if my database is corrupted?** Run `PRAGMA integrity_check`. If it returns anything other than "ok", there is corruption. **Is there a Jellyfin plugin for database maintenance?** The built-in "Optimize Database" scheduled task performs basic maintenance. For VACUUM and advanced operations, use the command-line methods described above. **Should I move my database to an SSD?** Absolutely. This is the single biggest performance improvement for Jellyfin. SQLite performance is dominated by random I/O, which SSDs handle 100x better than HDDs. --- > **Database optimized? Make sure your server stays healthy.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor server health, storage usage, and active sessions to catch performance issues before they affect your users. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same server health monitoring for Emby.* --- ## How to Install Jellyfin on Fire TV Stick in 2026: Setup, 4K Playback, and the Vega OS Problem URL: https://jellywatch.app/blog/jellyfin-fire-tv-stick-4k-max-setup-guide-2026 Published: 2026-05-02T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fire-tv, fire-tv-stick, amazon, 4k, vega-os, streaming, setup, guide, 2026 # How to Install Jellyfin on Fire TV Stick in 2026: Setup, 4K Playback, and the Vega OS Problem The Amazon Fire TV Stick is the most popular budget streaming device in the world. At $30-60, it puts Jellyfin on any TV with an HDMI port. But 2026 brought a curveball: Amazon is shipping new Fire TV devices with **Vega OS**, a proprietary operating system that blocks sideloading entirely. This guide covers every Fire TV model, the correct installation method for each, codec support, 4K HDR optimization, and what to do if you are stuck on Vega OS. --- ## Fire TV Models and Jellyfin Compatibility (2026) | Model | OS | Jellyfin install | 4K | HDR10 | HDR10+ | Dolby Vision | AV1 | |---|---|---|---|---|---|---|---| | Fire TV Stick Lite (2022) | Fire OS | Appstore | No (1080p) | No | No | No | No | | Fire TV Stick (2024) | Fire OS | Appstore | No (1080p) | Yes | Yes | No | No | | Fire TV Stick 4K (2023) | Fire OS | Appstore | Yes | Yes | Yes | Yes (P5) | Yes | | Fire TV Stick 4K Max (2023) | Fire OS | Appstore | Yes | Yes | Yes | Yes (P5/P8) | Yes | | Fire TV Stick HD (2026) | **Vega OS** | **Appstore only** | No (1080p) | No | No | No | No | | Fire TV Stick 4K (2026) | **Vega OS** | **Appstore only** | Yes | Yes | Yes | TBD | Yes | The critical distinction: **Fire OS devices** support both Appstore installation and APK sideloading. **Vega OS devices** only support the Amazon Appstore. No sideloading, no Downloader app, no ADB install. --- ## The Vega OS Problem In late 2025, Amazon began shipping Fire TV devices with **Vega OS** instead of Fire OS (which was Android-based). Vega OS is Amazon's proprietary operating system that: - **Blocks all sideloading** of APK files - Does not support ADB installation - Does not allow the Downloader app to install APKs - Only permits apps from the Amazon Appstore ### How to check if your Fire TV runs Vega OS 1. Go to **Settings, My Fire TV, About** 2. Look at the **Software Version** 3. If it says "Vega" or the OS version starts with "Vega", you are on Vega OS 4. If it shows "Fire OS 7.x" or similar, you are on the Android-based Fire OS ### What this means for Jellyfin The good news: **Jellyfin is available in the Amazon Appstore**. Whether your device runs Fire OS or Vega OS, you can install Jellyfin directly from the store. Sideloading is only needed if you want a specific APK version or if the Appstore listing is unavailable in your region. If you are buying a new Fire TV device specifically for Jellyfin, check the OS before purchasing. The Fire TV Stick 4K Max (2023) running Fire OS remains the best option for flexibility. --- ## Method 1: Amazon Appstore (All Models) This works on every Fire TV device, including Vega OS. 1. From the Fire TV home screen, navigate to **Find, Search** 2. Type **Jellyfin** 3. Select the official **Jellyfin** app from the results 4. Click **Get** (free, no purchase required) 5. Wait for the download (~30 MB) 6. Open the app Total time: under 2 minutes. --- ## Method 2: Sideload via Downloader (Fire OS Only) If the Appstore version is outdated or unavailable in your region: ### Enable sideloading 1. Go to **Settings, My Fire TV, Developer Options** 2. If Developer Options is not visible: go to **Settings, My Fire TV, About**, click on the device name 7 times to unlock it 3. Toggle **Install Unknown Apps** to ON for the Downloader app ### Install via Downloader 1. Install **Downloader** from the Amazon Appstore 2. Open Downloader 3. Enter the Jellyfin APK URL from the official GitHub releases page 4. Download and install the APK 5. Open Jellyfin --- ## First-Time Setup ### Connect to your Jellyfin server 1. Open the Jellyfin app 2. Enter your server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 3. Enter your username and password 4. The app loads your library ### Critical settings for best quality After connecting, go to the app **Settings, Playback**: | Setting | Recommended value | Why | |---|---|---| | Max streaming bitrate | **Original / Maximum** | Prevents unnecessary transcoding | | Preferred media player | **ExoPlayer** | Best codec support on Fire TV | | Direct Play | **Enabled** | Sends file as-is to the device | | Direct Stream | **Enabled** | Allows container remux without video transcode | Setting bitrate to **Original** is the single most important change. The default is often a conservative limit that forces your server to transcode high-quality content. --- ## Codec Support by Fire TV Model ### Fire TV Stick 4K Max (2023) - Best for Jellyfin | Codec | Support | |---|---| | H.264 (AVC) | Direct Play | | H.265 (HEVC) Main 10 | Direct Play | | AV1 | Direct Play | | VP9 | Direct Play | | HDR10 | Yes | | HDR10+ | Yes | | Dolby Vision (Profile 5/8) | Yes | | Dolby Digital (AC3) | Yes | | Dolby Digital Plus (EAC3) | Yes | | Dolby Atmos (via DD+) | Yes | | TrueHD | **No** (transcoded to EAC3) | | DTS / DTS-HD MA | **No** (transcoded to EAC3) | ### Fire TV Stick 4K (2023) Same codec support as the 4K Max, slightly slower processor. Handles 4K Direct Play well for single streams. ### Fire TV Stick Lite / Standard (1080p models) | Codec | Support | |---|---| | H.264 | Direct Play | | H.265 (HEVC) | Direct Play | | AV1 | No (server transcodes) | | VP9 | Partial | | HDR | No (SDR only) | ### The Audio Limitation No Fire TV Stick model supports **TrueHD or DTS audio passthrough**. If your media files have TrueHD or DTS as the only audio track, Jellyfin transcodes the audio to EAC3 or AAC. The video remains untouched (Direct Stream). **Fix:** When encoding your library, always include an EAC3 or AAC audio track alongside any lossless track. This eliminates audio transcoding on Fire TV. --- ## Optimizing 4K HDR on Fire TV ### Enable Match Content Fire TV Settings, Display and Sounds: - **Match Original Frame Rate:** On - **Dynamic Range Settings:** Adaptive (or Always HDR if your TV supports it) This ensures the Fire TV switches to the correct frame rate and HDR mode for each video. ### Use Ethernet (Recommended for 4K) The Fire TV Stick 4K Max supports the **Amazon Ethernet Adapter** (USB to Ethernet, ~$15). For 4K remuxes at 60-80 Mbps, wired Ethernet is significantly more reliable than Wi-Fi. Wi-Fi 6E on the 4K Max handles most 4K content well, but high-bitrate remuxes can stutter during network congestion. ### Disable Dolby Vision if Problematic Some users report Dolby Vision playback issues with specific Jellyfin file types on Fire TV. If DV content looks wrong: 1. Fire TV Settings, Display and Sounds, Display 2. Set **Dynamic Range** to HDR10 instead of Dolby Vision 3. Test playback This forces HDR10 fallback, which is universally reliable. --- ## Fire TV Stick vs Other Streaming Devices for Jellyfin | Device | Price | 4K HDR | DV | TrueHD | Best for | |---|---|---|---|---|---| | Fire TV Stick 4K Max | ~$60 | Yes | Yes | No | Budget 4K with HDR10+ | | Chromecast with Google TV 4K | ~$50 | Yes | Yes | No | Google ecosystem | | Onn 4K Pro | ~$50 | Yes | Yes | No | Best value 4K | | Apple TV 4K | ~$129 | Yes | Yes | No | Best polish, DV all profiles | | Nvidia Shield Pro | ~$200 | Yes | Partial | Yes | TrueHD passthrough | The Fire TV Stick 4K Max is the best budget option for Jellyfin 4K streaming. It only loses to the Shield Pro on lossless audio passthrough. --- ## Troubleshooting Fire TV Issues | Problem | Cause | Fix | |---|---|---| | App not in Appstore | Regional restriction | Sideload via Downloader (Fire OS only) | | Cannot sideload | Vega OS device | Use Appstore version only | | Buffering on 4K | Bitrate limit too low | Set to Original in app settings | | No HDR / washed colors | Dynamic Range set to SDR | Enable Adaptive or Always HDR | | No audio | TrueHD/DTS not supported | Server transcodes audio automatically | | App crashes | Outdated app version | Update from Appstore | | Cannot find server | Firewall blocking port 8096 | Open port or use same network | | Subtitles cause buffering | PGS subtitle burn-in | Switch to SRT subtitles | | Remote control laggy | Fire TV memory pressure | Close background apps | | Dolby Vision not working | DV profile incompatible | Force HDR10 in display settings | --- ## Using Fire TV as a Dedicated Jellyfin Device For the best experience, configure your Fire TV as a dedicated media device: ### Disable Amazon bloatware 1. Settings, Preferences, Privacy Settings: disable all tracking options 2. Settings, Preferences, Featured Content: disable autoplay and recommendations 3. Settings, Notifications: disable promotional notifications ### Set Jellyfin as the default app Fire TV does not natively support changing the default launcher, but you can: - Pin Jellyfin to the first position on your home screen - Use the "Recent" row to quickly access Jellyfin - On Fire OS devices, sideload a custom launcher like Wolf Launcher ### Screensaver Fire TV Settings, Display and Sounds, Screensaver: set to activate after 5 minutes of inactivity to prevent burn-in on OLED TVs. --- ## FAQ **Is Jellyfin free on Fire TV?** Yes. The Jellyfin app is completely free on the Amazon Appstore with no in-app purchases. **Does Fire TV Stick support 4K Jellyfin streaming?** Yes, on the 4K and 4K Max models. The Lite and standard models are limited to 1080p. **Can I use Jellyfin on a Vega OS Fire TV?** Yes, through the Amazon Appstore. Sideloading is not possible on Vega OS, but the Appstore version works. **Why is my Fire TV transcoding instead of Direct Playing?** Most likely the bitrate limit is set too low. Go to Jellyfin app Settings, Playback, and set Max Streaming Bitrate to Original. **Does Fire TV support Dolby Atmos with Jellyfin?** Yes, via Dolby Digital Plus. TrueHD Atmos is not supported (no passthrough). The Atmos spatial metadata is preserved in the DD+ stream. **Should I buy a Fire TV Stick or a Chromecast for Jellyfin?** Both work well. Fire TV has a dedicated Jellyfin app with remote control navigation. Chromecast with Google TV also has a native Jellyfin app. Choose based on your ecosystem preference. **What happens if Amazon removes Jellyfin from the Appstore?** On Fire OS devices, you can sideload the APK. On Vega OS devices, you would need to use a different streaming device. This has not happened and is unlikely given Jellyfin's open-source nature. --- > **Fire TV streaming Jellyfin? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see what is playing on every Fire TV client, verify Direct Play, and get alerts when transcoding spikes your CPU. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Monitor Jellyfin Server Uptime with Uptime Kuma: Setup, Alerts, and Dashboard (2026) URL: https://jellywatch.app/blog/jellyfin-uptime-kuma-monitoring-alerts-setup-2026 Published: 2026-05-02T15:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, uptime-kuma, monitoring, alerts, docker, discord, telegram, homelab, 2026 # Monitor Jellyfin Server Uptime with Uptime Kuma: Setup, Alerts, and Dashboard (2026) Your Jellyfin server crashed at 3 AM. Nobody noticed until your partner tried to watch a movie the next evening. By then, the database had been down for 18 hours and you missed a Radarr import. **Uptime Kuma** prevents this. It checks your Jellyfin server every 30 seconds and sends you an instant notification the moment something goes wrong. It is the most popular self-hosted monitoring tool in the homelab community in 2026, with over 75,000 GitHub stars. This guide covers the full setup: Docker deployment, Jellyfin health monitoring, alert configuration, and building a status page. --- ## What Is Uptime Kuma? Uptime Kuma is a self-hosted monitoring tool that: - Checks if your services are responding (HTTP, TCP, DNS, Docker, and more) - Sends instant notifications when a service goes down or comes back up - Tracks uptime history with response time graphs - Provides a public or private status page - Supports 90+ notification providers (Discord, Telegram, Ntfy, Slack, email, Pushover, and more) It runs as a single Docker container with a clean web UI. No agents, no configuration files, no external dependencies. --- ## Step 1: Deploy Uptime Kuma with Docker ```yaml services: uptime-kuma: image: louislam/uptime-kuma:1 container_name: uptime-kuma volumes: - ./uptime-kuma/data:/app/data ports: - 3001:3001 restart: unless-stopped ``` ```bash docker compose up -d ``` Open `http://your-server:3001` and create your admin account. --- ## Step 2: Add Jellyfin as a Monitor Jellyfin exposes a `/health` endpoint that returns HTTP 200 when the server is running and the database is accessible. ### Configure the monitor 1. In Uptime Kuma, click **Add New Monitor** 2. Configure: | Setting | Value | |---|---| | Monitor Type | HTTP(s) | | Friendly Name | Jellyfin | | URL | `http://jellyfin:8096/health` | | Heartbeat Interval | 30 seconds | | Retries | 3 | | Accepted Status Codes | 200 | 3. Click **Save** Uptime Kuma immediately starts checking your Jellyfin server every 30 seconds. The dashboard shows a green badge when healthy and a red badge when down. ### Why use /health instead of the main page? The `/health` endpoint verifies both HTTP connectivity and database access. If the Jellyfin web UI loads but the database is corrupted, `/health` returns an error while the main page might still partially render. --- ## Step 3: Monitor Your Entire Media Stack Do not stop at Jellyfin. Add monitors for every service in your stack: | Service | URL | Type | |---|---|---| | Jellyfin | `http://jellyfin:8096/health` | HTTP(s) | | Radarr | `http://radarr:7878/ping` | HTTP(s) | | Sonarr | `http://sonarr:8989/ping` | HTTP(s) | | Prowlarr | `http://prowlarr:9696/ping` | HTTP(s) | | Seerr | `http://seerr:5055/api/v1/status` | HTTP(s) | | Bazarr | `http://bazarr:6767/api/system/health` | HTTP(s) | | qBittorrent | `http://qbittorrent:8080` | HTTP(s) | | Caddy | `https://jellyfin.yourdomain.com` | HTTP(s) | For Docker-based services, use the Docker container name as the hostname (if Uptime Kuma is on the same Docker network). ### Docker Container Monitoring Uptime Kuma can also monitor Docker containers directly: 1. Mount the Docker socket: ```yaml services: uptime-kuma: image: louislam/uptime-kuma:1 volumes: - ./uptime-kuma/data:/app/data - /var/run/docker.sock:/var/run/docker.sock:ro ports: - 3001:3001 restart: unless-stopped ``` 2. Add a monitor with type **Docker Container** 3. Select the container name (e.g., `jellyfin`) 4. Uptime Kuma checks if the container is running, not just if the port responds This catches scenarios where the container is running but the application inside has crashed. --- ## Step 4: Configure Notifications Uptime Kuma supports 90+ notification providers. Here are the most popular for homelab admins: ### Discord 1. In your Discord server, create a webhook: Server Settings, Integrations, Webhooks, New Webhook 2. Copy the webhook URL 3. In Uptime Kuma: Settings, Notifications, Setup Notification, select **Discord** 4. Paste the webhook URL 5. Test and save You receive a Discord message the moment Jellyfin goes down, and another when it comes back up. ### Telegram 1. Create a bot via @BotFather on Telegram 2. Get your chat ID from @userinfobot 3. In Uptime Kuma: select **Telegram**, enter bot token and chat ID 4. Test and save ### Ntfy (Self-Hosted) If you run Ntfy alongside your media stack: 1. In Uptime Kuma: select **Ntfy** 2. Server URL: `http://ntfy:80` 3. Topic: `jellyfin-alerts` 4. Test and save Subscribe to the topic on your phone via the Ntfy Android app. ### Email (SMTP) For email alerts, configure your SMTP server (Gmail, Mailgun, or self-hosted): 1. Select **SMTP** 2. Enter SMTP host, port, username, password 3. Set sender and recipient addresses 4. Test and save --- ## Step 5: Build a Status Page Uptime Kuma includes a built-in status page that you can share with your users. ### Create the status page 1. In Uptime Kuma, click **Status Pages** in the sidebar 2. Click **New Status Page** 3. Name it (e.g., "MyServer Status") 4. Add your monitors to the page 5. Customize the description and incident history ### Share with users The status page is accessible at `http://your-server:3001/status/your-page-slug`. If you use a reverse proxy, expose it at a clean URL like `status.yourdomain.com`. **Caddyfile:** ``` status.yourdomain.com { reverse_proxy uptime-kuma:3001 } ``` Now when a user asks "is the server down?", you can point them to the status page instead of checking manually. --- ## Step 6: Advanced Monitoring ### Response Time Tracking Uptime Kuma logs the response time of every health check. Over time, you can see trends: - Normal: Jellyfin `/health` responds in 50-200ms - Slow: 500ms+ indicates database pressure or disk I/O issues - Timeout: the server is overloaded or down A gradual increase in response time often predicts a crash before it happens. ### Certificate Expiry Monitoring If you use HTTPS with Let's Encrypt, Uptime Kuma automatically tracks your SSL certificate expiry and alerts you before it expires. Add an HTTPS monitor for `https://jellyfin.yourdomain.com` and enable certificate expiry notifications (default: 30 days before expiry). ### Keyword Monitoring For more sophisticated checks, use the **HTTP(s) - Keyword** monitor type: - URL: `http://jellyfin:8096/System/Info` - Expected keyword: `"OperatingSystem"` - This verifies that Jellyfin is not just responding but returning valid API data --- ## Uptime Kuma vs JellyWatch: Complementary Tools Uptime Kuma and JellyWatch solve different problems: | Feature | Uptime Kuma | JellyWatch | |---|---|---| | **Purpose** | Is the server up or down? | What is happening on the server right now? | | **Monitoring type** | Availability (up/down) | Activity (sessions, transcoding, CPU) | | **Alert trigger** | Server unreachable | New session, CPU spike, device connected | | **Historical data** | Uptime percentage, response time | Viewing history, watch statistics | | **Status page** | Yes (shareable) | No | | **Platform** | Web (self-hosted) | Android (native app) | | **Arr stack integration** | Basic (HTTP checks) | Deep (Radarr/Sonarr/Seerr management) | **Use both together:** - Uptime Kuma tells you the server is down at 3 AM and sends a Discord alert - JellyWatch tells you why it went down (CPU spike from a runaway transcode) and lets you manage the recovery from your phone --- ## Notification Strategy for Homelab Admins Not every alert deserves the same urgency: | Event | Notification channel | Priority | |---|---|---| | Jellyfin down | Discord + Telegram + Push | High | | Radarr/Sonarr down | Discord only | Medium | | SSL certificate expiring | Email (weekly digest) | Low | | Response time degraded | Discord only | Medium | | Jellyfin recovered | Discord + Telegram | Info | Configure different notification groups in Uptime Kuma for different severity levels. --- ## Maintenance Windows When you plan to update your server, set a maintenance window in Uptime Kuma to suppress false alerts: 1. Click on the Jellyfin monitor 2. Click **Maintenance** 3. Set the start and end time 4. During maintenance, Uptime Kuma pauses alerts but continues logging This prevents your Discord from blowing up during a planned `docker compose pull && docker compose up -d`. --- ## Performance Impact Uptime Kuma is extremely lightweight: - **RAM:** ~70-100 MB - **CPU:** negligible (periodic HTTP requests) - **Disk:** ~50 MB for the application + logs It runs comfortably alongside your entire media stack on any hardware, including an Intel N100 mini PC. --- ## FAQ **Does Uptime Kuma work with Emby?** Yes. Emby exposes a similar health endpoint. Use `http://emby:8096/System/Info/Public` as the monitor URL. **Can Uptime Kuma restart a crashed container?** Not directly. Uptime Kuma is a monitoring tool, not an orchestrator. Use Docker's `restart: unless-stopped` policy for automatic container restarts. Uptime Kuma alerts you when the restart happens. **How many monitors can Uptime Kuma handle?** Hundreds. The tool is designed for monitoring dozens of services simultaneously with minimal resource usage. **Is Uptime Kuma better than Grafana for Jellyfin monitoring?** Different tools for different jobs. Uptime Kuma excels at simple up/down monitoring with instant alerts. Grafana excels at detailed metrics visualization with historical graphs. Many admins run both. **Can I monitor Jellyfin from outside my network?** Yes. If your Jellyfin server is accessible via a public URL (reverse proxy, Cloudflare Tunnel), point Uptime Kuma at the public URL. You can also run Uptime Kuma on a separate VPS for true external monitoring. **Does Uptime Kuma support mobile push notifications?** Not natively. Use Ntfy, Pushover, or Telegram as the notification provider to get push notifications on your phone. --- > **Uptime Kuma watches the heartbeat. JellyWatch watches the sessions.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and push alerts that complement Uptime Kuma perfectly. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same deep monitoring experience for Emby servers.* --- ## Swiftfin for Jellyfin on iOS and Apple TV: Complete Setup Guide (2026) URL: https://jellywatch.app/blog/jellyfin-swiftfin-ios-apple-tv-setup-guide-2026 Published: 2026-05-02T15:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, swiftfin, ios, apple-tv, tvos, iphone, ipad, client, setup, 2026 # Swiftfin for Jellyfin on iOS and Apple TV: Complete Setup Guide (2026) If you own an iPhone, iPad, or Apple TV and use Jellyfin, you have two main client options: **Infuse** (premium, ~$10/year) and **Swiftfin** (free, open source, official). For years, Infuse was the obvious choice. But Swiftfin 1.4, released in January 2026, changed the equation. Swiftfin is now a genuinely excellent client. This guide covers everything you need to get the best experience from it. --- ## What Is Swiftfin? Swiftfin is the **official Jellyfin client for Apple platforms**, built natively in Swift and SwiftUI. It is free, open source, and available on the App Store for iOS, iPadOS, and tvOS. Unlike the older "Jellyfin Mobile" app (which wraps the web interface), Swiftfin is a fully native app with its own UI, navigation, and media player. --- ## Swiftfin 1.4: What Changed The January 2026 release was a major milestone: - **Complete navigation and routing overhaul** - faster, more responsive UI - **Full Jellyfin 10.11 support** - compatible with the new EF Core database - **Revamped media player manager** - better playback controls and stability - **Improved library browsing** - smoother scrolling, faster metadata loading - **Better subtitle handling** - improved rendering and track selection - **tvOS improvements** - better remote control navigation on Apple TV --- ## Installing Swiftfin ### On iPhone and iPad 1. Open the **App Store** 2. Search for **Swiftfin** 3. Tap **Get** (free, no in-app purchases) 4. Open the app ### On Apple TV 1. Open the **App Store** on your Apple TV 2. Search for **Swiftfin** 3. Click **Get** 4. Open the app --- ## Connecting to Your Jellyfin Server ### Method 1: Manual URL Entry 1. Open Swiftfin 2. Tap **Connect to Server** 3. Enter your Jellyfin server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 4. Enter your username and password 5. Tap **Sign In** ### Method 2: Server Discovery If your Apple device and Jellyfin server are on the same local network, Swiftfin can discover the server automatically: 1. Open Swiftfin 2. Wait for the **Discovered Servers** list to populate 3. Tap your server 4. Sign in ### Method 3: QuickConnect Jellyfin 10.11 supports QuickConnect, which lets you sign in without typing a password: 1. In Swiftfin, tap **QuickConnect** 2. Note the 6-character code displayed 3. On any device already logged into Jellyfin, go to **User Settings, QuickConnect** and enter the code 4. Swiftfin authenticates automatically This is especially useful on Apple TV where typing passwords with the Siri Remote is painful. --- ## Playback Settings for Best Quality Swiftfin defaults are conservative. Adjust these for the best experience: ### On iPhone/iPad Settings, Video: - **Maximum Bitrate (Wi-Fi):** Maximum / Original - **Maximum Bitrate (Cellular):** 20 Mbps (adjust based on your data plan) - **Preferred Audio Language:** Your language - **Preferred Subtitle Language:** Your language ### On Apple TV Settings, Video: - **Maximum Bitrate:** Maximum / Original - **Direct Play:** Enabled - **Audio Passthrough:** Enabled (if connected to an AV receiver) Setting bitrate to Maximum is critical. Without it, Swiftfin may request a lower quality stream, triggering an unnecessary transcode on your server. --- ## Codec Support in Swiftfin Swiftfin uses Apple's native AVFoundation framework for playback. Codec support depends on the Apple hardware: ### iPhone and iPad | Codec | iPhone 12+ | iPhone 15 Pro+ | |---|---|---| | H.264 | Yes | Yes | | H.265/HEVC | Yes | Yes | | AV1 | No | Yes (A17 Pro+) | | VP9 | No | No | | HDR10 | Yes (OLED models) | Yes | | Dolby Vision | Yes (OLED models) | Yes | ### Apple TV 4K | Codec | 2nd Gen (A12) | 3rd Gen (A15) | |---|---|---| | H.264 | Yes | Yes | | H.265/HEVC | Yes | Yes | | AV1 | No | Yes | | VP9 | No | No | | HDR10 | Yes | Yes | | Dolby Vision | Yes | Yes | | Dolby Atmos (DD+) | Yes | Yes | | TrueHD passthrough | No | No | | DTS passthrough | No | No | **Key limitation:** Apple TV does not passthrough TrueHD or DTS audio regardless of which app you use. This is a hardware/OS limitation, not a Swiftfin limitation. Dolby Atmos is delivered via lossy Dolby Digital Plus. --- ## Swiftfin vs Infuse: Honest Comparison | Feature | Swiftfin 1.4 | Infuse Pro | |---|---|---| | **Price** | Free | ~$9.99/year | | **Open source** | Yes | No | | **Native Jellyfin UI** | Yes (full metadata fidelity) | Library Mode or Direct Mode | | **Codec breadth** | Apple AVFoundation | Custom player (wider support) | | **VP9 support** | No | Yes | | **Dolby Vision** | Yes | Yes (all profiles) | | **Offline downloads** | Not yet | Yes | | **Subtitle rendering** | Good | Excellent | | **Scrubbing experience** | Good | Best-in-class | | **Watch progress sync** | Native (always accurate) | Requires Direct Mode | | **AirPlay** | System-level | Built-in | | **Active development** | Very active (community) | Active (Firecore team) | ### Choose Swiftfin if: - You want a free, open-source client - You value native Jellyfin integration (metadata, watch progress, user profiles) - Your library is H.264/H.265 (the vast majority of content) - You do not need offline downloads ### Choose Infuse if: - You need the widest possible codec support (VP9, legacy formats) - Offline downloads are important - You want the smoothest scrubbing and playback experience - You are willing to pay ~$10/year ### Use both? Many Apple users keep both installed. Swiftfin for daily browsing and native Jellyfin features. Infuse for problematic files that Swiftfin cannot Direct Play. --- ## Apple TV Optimization Tips ### Enable Match Content Apple TV Settings, Video and Audio, Match Content: - **Match Dynamic Range:** On - **Match Frame Rate:** On This ensures your Apple TV switches to the correct HDR mode and frame rate for each video automatically. Without it, a 24fps movie plays at 60fps with frame interpolation, and HDR content may display incorrectly. ### Use Ethernet The Apple TV 4K has a Gigabit Ethernet port. Use it. Wi-Fi is fine for 1080p, but 4K remuxes at 60-80 Mbps can stutter on Wi-Fi, especially if other devices are competing for bandwidth. ### Siri Remote Shortcuts | Action | Siri Remote gesture | |---|---| | Play/Pause | Click touchpad center | | Seek 10 seconds | Swipe left/right on touchpad | | Subtitles | Swipe down during playback | | Audio track | Swipe down during playback | | Info overlay | Swipe down during playback | --- ## Troubleshooting Common Issues | Problem | Cause | Fix | |---|---|---| | Buffering on 4K content | Bitrate limit too low | Set to Maximum in Swiftfin settings | | No audio | Unsupported audio codec | Server transcodes audio automatically; check server logs | | Subtitles not showing | Wrong subtitle track selected | Swipe down during playback to select | | App crashes on large library | Memory pressure on older devices | Reduce home screen sections in Jellyfin | | Cannot connect to server | Wrong URL or firewall | Verify URL is reachable from Safari first | | HDR looks washed out | Match Dynamic Range disabled | Enable in Apple TV settings | | QuickConnect not working | Feature disabled on server | Enable in Jellyfin Dashboard, Networking | --- ## SyncPlay on Swiftfin Swiftfin supports Jellyfin's built-in SyncPlay feature for group watching: 1. Start playing any media 2. Open the playback menu 3. Join or create a SyncPlay group 4. All group members' playback is synchronized This works across devices. Someone on Swiftfin (Apple TV) and someone on Findroid (Android) can watch together in sync. --- ## Swiftfin Roadmap Based on the Swiftfin GitHub repository and community discussions, upcoming features include: - **Offline downloads** - the most requested feature - **tvOS design refresh** - bringing the tvOS app closer to the iOS experience - **Improved music playback** - better album art and queue management - **Widget support** - iOS home screen widgets for continue watching --- ## FAQ **Is Swiftfin the official Jellyfin app for Apple?** Yes. Swiftfin is maintained by the Jellyfin project and is the official client for iOS, iPadOS, and tvOS. **Does Swiftfin cost anything?** No. It is completely free with no in-app purchases. It is open source under the GPLv3 license. **Can Swiftfin play 4K HDR?** Yes. H.265 4K with HDR10 and Dolby Vision Direct Plays on supported Apple hardware. **Why does Swiftfin not support VP9?** Apple's AVFoundation framework does not include a VP9 decoder. This is an Apple platform limitation. Infuse works around it with a custom software decoder. **Does Swiftfin support Live TV?** Yes. If you have Live TV configured on your Jellyfin server, it is accessible from Swiftfin. **Can I use Swiftfin and Infuse on the same server?** Yes. Both connect to the same Jellyfin server independently. Watch progress syncs through Jellyfin, so switching between apps is seamless. **Is there an admin app for Jellyfin on iOS?** Swiftfin is a viewing client, not an admin tool. For server administration on mobile, JellyWatch on Android provides real-time session monitoring, transcoding diagnostics, and server health tracking. --- > **Swiftfin handles the watching. JellyWatch handles the server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor every Swiftfin session in real time, verify Direct Play, and get alerts when something needs attention. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Best Handbrake & FFmpeg Settings for Jellyfin 2026: Encode for Zero Transcoding on Every Device URL: https://jellywatch.app/blog/best-handbrake-ffmpeg-settings-jellyfin-encode-2026 Published: 2026-05-02T14:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, handbrake, ffmpeg, encode, h265, h264, direct-play, settings, guide, 2026 # Best Handbrake and FFmpeg Settings for Jellyfin in 2026: Encode for Direct Play on Every Device You have a library of media files in random formats. Some are ancient XviD AVI files. Some are 80 GB Blu-ray remuxes. Some are H.264, some H.265, some have DTS audio that half your clients cannot play. The result: constant transcoding, buffering, and frustrated users. The fix is encoding your files once, correctly, so every Jellyfin client Direct Plays them without your server lifting a finger. This guide gives you the exact settings. --- ## The Goal: Zero Transcoding A properly encoded file should: - **Direct Play on 95%+ of devices** (phones, TVs, browsers, streaming sticks) - **Look indistinguishable from the source** at normal viewing distance - **Use reasonable storage** (not 80 GB per movie, not 1 GB either) - **Include compatible audio** so no device triggers an audio transcode - **Use text subtitles** so no device triggers a burn-in transcode --- ## Quick Reference: Copy-Paste Settings ### For 1080p Content (Most Libraries) | Setting | Handbrake | FFmpeg equivalent | |---|---|---| | Video codec | H.265 (x265) | `libx265` | | Quality | RF 20 | `-crf 20` | | Preset | Medium | `-preset medium` | | Profile | Main 10 | `-profile:v main10` | | Audio 1 | AAC Stereo 160 kbps | `-c:a aac -b:a 160k` | | Audio 2 | EAC3 5.1 640 kbps (if source is surround) | `-c:a:1 eac3 -b:a:1 640k` | | Container | MKV | `.mkv` | | Subtitles | Passthrough (text only) | `-c:s copy` (SRT/ASS only) | ### For 4K HDR Content | Setting | Handbrake | FFmpeg equivalent | |---|---|---| | Video codec | H.265 (x265) 10-bit | `libx265 -pix_fmt yuv420p10le` | | Quality | RF 18 | `-crf 18` | | Preset | Slow | `-preset slow` | | HDR | Passthrough (HDR10 metadata) | See HDR section below | | Audio 1 | EAC3 Atmos 768 kbps | `-c:a eac3 -b:a 768k` | | Audio 2 | AAC Stereo 160 kbps | `-c:a:1 aac -b:a:1 160k` | | Container | MKV | `.mkv` | --- ## Understanding CRF (Constant Rate Factor) CRF controls quality. Lower number = higher quality = larger file. | CRF | Quality | Typical 1080p movie size | Use case | |---|---|---|---| | 16-17 | Near-transparent | 8-15 GB | Archival, reference quality | | 18-20 | Excellent | 4-8 GB | Recommended for most libraries | | 21-23 | Very good | 2-5 GB | Storage-constrained setups | | 24-26 | Good | 1-3 GB | Mobile/remote streaming | | 27+ | Noticeable loss | Under 1.5 GB | Not recommended | **The sweet spot for Jellyfin is CRF 18-20 for 1080p and CRF 16-18 for 4K.** At these values, the encode is visually indistinguishable from the source on a normal TV at normal viewing distance. --- ## Handbrake: Step-by-Step Configuration ### Video Tab 1. **Video Encoder:** H.265 (x265) 2. **Framerate:** Same as source, Variable 3. **Quality:** Constant Quality, RF 20 (1080p) or RF 18 (4K) 4. **Encoder Preset:** Medium (balance of speed and compression) - Slow gives ~10% better compression but takes 2-3x longer - Fast saves time but files are 15-20% larger 5. **Encoder Profile:** Main 10 (required for HDR, recommended for all) 6. **Encoder Level:** Auto ### Audio Tab This is where most people make mistakes. You need **two audio tracks** for maximum compatibility: **Track 1 (surround, for home theater):** - Codec: E-AC3 (EAC3) - Mixdown: 5.1 Surround (or passthrough if source is already EAC3) - Bitrate: 640 kbps **Track 2 (stereo fallback, for phones and browsers):** - Codec: AAC (avcodec) - Mixdown: Stereo - Bitrate: 160 kbps Why two tracks? EAC3 5.1 gives surround sound on TVs and receivers. AAC stereo ensures phones, tablets, and browsers never trigger an audio transcode. Every device picks the track it can handle. ### Subtitles Tab - **Add all SRT/ASS subtitle tracks** from the source - **Do NOT add PGS or VobSub** (image-based subtitles force a full video transcode) - If you need PGS subtitles, convert them to SRT first using SubtitleEdit or PGS2SRT ### Container - **MKV** is recommended. It supports all codecs, multiple audio tracks, and multiple subtitle tracks. - MP4 works but has limitations with some subtitle formats and codec combinations. --- ## FFmpeg: Command-Line Recipes ### 1080p H.265 Encode with Dual Audio ```bash ffmpeg -i input.mkv \ -map 0:v:0 -map 0:a:0 -map 0:a:0 -map 0:s? \ -c:v libx265 -crf 20 -preset medium -profile:v main10 \ -c:a:0 eac3 -b:a:0 640k -ac:a:0 6 \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ -metadata:s:a:0 title="Surround 5.1" \ -metadata:s:a:1 title="Stereo" \ output.mkv ``` ### 4K HDR10 Encode (Preserving HDR Metadata) ```bash ffmpeg -i input.mkv \ -map 0:v:0 -map 0:a:0 -map 0:a:0 -map 0:s? \ -c:v libx265 -crf 18 -preset slow \ -profile:v main10 -pix_fmt yuv420p10le \ -x265-params "hdr-opt=1:repeat-headers=1:colorprim=bt2020:transfer=smt2084:colormatrix=bt2020nc:max-cll=1000,400" \ -c:a:0 eac3 -b:a:0 768k \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ output.mkv ``` ### Quick H.264 Encode (Maximum Compatibility) For files that must play on absolutely everything, including old smart TVs and budget devices: ```bash ffmpeg -i input.mkv \ -c:v libx264 -crf 22 -preset medium -profile:v high -level 4.1 \ -c:a aac -b:a 192k -ac 2 \ -c:s copy \ -movflags +faststart \ output.mp4 ``` ### Batch Encode an Entire Folder ```bash for f in *.mkv; do ffmpeg -i "$f" \ -c:v libx265 -crf 20 -preset medium -profile:v main10 \ -c:a:0 eac3 -b:a:0 640k \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ "encoded/${f}" done ``` --- ## H.264 vs H.265 vs AV1: Which Codec to Use | Codec | File size (1080p) | Client support | Encode speed | Recommendation | |---|---|---|---|---| | H.264 | 6-12 GB | Universal (100%) | Fast | Legacy devices, maximum compatibility | | H.265 | 3-7 GB | Very wide (95%+) | Medium | Recommended default for 2026 | | AV1 | 2-5 GB | Growing (70-80%) | Very slow | Future-proof, bandwidth-constrained | **H.265 is the right choice for most Jellyfin libraries in 2026.** It offers the best balance of compression, quality, and client support. H.264 is the fallback for maximum compatibility. AV1 is worth considering only if all your clients support it. --- ## Preserving HDR: What You Need to Know ### HDR10 HDR10 metadata is preserved automatically by both Handbrake and FFmpeg when encoding with 10-bit H.265. No special configuration needed beyond using Main 10 profile. ### Dolby Vision Dolby Vision is significantly harder to preserve during encoding. A standard Handbrake or FFmpeg encode **strips Dolby Vision metadata entirely**. To preserve DV, you need specialized tools: 1. Extract the DV layer with `dovi_tool` 2. Encode the base layer with x265 3. Re-inject the DV metadata with `dovi_tool` and `mp4muxer` **For most users: if the file has Dolby Vision, keep the remux.** Only encode DV content if you are comfortable with the specialized workflow. ### HDR10+ HDR10+ dynamic metadata can be preserved with recent versions of x265 and FFmpeg. Add `--dhdr10-info` to your x265 parameters with the extracted metadata JSON. --- ## GPU-Accelerated Encoding Software encoding (x265) produces the best quality per bit. But if you have thousands of files to process, GPU encoding is 5-10x faster. ### NVIDIA NVENC (FFmpeg) ```bash ffmpeg -i input.mkv \ -c:v hevc_nvenc -preset p5 -rc constqp -qp 24 \ -c:a eac3 -b:a 640k \ output.mkv ``` ### Intel QSV (FFmpeg) ```bash ffmpeg -i input.mkv \ -c:v hevc_qsv -preset medium -global_quality 22 \ -c:a eac3 -b:a 640k \ output.mkv ``` **Quality note:** GPU encoders produce slightly larger files at the same visual quality compared to software x265. Expect 20-30% larger files at equivalent quality. The trade-off is speed. --- ## Automating Encodes with Tdarr For large libraries, manual encoding is impractical. **Tdarr** automates the process: 1. Point Tdarr at your media folders 2. Configure a plugin: "If not H.265, transcode to H.265 CRF 20 with EAC3 + AAC audio" 3. Tdarr processes files in the background 4. Jellyfin library refreshes automatically See our dedicated Tdarr guide for the full setup. --- ## File Size Expectations After Encoding | Source | H.265 CRF 20 | H.265 CRF 18 | Storage saved | |---|---|---|---| | 1080p Blu-ray remux (25 GB) | 4-7 GB | 6-10 GB | 60-80% | | 4K Blu-ray remux (60 GB) | 12-20 GB | 18-30 GB | 50-70% | | 1080p H.264 encode (8 GB) | 3-5 GB | 4-7 GB | 35-55% | | DVD rip (4 GB) | 1-2 GB | 1.5-3 GB | 50-65% | --- ## Common Encoding Mistakes | Mistake | Why it is bad | Fix | |---|---|---| | Only AAC stereo audio | Surround sound lost | Add EAC3 5.1 as primary track | | Including PGS subtitles | Forces burn-in transcode | Convert to SRT or exclude | | CRF too high (26+) | Visible quality loss | Use CRF 18-22 | | Using MP4 with ASS subs | ASS not supported in MP4 | Use MKV container | | No 10-bit for HDR | HDR metadata lost | Always use Main 10 profile | | Encoding at "Ultrafast" | Huge files, poor compression | Use Medium or Slow preset | --- ## FAQ **What is the best CRF for Jellyfin?** CRF 20 for 1080p, CRF 18 for 4K. These produce excellent quality with reasonable file sizes. **Should I use H.264 or H.265?** H.265 for most libraries. It produces files 40-50% smaller than H.264 at the same quality. Use H.264 only if you have very old clients. **Does Handbrake preserve HDR?** Yes, HDR10 is preserved when using H.265 10-bit. Dolby Vision is not preserved by standard Handbrake encodes. **How long does encoding take?** A 2-hour 1080p movie at CRF 20 Medium preset takes roughly 1-3 hours on a modern CPU. 4K takes 3-8 hours. GPU encoding is 5-10x faster. **Can I encode directly on my Jellyfin server?** Yes, but schedule encodes during off-peak hours. Encoding uses significant CPU/GPU resources that compete with active streams. **Is there a quality difference between Handbrake and FFmpeg?** No. Both use the same underlying encoders (x265, x264). The output is identical with the same settings. **Should I keep the original files after encoding?** Keep originals for at least a month after encoding. Verify the encodes look correct before deleting sources. --- > **Encoded your library? Verify every stream is Direct Playing.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see the exact playback method for every active session and confirm your encodes work perfectly on every device. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same encoding verification for Emby servers.* --- ## GPU Encoding Recipes: NVENC, QSV, and AMF (Complete) GPU encoding is 5-10x faster than software x265. Here are production-ready recipes for each GPU vendor, optimized for Jellyfin Direct Play. ### NVIDIA NVENC (RTX 2000/3000/4000/5000 Series) NVIDIA GPUs offer the best hardware encoding quality in 2026, especially the RTX 4000+ series with AV1 support. #### H.265 NVENC - Best Quality (Recommended) ```bash ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mkv \ -c:v hevc_nvenc -preset p6 -tune hq -rc constqp -qp 22 \ -b:v 0 -profile:v main10 -tier high \ -spatial-aq 1 -temporal-aq 1 -aq-strength 8 \ -c:a:0 eac3 -b:a:0 640k -ac:a:0 6 \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy -map 0:v:0 -map 0:a:0 -map 0:a:0 -map 0:s? \ -metadata:s:a:0 title="Surround 5.1" \ -metadata:s:a:1 title="Stereo" \ output.mkv ``` **Key parameters explained:** - `-preset p6`: High quality preset (p1=fastest, p7=slowest/best) - `-tune hq`: Optimizes for visual quality over speed - `-rc constqp -qp 22`: Constant quality mode (similar to CRF) - `-spatial-aq 1 -temporal-aq 1`: Adaptive quantization for better detail preservation - `-aq-strength 8`: How aggressively AQ redistributes bits (1-15) #### AV1 NVENC (RTX 4000+ only) ```bash ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mkv \ -c:v av1_nvenc -preset p5 -tune hq -rc constqp -qp 28 \ -profile:v main -tier main \ -c:a:0 eac3 -b:a:0 640k \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ output.mkv ``` > AV1 NVENC produces files 20-30% smaller than HEVC NVENC at the same quality. Use QP 26-30 for AV1. #### NVENC Quality Comparison (QP values) | QP | Visual Quality | Typical 1080p Size | Equivalent Software CRF | |---|---|---|---| | 18-20 | Excellent (archival) | 6-10 GB | ~CRF 16-17 | | 21-23 | Very good (recommended) | 4-7 GB | ~CRF 18-20 | | 24-26 | Good | 3-5 GB | ~CRF 21-23 | | 27-30 | Acceptable | 2-4 GB | ~CRF 24-26 | --- ### Intel Quick Sync Video (QSV) - N100, 12th-14th Gen Core Intel QSV is available on any Intel CPU with integrated graphics. The N100 and 12th+ gen Core CPUs offer excellent quality. #### H.265 QSV - Best Quality ```bash ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i input.mkv \ -c:v hevc_qsv -preset veryslow -global_quality 23 \ -profile:v main10 -look_ahead 1 -look_ahead_depth 40 \ -extbrc 1 -adaptive_i 1 -adaptive_b 1 \ -c:a:0 eac3 -b:a:0 640k -ac:a:0 6 \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy -map 0:v:0 -map 0:a:0 -map 0:a:0 -map 0:s? \ output.mkv ``` **Key parameters:** - `-global_quality 23`: Quality level (lower = better, 20-25 recommended) - `-look_ahead 1 -look_ahead_depth 40`: Enables lookahead for better bitrate distribution - `-extbrc 1`: Extended bitrate control for improved quality - `-adaptive_i 1 -adaptive_b 1`: Adaptive I/B frame placement #### AV1 QSV (Intel Arc / 14th Gen+) ```bash ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i input.mkv \ -c:v av1_qsv -preset veryslow -global_quality 28 \ -look_ahead 1 -look_ahead_depth 40 \ -c:a:0 eac3 -b:a:0 640k \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ output.mkv ``` --- ### AMD AMF (RX 6000/7000/9000 Series) AMD hardware encoding has improved significantly but still trails NVIDIA and Intel in quality-per-bit. #### H.265 AMF ```bash ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi \ -vaapi_device /dev/dri/renderD128 -i input.mkv \ -c:v hevc_amf -quality quality -rc cqp -qp_i 22 -qp_p 24 \ -profile:v main10 \ -c:a:0 eac3 -b:a:0 640k \ -c:a:1 aac -b:a:1 160k -ac:a:1 2 \ -c:s copy \ output.mkv ``` > AMD AMF produces files ~15-20% larger than NVENC at equivalent visual quality. Acceptable for batch processing where speed matters more than compression. --- ### GPU Encoding Quality Ranking (2026) | Rank | Encoder | Quality/Bit | Speed | Best For | |---|---|---|---|---| | 1 | Software x265 | Best | Slowest | Final archive, small libraries | | 2 | NVENC (RTX 4000+) | Very good | Fast | Large libraries, daily use | | 3 | Intel QSV (12th gen+) | Good | Fast | Budget builds, N100 servers | | 4 | AMD AMF (RX 7000+) | Acceptable | Fast | AMD-only systems | --- ## Batch Automation with Tdarr: Set It and Forget It Manually encoding hundreds of files is impractical. **Tdarr** is a distributed transcoding automation tool that processes your entire library in the background. ### What Tdarr Does 1. Scans your media folders continuously 2. Identifies files that do not match your target codec/settings 3. Transcodes them automatically using your GPU or CPU 4. Replaces the original file (or saves alongside) 5. Integrates with Jellyfin to refresh the library after each file ### Tdarr Docker Compose ```yaml services: tdarr: image: ghcr.io/haveagitgat/tdarr:latest container_name: tdarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - serverIP=0.0.0.0 - serverPort=8266 - webUIPort=8265 - internalNode=true - inContainer=true - ffmpegVersion=7 - nodeName=InternalNode volumes: - ./tdarr/server:/app/server - ./tdarr/configs:/app/configs - ./tdarr/logs:/app/logs - /mnt/media:/media - /tmp/tdarr:/temp ports: - 8265:8265 - 8266:8266 devices: - /dev/dri:/dev/dri # Intel QSV # For NVIDIA, add: # runtime: nvidia # environment: # - NVIDIA_VISIBLE_DEVICES=all restart: unless-stopped ``` ### Recommended Tdarr Plugin Stack Configure these plugins in order (Tdarr processes them sequentially): **Plugin 1: Skip if already H.265** - Plugin: `Tdarr_Plugin_MC93_Migz1FFMPEG_CPU` - Condition: Skip if video codec is already `hevc` **Plugin 2: Transcode video to H.265** - Plugin: `Tdarr_Plugin_MC93_Migz2CleanTitle` (clean metadata first) - Then: `Tdarr_Plugin_Engine_NVENC_Tiered_H265` (NVIDIA) or `Tdarr_Plugin_Engine_QSV_Tiered_H265` (Intel) - Settings: CRF/QP 22, Medium preset, Main10 profile **Plugin 3: Normalize audio to EAC3 + AAC** - Plugin: `Tdarr_Plugin_MC93_Migz4CleanSubs` (remove image subs) - Then: `Tdarr_Plugin_bsh1_Boosh_Audio_Converter` - Settings: First track EAC3 5.1 640k, second track AAC Stereo 160k **Plugin 4: Remove image-based subtitles** - Plugin: `Tdarr_Plugin_MC93_Migz5ConvertSubs` - Settings: Remove PGS and VobSub, keep SRT and ASS only ### Tdarr + Jellyfin Integration After Tdarr finishes processing a file, trigger a Jellyfin library refresh: 1. In Tdarr: Settings → Post-processing → Webhook 2. URL: `http://jellyfin:8096/Library/Refresh?api_key=YOUR_API_KEY` 3. Method: POST Or use the Tdarr Jellyfin plugin that triggers a targeted scan of the specific file. ### Tdarr Performance Tips - **Set GPU limits**: Allow only 1-2 simultaneous GPU transcodes to leave headroom for Jellyfin playback - **Schedule processing**: Use Tdarr schedules to only process during off-peak hours (2 AM - 8 AM) - **Use /tmp as temp folder**: Transcoding writes heavily to disk. Use an SSD or tmpfs for the temp folder - **Priority order**: Process most-watched content first (sort by file size or folder) - **Health checks**: Enable Tdarr health checks to detect corrupted files before processing ### Expected Processing Speed | Hardware | 1080p H.265 encode speed | Time per 2h movie | |---|---|---| | Software x265 (8-core CPU) | 25-40 fps | 2-3 hours | | NVIDIA RTX 3060 (NVENC) | 150-250 fps | 20-30 minutes | | NVIDIA RTX 4070 (NVENC) | 200-350 fps | 15-25 minutes | | Intel N100 (QSV) | 80-120 fps | 40-60 minutes | | Intel i5-12400 (QSV) | 120-180 fps | 25-40 minutes | | Intel Arc A380 (QSV) | 150-250 fps | 20-30 minutes | With an RTX 4070, you can process **50-70 movies per day** automatically. ### Tdarr vs Manual FFmpeg: When to Use Each | Scenario | Use Tdarr | Use Manual FFmpeg | |---|---|---| | Library of 500+ files | Yes | No (too tedious) | | One-off encode of a specific file | No | Yes | | Ongoing library maintenance | Yes | No | | Custom HDR/DV workflow | No (too complex for plugins) | Yes | | Testing encode settings | No | Yes (iterate quickly) | --- > **Processing your library with Tdarr? Monitor the impact on your server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - track CPU/GPU usage during batch encodes, verify Direct Play status for processed files, and get alerts if Tdarr impacts active streams. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring for Emby servers during batch processing.* --- ## Jellyfin Direct Play vs Transcoding Explained: Why It Matters and How to Force Direct Play (2026) URL: https://jellywatch.app/blog/jellyfin-direct-play-vs-transcoding-explained-2026 Published: 2026-05-02T14:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, direct-play, transcoding, codec, performance, guide, 2026 # Jellyfin Direct Play vs Transcoding Explained: Why It Matters and How to Force Direct Play (2026) Every Jellyfin admin eventually hits the same wall: one user starts watching a movie and the server CPU jumps to 90%. Another user watches the same file on a different device and the CPU stays at 1%. The difference is **Direct Play vs Transcoding**, and understanding it is the single most important concept for running a smooth Jellyfin server. This guide explains every playback method, why transcoding triggers, how to diagnose it in real time, and how to configure your library and clients so everything Direct Plays. --- ## The Four Playback Methods When a client requests a file from Jellyfin, the server decides how to deliver it. There are four possible outcomes: | Method | What happens | Server CPU | Quality | |---|---|---|---| | **Direct Play** | File sent as-is, no processing | ~0% | Original (best) | | **Remux** | Container changed, streams untouched | ~1% | Original | | **Direct Stream** | Audio transcoded, video untouched | Low | Video original, audio lossy | | **Full Transcode** | Video re-encoded on the fly | High (40-100%) | Reduced | ### Direct Play The file is delivered exactly as it exists on disk. The client handles all decoding. Your server does nothing except read the file and send bytes over the network. **This is always the goal.** Zero CPU cost, original quality, no artifacts, no delay. ### Remux (Container Change) The video and audio streams are identical to the source, but the container format changes. For example, an MKV file remuxed to an MP4 container for a client that does not support MKV. The actual video and audio data is untouched. CPU cost is negligible. Quality is identical to the source. ### Direct Stream (Audio Transcode Only) The video plays natively, but the audio codec is not supported by the client. Jellyfin transcodes only the audio track. For example, converting TrueHD to AAC while leaving the H.265 video stream untouched. CPU cost is low. Video quality is preserved. Audio becomes lossy. ### Full Transcode The video is re-encoded in real time. This happens when the client cannot decode the video codec, the resolution is too high for the client, or the user set a bitrate limit. CPU cost is very high without hardware acceleration. Quality is always lower than the source. This is what causes buffering, fan noise, and server overload. --- ## Why Does Jellyfin Transcode? Jellyfin transcodes for exactly one reason: **the client reported that it cannot play the file as-is**. The specific triggers are: ### 1. Unsupported Video Codec The client does not support the video codec in the file. | Scenario | Result | |---|---| | H.265 file on a browser without HEVC support | Full video transcode | | AV1 file on a pre-2022 device | Full video transcode | | H.264 file on any modern device | Direct Play | ### 2. Unsupported Audio Codec The client supports the video but not the audio. | Scenario | Result | |---|---| | TrueHD audio on a Fire TV Stick | Audio transcode (Direct Stream) | | DTS audio on Apple TV | Audio transcode | | AAC audio on any device | Direct Play | ### 3. Bitrate Limit Set Too Low The client or user profile has a maximum streaming bitrate configured. If the file bitrate exceeds this limit, Jellyfin transcodes to reduce it. | Setting | File bitrate | Result | |---|---|---| | Max 20 Mbps | 60 Mbps (4K remux) | Full transcode to fit 20 Mbps | | Max Original | 60 Mbps | Direct Play | **This is the number one accidental transcode trigger.** Many clients default to a conservative bitrate limit instead of "Original" or "Maximum". ### 4. Subtitle Burn-In Image-based subtitles (PGS, VobSub) cannot be overlaid by most clients. Jellyfin must burn them into the video stream, which triggers a full video transcode. | Subtitle format | Result | |---|---| | SRT (text) | Direct Play (client renders) | | ASS/SSA (text) | Direct Play on most clients | | PGS (image, Blu-ray) | Full video transcode (burn-in) | | VobSub (image, DVD) | Full video transcode (burn-in) | ### 5. Unsupported Container Some clients do not support the MKV container. Jellyfin remuxes to MP4 or TS. This is lightweight and does not affect quality. ### 6. HDR to SDR Conversion If the file is HDR and the client only supports SDR, Jellyfin must tone-map the video. This requires a full transcode with tone mapping enabled. --- ## How to Identify What Is Happening ### From the Jellyfin Dashboard 1. Open Dashboard while a stream is active 2. Look at the **Active Sessions** section 3. Each session shows the playback method: - **Direct Play** or a green badge - **Transcode** with the reason ### From JellyWatch (Android) JellyWatch shows every active session with detailed technical badges: - Playback method (Direct Play / Direct Stream / Transcode) - Video codec and resolution - Audio codec - Transcode reason (if applicable) - Client device and app name This is the fastest way to diagnose transcoding issues from your phone without opening a browser. ### From Server Logs Dashboard, Logs, search for "TranscodingJob" or "DirectPlay". The logs show exactly why Jellyfin chose to transcode. --- ## How to Force Direct Play on Every Client ### Step 1: Set Client Quality to Maximum This is the single most impactful change. On every Jellyfin client: - Open the app settings - Find **Playback** or **Video Quality** - Set **Max Streaming Bitrate** to **Original** or **Maximum** Do this on every device: phones, TVs, streaming sticks, browsers. ### Step 2: Use Compatible Codecs in Your Library The safest codec combination for maximum Direct Play compatibility: | Component | Recommended | Why | |---|---|---| | Video codec | H.264 or H.265 | Supported by 95%+ of devices | | Audio codec | AAC or EAC3 | Universal compatibility | | Container | MKV or MP4 | Both widely supported | | Subtitles | SRT (external) | Never triggers burn-in | If you encode your own files (Handbrake, Tdarr), always include an AAC or EAC3 audio track alongside any lossless track. ### Step 3: Replace PGS Subtitles with SRT PGS subtitles are the silent killer of Direct Play. Replace them: - Use **Bazarr** to automatically download SRT subtitles - Or extract PGS to SRT using **SubtitleEdit** or **PGS2SRT** ### Step 4: Disable Transcoding for Specific Users (Advanced) If you want to enforce Direct Play and let playback fail rather than transcode: Dashboard, Users, [User], uncheck **Allow video playback that requires transcoding** This forces the client to either Direct Play or show an error. Useful for bandwidth-constrained servers where you prefer no playback over bad playback. ### Step 5: Configure Hardware Acceleration as Fallback Even with perfect Direct Play optimization, some clients will still trigger transcodes. Configure hardware acceleration so those transcodes are cheap: Dashboard, Playback, Transcoding: - Enable **Intel QSV**, **NVIDIA NVENC**, or **AMD AMF** - Enable **Hardware Tone Mapping** - Enable all supported codecs With hardware acceleration, a transcode that would use 90% CPU drops to 5-10%. --- ## Direct Play Compatibility by Client | Client | H.264 | H.265 | AV1 | TrueHD | DTS | |---|---|---|---|---|---| | Jellyfin Web (Chrome) | Yes | Partial | Yes | No | No | | Jellyfin Web (Firefox) | Yes | No | Yes | No | No | | Jellyfin Android | Yes | Yes | Yes (Android 12+) | No | No | | Findroid | Yes | Yes | Yes | No | No | | Jellyfin Android TV | Yes | Yes | Device-dependent | Passthrough | Passthrough | | Apple TV (Infuse) | Yes | Yes | Yes | No passthrough | No passthrough | | Apple TV (Swiftfin) | Yes | Yes | Partial | No | No | | Nvidia Shield | Yes | Yes | Yes | Passthrough | Passthrough | | Fire TV Stick 4K Max | Yes | Yes | Yes | No | No | | Jellyfin Media Player | Yes | Yes | Yes | Passthrough | Passthrough | **Key takeaway:** H.264 Direct Plays everywhere. H.265 Direct Plays on most modern devices. TrueHD and DTS only passthrough on Shield and desktop players. --- ## The Cost of Transcoding | Scenario | CPU usage (no GPU) | CPU usage (with GPU) | |---|---|---| | Direct Play | ~0% | ~0% | | Audio-only transcode | 2-5% | 2-5% | | 1080p video transcode | 40-60% | 3-5% | | 4K HDR video transcode | 80-100% | 5-15% | | 4K HDR tone mapping | 100%+ (unusable) | 8-15% | A single unexpected 4K transcode without hardware acceleration can make your entire server unusable for every other user. --- ## Common Transcode Triggers and Fixes | Trigger | How to identify | Fix | |---|---|---| | Bitrate limit too low | JellyWatch shows "bandwidth" reason | Set client to Original/Maximum | | PGS subtitles | Transcode reason shows "subtitle" | Switch to SRT subtitles | | H.265 on Firefox | Browser does not support HEVC | Use Chrome or Jellyfin Media Player | | TrueHD on Fire TV | Audio transcode triggered | Add EAC3 fallback audio track | | 4K on mobile data | User set low quality | Educate user or set server-side limit | | HDR on SDR display | Tone mapping required | Enable hardware tone mapping | --- ## Monitoring Direct Play Ratio Over Time Install the **Playback Reporting** plugin to track your Direct Play vs Transcode ratio: 1. Dashboard, Plugins, Catalog, Playback Reporting, Install 2. After a week of usage, check the reports 3. A healthy server should show 80%+ Direct Play **JellyWatch** also shows real-time playback method for every active session, so you can catch transcodes the moment they happen. --- ## FAQ **Does Direct Play use any server resources?** Almost none. The server reads the file from disk and sends it over the network. CPU usage is typically under 1%. **Can I force Direct Play for all users?** Yes. Disable "Allow video playback that requires transcoding" per user. Playback will fail instead of transcoding. **Why does the same file Direct Play on one device but transcode on another?** Different devices support different codecs. A Fire TV might Direct Play H.265 while a web browser transcodes it. **Does Direct Play affect quality?** No. Direct Play delivers the original file with zero modification. It is always the highest quality option. **Is Direct Stream the same as Direct Play?** No. Direct Stream means the video is untouched but the audio is being transcoded. Video quality is preserved, but audio becomes lossy. **How do I know if my GPU is handling the transcode?** Check the Jellyfin dashboard or JellyWatch. Hardware transcodes show an "HW" badge. On the host, run `intel_gpu_top` (Intel) or `nvidia-smi` (NVIDIA) to verify GPU activity. **What is the best codec for maximum Direct Play?** H.264 with AAC audio in an MKV or MP4 container. This combination Direct Plays on every device made in the last decade. --- > **Not sure if your streams are Direct Playing? Check in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see the exact playback method, codec, and transcode reason for every active session on your Jellyfin server. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same real-time session diagnostics for Emby servers.* --- ## Run Jellyfin on a VPS for Free (Almost): Hetzner €4.50/month vs Contabo vs Oracle Free Tier (2026) URL: https://jellywatch.app/blog/jellyfin-vps-hetzner-contabo-remote-server-setup-2026 Published: 2026-05-01T17:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, vps, hetzner, contabo, cloud, remote-server, docker, self-hosting, budget, 2026 # Run Jellyfin on a VPS in 2026: Hetzner, Contabo, and Budget Cloud Server Setup Not everyone wants to run a server at home. Maybe your ISP has terrible upload speed. Maybe you are behind CGNAT with no public IP. Maybe you travel frequently and want a server that is always online, always accessible, with zero dependency on your home network. A **VPS (Virtual Private Server)** solves all of this. For $5-15/month, you get a dedicated machine in a datacenter with a public IP, fast bandwidth, and 24/7 uptime. This guide covers the most popular VPS providers for Jellyfin in 2026, deployment with Docker, storage strategies, and the honest limitations. --- ## Why a VPS for Jellyfin? **Advantages over a home server:** - **Upload speed**: 1 Gbps+ (vs 10-50 Mbps at home) - **Public IP**: always included (no CGNAT issues) - **Uptime**: 99.9% SLA (vs depends on your power/internet) - **Noise/heat**: in a datacenter, not your living room - **Privacy**: provider has physical access to the hardware **Trade-offs:** - **No GPU** on most VPS plans (no hardware transcoding) - **Storage is expensive** compared to local HDDs - **Less hardware control** than a dedicated machine The key trade-off: VPS bandwidth is excellent but storage is expensive. This shapes your entire strategy. --- ## Best VPS Providers for Jellyfin in 2026 ### Hetzner (Best Value in Europe) Hetzner is the community favorite for self-hosting in Europe. Excellent price-to-performance, German datacenter quality, and generous bandwidth. **Recommended plans:** - **CX22** - 2 vCPU, 4 GB RAM, 40 GB, 20 TB bandwidth - ~4.50 EUR/month - **CX32** - 4 vCPU, 8 GB RAM, 80 GB, 20 TB bandwidth - ~8 EUR/month (sweet spot) - **CX42** - 8 vCPU, 16 GB RAM, 160 GB, 20 TB bandwidth - ~16 EUR/month - **CAX21** (ARM) - 4 vCPU, 8 GB RAM, 80 GB, 20 TB bandwidth - ~6 EUR/month **Recommendation:** CX32 (4 vCPU, 8 GB RAM, 80 GB) is the sweet spot for Jellyfin. Add a Hetzner Storage Box for media files. **Hetzner Storage Box** (network-attached storage): - 1 TB: ~3.80 EUR/month - 5 TB: ~12.50 EUR/month - 10 TB: ~23 EUR/month - Mountable via CIFS/SMB, SFTP, or WebDAV --- ### Contabo (Most Storage per Dollar) Contabo offers significantly more storage than Hetzner at the cost of slightly lower performance. **Recommended plans:** - **Cloud VPS S** - 4 vCPU, 8 GB RAM, 200 GB SSD - ~6 EUR/month - **Cloud VPS M** - 6 vCPU, 16 GB RAM, 400 GB SSD - ~12 EUR/month - **Cloud VPS L** - 8 vCPU, 30 GB RAM, 800 GB SSD - ~18 EUR/month - **Storage VPS** - 2 vCPU, 4 GB RAM, 800 GB HDD - ~4 EUR/month All Contabo plans include 32 TB/month bandwidth. **Recommendation:** Cloud VPS M (400 GB SSD) can hold a modest library directly. For larger collections, use the Storage VPS as a media mount. --- ### Other Providers Worth Considering - **Netcup** (Germany) - from ~3 EUR/month, good value - **OVH/Kimsufi** (France) - from ~5 EUR/month, dedicated servers available - **Vultr** (Global) - from ~$6/month, good US/Asia coverage - **DigitalOcean** (Global) - from ~$6/month, developer-friendly - **Oracle Cloud** (Global) - free ARM tier, see our dedicated Oracle guide --- ## Step 1: Provision Your VPS ### Hetzner Example 1. Create an account at [hetzner.com/cloud](https://www.hetzner.com/cloud) 2. Create a new server: - Location: closest to your users (Falkenstein, Nuremberg, Helsinki, Ashburn) - Image: **Ubuntu 24.04** - Type: **CX32** (4 vCPU, 8 GB RAM) - SSH Key: paste your public key 3. Note the public IP address --- ### Initial Server Setup SSH into your new server and run the initial configuration: ```bash ssh root@YOUR_VPS_IP ``` Update the system and create a non-root user: ```bash apt update && apt upgrade -y adduser jellyfin-admin usermod -aG sudo jellyfin-admin ``` Secure SSH access by disabling root login: ```bash sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config systemctl restart sshd ``` Install Docker: ```bash curl -fsSL https://get.docker.com | sh usermod -aG docker jellyfin-admin ``` --- ## Step 2: Mount External Storage VPS local storage is limited and expensive. Mount external storage for your media files. ### Option A: Hetzner Storage Box via CIFS Install CIFS utilities and create the mount point: ```bash apt install cifs-utils -y mkdir -p /mnt/media ``` Create a credentials file: ```bash cat > /root/.storage-credentials << EOF username=YOUR_STORAGEBOX_USER password=YOUR_STORAGEBOX_PASSWORD EOF chmod 600 /root/.storage-credentials ``` Add the mount to fstab and mount: ```bash STORAGEBOX="//uXXXXXX.your-storagebox.de/backup" OPTS="credentials=/root/.storage-credentials" OPTS="$OPTS,uid=1000,gid=1000,_netdev" echo "$STORAGEBOX /mnt/media cifs $OPTS 0 0" >> /etc/fstab mount -a ``` --- ### Option B: Rclone (Google Drive, Backblaze B2, S3) Mount cloud storage directly: ```bash apt install rclone -y rclone config ``` Follow the wizard for your provider, then mount: ```bash mkdir -p /mnt/media rclone mount remote:jellyfin-media /mnt/media --vfs-cache-mode full --vfs-cache-max-size 20G --allow-other --daemon ``` --- ### Option C: SSHFS from Home NAS Mount your home NAS over SSH: ```bash apt install sshfs -y mkdir -p /mnt/media sshfs user@your.home.ip:/media /mnt/media -o reconnect,ServerAliveInterval=15,IdentityFile=/root/.ssh/id_rsa ``` Your home upload speed becomes the bottleneck. 50 Mbps upload handles 1-2 simultaneous 4K streams. --- ## Step 3: Deploy Jellyfin with Caddy Create a `docker-compose.yml` file: ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped volumes: caddy_data: ``` Create the `Caddyfile` for automatic HTTPS: ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } ``` Deploy the stack: ```bash docker compose up -d ``` Caddy handles SSL automatically via Let's Encrypt. Your Jellyfin server is live at `https://jellyfin.yourdomain.com`. --- ## Step 4: Security Hardening A VPS is directly exposed to the internet. Security is not optional. ### Firewall with UFW ```bash ufw default deny incoming ufw default allow outgoing ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable ``` --- ### Fail2Ban for Brute-Force Protection ```bash apt install fail2ban -y systemctl enable --now fail2ban ``` Create `/etc/fail2ban/jail.d/jellyfin.local`: ```ini [jellyfin] enabled = true filter = jellyfin port = http,https logpath = /path/to/jellyfin/config/log/log_*.log maxretry = 5 bantime = 3600 findtime = 600 ``` --- ### SSH Hardening Checklist - Disable password authentication (use SSH keys only) - Change SSH port from 22 to a non-standard port - Install `unattended-upgrades` for automatic security patches --- ## The GPU Problem: No Hardware Transcoding Most VPS providers do not offer GPU access. This means: - **No hardware transcoding** - all transcoding is software-only (CPU) - A single 4K software transcode can saturate 4-8 vCPU cores - Multiple simultaneous transcodes are impractical ### Strategies to Avoid Transcoding on a VPS 1. **Optimize your library for Direct Play** - encode everything to H.264 or H.265 with compatible audio (AAC/EAC3) 2. **Use Tdarr** to pre-convert your library to universally compatible formats before uploading 3. **Set remote bitrate limits** - force lower quality for bandwidth-constrained clients 4. **Educate your users** - set client quality to "Maximum" or "Original" to avoid unnecessary transcoding --- ### VPS Providers with GPU Access Only a few providers offer GPU instances, and they are expensive: - **Vultr** - NVIDIA A40 at ~$90/month - **Lambda** - NVIDIA GPUs at ~$0.50/hour (on-demand) - **Hetzner** and **Contabo** do not offer GPU VPS plans For most Jellyfin VPS setups, optimizing for Direct Play is more cost-effective than renting a GPU. --- ## Bandwidth and Storage Math ### Bandwidth Streaming 4K at 25 Mbps for 4 hours/day uses roughly 36 GB/day or 1.1 TB/month per user. - **1 heavy user**: ~1 TB/month - both Hetzner (20 TB) and Contabo (32 TB) handle this easily - **5 users**: ~5 TB/month - no problem on either provider - **15 users**: ~15 TB/month - tight on Hetzner, fine on Contabo - **20+ users**: ~20 TB/month - consider Contabo or a dedicated server Bandwidth is rarely the bottleneck on modern VPS plans. --- ### Storage - **50 movies (1080p)**: ~250 GB - fits on Contabo M, needs Storage Box on Hetzner - **200 movies (1080p)**: ~1 TB - needs external storage on both - **500 movies (1080p)**: ~2.5 TB - needs a 5 TB Storage Box or cloud mount Local VPS storage is for Jellyfin config and cache only. Media files belong on external storage. --- ## Performance Without a GPU - **Direct Play** (any resolution): unlimited streams on any VPS - **1080p software transcode**: 1 stream on 2 vCPU, 2-3 on 4 vCPU, 3-4 on 8 vCPU - **4K software transcode**: not viable on 2 vCPU, barely 1 stream on 4-8 vCPU - **Audio-only transcode**: 5-15+ streams depending on CPU count Direct Play is the only viable strategy for 4K content on a VPS without GPU. --- ## Keeping Your VPS Secure and Updated ### Automatic Docker Updates with Watchtower ```yaml services: watchtower: image: containrrr/watchtower:latest volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - WATCHTOWER_SCHEDULE=0 0 4 * * * - WATCHTOWER_CLEANUP=true restart: unless-stopped ``` Watchtower checks for new Docker images daily at 4 AM and updates automatically. ### Automatic OS Security Patches ```bash apt install unattended-upgrades -y dpkg-reconfigure -plow unattended-upgrades ``` --- ## FAQ **Can I run Jellyfin on a $5/month VPS?** Yes, for 1-3 users with Direct Play content. Software transcoding will struggle on 2 vCPU. **Is Hetzner or Contabo better for Jellyfin?** Hetzner for reliability and network quality. Contabo for raw storage per dollar. Both work well. **Can I use a VPS and a home server together?** Yes. Run Jellyfin on the VPS for remote access, mount your home NAS via SSHFS for storage. The VPS acts as a relay with a public IP. **How do I upload my media to the VPS?** Use rsync over SSH for initial upload. For ongoing sync, use Syncthing or rclone. **Is a VPS more secure than a home server?** Different threat model. A VPS has a public IP by default (more exposed) but runs in a professional datacenter (better physical security). Proper firewall and Fail2Ban make it equally secure. **What about GDPR and data privacy on a VPS?** Hetzner (Germany) and OVH (France) are GDPR-compliant. Your media files are stored on their infrastructure. Consider encryption for sensitive content. **Can I add a GPU later?** Not on standard VPS plans. You would need to migrate to a dedicated server (Hetzner Robot) or a GPU cloud provider (Vultr, Lambda). Plan for Direct Play from the start. **What happens if my VPS provider goes down?** Keep automated backups of your Jellyfin config folder. With a backup, you can redeploy on any provider in under 30 minutes. --- > **Your VPS Jellyfin server is live. Monitor it from anywhere.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, CPU alerts, and server health for your remote Jellyfin instance. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same remote monitoring experience for Emby servers.* --- ## Oracle Cloud Free Tier vs Hetzner: The Free VPS Option Oracle Cloud offers an **Always Free** ARM instance that many self-hosters use for Jellyfin. Here is how it compares to a paid Hetzner VPS. ### Oracle Cloud Always Free Tier (2026) | Resource | Free Allocation | |---|---| | **CPU** | Up to 4 ARM Ampere cores (shared across instances) | | **RAM** | Up to 24 GB (shared across instances) | | **Storage** | 200 GB block volume total | | **Bandwidth** | 10 TB/month outbound | | **Public IP** | 1 reserved IP included | | **GPU** | None | | **Regions** | Limited availability (often sold out) | ### Oracle Free vs Hetzner CX32 Comparison | Criteria | Oracle Free (ARM A1.Flex) | Hetzner CX32 (~8 EUR/month) | |---|---|---| | **CPU** | 4 ARM cores (Ampere A1) | 4 x86 cores (AMD EPYC) | | **RAM** | 24 GB | 8 GB | | **Storage** | 200 GB (slow block volume) | 80 GB (fast NVMe) | | **Bandwidth** | 10 TB/month | 20 TB/month | | **Network speed** | Variable (shared, can be throttled) | Consistent 1 Gbps | | **Availability** | Hard to get (capacity limits) | Always available | | **Support** | Community only (free tier) | Ticket support included | | **Reliability** | Instances can be reclaimed if idle | Guaranteed uptime SLA | | **Docker images** | ARM64 only (most Jellyfin images support it) | AMD64 (universal support) | | **Price** | $0/month | ~8 EUR/month | ### When Oracle Free Tier Makes Sense - You are a **single user** or testing Jellyfin remotely - You want **zero monthly cost** and can tolerate occasional instability - You are comfortable with ARM architecture (most Docker images support it in 2026) - You managed to secure an instance (availability is limited) ### When Hetzner is Worth Paying For - You share your server with **3+ users** who expect reliability - You need **consistent network performance** (Oracle throttles free tier during peaks) - You want **NVMe storage** for fast library scanning and metadata - You need **Storage Box integration** for cheap bulk media storage - You cannot get an Oracle instance (capacity is often exhausted in popular regions) ### The Oracle Free Tier Catch Oracle reserves the right to **reclaim idle Always Free instances**. If your server has low CPU usage for an extended period, Oracle may terminate it. Mitigations: - Run a cron job that generates minimal CPU activity every few hours - Keep Jellyfin library scans scheduled regularly - Monitor uptime with an external tool (UptimeRobot, Gatus) ### Verdict Oracle Free Tier is excellent for experimentation and single-user setups. For a reliable server you share with others, spend the 8 EUR/month on Hetzner. The peace of mind and consistent performance are worth it. --- ## Monthly Cost Calculator: VPS Jellyfin Setup Here is what a realistic Jellyfin VPS setup costs per month depending on your library size and user count. ### Scenario 1: Solo User, Small Library (< 100 movies) | Component | Provider | Cost/month | |---|---|---| | VPS (2 vCPU, 4 GB RAM) | Hetzner CX22 | 4.50 EUR | | Storage (500 GB) | Hetzner Storage Box | 3.80 EUR | | Domain | Cloudflare (free DNS) | 0 EUR | | **Total** | | **~8.30 EUR/month** | ### Scenario 2: Family Server, Medium Library (200-500 movies) | Component | Provider | Cost/month | |---|---|---| | VPS (4 vCPU, 8 GB RAM) | Hetzner CX32 | 7.50 EUR | | Storage (2 TB) | Hetzner Storage Box | 7.60 EUR | | Domain (.app or .com) | ~1 EUR/month amortized | 1 EUR | | Backups (automated) | Hetzner Snapshots | 1.50 EUR | | **Total** | | **~17.60 EUR/month** | ### Scenario 3: Shared Server, Large Library (500+ movies, 5-10 users) | Component | Provider | Cost/month | |---|---|---| | VPS (8 vCPU, 16 GB RAM) | Hetzner CX42 | 15.50 EUR | | Storage (5 TB) | Hetzner Storage Box | 12.50 EUR | | Domain + Cloudflare Pro | | 2 EUR | | Backups | Hetzner Snapshots | 3 EUR | | **Total** | | **~33 EUR/month** | ### Scenario 4: Maximum Value (Contabo) | Component | Provider | Cost/month | |---|---|---| | VPS (6 vCPU, 16 GB, 400 GB SSD) | Contabo Cloud VPS M | 12 EUR | | Additional storage (800 GB HDD VPS) | Contabo Storage VPS | 4 EUR | | **Total** | | **~16 EUR/month** | Contabo gives you more raw storage per euro but with slightly less consistent network performance than Hetzner. ### Cost Comparison: VPS vs Home Server (3-Year TCO) | | VPS (Hetzner CX32 + 2TB) | Home Server (N100 Mini PC) | |---|---|---| | Hardware | 0 EUR | ~180 EUR | | Storage (4 TB HDD) | 0 EUR | ~100 EUR | | Monthly cost | 15 EUR | ~5 EUR (electricity) | | 3-year total | **540 EUR** | **~460 EUR** | | Upload speed | 1 Gbps | Depends on ISP (10-100 Mbps) | | Maintenance | Provider handles hardware | You handle everything | | Public IP | Always included | May need DDNS or tunnel | **Conclusion:** A home server is cheaper long-term if you have good upload speed. A VPS wins on convenience, reliability, and bandwidth. Many users run both: home server for local playback, VPS as a remote relay. --- > **Track your VPS costs against actual usage.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor how many streams your VPS handles, CPU usage per transcode, and whether you need to scale up or down. --- ## Kavita vs Komga 2026: Best Self-Hosted Comic & Manga Reader (+ Jellyfin Integration) URL: https://jellywatch.app/blog/jellyfin-comics-manga-kavita-komga-self-hosted-reader-2026 Published: 2026-05-01T17:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, comics, manga, kavita, komga, self-hosted, reader, tachiyomi, mylar3, 2026 # Self-Hosted Comics and Manga with Jellyfin, Kavita, and Komga in 2026 Jellyfin has a Books library type that can display comics and manga - but the reading experience is basic. No panel-by-panel navigation, no webtoon scroll mode, no reading progress sync across devices. For a serious comic or manga collection, you need a dedicated reader. **Kavita** and **Komga** are the two best self-hosted comic/manga servers in 2026. Both run alongside Jellyfin, share the same media storage, and fill the gap that Jellyfin cannot. --- ## Why Jellyfin Alone Is Not Enough for Comics Jellyfin Books library supports: - PDF display - EPUB reading (basic) - CBZ/CBR thumbnail generation What it lacks: - **Panel-by-panel reading** (essential for manga on phones) - **Webtoon vertical scroll mode** - **Reading progress sync** across devices - **OPDS feed** for third-party reader apps - **Manga-specific metadata** (MyAnimeList, AniList integration) - **Smart collections** (reading lists, want-to-read, in-progress) For video, Jellyfin is the answer. For comics and manga, Kavita or Komga is the answer. --- ## Kavita vs Komga: Quick Comparison | Feature | Kavita | Komga | |---|---|---| | **Primary focus** | Comics + Manga + Books | Comics + Manga | | **EPUB/PDF support** | Yes (full reader) | No (comics only) | | **Webtoon mode** | Yes | Yes | | **OPDS feed** | Yes | Yes | | **Multi-user** | Yes | Yes | | **Reading progress sync** | Yes | Yes | | **Metadata sources** | AniList, MAL, ComicVine | ComicVine | | **Smart collections** | Yes (reading lists, want-to-read) | Yes (read lists) | | **UI polish** | Very polished | Clean, functional | | **Mobile app** | PWA (excellent) | PWA + Tachiyomi extension | | **Resource usage** | Low (~100 MB RAM) | Very low (~80 MB RAM) | | **Docker image** | Yes | Yes | | **Active development** | Very active | Active | ### Choose Kavita if: - You read manga, comics, AND ebooks/light novels - You want AniList/MAL metadata integration - You prefer a polished, modern UI - You want a single app for all reading content ### Choose Komga if: - You read comics and manga only (no ebooks) - You use Tachiyomi/Mihon as your mobile reader - You want the lightest possible server - You prefer a more traditional library interface --- ## Installing Kavita with Docker ```yaml services: kavita: image: jvmilazz0/kavita:latest container_name: kavita volumes: - ./kavita/config:/kavita/config - /mnt/media/comics:/comics - /mnt/media/manga:/manga - /mnt/media/books:/books ports: - 5000:5000 restart: unless-stopped ``` Access Kavita at `http://your-server:5000`. Create an admin account on first launch. ### Add libraries 1. Settings → Libraries → Add Library 2. Name: "Comics", Type: Comic, Folder: `/comics` 3. Name: "Manga", Type: Manga, Folder: `/manga` 4. Name: "Books", Type: Book, Folder: `/books` 5. Kavita scans and organizes automatically --- ## Installing Komga with Docker ```yaml services: komga: image: gotson/komga:latest container_name: komga volumes: - ./komga/config:/config - /mnt/media/comics:/comics - /mnt/media/manga:/manga ports: - 25600:25600 environment: - JAVA_TOOL_OPTIONS=-Xmx512m restart: unless-stopped ``` Access Komga at `http://your-server:25600`. --- ## Organizing Your Comic and Manga Library ### Comics (Western) ``` /comics/ Marvel/ Spider-Man (2022)/ Spider-Man 001 (2022).cbz Spider-Man 002 (2022).cbz X-Men (2021)/ X-Men 001 (2021).cbz DC/ Batman (2016)/ Batman 001 (2016).cbz ``` ### Manga ``` /manga/ One Piece/ One Piece v01.cbz One Piece v02.cbz ... Chainsaw Man/ Chainsaw Man v01.cbz ``` ### Supported formats | Format | Description | Recommended | |---|---|---| | **CBZ** | ZIP archive of images | Yes - best compatibility | | **CBR** | RAR archive of images | Yes | | **CB7** | 7z archive of images | Partial | | **PDF** | Portable Document Format | Kavita only | | **EPUB** | Electronic publication | Kavita only | **CBZ is the gold standard** for comics and manga - it is just a ZIP file containing ordered images. Every reader supports it. --- ## Metadata and Artwork ### Kavita metadata sources Kavita fetches metadata from: - **AniList** - best for manga (Japanese titles, genres, ratings) - **MyAnimeList** - alternative manga metadata - **ComicVine** - best for Western comics (Marvel, DC, Image) Enable in Settings → Metadata → configure API keys. ### Komga metadata Komga reads metadata from: - **ComicInfo.xml** embedded in CBZ files - **ComicVine** via community plugins ### Tagging your files Use **ComicTagger** to embed metadata into CBZ/CBR files: ```bash # Install ComicTagger pip install comictagger # Tag a file with ComicVine metadata comictagger -s -t cr --cv-api-key YOUR_KEY "Spider-Man 001.cbz" ``` ComicTagger writes a `ComicInfo.xml` inside the archive that both Kavita and Komga read automatically. --- ## Mobile Reading Experience ### Kavita PWA (Progressive Web App) Kavita web interface works as a PWA on mobile: 1. Open Kavita in your phone browser 2. Tap "Add to Home Screen" 3. The PWA launches like a native app with offline caching The reading experience is excellent - swipe navigation, pinch-to-zoom, webtoon scroll mode, and dark theme. ### Komga + Tachiyomi/Mihon Tachiyomi (and its successor Mihon) is the most popular manga reader on Android. Komga has a native Tachiyomi extension: 1. Install Tachiyomi/Mihon on Android 2. Add the Komga extension from the extension catalog 3. Enter your Komga URL and credentials 4. Your entire library appears in Tachiyomi with full reading progress sync This is the best mobile manga reading experience available - Tachiyomi reader is superior to any web-based reader. ### JellyBook (Jellyfin native reader) **JellyBook** is a community Jellyfin client specifically for books and comics: - Available on Android (IzzyOnDroid) and iOS (TestFlight) - Connects to Jellyfin Books library - Basic comic reading with page navigation - Good for casual reading, not as feature-rich as Kavita/Komga --- ## Running Kavita/Komga Alongside Jellyfin All three servers can share the same media storage: ```yaml services: jellyfin: volumes: - /mnt/media:/media:ro kavita: volumes: - /mnt/media/comics:/comics:ro - /mnt/media/manga:/manga:ro - /mnt/media/books:/books:ro komga: volumes: - /mnt/media/comics:/comics:ro - /mnt/media/manga:/manga:ro ``` Read-only mounts (`:ro`) ensure no server modifies the other's files. All three coexist without conflict. ### Reverse proxy configuration Add your comic server to your existing Caddy/Nginx setup: ``` kavita.yourdomain.com { reverse_proxy kavita:5000 } ``` --- ## Automating Comic Downloads with Mylar3 **Mylar3** is the Radarr/Sonarr equivalent for comics: - Monitors comic series for new issues - Downloads from Usenet or torrent indexers - Renames and organizes files - Triggers Kavita/Komga library scan on import ```yaml services: mylar3: image: lscr.io/linuxserver/mylar3:latest volumes: - ./mylar3/config:/config - /mnt/media/comics:/comics - /mnt/downloads:/downloads ports: - 8090:8090 restart: unless-stopped ``` The full comic automation stack: **Mylar3 → downloads → Kavita/Komga → reads**. --- ## FAQ **Can Jellyfin replace Kavita or Komga?** For basic comic display, yes. For a proper reading experience with progress sync, webtoon mode, and manga metadata - no. Use a dedicated reader. **Kavita or Komga for manga?** Kavita has better manga metadata (AniList integration). Komga has better Tachiyomi integration. Both are excellent. **Can I use both Kavita and Komga?** Yes, but there is no reason to. Pick one based on your priorities. **How much storage do comics need?** A typical comic issue (CBZ): 30-100 MB. A manga volume: 100-300 MB. A 500-volume manga collection needs roughly 50-150 GB. **Does Kavita support reading lists?** Yes. Kavita has built-in reading lists, want-to-read shelves, and smart collections based on metadata. **Can multiple users read simultaneously?** Yes. Both Kavita and Komga support multi-user with independent reading progress. --- > **Your media stack now covers video, music, AND comics. Monitor it all from one app.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and your complete homelab in your pocket. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Build a Jellyfin Discord and Telegram Bot in 2026: Now Playing, Commands, and Rich Notifications URL: https://jellywatch.app/blog/jellyfin-discord-telegram-bot-now-playing-commands-2026 Published: 2026-05-01T16:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, discord, telegram, bot, now-playing, rich-presence, api, notifications, seerr, 2026 # Build a Jellyfin Discord and Telegram Bot in 2026: Now Playing, Commands, and Rich Notifications Jellyfin webhooks send one-way notifications. A **bot** goes further - it is interactive. Your Discord server members or Telegram group can type a command and instantly see what is playing, search your library, or request new content without ever opening a browser. This guide covers the best community bots for Jellyfin, how to deploy them, and how to build custom integrations using the Jellyfin API. --- ## Why a Bot Instead of Webhooks? | Feature | Webhooks | Bot | |---|---|---| | New media notification | Yes | Yes | | Now playing status | No | Yes | | Library search | No | Yes | | Media requests | No | Yes (with Seerr) | | User commands | No | Yes | | Rich embeds with artwork | Basic | Full | | Interactive buttons | No | Yes | Webhooks are fire-and-forget. Bots are conversational. --- ## Option 1: Jellybot (Discord - Most Popular) **Jellybot** is a community-built Discord bot that connects directly to your Jellyfin server API. ### Features - `/nowplaying` - shows all active sessions with title, user, progress, and poster - `/search ` - searches your Jellyfin library and returns results with artwork - `/recent` - lists recently added movies and episodes - `/stats` - server statistics (total items, users, active streams) - Automatic notifications for new media added - Rich Discord embeds with poster images and metadata ### Deployment with Docker ```yaml services: jellybot: image: ghcr.io/jellybot-team/jellybot:latest environment: - DISCORD_TOKEN=your_discord_bot_token - JELLYFIN_URL=http://jellyfin:8096 - JELLYFIN_API_KEY=your_jellyfin_api_key - NOTIFICATION_CHANNEL_ID=123456789012345678 restart: unless-stopped ``` ### Setup steps 1. **Create a Discord bot** at [discord.com/developers/applications](https://discord.com/developers/applications) 2. Create a New Application → Bot → copy the token 3. Invite the bot to your server with the OAuth2 URL generator (scopes: bot, applications.commands) 4. Deploy the Docker container with your tokens 5. The bot registers slash commands automatically ### Example: /nowplaying output ``` 🎬 Now Playing on MyServer 1. alice is watching "Dune: Part Two" (2024) ▶️ Playing · 1h 23m / 2h 46m · Direct Play 📱 iPhone · Swiftfin 2. bob is watching "Breaking Bad" S05E14 ⏸️ Paused · 32m / 47m · Transcode (H.265 → H.264) 📺 Fire TV Stick · Jellyfin Android TV ``` --- ## Option 2: Jellyfin Telegram Bot For Telegram users, several community bots provide similar functionality. ### Deployment ```yaml services: jellyfin-telegram-bot: image: ghcr.io/jellyfin-telegram/bot:latest environment: - TELEGRAM_BOT_TOKEN=your_telegram_bot_token - JELLYFIN_URL=http://jellyfin:8096 - JELLYFIN_API_KEY=your_jellyfin_api_key - ALLOWED_CHAT_IDS=123456789,987654321 restart: unless-stopped ``` ### Setup steps 1. Create a bot via **@BotFather** on Telegram 2. Copy the bot token 3. Get your chat ID (send a message to @userinfobot) 4. Deploy the container 5. Send `/start` to your bot ### Available commands - `/nowplaying` - active sessions - `/search ` - search library - `/recent` - recently added content - `/stats` - server overview - `/request <title>` - submit a media request (if Seerr is connected) ### Security: ALLOWED_CHAT_IDS Always restrict the bot to specific chat IDs. Without this, anyone who discovers your bot can query your server. --- ## Option 3: Build Your Own Bot with the Jellyfin API The Jellyfin REST API is well-documented and easy to use. Building a custom bot gives you full control. ### Key API endpoints for bots | Endpoint | What it returns | |---|---| | `GET /Sessions` | All active sessions (users, media, progress, device) | | `GET /Items?searchTerm=query` | Library search results | | `GET /Items/Latest` | Recently added items | | `GET /System/Info` | Server version, OS, uptime | | `GET /Users` | All user accounts | | `GET /Items/{id}/Images/Primary` | Poster image for embeds | ### Python example: Discord bot with now playing ```python import discord from discord import app_commands import aiohttp JELLYFIN_URL = "http://jellyfin:8096" JELLYFIN_API_KEY = "your_api_key" intents = discord.Intents.default() client = discord.Client(intents=intents) tree = app_commands.CommandTree(client) @tree.command(name="nowplaying", description="Show active Jellyfin sessions") async def nowplaying(interaction: discord.Interaction): headers = {"X-Emby-Token": JELLYFIN_API_KEY} async with aiohttp.ClientSession() as session: async with session.get( f"{JELLYFIN_URL}/Sessions", headers=headers ) as resp: sessions = await resp.json() active = [s for s in sessions if s.get("NowPlayingItem")] if not active: await interaction.response.send_message("No active sessions.") return embed = discord.Embed( title="Now Playing", color=0x00A4DC ) for s in active: item = s["NowPlayingItem"] user = s.get("UserName", "Unknown") title = item.get("Name", "Unknown") state = "▶️" if not s.get("PlayState", {}).get("IsPaused") else "⏸️" embed.add_field( name=f"{state} {user}", value=f"**{title}**", inline=False ) await interaction.response.send_message(embed=embed) @client.event async def on_ready(): await tree.sync() print(f"Bot ready: {client.user}") client.run("your_discord_bot_token") ``` ### Dockerfile for the custom bot ```dockerfile FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY bot.py . CMD ["python", "bot.py"] ``` `requirements.txt`: ``` discord.py>=2.3 aiohttp>=3.9 ``` --- ## Connecting Seerr for Media Requests via Bot The most powerful bot feature: let users request movies and TV shows directly from Discord or Telegram. ### How it works 1. User types `/request Interstellar` in Discord 2. Bot searches TMDB via the Seerr API 3. Bot shows results with poster and year 4. User confirms the request 5. Seerr sends it to Radarr/Sonarr 6. Content downloads and appears in Jellyfin automatically ### Seerr API integration ```python SEERR_URL = "http://seerr:5055" SEERR_API_KEY = "your_seerr_api_key" async def search_seerr(query): headers = {"X-Api-Key": SEERR_API_KEY} async with aiohttp.ClientSession() as session: async with session.get( f"{SEERR_URL}/api/v1/search?query={query}", headers=headers ) as resp: return await resp.json() ``` --- ## Discord Rich Presence: Show What You Are Watching Want your Discord profile to display "Watching Dune: Part Two on Jellyfin"? Two community tools handle this: ### jellyfin-rpc (by Radiicall) A lightweight daemon that reads your Jellyfin session and updates your Discord Rich Presence status. ```bash # Install via cargo cargo install jellyfin-rpc # Or download the binary from GitHub releases ``` Configure `~/.config/jellyfin-rpc/main.json`: ```json { "jellyfin": { "url": "http://jellyfin:8096", "api_key": "your_api_key", "username": "your_username" }, "discord": { "application_id": "your_discord_app_id" } } ``` Your Discord status shows: **Watching "Dune: Part Two"** with a Jellyfin icon and elapsed time. ### jellyfin-rpc (by kennethsible) An alternative implementation with similar features. Choose whichever has more recent commits. --- ## Notification Embeds: Making Them Beautiful The default Jellyfin webhook sends plain text. With a bot, you control the embed format: ### Rich embed example (new movie added) ``` 🎬 New Movie Added Dune: Part Two (2024) ⭐ 8.5/10 (TMDB) · 2h 46m · PG-13 🎭 Denis Villeneuve 🏷️ Sci-Fi, Adventure, Drama [poster image embedded] Available now on MyServer ``` ### How to include poster images The Jellyfin API serves poster images at: ``` GET /Items/{itemId}/Images/Primary?maxWidth=300 ``` Use this URL as the embed thumbnail in your Discord or Telegram message. --- ## Bot Security Best Practices - **Never expose your Jellyfin API key** in public repositories - **Restrict bot commands** to specific Discord channels or Telegram chat IDs - **Use read-only API keys** when possible (Jellyfin does not support scoped keys natively, but you can create a non-admin user for the bot) - **Rate limit commands** to prevent abuse - **Log all bot interactions** for audit purposes --- ## FAQ **Can the bot control playback (pause, stop, skip)?** Yes, the Jellyfin API supports playback control via `POST /Sessions/{id}/Playing/Stop`. However, this is risky - a bot command could interrupt someone mid-movie. Use with caution. **Does the bot work if Jellyfin is behind a reverse proxy?** Yes. The bot connects to the Jellyfin API URL you configure. It works with local IPs, reverse proxies, or Cloudflare Tunnels. **Can I run the bot on a different machine than Jellyfin?** Yes. The bot only needs HTTP access to the Jellyfin API. It can run anywhere - a VPS, a Raspberry Pi, or the same Docker host. **Is there an official Jellyfin Discord bot?** No. All Discord bots for Jellyfin are community-built. The Jellyfin project does not maintain an official bot. **Can the bot show transcoding information?** Yes. The `/Sessions` API endpoint includes `TranscodingInfo` with codec, bitrate, and transcode reason - perfect for admin debugging from Discord. **Does this replace JellyWatch?** No. A Discord bot is great for community interaction and quick checks. JellyWatch provides deep admin monitoring with push notifications, historical stats, and a native Android interface. They complement each other. --- > **Bots handle the community. JellyWatch handles the server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and push alerts that no Discord bot can match. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same admin-grade monitoring for Emby servers.* --- ## How to Install Jellyfin on LG Smart TV (webOS) in 2026: Setup, Codec Support, and Alternatives URL: https://jellywatch.app/blog/jellyfin-lg-webos-tv-install-setup-guide-2026 Published: 2026-05-01T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, lg, webos, smart-tv, install, oled, dolby-vision, guide, 2026 # How to Install Jellyfin on LG Smart TV (webOS) in 2026: Setup, Codec Support, and Alternatives LG TVs run **webOS**, a proprietary operating system with its own app store. Unlike Samsung Tizen, Jellyfin has an **official app available in the LG Content Store** - no sideloading required. But the app has limitations that every Jellyfin admin should understand before recommending it to users. This guide covers installation, codec support, OLED-specific optimization, and the best alternatives when the native app is not enough. --- ## Installing Jellyfin on LG webOS ### Method 1: LG Content Store (Easiest) 1. On your LG TV, open the **LG Content Store** (app store) 2. Search for **Jellyfin** 3. Install the official **Jellyfin** app 4. Open the app → enter your Jellyfin server URL 5. Log in with your credentials The app is free and maintained by the Jellyfin community. It is a web-based client packaged as a webOS app. ### Method 2: Direct URL (if Content Store unavailable) Some older LG TVs or regional stores may not list the Jellyfin app. In that case: 1. Open the LG TV built-in web browser 2. Navigate to your Jellyfin server URL: `https://jellyfin.yourdomain.com` 3. Log in and use the web interface directly This works but lacks the native app integration (no remote control optimization, no app icon on the home screen). ### Method 3: Breezyfin (Alternative webOS Client) **Breezyfin** is a community-developed alternative Jellyfin client for LG webOS, currently in beta: - Built specifically for the webOS platform - Aims to improve performance over the official web-based app - Available via sideloading or the developer community Check the [Breezyfin GitHub](https://github.com) for the latest installation instructions. --- ## LG webOS Codec Support LG TVs have excellent built-in codec support - but it varies significantly by model year. | Codec | 2019 (webOS 4.5) | 2020 (webOS 5.0) | 2021 (webOS 6.0) | 2022+ (webOS 22+) | |---|---|---|---|---| | H.264 (AVC) | Yes | Yes | Yes | Yes | | H.265 (HEVC) | Yes | Yes | Yes | Yes | | VP9 | Yes | Yes | Yes | Yes | | AV1 | No | No | No | Yes (2022+) | | HDR10 | Yes | Yes | Yes | Yes | | Dolby Vision | Yes (OLED) | Yes (OLED) | Yes | Yes | | HDR10+ | No | No | No | No | | TrueHD audio | No | No | No | No | | DTS audio | Varies | Varies | Varies | Varies | | EAC3 (DD+) | Yes | Yes | Yes | Yes | | Dolby Atmos (DD+) | Yes | Yes | Yes | Yes | ### Key takeaways - **H.265 Direct Play works on all LG TVs from 2019+** - the most common 4K codec - **AV1 requires 2022 or newer models** - older TVs will trigger a server transcode - **No TrueHD passthrough** - LG TVs decode TrueHD internally or fall back to lossy audio - **Dolby Vision is an LG strength** - OLED models support DV natively, unlike Samsung which uses HDR10+ - **No HDR10+ support** - LG uses Dolby Vision as its dynamic HDR format --- ## OLED-Specific Settings for Jellyfin LG OLED TVs (C-series, G-series, B-series) are among the best displays for a home theater. Optimize them for Jellyfin: ### Enable HDMI Deep Color Settings → General → HDMI Settings → **HDMI Deep Color** → On (for the HDMI port your streaming device uses) This enables 4:4:4 chroma, 10-bit color, and HDR passthrough. Without it, HDR content may look washed out. ### Filmmaker Mode Settings → Picture → **Filmmaker Mode** This disables motion smoothing, noise reduction, and other processing that alters the original image. Ideal for movies. ### Prevent OLED Burn-In Jellyfin UI elements (progress bar, sidebar) are static and can cause burn-in on OLED panels over time. - Enable **Screen Shift** (Settings → OLED Care → Screen Shift) - Enable **Logo Luminance Adjustment** (dims static elements automatically) - Run **Pixel Refresher** periodically (Settings → OLED Care → Pixel Refresher) - Avoid leaving the Jellyfin home screen displayed for hours - use a screensaver or turn off the TV ### Match Content (Frame Rate and Dynamic Range) Settings → General → AI Service → **AI Picture Pro** → Match Content On 2021+ models, the TV can automatically switch to the correct frame rate (24Hz for movies) and HDR mode (DV, HDR10) based on the content being played. --- ## Common Issues with Jellyfin on LG webOS | Problem | Cause | Fix | |---|---|---| | App not in Content Store | Regional restriction or old webOS | Use the web browser method or sideload Breezyfin | | Buffering on 4K content | Wi-Fi bandwidth insufficient | Connect via Ethernet (USB-to-Ethernet adapter if needed) | | No HDR / washed out colors | HDMI Deep Color disabled | Enable HDMI Deep Color in TV settings | | Audio out of sync | Transcoding latency | Enable Direct Play in Jellyfin app settings | | Subtitles cause buffering | PGS subtitle burn-in | Switch to SRT subtitles | | App crashes on large libraries | webOS memory limits | Reduce home screen sections in Jellyfin | | No Dolby Vision | Wrong DV profile in file | Use DV Profile 5 or 8 for LG compatibility | | Remote control unresponsive | Web-based app input lag | Use D-pad navigation, avoid pointer mode | --- ## Alternatives: When the Native App Is Not Enough The Jellyfin webOS app is a web-based wrapper. For the best playback experience on an LG TV, consider external devices: | Option | Price | Why | |---|---|---| | **Apple TV 4K + Infuse** | ~$129 | Best picture quality, full DV, Atmos | | **NVIDIA Shield Pro** | ~$200 | TrueHD passthrough, best Android TV | | **Fire TV Stick 4K Max** | ~$60 | Budget option, good codec support | | **Chromecast with Google TV** | ~$50 | Native Jellyfin app, DV support | An external streaming device connected to your LG TV via HDMI gives you better codec support, faster navigation, and more reliable playback than the built-in webOS app. ### When to use the native app vs an external device | Scenario | Best option | |---|---| | Casual 1080p viewing | Native webOS app (fine) | | 4K HDR with Dolby Vision | Native app works well on LG OLED | | TrueHD Atmos audio | External device (Apple TV, Shield) | | Large library (5000+ items) | External device (more RAM) | | AV1 content on pre-2022 TV | External device with AV1 decode | --- ## Jellyfin on LG vs Samsung | Feature | LG webOS | Samsung Tizen | |---|---|---| | Official Jellyfin app | Yes (Content Store) | No (sideload required) | | Installation difficulty | Easy | Medium (Developer Mode + Docker) | | H.265 Direct Play | Yes | Yes | | Dolby Vision | Yes (native) | No (HDR10+ instead) | | HDR10+ | No | Yes (native) | | AV1 (2022+) | Yes | Yes | | App performance | Good (web-based) | Good (web-based) | LG wins on ease of installation (no sideloading) and Dolby Vision support. Samsung wins on HDR10+ support. --- ## FAQ **Is the Jellyfin LG app free?** Yes. It is free and open source, available in the LG Content Store. **Does the LG app support 4K HDR?** Yes. H.265 4K with HDR10 and Dolby Vision work natively on supported LG models. **Can I use Jellyfin on older LG TVs (pre-2019)?** Older LG TVs running webOS 3.x or earlier may not support the Jellyfin app. Use the web browser or an external streaming device. **Does the LG app support SyncPlay (group watch)?** Yes. SyncPlay works in the webOS app since it is based on the Jellyfin web client. **Why is the app slow on my LG TV?** LG TVs have limited RAM (1.5-3 GB shared with the OS). Large libraries with many home screen sections can overwhelm the app. Reduce sections in Jellyfin display settings. **Does Jellyfin work on LG monitors (not TVs)?** LG monitors do not run webOS. Use a connected PC or streaming device instead. --- > **Jellyfin running on your LG TV? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see what is playing on every client including LG webOS, with codec details and transcode status. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin as a Music Server in 2026: Complete Guide to Clients, Scrobbling, and Library Setup URL: https://jellywatch.app/blog/jellyfin-music-server-complete-guide-clients-scrobbling-2026 Published: 2026-05-01T15:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, music, flac, finamp, symfonium, scrobbling, lastfm, listenbrainz, navidrome, clients, 2026 # Jellyfin as a Music Server in 2026: Complete Guide to Clients, Scrobbling, and Library Setup Jellyfin is known for video streaming, but it is also a capable self-hosted music server. With the right setup, it replaces Spotify, Apple Music, or YouTube Music for your personal library - with zero subscriptions, full quality FLAC streaming, and complete privacy. This guide covers the full music stack: library organization, metadata, the best clients for every platform, scrobbling, lyrics, and how Jellyfin compares to dedicated music servers like Navidrome. --- ## Why Use Jellyfin for Music? - **One server for everything** - movies, TV, music, audiobooks in one place - **Full quality** - stream FLAC, ALAC, DSD without compression - **No subscription** - your music, your server, forever - **Multi-user** - each family member gets their own library and history - **Offline downloads** - on supported clients (Finamp, Symfonium) - **Privacy** - no listening data sent to third parties --- ## Organizing Your Music Library Jellyfin reads music metadata from file tags (ID3, Vorbis comments) and folder structure. Clean organization is essential. ### Recommended folder structure ``` /media/music/ Pink Floyd/ The Dark Side of the Moon (1973)/ 01 - Speak to Me.flac 02 - Breathe.flac ... cover.jpg Wish You Were Here (1975)/ 01 - Shine On You Crazy Diamond (Parts I-V).flac ... cover.jpg Radiohead/ OK Computer (1997)/ 01 - Airbag.flac ... cover.jpg ``` ### Naming rules - **Artist** folder at the top level - **Album (Year)** subfolder for each album - **Track number - Title.ext** for each file - **cover.jpg** (or folder.jpg) in each album folder for artwork - Use consistent artist names - "Pink Floyd" not "pink floyd" or "PINK FLOYD" ### Recommended audio formats | Format | Quality | File size | Compatibility | |---|---|---|---| | **FLAC** | Lossless | 25-50 MB/track | Excellent - recommended | | **ALAC** | Lossless | 25-50 MB/track | Good (Apple ecosystem) | | **OPUS** | Near-lossless | 3-8 MB/track | Good | | **MP3 320** | High lossy | 7-10 MB/track | Universal | | **AAC 256** | High lossy | 5-8 MB/track | Universal | FLAC is the gold standard for self-hosted music. It is lossless, widely supported, and well-tagged. --- ## Creating the Music Library in Jellyfin 1. Dashboard → Libraries → **Add Media Library** 2. Content type: **Music** 3. Folders: `/media/music/` 4. Metadata downloaders: enable **MusicBrainz** and **TheAudioDB** 5. Image fetchers: enable **TheAudioDB** and **MusicBrainz** 6. Save and let Jellyfin scan ### Metadata tips - **Embed tags in your files** - use MusicBrainz Picard to tag your entire library - **Embed cover art** - Jellyfin reads embedded artwork as a fallback - **Use MusicBrainz IDs** - Picard writes MBIDs into file tags, giving Jellyfin exact matches - **Avoid compilation folders** - "Various Artists" albums should still have proper artist tags per track --- ## Best Music Clients by Platform The Jellyfin web interface plays music fine, but dedicated music clients offer a dramatically better experience. ### Android | Client | Price | Offline | Gapless | Scrobbling | Best for | |---|---|---|---|---|---| | **Finamp** | Free (OSS) | Yes | Yes | Via server | Best all-round | | **Symfonium** | ~$5 (paid) | Yes | Yes | Built-in | Audiophiles, Android Auto | | **Gelli** | Free (OSS) | No | Partial | No | Lightweight | | **Fintunes** | Free | Yes | Yes | No | Cross-platform | **Finamp** is the community favorite - free, open source, with offline caching, gapless playback, and a clean Material Design interface. Available on Google Play and F-Droid. **Symfonium** is the premium choice - paid but worth it for audiophiles. Supports Jellyfin, Navidrome, and Subsonic simultaneously. Android Auto and CarPlay integration. Built-in Last.fm scrobbling. ### iOS | Client | Price | Offline | Gapless | Best for | |---|---|---|---|---| | **Finamp** | Free (OSS) | Yes | Yes | Best all-round | | **Plappa** | Free | Partial | Yes | Native iOS feel | | **Finer** | Free | No | Yes | Lightweight | | **Discrete** | Freemium | Yes | Yes | macOS + iOS | Finamp on iOS matches the Android version in features and quality. ### Desktop | Client | Platform | Price | Best for | |---|---|---|---| | **Feishin** | All (Electron) | Free (OSS) | Spotify-like UI | | **Supersonic** | All (Go native) | Free (OSS) | Lightweight, fast | | **Sonixd** | All (Electron) | Free (OSS) | Mature, stable | | **Tauon Music Box** | Linux | Free (OSS) | Feature-rich | **Feishin** is the standout - a Spotify-inspired interface with gapless playback, queue management, and scrobbling. Supports both Jellyfin and Navidrome backends. --- ## Scrobbling: Last.fm and ListenBrainz Scrobbling records your listening history to an external service - useful for tracking habits, discovering new music, and preserving history across server rebuilds. ### Last.fm via Jellyfin Plugin 1. Dashboard → Plugins → Catalog → **Lastfm** → Install → Restart 2. Dashboard → Plugins → Lastfm → Enter your Last.fm credentials 3. Every track you play on any Jellyfin client scrobbles automatically ### ListenBrainz via Plugin ListenBrainz is the open-source alternative to Last.fm: 1. Dashboard → Plugins → Catalog → **ListenBrainz** → Install → Restart 2. Enter your ListenBrainz user token 3. Scrobbles are sent to ListenBrainz automatically ### Client-side scrobbling Some clients handle scrobbling independently: - **Symfonium**: built-in Last.fm and ListenBrainz scrobbling - **Finamp**: scrobbles via the Jellyfin server plugin - **Feishin**: scrobbles via the Jellyfin server plugin Using server-side scrobbling (via plugin) is recommended - it works regardless of which client you use. --- ## Lyrics Support Jellyfin 10.10+ includes built-in lyrics support with auto-scrolling in the web player. ### How to add lyrics 1. **Embedded lyrics**: Use a tag editor (MusicBrainz Picard, Mp3tag) to embed lyrics in the LYRICS tag 2. **External .lrc files**: Place `trackname.lrc` next to the audio file 3. **Plugin**: Install a lyrics provider plugin from the catalog ### LRC file format ``` [00:12.00]First line of the song [00:17.50]Second line of the song [00:23.10]Third line of the song ``` The web player and compatible clients (Finamp, Feishin) display synchronized lyrics during playback. --- ## Gapless Playback Gapless playback eliminates the silence between tracks - essential for live albums, concept albums, and DJ mixes. | Client | Gapless support | |---|---| | Finamp | Yes | | Symfonium | Yes | | Feishin | Yes | | Jellyfin Web | Partial (depends on browser) | | Gelli | Partial | For guaranteed gapless playback, use Finamp or Symfonium on mobile, Feishin on desktop. --- ## Smart Playlists and Radio ### Smart playlists Use the **jellyfin-smartlists-plugin** to create dynamic playlists: - "Recently Added Albums" - last 30 days - "Top Rated Tracks" - rating 4+ stars - "90s Rock" - genre + decade filter - "Unplayed Albums" - albums with zero plays ### Instant Mix / Radio Jellyfin built-in "Instant Mix" feature creates a radio-style playlist based on a seed track or artist. The algorithm uses genre, mood, and era matching. --- ## Jellyfin vs Navidrome for Music If music is your primary use case, you may wonder whether a dedicated music server is better. | Feature | Jellyfin | Navidrome | |---|---|---| | Primary purpose | Video + Music + Books | Music only | | Subsonic API | No | Yes | | Resource usage | Medium | Very low (~50 MB RAM) | | Best mobile client | Finamp | Symfonium, DSub | | Gapless playback | Client-dependent | Most clients | | Built-in scrobbling | Plugin | Built-in | | Smart playlists | Plugin | Built-in | | Lyrics | Yes (10.10+) | Yes | ### When to use Jellyfin for music - You already run Jellyfin for video - You want one server for everything - You use Finamp as your mobile client ### When to add Navidrome - Music is your primary use case - You want the widest Subsonic client ecosystem - You want the lightest possible server ### Run both Point both at the same music folder: ```yaml services: jellyfin: volumes: - /mnt/media/music:/media/music:ro navidrome: image: deluan/navidrome:latest volumes: - /mnt/media/music:/music:ro - ./navidrome/data:/data ports: - 4533:4533 ``` Use Jellyfin for video + casual music. Use Navidrome + Symfonium for dedicated music streaming. --- ## Music Library Maintenance ### MusicBrainz Picard (essential tool) Picard is the best tool for tagging your music library: 1. Download from [picard.musicbrainz.org](https://picard.musicbrainz.org/) 2. Load your music folder 3. Picard identifies tracks via audio fingerprinting (AcoustID) 4. Review matches and save tags Picard writes MusicBrainz IDs, correct artist/album names, track numbers, and cover art directly into your files. Jellyfin reads these tags for perfect metadata. ### Lidarr (automated music management) Lidarr is the music equivalent of Radarr/Sonarr: - Monitors artists and albums - Automatically downloads new releases - Renames and organizes files - Triggers Jellyfin library scan on import ```yaml services: lidarr: image: lscr.io/linuxserver/lidarr:latest volumes: - ./lidarr/config:/config - /mnt/media/music:/music - /mnt/downloads:/downloads ports: - 8686:8686 ``` --- ## FAQ **Can Jellyfin stream FLAC without transcoding?** Yes. Most modern clients (Finamp, Symfonium, Feishin, web browsers) Direct Play FLAC natively. No transcoding needed. **Does Jellyfin support multi-disc albums?** Yes. Use disc number tags in your files, or organize as subfolders: `Album/Disc 1/`, `Album/Disc 2/`. **Can I use Jellyfin for podcasts?** Not natively. Jellyfin does not have an RSS podcast fetcher. Use Audiobookshelf or PodFetch alongside Jellyfin for podcasts. **How much storage does a music library need?** FLAC averages 30-40 MB per track. A 5,000-track library needs roughly 150-200 GB. MP3 320 cuts that to ~40-50 GB. **Does Jellyfin support ReplayGain?** Jellyfin reads ReplayGain tags from files. Client support varies - Finamp and Symfonium respect ReplayGain for volume normalization. **Can multiple users have separate music libraries?** Yes. Create separate libraries with different folders, then restrict access per user in Dashboard → Users. --- > **Your music server is running - track your listening habits from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing and listening statistics, session monitoring, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Docker GPU Passthrough 2026: Intel QSV, NVIDIA NVENC & AMD (Verified Configs) URL: https://jellywatch.app/blog/jellyfin-docker-gpu-passthrough-intel-nvidia-amd-2026 Published: 2026-05-01T14:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, docker, gpu, passthrough, intel-qsv, nvidia-nvenc, amd, vaapi, transcoding, hardware-acceleration, 2026 # Jellyfin Docker GPU Passthrough: Intel QSV, NVIDIA NVENC, and AMD (2026) Hardware transcoding is the single most impactful optimization for a Jellyfin server. Without it, a single 4K transcode can saturate your CPU. With it, the same transcode uses 5-10% CPU. But getting GPU passthrough working inside Docker trips up even experienced admins. The container cannot see your GPU unless you explicitly map it - and the exact method differs between Intel, NVIDIA, and AMD. This guide gives you verified, copy-paste Docker Compose configurations for each GPU vendor. --- ## Why GPU Passthrough Matters | Playback method | CPU usage (no GPU) | CPU usage (with GPU) | |---|---|---| | Direct Play | ~0% | ~0% | | 1080p transcode | 40-60% | 3-5% | | 4K HDR transcode | 80-100% | 5-15% | | 4K HDR tone mapping | 100%+ (unusable) | 8-15% | Without GPU passthrough, your Docker container falls back to software transcoding - slow, hot, and limited to 1-2 simultaneous streams on most hardware. --- ## Intel QSV (Quick Sync Video) Intel QSV is the most popular choice for Jellyfin because it is built into every Intel CPU with integrated graphics - including the community-favorite N100, N150, and N305 mini PCs. ### Step 1: Verify the GPU is available on the host ```bash ls -la /dev/dri/ # Expected output: # crw-rw---- 1 root video 226, 0 ... card0 # crw-rw---- 1 root render 226, 128 ... renderD128 ``` If `/dev/dri/` does not exist or is empty, your Intel iGPU drivers are not loaded. Install them: ```bash # Ubuntu/Debian sudo apt install -y intel-media-va-driver-non-free vainfo vainfo # Should list VA-API profiles: VAProfileH264, VAProfileHEVC, etc. ``` ### Step 2: Find the render group GID ```bash getent group render # Example output: render:x:109: # The GID is 109 - you need this for Docker ``` ### Step 3: Docker Compose for Intel QSV ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: "1000:1000" group_add: - "109" # render group GID from step 2 devices: - /dev/dri/renderD128:/dev/dri/renderD128 volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro network_mode: host restart: unless-stopped ``` ### Step 4: Enable QSV in Jellyfin 1. Dashboard → Playback → Transcoding 2. Hardware acceleration: **Intel QuickSync (QSV)** 3. Enable: H.264, HEVC, VP9 decode 4. Enable: AV1 decode (12th Gen+ only) 5. Enable: **Hardware Tone Mapping** 6. Save ### Step 5: Verify it works Play a file that forces transcoding (set client quality to 720p). On the host: ```bash sudo intel_gpu_top # Should show Video/0 and Video/1 engines active ``` In JellyWatch or the Jellyfin dashboard, the active session should show **HW** badge for hardware transcode. --- ## NVIDIA NVENC NVIDIA GPUs require the NVIDIA Container Toolkit to expose the GPU inside Docker containers. ### Step 1: Install NVIDIA drivers on the host ```bash # Ubuntu/Debian sudo apt install -y nvidia-driver-550 sudo reboot nvidia-smi # Should show your GPU model, driver version, and CUDA version ``` ### Step 2: Install NVIDIA Container Toolkit ```bash curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed "s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt update sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker ``` ### Step 3: Docker Compose for NVIDIA NVENC ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro ports: - "8096:8096" restart: unless-stopped ``` ### Step 4: Enable NVENC in Jellyfin 1. Dashboard → Playback → Transcoding 2. Hardware acceleration: **NVIDIA NVENC** 3. Enable: H.264, HEVC encode and decode 4. Enable: Hardware Tone Mapping 5. Save ### Step 5: Verify ```bash nvidia-smi # During a transcode, you should see a jellyfin process using GPU memory # and the "Enc" column showing activity ``` ### NVIDIA Session Limits Consumer NVIDIA GPUs (GTX series) have a 3-5 concurrent NVENC session limit enforced by the driver. RTX cards have no limit. On Linux, the community NVENC patch removes this limit for consumer cards: ```bash git clone https://github.com/keylase/nvidia-patch.git cd nvidia-patch sudo bash patch.sh ``` On Windows, this patch does not work - the session limit is enforced. --- ## AMD VAAPI AMD GPUs use VAAPI (Video Acceleration API) on Linux. Support has improved significantly in 2025-2026 but remains less documented than Intel or NVIDIA. ### Step 1: Install AMD drivers ```bash # Ubuntu/Debian - Mesa VAAPI drivers sudo apt install -y mesa-va-drivers vainfo vainfo # Should list AMD VAAPI profiles ``` ### Step 2: Verify the render device ```bash ls -la /dev/dri/ # Should show renderD128 (or renderD129 if you have multiple GPUs) ``` ### Step 3: Docker Compose for AMD VAAPI ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin devices: - /dev/dri/renderD128:/dev/dri/renderD128 group_add: - "109" # render group GID volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro ports: - "8096:8096" restart: unless-stopped ``` ### Step 4: Enable VAAPI in Jellyfin 1. Dashboard → Playback → Transcoding 2. Hardware acceleration: **Video Acceleration API (VAAPI)** 3. VA-API Device: `/dev/dri/renderD128` 4. Enable: H.264, HEVC decode 5. Enable: Hardware Tone Mapping (RDNA2+ only) 6. Save --- ## Troubleshooting GPU Passthrough | Problem | Cause | Fix | |---|---|---| | `/dev/dri` not visible in container | Device not mapped | Add `devices: - /dev/dri:/dev/dri` | | `vainfo` shows no profiles | Wrong driver or missing package | Install `intel-media-va-driver-non-free` or `mesa-va-drivers` | | Permission denied on renderD128 | Container user not in render group | Add `group_add: ["109"]` (your render GID) | | NVIDIA GPU not detected | Container Toolkit not installed | Install `nvidia-container-toolkit` and restart Docker | | Transcoding falls back to CPU | GPU not configured in Jellyfin | Check Dashboard → Transcoding settings | | Tone mapping washed out | Hardware tone mapping disabled | Enable it in transcoding settings | | `intel_gpu_top` shows no activity | Wrong device mapped | Map `renderD128` specifically, not just `card0` | ### The Nuclear Debug Option If nothing works, run the container in privileged mode temporarily to confirm the GPU is functional: ```yaml privileged: true devices: - /dev/dri:/dev/dri ``` If transcoding works in privileged mode but not in normal mode, the issue is permissions or device mapping - not the GPU itself. Never run privileged in production. --- ## GPU Comparison for Jellyfin Docker | GPU | 4K Transcodes | AV1 Decode | AV1 Encode | Tone Mapping | Docker Setup | |---|---|---|---|---|---| | Intel N100 iGPU | 3-4 | Yes | No | Yes | Easy (device map) | | Intel i5-12400 iGPU | 5-7 | Yes | Limited | Yes | Easy | | Intel Arc A380 | 6-8 | Yes | Yes | Yes (3D LUT) | Easy | | NVIDIA GTX 1650 | 3-4 | No | No | Yes | Medium (toolkit) | | NVIDIA RTX 3060 | 8-10 | Yes | No | Yes | Medium | | NVIDIA RTX 4060 | 10-12 | Yes | Yes | Yes | Medium | | AMD RX 6600 | 4-6 | Yes | No | Yes | Easy (device map) | | AMD RX 7600 | 6-8 | Yes | Yes | Yes | Easy | --- ## FAQ **Do I need to install GPU drivers inside the Docker container?** No. The Jellyfin Docker image includes FFmpeg with all necessary codec libraries. Drivers are installed on the host only - Docker passes the GPU device through. **Can I use the GPU for both Jellyfin and gaming simultaneously?** Yes. Jellyfin uses the video encode/decode engine, not the 3D engine. Both can run at the same time without conflict. **Does GPU passthrough work on Docker Desktop (Windows/Mac)?** On Windows with WSL2, NVIDIA GPU passthrough works but requires additional configuration. On macOS, GPU passthrough is not supported in Docker. Use Linux for the best experience. **What if I have both an Intel iGPU and an NVIDIA dGPU?** Map the specific device you want Jellyfin to use. For Intel: `/dev/dri/renderD128`. For NVIDIA: use the `runtime: nvidia` approach. You can even use both simultaneously for different purposes. **Is there a performance difference between Docker and bare metal for transcoding?** Negligible. Docker adds less than 1% overhead for GPU operations. The GPU does the heavy lifting regardless of containerization. --- > **GPU passthrough configured? See your transcoding sessions in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - verify hardware transcoding is active, monitor GPU usage, and get alerts when sessions fall back to CPU. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same GPU monitoring experience for Emby servers.* --- ## Emby vs Plex in 2026: Pricing, Features, and Which Media Server Wins URL: https://jellywatch.app/blog/emby-vs-plex-2026-which-media-server-should-you-choose Published: 2026-05-01T14:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: emby, plex, comparison, media-server, pricing, self-hosting, 2026 # Emby vs Plex in 2026: Pricing, Features, and Which Media Server Wins Plex and Emby have been competing for over a decade. Both are polished, both require paid subscriptions for key features, and both have loyal communities. But in 2026, the gap between them has shifted in ways that matter. This guide compares every aspect that affects your daily experience as a self-hosted media server admin. --- ## Quick Comparison Table | Feature | Emby (Free) | Emby Premiere | Plex (Free) | Plex Pass | |---|---|---|---|---| | **Price** | $0 | ~$119 lifetime | $0 | ~$749.99 lifetime | | **Hardware transcoding** | No | Yes | No | Yes | | **Full mobile app** | No | Yes | Limited | Yes | | **Live TV / DVR** | No | Yes | No | Yes | | **Offline sync** | No | Yes | No | Yes | | **Account required** | Yes | Yes | Yes | Yes | | **Open source** | No | No | No | No | | **Cloud dependency** | Partial | Partial | Heavy | Heavy | Both platforms lock their most important features behind a paid tier. Emby Premiere is significantly cheaper than Plex Pass, especially at the lifetime level. --- ## Pricing ### Emby Premiere | Plan | Price | |---|---| | Monthly | ~$4.99 | | Yearly | ~$54 | | Lifetime | ~$119 | ### Plex Pass | Plan | Price | |---|---| | Monthly | ~$6.99 | | Yearly | ~$69.99 | | Lifetime | ~$249.99 | Emby is cheaper across every plan. The lifetime gap is the most significant: Emby Premiere costs less than half of Plex Pass. Both require payment for hardware transcoding, mobile apps, and Live TV. --- ## Privacy and Cloud Dependency This is where the platforms diverge most significantly. ### Plex: Cloud-First Architecture Plex routes all authentication through its cloud servers. If Plex servers go down, you cannot access your own local server. This has happened multiple times in the past five years, and each outage reminds users that Plex treats your server as a node in its ecosystem rather than a standalone product. Plex also collects viewing data and has introduced ad-supported free content, a "Discover" tab, and streaming recommendations into the interface. ### Emby: Lighter Cloud Touch Emby requires an account for activation and updates, but day-to-day operation is more self-contained than Plex. Authentication can work locally once activated. Emby does not inject third-party content or ads into your library interface. For privacy-conscious users, Emby is the better choice between the two. Neither matches Jellyfin, which requires zero external accounts. --- ## Transcoding and Performance Both platforms support the same hardware acceleration options: - Intel Quick Sync (QSV) - NVIDIA NVENC - AMD AMF / VAAPI Performance is comparable when configured correctly. However, community testing in 2026 has highlighted a growing gap in one specific area. ### HDR Tone Mapping Quality When transcoding HDR content to SDR for incompatible clients, the quality of the tone mapping algorithm matters enormously. Community side-by-side comparisons on the Emby forums have noted that Plex tone mapping produces slightly more accurate colors than Emby in most scenarios, though both trail behind Jellyfin on Linux/Docker setups. ### AV1 Support Both Plex and Emby support AV1 hardware decoding on compatible GPUs. AV1 hardware encoding support is more mature on Plex as of early 2026. --- ## User Interface ### Plex: The Polish Leader Plex has the most polished interface of any media server. The home screen, library browsing, and playback experience feel like a commercial streaming service. The downside: Plex increasingly fills the interface with content you did not ask for - free ad-supported movies, a "Discover" tab, and rental suggestions. ### Emby: Clean and Focused Emby interface is clean, modern, and focused exclusively on your content. No ads, no third-party suggestions, no "Discover" tab. For users who built a media server to escape exactly that kind of noise, Emby is more respectful of the experience. Emby also supports custom CSS theming, though the community is smaller than Jellyfin theming ecosystem. --- ## Mobile Apps ### Plex The Plex mobile app is available on iOS and Android. The free version is limited - full playback and offline sync require Plex Pass. The app is well-polished and consistent across platforms. ### Emby The Emby mobile app requires Premiere for full functionality. The Android app is solid; the iOS app is functional but less polished than Plex. For server administration on mobile, neither Plex nor Emby offers a dedicated admin companion app. Plex users rely on Tautulli (web-based). Emby users can use **EmbyWatch** - a native Android admin app with real-time session monitoring, push notifications, and Radarr/Sonarr integration. --- ## Live TV and DVR Both platforms support Live TV with HDHomeRun tuners and M3U IPTV playlists. Both require their paid tier. | Feature | Emby Premiere | Plex Pass | |---|---|---| | HDHomeRun support | Yes | Yes | | M3U IPTV | Yes | Yes | | DVR recording | Yes | Yes | | EPG (XMLTV) | Yes | Yes | | Schedules Direct | Yes | Yes | Live TV functionality is comparable. Emby has a slight edge in IPTV stability based on community reports. --- ## Client Ecosystem ### Plex Plex has the widest official client support of any media server: - iOS, Android, Android TV, Apple TV, Roku, Samsung Tizen, LG webOS, Xbox, PlayStation, web browser - All maintained by the Plex team ### Emby Emby has official clients for most platforms but coverage is slightly narrower: - iOS, Android, Android TV, Apple TV, Roku, Samsung Tizen, LG webOS, web browser - Xbox and PlayStation support is limited For most users, both platforms cover every device in their home. --- ## Plugin Ecosystem ### Emby Emby has a curated plugin catalog with official and community plugins. The ecosystem is stable but smaller than Jellyfin. Key plugins include Trakt sync, OpenSubtitles, Auto Organize, and Webhooks. ### Plex Plex effectively killed its plugin system years ago. Third-party tools like Tautulli, Overseerr, and Kometa exist but operate outside Plex rather than as integrated plugins. Emby wins on extensibility within the server itself. --- ## The Elephant in the Room: Jellyfin Both Emby and Plex charge for features that Jellyfin offers completely free: | Feature | Jellyfin | Emby Premiere | Plex Pass | |---|---|---|---| | Hardware transcoding | Free | ~$119 | ~$249.99 | | Full mobile app | Free | ~$119 | ~$249.99 | | Live TV / DVR | Free | ~$119 | ~$249.99 | | Account required | No | Yes | Yes | | Open source | Yes | No | No | For technically-minded users willing to invest 30 minutes in setup, Jellyfin eliminates the need for either paid platform. --- ## When to Choose Each ### Choose Emby if: - You want a clean, focused interface without ads - Privacy matters more than convenience - You prefer a stable plugin ecosystem - You want official support behind your software - You want the best value paid media server , Premiere costs less than half of Plex Pass ### Choose Plex if: - You want the easiest possible setup with zero configuration - Built-in remote access relay matters (no reverse proxy needed) - You need the widest client support including game consoles - You prefer the most polished UI available - You do not mind ads in the free tier ### Choose Jellyfin if: - You want zero cost, forever - Privacy is non-negotiable - You enjoy an active open-source community - You want the most powerful plugin ecosystem - You run Docker on Linux --- ## FAQ **Is Emby better than Plex in 2026?** For privacy, a clean interface, and pricing, yes. For ease of setup and client polish, Plex still leads. **Is Emby Premiere worth $119?** If you need hardware transcoding and mobile apps, yes. If you are willing to try Jellyfin, you get the same features for free. **Can I migrate from Plex to Emby?** Yes. Your media files work identically. Watch history can be transferred via Trakt as an intermediary. **Does Emby have ads like Plex?** No. Emby does not inject third-party content or advertisements into your library. **Which has better 4K HDR support?** Both handle 4K HDR well with hardware acceleration. Plex has a slight edge in tone mapping quality; Emby has better IPTV stability. --- ## Monitor Your Server - Whichever You Choose Running a media server without monitoring is flying blind. Know who is streaming, what is transcoding, and when your CPU spikes. --- > **On Emby?** [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time session monitoring, transcoding diagnostics, and push notifications for your Emby server. > **Considering Jellyfin instead?** [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same complete monitoring experience, built for Jellyfin. --- ## Jellyfin vs Immich 2026: Which Self-Hosted Photo & Video Solution Do You Need? (Run Both) URL: https://jellywatch.app/blog/jellyfin-vs-immich-photos-videos-self-hosted-comparison-2026 Published: 2026-04-28T19:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, immich, photos, videos, comparison, self-hosted, google-photos, 2026 # Jellyfin vs Immich for Photos and Videos (2026) Both are self-hosted. Both handle photos and videos. But they are designed for completely different workflows. --- ## What Each One Does Jellyfin: A media server that can display photos as slideshows and stream home videos. It treats photos/videos as media library content - organized by folders, browsed like a library. Immich: A Google Photos replacement. AI-powered face detection, automatic mobile upload, timeline view, map view, sharing albums, and search by content. --- ## Comparison | Feature | Jellyfin | Immich | |---|---|---| | Photo timeline | No (folder-based) | Yes (date-based) | | Face detection | No | Yes (AI-powered) | | Mobile auto-upload | No | Yes (Android + iOS) | | Search by content | No | Yes (CLIP AI) | | Map view (GPS) | No | Yes | | Album sharing | No | Yes (links) | | Video streaming | Excellent (transcoding, HDR) | Basic | | Home video organization | Good (folders + posters) | Basic | | Multi-user | Yes | Yes | | Resource usage | Medium | High (AI processing) | --- ## When to Use Each | Use case | Best tool | |---|---| | Stream home videos to TV | Jellyfin | | Auto-backup phone photos | Immich | | Search photos by face/content | Immich | | Photo slideshows on TV | Jellyfin | | Share photo albums with family | Immich | | Replace Google Photos completely | Immich | --- ## Run Both Together The ideal setup for families: - Immich handles phone photo backup, face detection, and search - Jellyfin handles home video streaming to TVs and organized slideshows ```yaml services: immich: volumes: - /mnt/photos:/usr/src/app/upload jellyfin: volumes: - /mnt/photos/videos:/media/home-videos:ro ``` --- ## FAQ **Can Immich replace Jellyfin for videos?** No. Immich video playback is basic - no transcoding, no HDR, no multi-device streaming. **Can Jellyfin replace Immich for photos?** For basic slideshows, yes. For face detection, search, and mobile upload - no. **Do they conflict if pointed at the same files?** No. Both read files in read-only mode. They coexist without issues. --- > **Running Jellyfin for your family media? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health and session monitoring for Jellyfin. --- ## Jellyfin vs Navidrome for Music in 2026: Which Self-Hosted Music Server Is Better? URL: https://jellywatch.app/blog/jellyfin-vs-navidrome-best-self-hosted-music-server-2026 Published: 2026-04-28T18:30:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, navidrome, music, comparison, self-hosted, streaming, subsonic, 2026 # Jellyfin vs Navidrome for Music (2026) If music is a significant part of your self-hosted setup, you have two main options: use Jellyfin built-in music support, or run Navidrome - a dedicated music server. --- ## Quick Comparison | Feature | Jellyfin | Navidrome | |---|---|---| | Primary purpose | Video + Music + Books | Music only | | Subsonic API | No | Yes | | Best mobile client | Finamp | Symfonium, DSub, Substreamer | | Gapless playback | Client-dependent | Yes (most clients) | | Lyrics | Yes (plugin) | Yes (built-in) | | Last.fm scrobbling | Plugin | Built-in | | ListenBrainz | Plugin | Built-in | | Multi-user | Yes | Yes | | Resource usage | Medium (full server) | Very low (~50 MB RAM) | | Smart playlists | Plugin | Built-in | --- ## When to Use Jellyfin for Music - You already run Jellyfin for video and want one server for everything - You use Finamp as your mobile client (excellent Jellyfin music client) - You want unified watch/listen history across all media types - You do not need Subsonic API compatibility ## When to Use Navidrome - Music is your primary use case - You want the widest choice of mobile clients (Subsonic ecosystem) - You want built-in scrobbling without plugins - You want the lightest possible server (~50 MB RAM) ## The Best of Both Worlds Run both. Point them at the same music folder: ```yaml services: jellyfin: volumes: - /mnt/media/music:/media/music:ro navidrome: image: deluan/navidrome:latest volumes: - /mnt/media/music:/music:ro - ./navidrome/data:/data ports: - 4533:4533 ``` Use Jellyfin for video + casual music listening. Use Navidrome + Symfonium for dedicated music streaming with scrobbling. --- ## Best Music Clients by Platform | Platform | For Jellyfin | For Navidrome | |---|---|---| | Android | Finamp, Symfonium | Symfonium, DSub, Ultrasonic | | iOS | Finamp, Plappa | play:Sub, Amperfy | | Desktop | Feishin, Sonixd | Feishin, Sonixd, Supersonic | Symfonium (Android, paid) supports both Jellyfin and Navidrome - the best single music client if you run both. --- > **Streaming music on Jellyfin? Track your listening stats.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing and listening statistics for your entire Jellyfin library. --- ## Jellyfin vs Stremio vs Kodi 2026: Server vs Player vs Aggregator - Which Do You Need? URL: https://jellywatch.app/blog/jellyfin-vs-kodi-vs-stremio-2026-which-media-player-is-best Published: 2026-04-28T18:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, kodi, stremio, comparison, media-player, media-server, 2026 # Jellyfin vs Kodi vs Stremio (2026) These three names appear in every best media app discussion. But they are fundamentally different tools that solve different problems. --- ## What Each One Actually Is | Tool | Type | What it does | |---|---|---| | Jellyfin | Media server | Stores, organizes, and streams YOUR media files to any device | | Kodi | Media player | Plays local files and streams from various sources on ONE device | | Stremio | Streaming aggregator | Aggregates content from online sources via addons | ### Jellyfin = Your Netflix You own the files. Jellyfin organizes them with metadata, serves them to any client on your network or the internet, manages users, and handles transcoding. ### Kodi = Your VLC on Steroids Kodi plays files stored locally or on a network share. It has a beautiful 10-foot interface for TVs. It does not serve content to other devices - it plays on the device it is installed on. ### Stremio = Your Streaming Hub Stremio aggregates content from online sources via community addons. It does not store files - it streams from the internet. --- ## Comparison Table | Feature | Jellyfin | Kodi | Stremio | |---|---|---|---| | Self-hosted | Yes | N/A (player) | No (cloud) | | Stores your files | Yes | No (plays them) | No | | Multi-device streaming | Yes | No (single device) | Yes (via account) | | User management | Yes | No | Basic | | Hardware transcoding | Yes | N/A | N/A | | Metadata management | Yes | Yes (local) | Automatic | | Offline access | Yes (your files) | Yes (local files) | No | | Privacy | Full control | Full control | Depends on addons | | Mobile apps | Yes | Yes | Yes | --- ## The Power Combo: Jellyfin + Kodi The best of both worlds: Jellyfin as the server, Kodi as the player. Install the Jellyfin for Kodi addon: - Kodi syncs your entire Jellyfin library - Watched status syncs back to Jellyfin - Kodi superior playback engine handles every codec - Jellyfin handles multi-user, remote access, and transcoding This is the recommended setup for home theater PCs and devices running Kodi (Vero V, CoreELEC, LibreELEC). --- ## When to Use Each | Scenario | Best tool | |---|---| | Stream your own media to family/friends | Jellyfin | | Play local files on a home theater PC | Kodi | | Watch content from online sources | Stremio | | Home theater PC + server | Jellyfin + Kodi | | Mobile streaming of your library | Jellyfin | | No media files, just want to watch stuff | Stremio | --- ## FAQ **Can I replace Plex with Jellyfin?** Yes. Jellyfin does everything Plex does, for free. **Can Kodi connect to Jellyfin?** Yes, via the Jellyfin for Kodi addon. Full library sync and watched status. **Is Stremio legal?** Stremio itself is legal. Some community addons may access copyrighted content - use at your own risk. **Do I need all three?** Most users need only Jellyfin. Add Kodi if you have a dedicated HTPC. --- > **Running Jellyfin? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the admin companion for Jellyfin server owners. --- ## Findroid vs Jellyfin Official Android App vs JellyWatch TV in 2026: Which Is Best? (Complete Comparison) URL: https://jellywatch.app/blog/findroid-vs-jellyfin-official-android-app-comparison-2026 Published: 2026-04-28T17:30:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: findroid, jellyfin, android, android-tv, app, comparison, jellywatch-tv, client, 2026 # Findroid vs Jellyfin Official Android App vs JellyWatch for Android TV (2026) Three free Android apps, all connecting to the same Jellyfin server. But the experience varies significantly depending on the screen you are watching on. --- ## Quick Verdict | Feature | Findroid | Official Jellyfin | JellyWatch for Android TV | |---|---|---|---| | **Best for** | Android phones & tablets | Universal fallback | Android TV / Fire TV / TV boxes | | UI design | Material Design 3, modern | Functional, dated | Material Design 3, TV-first | | Offline downloads | Yes | Experimental | No (streaming focus) | | TV remote D-pad | Partial | Yes | Native, optimized | | 4K / HDR | Yes | Yes | Yes (ExoPlayer Media3) | | Jellyseerr requests | No | No | Built-in | | Chromecast | Yes | Yes | N/A (native TV app) | | Active development | Very active | Active | Very active | | Google Play | Yes | Yes | [Yes](https://play.google.com/store/apps/details?id=com.jellywatch.tv) | --- ## Phone and Tablet: Findroid vs Official Jellyfin ### UI and Design Findroid uses Material Design 3 with dynamic theming (Material You on Android 12+). The interface feels modern, with smooth animations, proper dark mode, and a clean library grid. The official Jellyfin app uses an older design language. Functional but visually dated compared to Findroid. For users sharing their server with non-technical family members, Findroid's polished UI makes a better first impression. ### Offline Downloads Findroid: Full offline download support. Download movies and episodes to your phone for offline viewing. Official Jellyfin: Offline downloads are marked as experimental. They work but are less reliable than Findroid's implementation. If offline viewing matters to you, Findroid is the clear choice for phones. ### Codec Support and Playback Both apps use ExoPlayer as the playback engine. Codec support is nearly identical: | Codec | Findroid | Official | |---|---|---| | H.264 | Direct Play | Direct Play | | H.265/HEVC | Direct Play | Direct Play | | AV1 | Direct Play (Android 12+) | Direct Play (Android 12+) | | VP9 | Direct Play | Direct Play | | SRT subtitles | Yes | Yes | | ASS subtitles | Yes | Yes | No meaningful difference in playback capability for phone and tablet use. **Recommendation for phones and tablets: Findroid.** --- ## Android TV and TV Boxes: Why JellyWatch for Android TV Wins If you watch Jellyfin on an **Android TV, Chromecast with Google TV, Fire TV, Nvidia Shield, or any TV box**, the equation changes completely. Phones and TV interfaces have fundamentally different requirements: - TV uses a **D-pad remote**, not touch - Navigation must work with 4 directional keys + select - UI must be readable at 3 meters distance - Loading speed matters more because TV browsing is leaned-back **JellyWatch for Android TV** was built exclusively for this use case. ### What Makes JellyWatch for Android TV Different **Real Direct Play with hardware-accelerated ExoPlayer (Media3):** - ExoPlayer with the Media3 stack uses hardware decoders on the device - Zero unnecessary transcodes triggered by player limitations - 4K, HDR10, HDR10+, and Dolby Vision on compatible hardware - TrueHD and DTS:X passthrough to AV receivers **Native remote control navigation:** - Every element reachable with a standard TV remote - Fast D-pad focus traversal designed from the ground up — not adapted from a phone UI - Smooth, responsive Jetpack Compose animations **Jellyseerr integration built-in:** - Request movies and TV shows directly from your TV - Browse and manage pending requests without picking up your phone **Home screen designed for the couch:** - Continue Watching, Next Up, and Recently Added prominently displayed - Chapters and resume playback work reliably - Automatic next episode without interaction ### Device Compatibility JellyWatch for Android TV works on: - Chromecast with Google TV (all generations) - Nvidia Shield Pro and Shield TV - Fire TV Stick 4K and 4K Max - Onn 4K Box and 4K Pro - Sony, Philips, TCL Android TV sets - Xiaomi TV boxes - Any Android TV 8.0+ device [Download JellyWatch for Android TV on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv) --- ## Which App For Which Screen? | Screen | Recommended App | |---|---| | Android phone | **Findroid** | | Android tablet | **Findroid** | | Android TV / Google TV | **[JellyWatch for Android TV](https://jellywatch.app/android-tv)** | | Fire TV | **JellyWatch for Android TV** | | Nvidia Shield | **JellyWatch for Android TV** | | TV box (Chromecast, Onn, etc.) | **JellyWatch for Android TV** | | Need offline downloads on phone | **Findroid** | | Server administration | **JellyWatch admin app** | ### The Complete Android Jellyfin Setup For a household with both phones and a TV: 1. **Findroid** on every Android phone and tablet — modern UI, offline downloads 2. **JellyWatch for Android TV** on the TV box — native TV interface, Direct Play, Jellyseerr requests 3. **JellyWatch admin app** on your phone — session monitoring, server health, push notifications Three apps, all free, covering every screen. --- ## FAQ **Can I use Findroid on an Android TV?** Findroid installs on Android TV but is designed for touch screens. D-pad navigation works but the interface is not optimized for the 10-foot experience. JellyWatch for Android TV is the purpose-built alternative. **Does JellyWatch for Android TV support offline downloads?** Not currently. JellyWatch for Android TV focuses on streaming quality and TV navigation. For offline viewing on a tablet, use Findroid. **Which app has the best 4K playback on a TV?** JellyWatch for Android TV uses ExoPlayer Media3 with full hardware decode. On a Chromecast, Nvidia Shield, or TV box connected to a 4K TV, it delivers the cleanest Direct Play experience with zero unnecessary transcoding. **Is JellyWatch for Android TV the same as the JellyWatch admin app?** No. They are separate apps. JellyWatch (admin app) is for server monitoring from your phone. JellyWatch for Android TV is a Jellyfin viewing client for the big screen. --- > **The right tool for each screen.** > - Phone/tablet: [Findroid on Google Play](https://play.google.com/store/apps/details?id=dev.jdtech.jellyfin) > - TV box: [JellyWatch for Android TV on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv) > - Server admin: [JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) --- ## Turn Your Old PC or Laptop Into a Jellyfin Media Server in 2026 (Complete Guide) URL: https://jellywatch.app/blog/turn-old-pc-laptop-into-jellyfin-media-server-2026 Published: 2026-04-28T17:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, old-pc, laptop, repurpose, media-server, diy, ubuntu, guide, 2026 # Turn Your Old PC Into a Jellyfin Media Server (2026) Before buying a mini PC or NAS, check what is already in your closet. An old laptop or desktop from 2016-2020 is more than capable of running Jellyfin - often with hardware transcoding. --- ## Minimum Requirements | Component | Minimum | Recommended | |---|---|---| | CPU | Any 64-bit dual-core (2012+) | Intel 6th Gen+ (for QSV) | | RAM | 4 GB | 8 GB | | Storage (OS) | 32 GB SSD | 120 GB SSD | | Storage (media) | Any USB/internal HDD | USB 3.0 HDD or NAS | | Network | Wi-Fi (for testing) | Ethernet (for production) | ### Check your hardware ```bash cat /proc/cpuinfo | grep "model name" | head -1 free -h lspci | grep -i vga ``` --- ## Step 1: Install Ubuntu Server 1. Download Ubuntu Server 22.04 LTS from ubuntu.com 2. Flash to USB with Rufus or Balena Etcher 3. Boot from USB, Install Ubuntu Server 4. Enable SSH during installation 5. After install, connect via SSH from your main computer --- ## Step 2: Install Docker and Jellyfin ```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker mkdir -p ~/jellyfin && cd ~/jellyfin ``` Create docker-compose.yml: ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro devices: - /dev/dri:/dev/dri restart: unless-stopped ``` ```bash docker compose up -d ``` --- ## Step 3: Hardware Transcoding on Older Intel CPUs | Intel Generation | QSV Support | H.265 Decode | Tone Mapping | |---|---|---|---| | 6th Gen (Skylake) | Yes | Yes | No | | 7th Gen (Kaby Lake) | Yes | Yes | No | | 8th Gen (Coffee Lake) | Yes | Yes | Limited | | 10th Gen (Comet Lake) | Yes | Yes | Yes | | 11th Gen+ | Yes | Yes | Yes (hardware) | Even a 6th Gen i5 laptop can handle 2-3 simultaneous 1080p transcodes via QSV. --- ## Step 4: Mount Your Media ### USB external drive ```bash sudo mkdir -p /mnt/media echo "/dev/sda1 /mnt/media ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab sudo mount -a ``` ### NAS via NFS ```bash sudo apt install nfs-common echo "NAS_IP:/volume1/media /mnt/media nfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab sudo mount -a ``` --- ## Step 5: Run 24/7 Silently ### Prevent sleep ```bash sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target ``` ### Laptop: close lid without sleeping Edit /etc/systemd/logind.conf: ```ini HandleLidSwitch=ignore HandleLidSwitchExternalPower=ignore ``` ```bash sudo systemctl restart systemd-logind ``` --- ## Electricity Cost | Device | Typical power | Annual cost (~$0.15/kWh) | |---|---|---| | Old laptop | 15-30W | $20-40/year | | Old desktop | 50-100W | $65-130/year | | Intel N100 mini PC | 8-12W | $10-16/year | --- ## When to Buy New Instead Buy a mini PC if: - Your old hardware is pre-2015 (no QSV) - It has less than 4 GB RAM and cannot be upgraded - The fan is loud and cannot be quieted - Electricity cost exceeds $100/year (old desktop) --- > **Old PC running Jellyfin? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU monitoring, session tracking, and push alerts for Jellyfin on any hardware. --- ## Best Hard Drives and Storage for a Jellyfin Media Server in 2026 URL: https://jellywatch.app/blog/best-hard-drive-storage-jellyfin-media-server-2026 Published: 2026-04-28T16:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: storage, hard-drive, hdd, ssd, nas, jellyfin, media-server, buying-guide, 2026 # Best Storage for a Jellyfin Media Server (2026) Storage is the number one ongoing cost of running a media server. --- ## How Much Storage Do You Need? | Library type | Average file size | 500 items | 1,000 items | 5,000 items | |---|---|---|---|---| | 1080p encodes | 4-8 GB | 2-4 TB | 4-8 TB | 20-40 TB | | 4K encodes (HEVC) | 15-25 GB | 7-12 TB | 15-25 TB | 75-125 TB | | 4K remuxes | 50-80 GB | 25-40 TB | 50-80 TB | 250+ TB | | TV episodes (1080p) | 1-3 GB | 0.5-1.5 TB | 1-3 TB | 5-15 TB | | Music (FLAC) | 300-500 MB/album | 150-250 GB | 300-500 GB | 1.5-2.5 TB | --- ## HDD vs SSD: What Goes Where | Storage type | Use for | Why | |---|---|---| | NVMe SSD | Jellyfin config, metadata, cache | Random I/O - SSD is 100x faster | | SATA SSD | Jellyfin config (budget option) | Still much faster than HDD | | HDD (7200 RPM) | Media files | Sequential reads - HDD is fine | The golden rule: SSD for config, HDD for media. --- ## Best NAS Hard Drives in 2026 | Drive | Capacity | RPM | Warranty | Price/TB | Best for | |---|---|---|---|---|---| | WD Red Plus | 4-14 TB | 5400/7200 | 3 years | ~$18/TB | Synology/QNAP NAS | | Seagate IronWolf | 4-20 TB | 5400/7200 | 3 years | ~$17/TB | Multi-bay NAS | | Toshiba N300 | 4-18 TB | 7200 | 3 years | ~$15/TB | Best value | | WD Red Pro | 4-22 TB | 7200 | 5 years | ~$22/TB | Heavy workloads | ### Shucking External Drives The cheapest way to get large drives: buy WD Elements or Easystore external drives on sale and remove the drive from the enclosure. - WD Elements 18 TB: ~$200 on sale (~$11/TB) - Contains a WD Red equivalent drive --- ## RAID: Do You Need It? | Setup | Protection | Usable capacity | Best for | |---|---|---|---| | No RAID (single drive) | None | 100% | Budget, replaceable content | | RAID 1 (mirror) | 1 drive failure | 50% | Small NAS, critical data | | RAID 5 (parity) | 1 drive failure | (N-1) drives | 3+ bay NAS | | Unraid (parity) | 1-2 drive failures | (N-1 or N-2) drives | Flexible, mixed drives | | ZFS RAIDZ1 | 1 drive failure | (N-1) drives | TrueNAS, data integrity | For media that can be re-downloaded: RAID is optional. For irreplaceable content (home videos, photos): RAID or regular backups are essential. --- ## Storage Planning Tips 1. Start with 1-2 large drives, expand later 2. Keep 20% free space for performance and future growth 3. Use SSD for Jellyfin config - the single biggest performance improvement 4. Consider Trickplay storage: 50-100 GB for large libraries 5. Budget $15-20/TB for NAS drives in 2026 --- > **Storage sorted? Monitor your server health.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - storage alerts, CPU monitoring, and session tracking for Jellyfin. --- ## Best GPU for Jellyfin Transcoding in 2026: Intel Arc vs NVIDIA vs AMD (Complete Comparison) URL: https://jellywatch.app/blog/best-gpu-for-jellyfin-transcoding-2026-intel-nvidia-amd Published: 2026-04-28T15:30:00+00:00 Author: JellyWatch Team Category: Tips Tags: gpu, jellyfin, transcoding, intel-arc, nvidia, amd, comparison, buying-guide, 2026 # Best GPU for Jellyfin Transcoding in 2026 If your Jellyfin server needs to transcode for more than 2-3 users simultaneously, a dedicated or integrated GPU is essential. --- ## GPU Comparison Table | GPU | 4K HEVC Transcodes | AV1 Encode | Tone Mapping | Power | Price | |---|---|---|---|---|---| | Intel N100 iGPU | 3-4 | No | Yes | 10W | Included | | Intel Arc A380 | 6-8 | Yes | Yes (3D LUT) | 75W | ~$100 | | Intel Arc A770 | 10-12 | Yes | Yes (3D LUT) | 225W | ~$250 | | NVIDIA GTX 1650 | 3-4 | No | Yes | 75W | ~$120 | | NVIDIA RTX 3060 | 8-10 | No | Yes | 170W | ~$250 | | NVIDIA RTX 4060 | 10-12 | Yes | Yes | 115W | ~$280 | | AMD RX 6600 | 4-6 | No | Yes | 132W | ~$180 | | AMD RX 7600 | 6-8 | Yes | Yes | 165W | ~$230 | --- ## Best Value by Use Case | Use case | Best GPU | Why | |---|---|---| | Budget (1-4 users) | Intel N100 iGPU | Free with mini PC, 10W | | Mid-range (5-8 users) | Intel Arc A380 | $100, AV1, excellent tone mapping | | High-end (10+ users) | NVIDIA RTX 4060 | AV1 NVENC, best quality | | Linux-only, best value | Intel Arc A380 | Cheapest AV1 encode | | Windows, proven reliability | NVIDIA RTX 3060 | Mature drivers, no session limit on RTX | --- ## Key Considerations ### NVIDIA Session Limits NVIDIA consumer GPUs (GTX) have a 3-5 concurrent NVENC session limit. RTX cards have no limit. On Linux, the community patch removes this limit for GTX cards. ### Intel Arc Driver Maturity Intel Arc drivers on Linux have improved dramatically in 2025-2026 but are still less mature than NVIDIA. Test thoroughly before deploying. ### Tone Mapping Quality Intel Arc and newer Intel iGPUs support 3D LUT-based tone mapping - the highest quality HDR-to-SDR conversion available. ### AV1 Encoding Only Intel Arc, NVIDIA RTX 40-series, and AMD RX 7000-series support hardware AV1 encoding. --- ## FAQ **Do I need a GPU if all my clients Direct Play?** No. Direct Play uses zero GPU. A GPU is only needed for transcoding. **Can I use my gaming GPU for Jellyfin?** Yes. Jellyfin uses the GPU video engine, not the 3D engine. Gaming and transcoding can run simultaneously. **Intel iGPU vs dedicated GPU?** For 1-4 users, the iGPU in an N100/i5 is sufficient. For 5+ users, a dedicated GPU is recommended. --- > **New GPU installed? See your transcoding sessions in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - GPU usage, transcode status, and session monitoring for Jellyfin. --- ## Best NAS for Jellyfin in 2026: Synology vs QNAP vs Asustor vs DIY (Buying Guide) URL: https://jellywatch.app/blog/best-nas-for-jellyfin-2026-synology-qnap-asustor-buying-guide Published: 2026-04-28T15:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: nas, jellyfin, synology, qnap, asustor, buying-guide, hardware, 2026 # Best NAS for Jellyfin in 2026: Complete Buying Guide A NAS is the natural home for a Jellyfin server - always on, low power, already storing your files. But not every NAS supports Jellyfin well. --- ## The Critical Question: Intel or AMD? | CPU type | Hardware transcoding | Docker | Example models | |---|---|---|---| | Intel Celeron (J4125, J4025) | Yes - Intel QSV | Yes | Synology DS220+, DS224+ | | Intel Pentium/Core | Yes - Intel QSV | Yes | QNAP TS-464, custom builds | | AMD Ryzen Embedded (V1500B, R1600) | No QSV | Yes | Synology DS923+, DS1621+ | | ARM (Realtek, Marvell) | No | No Docker | Synology J-series, budget models | Rule: If you want hardware transcoding on a NAS, buy Intel. AMD Synology models (DS923+, DS1621+) cannot do Intel Quick Sync. --- ## Best NAS by Budget ### Budget: Under $300 **Synology DS224+** (~$290) - Intel Celeron J4125 (4 cores) - 2 GB RAM (upgradeable to 6 GB) - 2 drive bays - Intel QSV: 1-2 simultaneous transcodes - Docker via Container Manager Best for: Solo users and small families. ### Mid-Range: $300-500 **QNAP TS-464** (~$450) - Intel Celeron N5095 (4 cores) - 8 GB RAM - 4 drive bays - Intel QSV: 2-3 simultaneous transcodes - Docker native - 2x M.2 NVMe slots for SSD cache **Asustor AS5402T** (~$400) - Intel Celeron N5105 (4 cores) - 4 GB RAM (upgradeable to 16 GB) - 2 drive bays + 2x M.2 NVMe - 2.5GbE networking ### DIY: Best Performance per Dollar **Intel N100 Mini PC + External Storage** (~$130 + drives) - 3-4 simultaneous 4K transcodes - 16 GB RAM - Run TrueNAS SCALE or Unraid A $130 N100 mini PC outperforms a $450 NAS for Jellyfin transcoding. --- ## NAS Comparison Table | NAS | CPU | QSV Transcodes | RAM | Bays | Price | |---|---|---|---|---|---| | Synology DS224+ | J4125 | 1-2 | 2 GB | 2 | ~$290 | | QNAP TS-264 | N5095 | 2-3 | 8 GB | 2 | ~$350 | | Asustor AS5402T | N5105 | 2-3 | 4 GB | 2 | ~$400 | | QNAP TS-464 | N5095 | 2-3 | 8 GB | 4 | ~$450 | | Synology DS923+ | R1600 (AMD) | 0 | 4 GB | 4 | ~$550 | | DIY N100 | N100 | 3-4 | 16 GB | External | ~$130 | --- ## What to Check Before Buying 1. Intel CPU - mandatory for QSV transcoding 2. Docker support - required for Jellyfin on most NAS platforms 3. RAM upgradeable - Jellyfin 10.11 uses more RAM; 4 GB minimum, 8 GB recommended 4. NVMe slot - for SSD metadata cache 5. Gigabit or 2.5GbE - for 4K streaming without bottlenecks --- ## FAQ **Can I run Jellyfin on a Synology DS923+?** Yes, but without hardware transcoding (AMD CPU). Direct Play only. **Is 2 GB RAM enough?** Barely. Upgrade to 4-6 GB for a smooth experience with Jellyfin 10.11+. **Should I buy a NAS or a mini PC?** NAS if you want drive management, RAID, and a polished UI. Mini PC if you want maximum transcoding performance per dollar. --- > **NAS running Jellyfin? Monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time monitoring for Jellyfin on any hardware. --- ## Jellyfin Scheduled Tasks: Stop Background CPU Spikes (Optimization Guide 2026) URL: https://jellywatch.app/blog/jellyfin-scheduled-tasks-optimization-guide-2026 Published: 2026-04-28T14:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, scheduled-tasks, optimization, library-scan, trickplay, background, performance, 2026 # Jellyfin Scheduled Tasks Optimization Guide (2026) Jellyfin runs background tasks continuously - library scans, metadata refreshes, image extraction, intro detection, and more. On an Intel N100 or a NAS, these tasks can spike CPU to 100% and cause buffering during playback. --- ## Where to Find Scheduled Tasks Dashboard, Scheduled Tasks Each task shows: last run time, next scheduled run, current status, trigger configuration. --- ## Tasks to Optimize ### Scan Media Library **What it does:** Detects new, changed, or removed media files. **Default:** Runs every 12 hours. **Optimization:** If you use Radarr/Sonarr with Jellyfin notifications, set to manual only - Radarr/Sonarr trigger scans automatically when new content arrives. ### Extract Chapter Images **What it does:** Generates thumbnail images for every chapter marker in every video. **Optimization:** Disable this unless you specifically use chapter thumbnails. It is one of the heaviest background tasks. Dashboard, Libraries, [Library] - uncheck Extract chapter images during library scan. ### Generate Trickplay Images **What it does:** Creates video preview thumbnails for the seek bar. **Optimization:** - Schedule to run at 3 AM - Reduce image resolution: 320px width is sufficient - Disable for libraries where you do not need it ### Detect Introductions (Intro Skipper) **What it does:** Analyzes audio fingerprints to detect TV show intros. **Optimization:** - Schedule to run at 4 AM (after Trickplay finishes) - The initial scan is extremely CPU-intensive - let it run overnight ### Refresh Metadata **Optimization:** Set to weekly instead of daily. Use Replace missing only instead of Replace all. ### Clean Activity Log **Optimization:** Set retention to 30 days. Old logs consume database space and slow queries. --- ## Recommended Schedule for Low-Power Hardware | Task | Time | Frequency | |---|---|---| | Library scan | 2:00 AM | Daily (or manual via Radarr/Sonarr) | | Trickplay generation | 3:00 AM | After library scan | | Intro detection | 4:00 AM | After library scan | | Metadata refresh | 5:00 AM | Weekly (Sunday) | | Clean activity log | 6:00 AM | Weekly | | Chapter images | Disabled | - | This ensures all heavy tasks run sequentially overnight, never competing with active streams. --- ## Tasks That Are Safe to Leave at Default - Optimize database - lightweight, runs quickly - Update plugins - checks for updates, minimal impact - Download missing subtitles - if using OpenSubtitles plugin --- > **Tasks optimized? Monitor your server health from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU monitoring, session tracking, and push alerts for Jellyfin. --- ## Jellyfin Fail2Ban Setup Guide (2026): Block Brute-Force Login Attacks Automatically URL: https://jellywatch.app/blog/jellyfin-fail2ban-setup-guide-block-brute-force-attacks-2026 Published: 2026-04-28T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fail2ban, security, brute-force, login, protection, guide, 2026 # Jellyfin Fail2Ban Setup Guide (2026) If your Jellyfin server is accessible from the internet, it will receive brute-force login attempts. Fail2Ban automatically bans IP addresses after repeated failed logins. --- ## How Fail2Ban Works 1. Fail2Ban monitors Jellyfin log files 2. It detects patterns matching failed login attempts 3. After X failures from the same IP, it bans that IP via firewall rules 4. The ban expires after a configurable duration --- ## Step 1: Install Fail2Ban ```bash sudo apt install fail2ban -y sudo systemctl enable --now fail2ban ``` --- ## Step 2: Create the Jellyfin Filter Create /etc/fail2ban/filter.d/jellyfin.conf: ```ini [Definition] failregex = ^.*Authentication request for .* has been denied \(IP: "<ADDR>"\).*$ ignoreregex = ``` This regex matches Jellyfin authentication failure log entries. --- ## Step 3: Create the Jellyfin Jail Create /etc/fail2ban/jail.d/jellyfin.local: ```ini [jellyfin] enabled = true filter = jellyfin port = http,https,8096 logpath = /path/to/jellyfin/config/log/log_*.log maxretry = 5 bantime = 3600 findtime = 600 ``` | Setting | Value | Meaning | |---|---|---| | maxretry | 5 | Ban after 5 failed attempts | | bantime | 3600 | Ban for 1 hour (seconds) | | findtime | 600 | Count failures within 10 minutes | ### For Docker installations ```ini logpath = /home/user/jellyfin/config/log/log_*.log ``` --- ## Step 4: Restart and Test ```bash sudo systemctl restart fail2ban sudo fail2ban-client status jellyfin ``` Test by deliberately failing 5 logins from another device. Unban a test IP: ```bash sudo fail2ban-client set jellyfin unbanip X.X.X.X ``` --- ## Step 5: Whitelist Your Own IPs ```ini # In /etc/fail2ban/jail.d/jellyfin.local ignoreip = 127.0.0.1/8 192.168.1.0/24 YOUR_VPN_IP ``` --- ## Advanced: Cloudflare Ban Action If you use Cloudflare Tunnel or proxy, banning the IP via iptables blocks Cloudflare IP - not the attacker. Use the Cloudflare API to ban at the edge. Create /etc/fail2ban/action.d/cloudflare.conf: ```ini [Definition] actionban = curl -s -X POST "https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules" \ -H "Authorization: Bearer <cftoken>" \ -H "Content-Type: application/json" \ --data "{"mode":"block","configuration":{"target":"ip","value":"<ip>"},"notes":"Fail2Ban Jellyfin"}" [Init] cftoken = YOUR_CLOUDFLARE_API_TOKEN ``` --- ## Advanced: Permanent Ban for Repeat Offenders ```ini [jellyfin-repeat] enabled = true filter = jellyfin logpath = /var/log/fail2ban.log maxretry = 3 bantime = -1 findtime = 86400 ``` --- ## Monitoring Bans ```bash sudo fail2ban-client status jellyfin sudo fail2ban-client banned sudo tail -f /var/log/fail2ban.log ``` --- ## FAQ **Does Fail2Ban work with Docker?** Yes, as long as the Jellyfin log files are accessible from the host filesystem. **Will Fail2Ban block legitimate users who forget their password?** Yes, after 5 failures. Set maxretry higher (e.g., 10) if this is a concern. Whitelist your home IP range. --- > **Fail2Ban protecting your server? Monitor login attempts from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - failed login alerts and session monitoring for Jellyfin. --- ## Jellyfin on Windows 2026: Install, Hardware Transcoding & Run as a Service (Windows 10/11) URL: https://jellywatch.app/blog/jellyfin-windows-11-setup-optimization-hardware-transcoding-2026 Published: 2026-04-28T13:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, windows, windows-11, setup, hardware-transcoding, qsv, nvenc, guide, 2026 # Jellyfin on Windows 11: Complete Setup and Optimization (2026) Most Jellyfin guides focus on Linux and Docker. But millions of potential users run Windows 11 at home. This guide covers everything specific to running Jellyfin on Windows. --- ## Windows vs Linux for Jellyfin | Feature | Windows 11 | Linux (Docker) | |---|---|---| | Setup difficulty | Easy (installer) | Medium (Docker Compose) | | Hardware transcoding | DXVA2 / D3D11VA / QSV / NVENC | VAAPI / QSV / NVENC | | HDR tone mapping | Works but less tested | Gold standard | | Resource usage | Higher (Windows overhead) | Lower | | Auto-updates | Manual | Watchtower | Windows works well for Jellyfin. Linux/Docker is more efficient but Windows is perfectly viable. --- ## Step 1: Install Jellyfin on Windows 11 1. Download the installer from jellyfin.org/downloads 2. Run the .exe installer 3. Choose Install as Windows Service (recommended for 24/7 operation) 4. Complete the installation 5. Open http://localhost:8096 in your browser Jellyfin installs to C:\Program Files\Jellyfin\Server and config is stored in C:\ProgramData\Jellyfin\Server. --- ## Step 2: Enable Hardware Transcoding ### Intel Quick Sync (QSV) on Windows 1. Dashboard, Playback, Transcoding 2. Hardware acceleration: Intel QuickSync Video (QSV) 3. Enable: H.264, HEVC, VP9 decode 4. Enable: Hardware tone mapping (if available) 5. Save Ensure your Intel GPU drivers are up to date from intel.com/drivers. ### NVIDIA NVENC on Windows 1. Install the latest NVIDIA Game Ready or Studio drivers 2. Dashboard, Playback, Transcoding 3. Hardware acceleration: NVIDIA NVENC 4. Enable: H.264, HEVC decode and encode 5. Save Note: NVIDIA consumer GPUs have a 3-5 concurrent NVENC session limit on Windows. This cannot be bypassed on Windows unlike Linux. ### Verify transcoding is working Play a file that forces transcoding (set client quality to 720p). Check: - Dashboard, Active Sessions - should show HW badge for hardware transcode - Task Manager, GPU tab - should show Video Encode activity --- ## Step 3: Configure Windows Firewall ```powershell New-NetFirewallRule -DisplayName "Jellyfin HTTP" -Direction Inbound -Protocol TCP -LocalPort 8096 -Action Allow ``` Or via GUI: Windows Defender Firewall, Advanced Settings, Inbound Rules, New Rule, Port, TCP 8096, Allow. --- ## Step 4: Run Jellyfin as a Windows Service 1. Open Services (Win+R, services.msc) 2. Find Jellyfin Server 3. Ensure Startup type is Automatic 4. Ensure Status is Running This means Jellyfin starts automatically when Windows boots. --- ## Step 5: Prevent Windows from Sleeping ```powershell powercfg /change standby-timeout-ac 0 ``` Or: Settings, System, Power and Battery, set sleep to Never. --- ## Step 6: Windows Defender Exclusions Windows Defender scans every file Jellyfin reads during playback, adding latency. 1. Windows Security, Virus and threat protection, Manage settings 2. Exclusions, Add exclusion, Folder 3. Add: C:\ProgramData\Jellyfin\Server and your media folders --- ## Step 7: Remote Access from Windows ### Option 1: Cloudflare Tunnel Download cloudflared.exe from GitHub and run: ```powershell cloudflared.exe tunnel --no-autoupdate run --token YOUR_TOKEN ``` Install as a Windows service: ```powershell cloudflared.exe service install YOUR_TOKEN ``` ### Option 2: Tailscale Install Tailscale for Windows from tailscale.com. Access Jellyfin at http://100.x.x.x:8096 from any device on your tailnet. --- ## Windows-Specific Performance Tips | Tip | Impact | |---|---| | Move Jellyfin config to SSD | Very high | | Add Windows Defender exclusions | High | | Disable Windows Search indexing on media drives | Medium | | Use wired Ethernet instead of Wi-Fi | Medium | | Update GPU drivers regularly | Medium | --- ## FAQ **Can I run Jellyfin and Plex on the same Windows PC?** Yes. They use different ports (8096 vs 32400). **Should I use Docker Desktop on Windows instead?** Docker Desktop works but adds overhead (WSL2 VM). Native Windows installation is simpler and more efficient for Jellyfin specifically. **How much RAM does Jellyfin use on Windows?** 500 MB-1 GB at idle. 2-4 GB during active transcoding. --- > **Jellyfin running on Windows? Monitor it from your Android phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - works with Jellyfin on any OS including Windows. --- ## Fix Jellyfin Slow UI: Dashboard Lag, Library Loading Issues, and Metadata Browsing Speed (2026) URL: https://jellywatch.app/blog/fix-jellyfin-slow-ui-lag-dashboard-loading-2026 Published: 2026-04-28T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fix, slow, ui, lag, dashboard, loading, performance, ssd, 2026 # Fix Jellyfin Slow UI: Dashboard Lag and Library Loading (2026) This is different from buffering during playback. Your streams play fine, but the Jellyfin web interface itself is slow - library pages take 10-30 seconds to load. --- ## Cause 1: Metadata Stored on Slow Disk (Most Impactful Fix) Jellyfin stores all metadata, poster images, and Trickplay thumbnails in the /config directory. If this directory is on a slow HDD or a network share, every page load reads thousands of small files from slow storage. ### The fix Move /config to an SSD. This single change can reduce library loading time from 15 seconds to under 2 seconds. ```yaml volumes: - /ssd/jellyfin/config:/config - /hdd/media:/media:ro ``` Media files can stay on HDD. Metadata access is random I/O and needs SSD speed. --- ## Cause 2: Jellyfin 10.11 EF Core Performance Regression Jellyfin 10.11 introduced Entity Framework Core, which changed how the database is queried. Some operations now load entire datasets into memory before filtering. ### Symptoms - Collections library: 10-15 seconds to load - Home page with many sections: 20-30 seconds - Home Videos library with 10,000+ items: may not load at all ### Fixes 1. Update to the latest 10.11.x point release 2. Reduce home screen sections 3. Wait for 12.0 - the team is actively fixing client-side enumeration --- ## Cause 3: Too Many Home Screen Sections Each home screen section triggers a separate database query. Dashboard, Display, Home Screen Sections - recommended fast setup: 1. Continue Watching 2. Next Up 3. Latest Movies 4. Latest TV Shows Remove: Recently Added, Favorites, Genres, Studios - these are expensive queries on large libraries. --- ## Cause 4: Chapter Image Extraction Enabled Chapter image extraction generates thumbnail images for every chapter in every video. On large libraries, this creates millions of small image files. Dashboard, Libraries, [Library] - uncheck Extract chapter images. ```bash # Delete existing chapter images if already generated find /config/metadata -name "chapter-*.jpg" -delete ``` --- ## Cause 5: Trickplay Images on Slow Storage Trickplay can consume 50-100 GB on large libraries. If stored on slow disk, browsing becomes sluggish. Either move Trickplay data to SSD (part of /config) or disable Trickplay for libraries where you do not need it. --- ## Cause 6: Plugin Overhead | Plugin | Impact | Mitigation | |---|---|---| | Intro Skipper | High during analysis | Schedule off-peak | | Playback Reporting | Medium on large DBs | Clean old entries | | Jellyscrub | High during generation | Schedule off-peak | Disable any plugins you do not actively use. --- ## Cause 7: Database Bloat Dashboard, Scheduled Tasks, Clean Activity Log - Run Now. Set retention to 30 days. ### Optimize the database ```bash docker stop jellyfin sqlite3 /path/to/config/data/jellyfin.db "VACUUM;" docker start jellyfin ``` --- ## Performance Optimization Checklist | Fix | Impact | Effort | |---|---|---| | Move /config to SSD | Very high | Low | | Reduce home screen sections | High | Very low | | Disable chapter image extraction | High | Very low | | Update to latest 10.11.x | Medium-High | Low | | Disable unused plugins | Medium | Low | | Clean activity logs | Medium | Very low | | VACUUM database | Medium | Low | --- ## Before and After | Metric | Before (HDD config) | After (SSD + optimizations) | |---|---|---| | Home page load | 12-18 seconds | 1-3 seconds | | Library browse | 8-15 seconds | 1-2 seconds | | Search results | 5-10 seconds | under 1 second | --- > **Jellyfin running fast? Monitor it stays that way.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU monitoring, session tracking, and server health alerts from your phone. --- ## Fix Jellyfin Not Connecting: Connection Refused, Server Unreachable, and Network Issues (2026) URL: https://jellywatch.app/blog/fix-jellyfin-not-connecting-connection-refused-cant-reach-server-2026 Published: 2026-04-28T11:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fix, connection, refused, network, firewall, docker, troubleshooting, 2026 # Fix Jellyfin Not Connecting: Connection Refused and Network Issues (2026) You installed Jellyfin, it is running, but you cannot reach it from your browser, phone, or TV. --- ## Quick Diagnosis | Can you reach Jellyfin from... | If YES | If NO | |---|---|---| | http://localhost:8096 on the server | Server is running | Server not running or wrong port | | http://SERVER_IP:8096 from LAN | Network is fine | Firewall or Docker networking issue | | https://jellyfin.yourdomain.com | Remote access works | Reverse proxy, DNS, or port forwarding issue | --- ## Fix 1: Jellyfin Is Not Running ```bash # Docker docker ps | grep jellyfin docker logs jellyfin --tail 50 # Native Linux sudo systemctl status jellyfin ``` Common startup failures: - Port 8096 already in use - Database migration error (10.11 upgrade) - Missing config directory permissions --- ## Fix 2: Firewall Blocking Port 8096 ### UFW (Ubuntu/Debian) ```bash sudo ufw allow 8096/tcp sudo ufw reload ``` ### firewalld (CentOS/Fedora) ```bash sudo firewall-cmd --add-port=8096/tcp --permanent sudo firewall-cmd --reload ``` ### Windows Firewall 1. Windows Defender Firewall, Advanced Settings 2. Inbound Rules, New Rule, Port, TCP 8096, Allow --- ## Fix 3: Docker Network Mode Issues ```yaml # Wrong - no port mapping services: jellyfin: image: jellyfin/jellyfin:latest # Missing ports section! # Fix Option 1: Map ports explicitly ports: - "8096:8096" # Fix Option 2: Use host networking (recommended on Linux) network_mode: host ``` --- ## Fix 4: Port Conflict ```bash sudo ss -tlnp | grep 8096 ``` If Emby is running on 8096, change Jellyfin port: ```yaml ports: - "8097:8096" ``` --- ## Fix 5: Cannot Connect Remotely | Issue | Fix | |---|---| | No port forwarding | Forward port 443 to your server in your router | | ISP uses CGNAT | Use Cloudflare Tunnel or Tailscale | | Dynamic IP changed | Use a DDNS service or Cloudflare Tunnel | | DNS not pointing to your IP | Check your domain A record | | Reverse proxy misconfigured | Check Caddy/Nginx/Traefik config | ### Detect CGNAT ```bash curl ifconfig.me # Compare this IP with your router WAN IP # If they differ you are behind CGNAT - port forwarding will not work ``` --- ## Fix 6: SSL Certificate Errors Jellyfin built-in HTTPS uses a self-signed certificate. Browsers reject it. Fix: Use a reverse proxy (Caddy, Nginx Proxy Manager) with a real Let Encrypt certificate. ```bash # Check certificate expiry echo | openssl s_client -connect jellyfin.yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates ``` --- ## Fix 7: Reverse Proxy Not Forwarding Correctly ### Caddy ``` jellyfin.yourdomain.com { reverse_proxy localhost:8096 } ``` ### Jellyfin 10.10.7+ Trusted Proxies Dashboard, Networking, Known Proxies - add your reverse proxy IP address. --- ## Connection Troubleshooting Flowchart ``` Can you reach http://localhost:8096 on the server? NO → Jellyfin not running - check docker ps, systemctl status YES → Can you reach http://SERVER_IP:8096 from LAN? NO → Firewall blocking port 8096 YES → Can you reach from internet? NO → Port forwarding / CGNAT / DNS issue YES → Working! ``` --- > **Server accessible? Monitor every connection from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, device tracking, and push notifications for Jellyfin. --- ## Fix Jellyfin No Sound: Audio Not Working, Missing Audio Tracks, and Codec Issues (2026) URL: https://jellywatch.app/blog/fix-jellyfin-no-sound-audio-not-working-transcoding-2026 Published: 2026-04-28T11:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fix, audio, no-sound, truehd, dts, transcoding, troubleshooting, 2026 # Fix Jellyfin No Sound: Audio Not Working (2026) Video plays fine but there is no audio. Or audio works on some files but not others. These are among the most frustrating Jellyfin issues. --- ## Why Audio Fails in Jellyfin Audio issues almost always come down to codec incompatibility between your media file and the client device. | Audio codec | Compatibility | Common issue | |---|---|---| | AAC | Universal | Never causes issues | | AC3 (Dolby Digital) | Very wide | Rarely causes issues | | EAC3 (Dolby Digital Plus) | Wide | Some older devices fail | | TrueHD / TrueHD Atmos | Limited | Most streaming sticks cannot decode | | DTS / DTS-HD MA | Limited | Many devices cannot decode | | FLAC (in MKV) | Moderate | Some TV apps cannot handle | --- ## Fix 1: Wrong Audio Track Selected Many media files contain multiple audio tracks. Jellyfin may select the wrong one. 1. While playing, open the audio track selector 2. Switch to a different audio track 3. If one track works and another does not, the issue is codec-specific ### Set default audio language Dashboard, Users, [User], Audio language preference - set to your language. --- ## Fix 2: TrueHD / DTS Audio Not Playing This is the number one audio issue. TrueHD and DTS are lossless codecs found on Blu-ray remuxes. Most streaming devices cannot decode them natively. ### Fix: Enable audio transcoding Dashboard, Playback, Transcoding: - Ensure Allow audio transcoding is enabled - Ensure AAC and AC3 are checked as fallback codecs ### Fix: Add a compatibility audio track ```bash ffmpeg -i movie.mkv \ -map 0 \ -c:v copy \ -c:a:0 copy \ -c:a:1 eac3 -b:a:1 640k \ -c:s copy \ movie_fixed.mkv ``` This keeps the original TrueHD track and adds an EAC3 track that every device can play. --- ## Fix 3: Audio Passthrough Configuration In the Jellyfin client app settings: - Enable Audio passthrough or Bitstream audio - Select which codecs to pass through (AC3, EAC3, TrueHD, DTS) ### Which clients support passthrough | Client | AC3 | EAC3 | TrueHD | DTS | |---|---|---|---|---| | Nvidia Shield Pro | Yes | Yes | Yes | Yes | | Apple TV 4K | Yes | Yes | No | No | | Fire TV Stick 4K Max | Yes | Yes | No | No | | Jellyfin Media Player (PC) | Yes | Yes | Yes | Yes | | Chromecast with Google TV | Yes | Yes | No | No | Apple TV and Fire TV cannot bitstream TrueHD or DTS. This is a hardware limitation, not a Jellyfin issue. --- ## Fix 4: No Audio on Specific Clients ### Web Browser - Chrome: AAC, AC3, EAC3, Opus, FLAC - Firefox: AAC, Opus, FLAC (no AC3/EAC3) - Safari: AAC, AC3, EAC3 If using Firefox and no audio: switch to Chrome or use Jellyfin Media Player. --- ## Fix 5: Audio Transcoding Failing ```bash docker exec jellyfin ffmpeg -codecs | grep aac # Should show: DEA.L. aac ``` If FFmpeg is missing codecs, use the official Jellyfin Docker image which includes a full FFmpeg build. --- ## Fix 6: Audio Out of Sync - In the Jellyfin player: use the audio delay setting to adjust sync - If transcoding: enable hardware acceleration to reduce latency --- ## Fix 7: 5.1 / 7.1 Audio Playing as Stereo - Check client audio settings - ensure surround sound is enabled - Check Jellyfin transcoding settings - ensure multi-channel output is allowed - Verify with a known 5.1 file (AC3 is the most compatible surround format) --- ## Audio Troubleshooting Checklist | Symptom | Likely cause | Fix | |---|---|---| | No audio on any file | Client audio codec issue | Enable audio transcoding on server | | No audio on TrueHD/DTS files only | Codec not supported by client | Add EAC3 fallback track | | Audio on phone but not TV | TV cannot decode the codec | Check TV codec support | | Audio out of sync | Transcoding latency | Adjust audio delay in player | | Surround plays as stereo | Client downmixing | Enable surround in client settings | --- > **Audio issues fixed? Monitor your transcoding sessions in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see exactly which audio codec each session is using. --- ## Fix Jellyfin Not Finding Media: Library Empty, Missing Movies, and Scan Issues (2026) URL: https://jellywatch.app/blog/fix-jellyfin-not-finding-media-library-empty-2026 Published: 2026-04-28T10:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, fix, library, empty, media, not-found, permissions, naming, troubleshooting, 2026 # Fix Jellyfin Not Finding Media: Library Empty and Missing Movies (2026) This is the single most common Jellyfin problem. You added your media folder, Jellyfin is running, but the library shows nothing. This guide covers every cause and its fix. --- ## The 7 Most Common Causes | Cause | Frequency | Fix difficulty | |---|---|---| | Wrong file/folder permissions | Very common | Easy | | Incorrect Docker volume mapping | Very common | Easy | | Bad file naming convention | Common | Medium | | NAS mount not accessible | Common | Medium | | Library content type mismatch | Occasional | Easy | | Metadata scan stuck or failed | Occasional | Easy | | Symlinks not followed in Docker | Occasional | Easy | --- ## Fix 1: File Permissions (Most Common Cause) Jellyfin must be able to read your media files. If the Jellyfin process runs as a different user than the file owner, it silently shows an empty library. ### Docker Verify the container can see your files: ```bash docker exec jellyfin ls -la /media/movies/ ``` If you see Permission denied or an empty listing, permissions are wrong. **Fix:** ```bash # Option 1: Make media world-readable chmod -R 755 /path/to/media # Option 2: Match the container user # Check your user ID id $USER # uid=1000(user) gid=1000(user) # Add to docker-compose.yml: user: "1000:1000" ``` ### Native Linux ```bash sudo usermod -aG your_media_group jellyfin sudo systemctl restart jellyfin ``` ### Windows Right-click your media folder, Properties, Security - ensure the Jellyfin service account has Read access. --- ## Fix 2: Docker Volume Mapping Errors The most common Docker mistake: mapping the wrong host path. **Wrong:** ```yaml volumes: - /media:/media # /media on the host might be empty ``` **Correct:** ```yaml volumes: - /mnt/storage/movies:/media/movies:ro - /mnt/storage/tv:/media/tv:ro ``` Verify inside the container: ```bash docker exec jellyfin ls /media/movies/ ``` If empty, your host path is wrong. --- ## Fix 3: File Naming Convention Jellyfin is strict about naming. Incorrectly named files are silently ignored. ### Movies - Correct format ``` /media/movies/ The Dark Knight (2008)/ The Dark Knight (2008).mkv ``` ### TV Shows - Correct format ``` /media/tv/ Breaking Bad/ Season 01/ Breaking Bad - S01E01.mkv ``` ### Key rules - Movies: Movie Name (Year)/Movie Name (Year).ext - TV: Show Name/Season XX/Show Name - SXXEXX.ext - Always include the year in parentheses for movies - Use S##E## format for episodes - Each movie in its own folder - Avoid special characters: colon, question mark, asterisk --- ## Fix 4: Library Content Type Mismatch If you add a Movies folder but set the content type to TV Shows, nothing matches. 1. Dashboard, Libraries, check each library 2. Verify the content type matches the actual content 3. If wrong: delete the library and recreate with the correct type | Folder content | Correct library type | |---|---| | Movies | Movies | | TV series | Shows | | Music albums | Music | | Audiobooks | Books or Music | | Home videos | Home Videos and Photos | --- ## Fix 5: NAS Mount Issues If your media is on a NAS, the mount may not be available when Jellyfin starts. ```bash df -h | grep media ls /mnt/nas/media/movies/ ``` If empty, the mount failed. ### Fix NFS mount ```bash echo "NAS_IP:/volume1/media /mnt/media nfs defaults,_netdev 0 0" >> /etc/fstab sudo mount -a ``` ### Fix SMB/CIFS mount ```bash echo "//NAS_IP/media /mnt/media cifs credentials=/root/.smbcredentials,_netdev,uid=1000,gid=1000 0 0" >> /etc/fstab sudo mount -a ``` --- ## Fix 6: Force a Library Rescan 1. Dashboard, Libraries, your library, three-dot menu, Scan Library Files 2. Wait for completion 3. If still empty: try Refresh Metadata, Replace all metadata ### Check server logs Dashboard, Logs - look for: - Access denied - permissions issue - Path not found - wrong volume mapping - No valid media files - naming issue --- ## Fix 7: Symlinks in Docker Docker containers cannot follow symlinks that point outside the mapped volume. Map the real path, not a symlink: ```yaml volumes: - /mnt/storage/media:/media ``` --- ## Fix 8: Special Characters in Filenames Problematic characters: colons, question marks, non-ASCII characters. Rename files to use standard ASCII. Radarr and Sonarr handle this automatically. --- ## Fix 9: Media on an External USB Drive USB drives may not auto-mount after reboot. ```bash lsblk echo "/dev/sda1 /mnt/media ext4 defaults,nofail 0 0" >> /etc/fstab sudo mount -a ``` The nofail flag prevents boot failure if the drive is disconnected. --- ## Debug Checklist | Step | Command / Action | Expected | |---|---|---| | Container sees files | docker exec jellyfin ls /media/movies/ | Lists folders | | Permissions OK | docker exec jellyfin stat /media/movies/ | Read access | | Naming correct | Check Movie (Year)/Movie (Year).mkv | Correct format | | Library type correct | Dashboard, Libraries, verify | Matches content | | Force rescan | Dashboard, Scan Library Files | Scan completes | | Check logs | Dashboard, Logs | No errors | --- ## FAQ **Jellyfin found some movies but not all.** The missing ones likely have naming issues. Check each missing file against the naming rules above. **Library was working but suddenly shows empty.** Your NAS mount or USB drive disconnected. Run df -h and remount. **Jellyfin shows the movie but with wrong poster.** Use Edit, Identify to manually match the correct TMDB entry. **How long does a library scan take?** 100 movies: 1-5 min. 1,000 movies: 10-30 min. 10,000+ items: 1-2 hours. --- > **Library fixed? Monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and push notifications for Jellyfin admins. --- ## Best Free Media Server Software in 2026: Jellyfin and 7 Alternatives Compared URL: https://jellywatch.app/blog/best-free-media-server-software-2026-jellyfin-alternatives Published: 2026-04-27T19:30:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: media-server, free, alternatives, jellyfin, plex, emby, kodi, comparison, 2026 # Best Free Media Server Software in 2026 Jellyfin is the most popular free media server - but it is not the only option. This guide compares every free media server available in 2026. --- ## The Contenders | Software | Type | Truly free | Open source | Best for | |---|---|---|---|---| | Jellyfin | Full media server | Yes | Yes | Everything | | Plex (free tier) | Full media server | Partially | No | Easy setup | | Emby (free tier) | Full media server | Partially | No | Polished UI | | Kodi | Media player | Yes | Yes | Local playback | | Dim | Media server | Yes | Yes | Rust enthusiasts | | Universal Media Server | DLNA server | Yes | Yes | DLNA devices | | Stremio | Streaming aggregator | Yes | Partially | Online content | | Navidrome | Music server | Yes | Yes | Music only | --- ## Detailed Comparison ### Jellyfin - The Recommended Choice 100% free, open source, no account required. Hardware transcoding, Live TV, multi-user, plugins - everything included. Pros: Zero cost, full features, active community, 70+ clients Cons: More technical setup than Plex, UI less polished than Plex ### Plex (Free Tier) The most polished media server. But the free tier locks hardware transcoding, mobile sync, and Live TV behind Plex Pass ($4.99/month). Pros: Easiest setup, best UI, built-in remote access Cons: Key features paywalled, requires Plex account, ads in free tier ### Emby (Free Tier) Similar to Jellyfin (they share ancestry). Free tier is more limited than Plex - no hardware transcoding, limited mobile app. Pros: Clean UI, official support Cons: Most features require Premiere ($119 lifetime), proprietary ### Kodi Not a server - a media player. Plays files on the device it is installed on. Pros: Best local playback, huge addon ecosystem, beautiful 10-foot UI Cons: Not a server, no remote streaming, no multi-user ### Dim A newer media server written in Rust. Lightweight and fast, but early in development. Pros: Very fast, modern architecture Cons: Limited features, small community, few clients ### Universal Media Server A Java-based DLNA/UPnP server. Streams to DLNA-compatible devices. Pros: Works with any DLNA device, no app needed Cons: No web UI, no user management, dated ### Stremio Not a media server - a streaming aggregator. Plays content from online sources via addons. Pros: Easy, no storage needed, cross-platform Cons: Not self-hosted, depends on online sources ### Navidrome Music-only server with Subsonic API support. Extremely lightweight. Pros: Best for music, tiny resource footprint, wide client support Cons: Music only - no video, no photos --- ## Feature Matrix | Feature | Jellyfin | Plex Free | Emby Free | Kodi | |---|---|---|---|---| | HW transcoding | Free | Paid | Paid | N/A | | Multi-user | Yes | Yes | Limited | No | | Remote access | Manual | Built-in | Manual | No | | Mobile apps | Free | Limited | Limited | Free | | Live TV | Free | Paid | Paid | Addon | | Plugins | 70+ | Limited | Limited | 1000+ | | Open source | Yes | No | No | Yes | | Account required | No | Yes | Yes | No | --- ## Our Recommendation **For most users: Jellyfin** - Free, full-featured, open source, and the largest self-hosting community. **For zero-effort setup: Plex** (with Plex Pass if you need transcoding) **For music only: Navidrome** **For HTPC playback: Kodi** (with Jellyfin addon for server integration) --- > **Chose Jellyfin? You made the right call. Now monitor it like a pro.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the essential Android companion for Jellyfin admins. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Best Network Setup for Jellyfin in 2026: Router, Switch, Ethernet, and Wi-Fi Optimization URL: https://jellywatch.app/blog/best-network-setup-jellyfin-router-switch-ethernet-wifi-2026 Published: 2026-04-27T16:30:00+00:00 Author: JellyWatch Team Category: Tips Tags: network, router, ethernet, wifi, jellyfin, streaming, optimization, guide, 2026 # Best Network Setup for Jellyfin (2026) Your server has plenty of CPU and your files are on fast storage - but streams still buffer. The problem is almost certainly your network. --- ## Bandwidth Requirements per Stream | Stream type | Bandwidth needed | |---|---| | 1080p encode (H.264) | 8-20 Mbps | | 1080p remux | 20-40 Mbps | | 4K encode (HEVC) | 15-30 Mbps | | 4K remux | 50-80 Mbps | | 4K remux (high bitrate) | 80-120 Mbps | A single 4K remux at 80 Mbps saturates a 100 Mbps connection. For multiple 4K streams, you need Gigabit or faster. --- ## Wired vs Wi-Fi | Connection | Realistic throughput | 4K remux streams | |---|---|---| | Wi-Fi 5 (802.11ac) | 200-400 Mbps | 2-4 | | Wi-Fi 6 (802.11ax) | 400-800 Mbps | 4-8 | | Gigabit Ethernet | 940 Mbps | 10+ | | 2.5GbE Ethernet | 2350 Mbps | 25+ | Always use Ethernet for your Jellyfin server. Wi-Fi is acceptable for clients but the server must be wired. --- ## Router Recommendations | Router | Price | Best for | |---|---|---| | TP-Link Archer AX55 | ~$100 | Budget Wi-Fi 6 | | ASUS RT-AX86U Pro | ~$200 | Mid-range, excellent range | | Ubiquiti Dream Machine | ~$300 | Prosumer, VLAN support | | MikroTik hAP ax3 | ~$100 | Advanced users, RouterOS | ### Key features for Jellyfin - Gigabit WAN and LAN ports - minimum requirement - QoS (Quality of Service) - prioritize Jellyfin traffic - VLAN support - isolate your media server network - Wi-Fi 6 - for wireless clients streaming 4K --- ## Switch Recommendations | Switch | Ports | Speed | Price | |---|---|---|---| | TP-Link TL-SG108 | 8 | Gigabit | ~$20 | | TP-Link TL-SG108E | 8 | Gigabit (managed) | ~$30 | | QNAP QSW-1105-5T | 5 | 2.5GbE | ~$100 | --- ## Ethernet Wiring | Cable | Max speed | Recommendation | |---|---|---| | Cat5e | 1 Gbps | Minimum for Jellyfin | | Cat6 | 1 Gbps (10 Gbps at 55m) | Recommended | | Cat6a | 10 Gbps | Future-proof | --- ## Wi-Fi Optimization for Streaming 1. Use 5 GHz band for streaming devices (not 2.4 GHz) 2. Place the router centrally 3. Reduce interference - microwave ovens and Bluetooth devices interfere with 2.4 GHz 4. Use Wi-Fi 6 clients - older devices on the same network slow everyone down 5. Consider mesh Wi-Fi for large homes --- ## QoS Configuration QoS prioritizes Jellyfin traffic over other network activity. - Assign your Jellyfin server a static IP and give it highest priority - Prioritize TCP port 8096 (Jellyfin HTTP) and 8920 (HTTPS) --- > **Network optimized? Monitor your streams in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see bitrate, codec, and transcode status for every active session. --- ## Jellyfin File Naming Convention 2026: Complete Guide for Movies, TV Shows, Anime & Music URL: https://jellywatch.app/blog/jellyfin-media-file-naming-convention-complete-guide-2026 Published: 2026-04-27T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, file-naming, naming-convention, movies, tv-shows, anime, music, guide, 2026 # Jellyfin File Naming Guide (2026) Every Jellyfin problem - wrong metadata, missing movies, empty libraries - starts with file naming. Get naming right and everything else works automatically. --- ## Movies ### Standard format ``` /media/movies/ Movie Name (Year)/ Movie Name (Year).mkv ``` ### Examples ``` /media/movies/ The Dark Knight (2008)/ The Dark Knight (2008).mkv Dune Part Two (2024)/ Dune Part Two (2024).mkv ``` ### Rules - Each movie in its own folder - Folder and file name must include the year in parentheses - Remove release group tags, resolution info, and codec info from the filename - Avoid special characters: colon, question mark, asterisk, less-than, greater-than, pipe ### Ambiguous titles - use TMDB ID ``` The Fly (1986) {tmdb-4511}/ The Fly (1986) {tmdb-4511}.mkv ``` --- ## Multi-Version Movies (4K + 1080p) ``` The Dark Knight (2008)/ The Dark Knight (2008) - 1080p.mkv The Dark Knight (2008) - 2160p.mkv The Dark Knight (2008) - 2160p DV.mkv ``` Jellyfin with the Merge Versions plugin shows one entry with a version selector. --- ## Movie Extras ``` The Dark Knight (2008)/ The Dark Knight (2008).mkv trailers/ Trailer.mkv featurettes/ Making Of.mkv behind the scenes/ On Set.mkv ``` Supported extra folders: trailers, featurettes, behind the scenes, scenes, shorts, interviews, deleted scenes. --- ## TV Shows ### Standard format ``` /media/tv/ Show Name/ Season 01/ Show Name - S01E01 - Episode Title.mkv Show Name - S01E02.mkv Season 02/ Show Name - S02E01.mkv ``` ### Rules - Show folder at the top level - Season folders: Season 01, Season 02, etc. - Episode files: Show Name - S##E##.mkv - Use zero-padded numbers: S01E01 not S1E1 ### Multi-episode files ``` Show Name - S01E01-E02.mkv ``` ### Specials and OVAs ``` Show Name/ Season 00/ Show Name - S00E01 - Special Name.mkv ``` --- ## Anime ### Without Shoko (TVDB numbering) ``` /media/anime/ Naruto/ Season 01/ Naruto - S01E001.mkv Attack on Titan/ Season 01/ Attack on Titan - S01E01.mkv ``` ### With Shoko Server File naming does not matter - Shoko identifies files by hash. --- ## Music ``` /media/music/ Artist Name/ Album Name (Year)/ 01 - Track Title.flac 02 - Track Title.flac cover.jpg ``` --- ## Audiobooks ``` /media/audiobooks/ Author Name/ Book Title (Year)/ Book Title.m4b cover.jpg ``` M4B is the recommended format - single file with embedded chapters. --- ## Tools for Automatic Renaming | Tool | Best for | How it works | |---|---|---| | Radarr | Movies | Automatically renames on import | | Sonarr | TV Shows | Automatically renames on import | | FileBot | Manual renaming | Batch rename with TMDB/TVDB matching | ### Radarr naming format (recommended) ``` {Movie Title} ({Release Year})/{Movie Title} ({Release Year}) - {Quality Title} ``` ### Sonarr naming format (recommended) ``` {Series Title}/Season {season:00}/{Series Title} - S{season:00}E{episode:00} - {Episode Title} ``` --- ## Quick Reference Table | Media type | Format | Example | |---|---|---| | Movie | Name (Year)/Name (Year).mkv | Inception (2010)/Inception (2010).mkv | | TV Episode | Show/Season XX/Show - SXXEXX.mkv | Breaking Bad/Season 01/Breaking Bad - S01E01.mkv | | Anime | Same as TV, TVDB numbering | Attack on Titan/Season 01/Attack on Titan - S01E01.mkv | | Special | Show/Season 00/Show - S00EXX.mkv | Breaking Bad/Season 00/Breaking Bad - S00E01.mkv | | Music | Artist/Album (Year)/## - Track.flac | Pink Floyd/The Wall (1979)/01 - In the Flesh.flac | --- > **Library perfectly named? Monitor who is enjoying it.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, viewing statistics, and server health for Jellyfin. --- ## Jellyfin Cloudflare Tunnel Setup Guide (2026): Free Remote Access Without Port Forwarding URL: https://jellywatch.app/blog/jellyfin-cloudflare-tunnel-zero-trust-remote-access-guide-2026 Published: 2026-04-27T12:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, cloudflare, tunnel, remote-access, zero-trust, free, ssl, guide, 2026 # Jellyfin Cloudflare Tunnel Setup Guide (2026) Cloudflare Tunnel is the most popular free method for remote Jellyfin access in 2026. It creates an outbound-only connection from your server to Cloudflare edge network - no open ports, no dynamic DNS, automatic SSL, and free DDoS protection. --- ## How Cloudflare Tunnel Works ``` User (internet) → Cloudflare Edge → Encrypted Tunnel → Your Server → Jellyfin ``` The cloudflared daemon on your server establishes an outbound connection to Cloudflare. Your home IP is never exposed. ### Advantages over port forwarding | Feature | Port Forwarding | Cloudflare Tunnel | |---|---|---| | Open ports required | Yes (443) | No | | Works behind CGNAT | No | Yes | | Free SSL certificate | Manual (Certbot) | Automatic | | DDoS protection | No | Yes (free tier) | | Hides home IP | No | Yes | --- ## Prerequisites - A domain name (any registrar) - Domain DNS managed by Cloudflare (free plan) - Docker installed on your Jellyfin server - A Cloudflare account (free) --- ## Step 1: Add Your Domain to Cloudflare 1. Log in to dash.cloudflare.com 2. Click Add a Site, enter your domain 3. Select the Free plan 4. Update your domain nameservers at your registrar to Cloudflare nameservers 5. Wait for propagation (usually 5-30 minutes) --- ## Step 2: Create a Cloudflare Tunnel ### Via Cloudflare Dashboard (Easiest) 1. Go to Zero Trust, Networks, Tunnels 2. Click Create a tunnel 3. Name it: jellyfin 4. Choose Cloudflared as the connector 5. Cloudflare gives you a token - copy it ### Via CLI ```bash curl -fsSL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared chmod +x /usr/local/bin/cloudflared cloudflared tunnel login cloudflared tunnel create jellyfin ``` --- ## Step 3: Run cloudflared with Docker Add to your docker-compose.yml: ```yaml services: cloudflared: image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN restart: unless-stopped depends_on: - jellyfin jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped ``` Replace YOUR_TUNNEL_TOKEN with the token from Step 2. ```bash docker compose up -d ``` --- ## Step 4: Configure DNS Routing In Cloudflare Dashboard, Zero Trust, Tunnels, your tunnel, Public Hostname: 1. Click Add a public hostname 2. Subdomain: jellyfin 3. Domain: yourdomain.com 4. Service type: HTTP 5. URL: jellyfin:8096 (Docker service name) or localhost:8096 6. Save Your Jellyfin server is now accessible at https://jellyfin.yourdomain.com. --- ## Step 5: Configure Jellyfin for Tunnel Access Dashboard, Networking, Published server URL: https://jellyfin.yourdomain.com ### Add Cloudflare as a trusted proxy Dashboard, Networking, Known Proxies - add Cloudflare IP ranges: ``` 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 ``` --- ## The Cloudflare ToS Question Cloudflare ToS Section 2.8 historically prohibited using their free CDN for serving large amounts of non-HTML content. The 2026 reality: - Cloudflare Tunnel traffic is not cached by default - Many thousands of Jellyfin users run Cloudflare Tunnels without issues - Cloudflare has not enforced Section 2.8 against tunnel users streaming personal media Recommendation: Use Cloudflare Tunnel for remote access. Do not enable CDN caching for video content. --- ## Cloudflare Tunnel vs Tailscale vs WireGuard | Feature | Cloudflare Tunnel | Tailscale | WireGuard | |---|---|---|---| | Open ports | None | None | 1 UDP | | Works behind CGNAT | Yes | Yes | No | | Client install required | No (browser) | Yes (all devices) | Yes (all devices) | | Free SSL | Yes | N/A | N/A | | DDoS protection | Yes | No | No | | Best for | Browser access, sharing | Personal devices | Maximum performance | --- ## Troubleshooting | Problem | Fix | |---|---| | 502 Bad Gateway | Jellyfin not running or wrong service URL | | SSL error | Wait for Cloudflare certificate provisioning (up to 15 min) | | Slow loading | Normal - tunnel adds 20-50ms latency | | Mobile app cannot connect | Use the full HTTPS URL including subdomain | --- > **Remote access configured? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - works over Cloudflare Tunnel to monitor your Jellyfin server in real time. --- ## How to Install Jellyfin on Samsung TV in 2026: One-Command Docker Method (No Tizen Studio) URL: https://jellywatch.app/blog/jellyfin-samsung-tv-tizen-install-sideload-guide-2026 Published: 2026-04-27T10:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, samsung, tizen, smart-tv, sideload, install, guide, 2026 # How to Install Jellyfin on Samsung Smart TV (Tizen) in 2026 Samsung is the world best-selling TV brand. Yet Jellyfin is not available in the Samsung app store. Getting it on your Samsung TV requires sideloading. --- ## Prerequisites - A Samsung Smart TV (2017 or newer, running Tizen 3.0+) - The TV and your computer on the same network - Developer Mode enabled on the TV ### Enable Developer Mode on Your Samsung TV 1. On the TV, go to Apps 2. Press 1, 2, 3, 4, 5 on the remote in sequence 3. A dialog appears - toggle Developer Mode to ON 4. Enter your computer IP address 5. Restart the TV --- ## Method 1: Docker One-Command Install (Easiest) The community has created a Docker image that builds and deploys the Jellyfin Tizen app automatically. ```bash docker run --rm \ georift/install-jellyfin-tizen \ YOUR_TV_IP_ADDRESS ``` The Docker container: 1. Downloads the latest Jellyfin Tizen package 2. Connects to your TV via SDB (Samsung Debug Bridge) 3. Installs the app 4. The Jellyfin icon appears in your TV app list ### Troubleshooting Docker method | Problem | Fix | |---|---| | Connection refused | Ensure Developer Mode is ON and TV IP is correct | | Device not found | TV and computer must be on the same subnet | | Certificate error | Accept the connection prompt on the TV screen | | App installs but crashes | Your TV model may be too old (pre-2017) | --- ## Method 2: Tizen Studio (Manual) ### Step 1: Install Tizen Studio 1. Download from developer.tizen.org 2. Install with the Tizen SDK tools and Samsung Certificate Extension 3. Open Package Manager, install Samsung TV Extensions ### Step 2: Download the Jellyfin Tizen Package ```bash git clone https://github.com/jellyfin/jellyfin-tizen.git cd jellyfin-tizen npm install npm run build ``` ### Step 3: Create a Samsung Certificate 1. Open Tizen Studio, Certificate Manager 2. Create a new Samsung certificate 3. Sign in with your Samsung account 4. Generate the certificate for your TV DUID ### Step 4: Connect and Install ```bash sdb connect YOUR_TV_IP sdb devices tizen install -n Jellyfin.wgt -t YOUR_TV_DEVICE_ID ``` --- ## Method 3: Pre-Built .wgt File 1. Download the latest .wgt from the Jellyfin Tizen releases on GitHub 2. Connect via SDB: sdb connect YOUR_TV_IP 3. Install: tizen install -n Jellyfin.wgt -t YOUR_TV_DEVICE_ID --- ## After Installation: First Setup 1. Open the Jellyfin app from your TV app list 2. Enter your Jellyfin server URL 3. Log in with your Jellyfin credentials 4. Set playback quality to Maximum or Auto for Direct Play --- ## Samsung TV Codec Support | Codec | Samsung Tizen support | |---|---| | H.264 (AVC) | Yes - all models | | H.265 (HEVC) | Yes - 2016+ models | | VP9 | Yes - 2019+ models | | AV1 | Yes - 2022+ models | | HDR10 | Yes - 4K models | | HDR10+ | Yes - Samsung exclusive | | Dolby Vision | No - Samsung uses HDR10+ | | TrueHD audio | No - decoded to PCM | --- ## Alternatives If Sideloading Is Too Complex ### Cast from your phone 1. Open the Jellyfin Android app 2. Start playing content 3. Tap the Cast icon, select your Samsung TV ### Use a streaming stick | Device | Price | Native Jellyfin app | |---|---|---| | Chromecast with Google TV 4K | ~$50 | Yes | | Fire TV Stick 4K Max | ~$60 | Yes | | Onn 4K Pro | ~$50 | Yes | --- ## Updating the Jellyfin Tizen App The sideloaded app does not auto-update. Re-run the Docker command to update. --- ## FAQ **Does Jellyfin work on all Samsung TVs?** Tizen 3.0+ (2017 and newer). Older models running Orsay OS are not supported. **Will sideloading void my warranty?** No. Developer Mode is an official Samsung feature. **Does the Tizen app support 4K HDR?** Yes. Samsung TVs support HDR10 and HDR10+ natively. --- > **Jellyfin on your Samsung TV? Monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see what is playing on every client including Samsung TVs. --- ## How to Migrate from Emby to Jellyfin in 2026: Complete Step-by-Step Guide URL: https://jellywatch.app/blog/migrate-emby-to-jellyfin-complete-guide-2026 Published: 2026-04-26T13:00:00+00:00 Author: JellyWatch Team Category: Other Tags: emby, jellyfin, migration, guide, trakt, watch-history, switch, 2026 # How to Migrate from Emby to Jellyfin in 2026: Complete Guide Emby and Jellyfin share a common ancestor - Jellyfin forked from Emby in December 2018 when Emby went closed-source. This shared DNA means migration is smoother than you might expect. Your media files stay exactly where they are. Your folder structure works identically. The main challenge is preserving watch history and recreating your user setup. This guide walks you through the full migration with zero data loss. --- ## Why People Are Leaving Emby for Jellyfin in 2026 | Feature | Emby (Free) | Emby Premiere | Jellyfin | |---|---|---|---| | Hardware transcoding | No | Yes (~$119 lifetime) | Free | | Full mobile app | No | Yes | Free | | Live TV / DVR | No | Yes | Free | | Offline sync | No | Yes | Free | | Account required | Yes | Yes | No | | Open source | No | No | Yes | | HDR tone mapping quality | Good | Good | Better (community consensus) | | Plugin ecosystem | Moderate | Moderate | Larger and growing | The most common migration triggers in 2026: - Emby Premiere subscription renewal fatigue - Better HDR tone mapping in Jellyfin (documented in community comparisons) - Larger plugin ecosystem (Intro Skipper, Jellyfin-Enhanced, SSO plugins) - No external account requirement - Jellyfin 10.11 stability improvements --- ## Before You Start: What Migrates and What Does Not ### Migrates easily (zero effort) - **Media files** - they stay exactly where they are, both servers read the same files - **Folder structure** - Jellyfin uses the same naming conventions as Emby - **NFO files** - if you use NFO metadata, Jellyfin reads the same format - **Local artwork** - poster.jpg, backdrop.jpg, etc. are read identically ### Requires manual steps - **Watch history** - use Trakt as an intermediary (detailed below) - **User accounts** - recreate manually in Jellyfin (different auth system) - **Playlists** - recreate manually or export/import via M3U - **Custom artwork** - re-upload any manually set posters - **Plugin configurations** - reconfigure equivalent Jellyfin plugins ### What you lose - **Emby-specific features** - Emby Connect, Emby Premiere perks - **Emby mobile app data** - app-specific settings and downloads - **Emby plugin data** - plugin databases do not transfer --- ## Step 1: Install Jellyfin Alongside Emby Run both servers simultaneously during migration. Do not uninstall Emby until you have verified everything works in Jellyfin. ### Docker Compose ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin ports: - "8097:8096" # Use 8097 to avoid conflict with Emby on 8096 volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /path/to/media:/media:ro # Same media path as Emby devices: - /dev/dri:/dev/dri # GPU passthrough for transcoding restart: unless-stopped ``` > **Port note:** Emby and Jellyfin both default to port 8096. Map Jellyfin to 8097 temporarily. After migration, switch Jellyfin to 8096. Point Jellyfin to the **exact same media folders** Emby uses. Your files do not move. ### Native Linux ```bash curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash # Edit /etc/jellyfin/network.xml to change the port if Emby is on 8096 sudo systemctl enable --now jellyfin ``` --- ## Step 2: Set Up Libraries in Jellyfin 1. Open Jellyfin at `http://your-server:8097` 2. Complete the setup wizard - create your admin account 3. Add libraries pointing to your existing media paths: - Movies → `/media/movies` - TV Shows → `/media/tv` - Music → `/media/music` 4. Let Jellyfin scan and fetch metadata Jellyfin uses TMDB and TVDB - the same sources as Emby. Metadata quality is identical. The scan takes 10-60 minutes depending on library size. ### If you use NFO files If Emby was configured to save metadata as NFO files alongside your media, Jellyfin reads them natively: 1. Dashboard → Libraries → [Library] → Edit 2. Metadata readers → Enable **Nfo** 3. Set NFO as the first reader to prioritize local metadata This preserves any custom metadata you set in Emby without re-fetching from online sources. --- ## Step 3: Migrate Watch History via Trakt This is the most important step. Trakt acts as an intermediary to transfer watched status between Emby and Jellyfin. ### On Emby: Export to Trakt 1. Install the **Trakt plugin** in Emby (Dashboard → Plugins → Catalog) 2. Authenticate with your Trakt account 3. Run a **full sync** - this pushes all your watched history to Trakt 4. Verify on [trakt.tv](https://trakt.tv) that your history appears correctly ### On Jellyfin: Import from Trakt 1. Install the **Trakt plugin** in Jellyfin (Dashboard → Plugins → Catalog) 2. Authenticate with the same Trakt account 3. Run a **full sync** - this pulls all watched status from Trakt into Jellyfin 4. Verify in Jellyfin that movies and episodes show as "Played" ### For multiple users Repeat the Trakt sync for each user: 1. Each user needs their own Trakt account 2. On Emby: sync each user individually 3. On Jellyfin: create the user account first, then sync their Trakt > **Alternative without Trakt:** If you do not want to use Trakt, community tools like `jellyfin-emby-migrator` (search GitHub) can read Emby database files and import watched status directly. These tools are less polished but avoid the Trakt intermediary. --- ## Step 4: Recreate User Accounts Jellyfin user accounts are local - no Emby Connect equivalent. 1. Dashboard → Users → Add User 2. Create accounts matching your Emby users 3. For each user, configure: - Library access (which libraries they can see) - Parental controls (rating limits, blocked tags) - Remote streaming bitrate limit - Subtitle language preference ### Permission mapping from Emby to Jellyfin | Emby Permission | Jellyfin Equivalent | |---|---| | Allow media playback | Allow media playback | | Allow media downloads | Allow media downloads | | Allow remote connections | Allow remote connections | | Allow Live TV access | Allow Live TV access | | Parental rating limit | Maximum parental rating | | Disable user | Disable this user | Most permissions map directly. Jellyfin offers additional granularity (SyncPlay access, subtitle management, etc.). --- ## Step 5: Map Emby Plugins to Jellyfin Equivalents Most popular Emby plugins have Jellyfin equivalents - often with more features. | Emby Plugin | Jellyfin Equivalent | Notes | |---|---|---| | Trakt | Trakt | Same functionality | | OpenSubtitles | OpenSubtitles | Same functionality | | Auto Organize | Radarr/Sonarr | More powerful automation | | Webhooks | Webhook plugin | Same concept, different config | | Server Backup | Built-in backup (10.11+) | Native in Jellyfin now | | IPTV / Live TV | Built-in (free) | No Premiere required | | Playback Reporting | Playback Reporting | Same plugin, different repo | | - | **Intro Skipper** | No Emby equivalent | | - | **Skin Manager** | No Emby equivalent | | - | **Jellyfin-Enhanced** | No Emby equivalent | | - | **SSO Plugin** | No Emby equivalent | Jellyfin has significantly more community plugins than Emby in 2026. The Intro Skipper plugin alone is a major draw for migrating users. --- ## Step 6: Configure Clients Switch each device from the Emby app to the Jellyfin app. ### Android - Install **Jellyfin for Android** from Google Play - Or install **Findroid** for a more polished experience - Add your Jellyfin server URL and log in ### Android TV / Fire TV - Install **Jellyfin for Android TV** from Play Store or Amazon Appstore - The interface is similar to Emby TV - your users will adapt quickly ### iOS / Apple TV - Install **Swiftfin** (official, free) or **Infuse** (premium, best quality) - Both connect to Jellyfin the same way they connected to Emby ### Desktop - Install **Jellyfin Media Player** or use the web interface at `http://your-server:8096` ### Smart TVs - Samsung: Jellyfin for Tizen (requires sideloading) - LG: Jellyfin for WebOS (available in LG Content Store) - Android TV built-in: Jellyfin for Android TV from Play Store --- ## Step 7: Configure Remote Access If you had Emby accessible remotely, replicate the setup for Jellyfin: ### Reverse proxy (recommended) Update your Caddyfile or Nginx config to point to Jellyfin: ``` jellyfin.yourdomain.com { reverse_proxy localhost:8096 } ``` ### Tailscale / WireGuard If you used a VPN for Emby remote access, simply update the server URL in your clients to point to the Jellyfin port. --- ## Step 8: Verify and Decommission Emby Before removing Emby, verify everything: - [ ] All media appears correctly in Jellyfin - [ ] Watch history transferred for all users - [ ] All users can log in and stream - [ ] Hardware transcoding works (test with a forced transcode) - [ ] Clients configured on all devices - [ ] Remote access working - [ ] Plugins configured and functional - [ ] Reverse proxy updated Once confirmed, stop and remove Emby: ```bash # Docker docker stop emby docker rm emby # Native sudo systemctl stop emby-server sudo systemctl disable emby-server sudo apt remove emby-server ``` Switch Jellyfin to port 8096: ```yaml # Update docker-compose.yml ports: - "8096:8096" # Now using the standard port ``` ```bash docker compose down && docker compose up -d ``` Update all client URLs to use port 8096. --- ## Common Migration Issues | Issue | Cause | Fix | |---|---|---| | Wrong metadata on some items | Different TMDB match | Edit → Identify → select correct match | | Missing episodes | Naming format difference | Rename to Jellyfin standard (S##E##) | | Watch history incomplete | Trakt sync missed items | Re-run Trakt sync or mark manually | | Custom posters lost | Emby stored them internally | Re-upload in Jellyfin or use local poster.jpg | | Subtitles not detected | Different naming convention | Rename to `filename.en.srt` format | | Hardware transcoding not working | GPU not configured | Map /dev/dri and enable QSV/NVENC | --- ## FAQ **Can I run Emby and Jellyfin at the same time?** Yes. They use different ports and can share the same media files simultaneously. This is the recommended approach during migration. **Will my media files be affected?** No. Both servers read your files in read-only mode. Nothing is moved, renamed, or modified. **Do I need to re-download all metadata?** If you use NFO files, Jellyfin reads them directly - no re-download needed. If you relied on Emby fetching metadata online, Jellyfin re-fetches from the same sources (TMDB/TVDB) during the library scan. **What about my Emby Premiere license?** Your Premiere license stays valid for Emby. If you fully migrate to Jellyfin, you no longer need it - all Premiere features are free in Jellyfin. **Is the Jellyfin interface similar to Emby?** Yes. Jellyfin forked from Emby, so the dashboard layout, library views, and settings structure are familiar. The web UI has diverged over the years but the core navigation is recognizable. **Can I migrate my Emby Live TV / IPTV setup?** Yes. Export your M3U playlist URL and XMLTV EPG URL from Emby, then add them in Jellyfin under Dashboard → Live TV. The configuration is nearly identical. **What about EmbyWatch - does it work with Jellyfin?** EmbyWatch is built specifically for Emby. For Jellyfin, use **JellyWatch** - the same app, same features, built for the Jellyfin API. --- ## The Admin App: EmbyWatch → JellyWatch If you used **EmbyWatch** to monitor your Emby server, the transition to **JellyWatch** is seamless - same team, same features, different API: | Feature | EmbyWatch (Emby) | JellyWatch (Jellyfin) | |---|---|---| | Real-time sessions | Yes | Yes | | Transcoding diagnostics | Yes | Yes | | Push notifications | Yes | Yes | | Radarr/Sonarr/Seerr | Yes | Yes | | Watch history & stats | Yes | Yes | | Home screen widget | Yes | Yes | | Watch Pass | Yes | Yes | Both apps are built by the same team and share the same feature set. --- > **Migrating from Emby? Monitor your new Jellyfin server from day one.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding alerts, and server health for Jellyfin on Android. *Still running Emby alongside Jellyfin during migration? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - monitor both servers from your phone.* --- ## Jellyfin on Proxmox 2026: LXC vs VM - GPU Passthrough in 5 Minutes (Intel & NVIDIA) URL: https://jellywatch.app/blog/jellyfin-proxmox-lxc-vm-setup-gpu-passthrough-2026 Published: 2026-04-26T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, proxmox, lxc, vm, gpu-passthrough, intel-qsv, nvidia, docker, homelab, 2026 # Jellyfin on Proxmox: LXC vs VM, GPU Passthrough & Complete Setup (2026) Proxmox VE is the hypervisor of choice for the self-hosting community in 2026. If you run a homelab, chances are your Jellyfin server lives on Proxmox or soon will. But getting hardware transcoding working inside an LXC container or VM requires specific configuration that trips up even experienced admins. This guide covers every step from creating the container to verifying GPU passthrough with real transcoding sessions. --- ## LXC vs VM for Jellyfin: Which Should You Choose? Proxmox offers two virtualization options. For Jellyfin, the choice matters. | Feature | LXC Container | Virtual Machine | |---|---|---| | **Resource overhead** | Near zero | ~512 MB RAM + CPU overhead | | **Startup time** | 2-3 seconds | 15-30 seconds | | **GPU passthrough** | Device mapping (simple) | PCI passthrough (complex) | | **Intel QSV** | Easy via /dev/dri | Easy via PCI passthrough | | **NVIDIA GPU** | Possible but tricky | Full PCI passthrough | | **Docker inside** | Requires nesting | Native support | | **Isolation** | Shared kernel | Full isolation | | **Snapshot/backup** | Fast | Slower (larger) | ### The recommendation - **Intel iGPU (QSV):** Use an **LXC container** - simplest setup, lowest overhead, excellent performance - **NVIDIA dGPU:** Use a **VM** with PCI passthrough - more reliable driver support - **No GPU / Direct Play only:** Use an **LXC container** - minimal resources needed --- ## Method 1: Jellyfin in an LXC Container with Intel QSV This is the most popular Proxmox + Jellyfin setup in the community. An unprivileged LXC container with /dev/dri mapped from the host gives you full Intel Quick Sync hardware transcoding at near-zero overhead. ### Step 1: Create the LXC container From the Proxmox web UI: 1. Click **Create CT** 2. **Template:** Ubuntu 22.04 or Debian 12 3. **Disk:** 16 GB minimum (config only - media is mounted separately) 4. **CPU:** 2 cores minimum (4 recommended) 5. **RAM:** 2048 MB minimum (4096 recommended) 6. **Network:** DHCP or static IP on your LAN bridge 7. **Uncheck** "Unprivileged container" if you want the simplest GPU passthrough (see note below) > **Privileged vs Unprivileged:** Unprivileged containers are more secure but require extra steps for GPU access. Privileged containers make GPU passthrough trivial. For a dedicated Jellyfin container on a home network, privileged is acceptable. ### Step 2: Map the Intel GPU into the container On the **Proxmox host**, edit the container configuration: ```bash nano /etc/pve/lxc/YOUR_CT_ID.conf ``` Add these lines at the bottom: ``` lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file ``` For **unprivileged containers**, you also need UID/GID mapping. Add: ``` lxc.idmap: u 0 100000 65536 lxc.idmap: g 0 100000 65536 ``` And on the host, ensure the render group GID inside the container maps correctly: ```bash # On the Proxmox host, check the render group ls -la /dev/dri/renderD128 # Note the group (usually "render" with GID 109 or similar) ``` ### Step 3: Install Jellyfin inside the container Start the container and SSH in: ```bash pct start YOUR_CT_ID pct enter YOUR_CT_ID # Update and install Jellyfin apt update && apt upgrade -y curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | bash systemctl enable --now jellyfin ``` ### Step 4: Verify GPU access Inside the container: ```bash ls -la /dev/dri/ # Should show: card0 renderD128 # Install vainfo to test apt install vainfo -y vainfo # Should list VA-API profiles (H264, HEVC, VP9, AV1 decode) ``` If `vainfo` shows profiles, your GPU is accessible. ### Step 5: Add Jellyfin user to the render group ```bash usermod -aG render jellyfin usermod -aG video jellyfin systemctl restart jellyfin ``` ### Step 6: Enable QSV in Jellyfin 1. Open Jellyfin at `http://YOUR_CT_IP:8096` 2. Dashboard → Playback → Transcoding 3. Hardware acceleration: **Intel QuickSync (QSV)** 4. Enable: H.264, HEVC, VP9, AV1 (decode) 5. Enable: **Hardware Tone Mapping** 6. Save Test by playing a 4K HEVC file from a client that forces transcoding (set client quality to 720p). Check `intel_gpu_top` on the Proxmox host to confirm the GPU is active. --- ## Method 2: Jellyfin in an LXC with Docker (Nested) If you prefer running Jellyfin via Docker inside an LXC container: ### Enable nesting In the Proxmox web UI → Container → Options → Features → check **Nesting** Or in the config file: ``` features: nesting=1 ``` ### Install Docker inside the LXC ```bash curl -fsSL https://get.docker.com | sh ``` ### Docker Compose with GPU ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 restart: unless-stopped ``` The `/dev/dri` device is already mapped into the LXC from Step 2 above. Docker inside the LXC inherits access. --- ## Method 3: Jellyfin in a VM with NVIDIA PCI Passthrough For NVIDIA GPUs, a full VM with PCI passthrough is the most reliable approach. ### Step 1: Enable IOMMU on the Proxmox host Edit GRUB: ```bash nano /etc/default/grub ``` For Intel CPUs: ``` GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" ``` For AMD CPUs: ``` GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" ``` ```bash update-grub reboot ``` ### Step 2: Blacklist host GPU drivers ```bash echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "options vfio-pci ids=XXXX:XXXX" >> /etc/modprobe.d/vfio.conf update-initramfs -u reboot ``` Replace `XXXX:XXXX` with your GPU PCI vendor:device ID (find with `lspci -nn | grep NVIDIA`). ### Step 3: Create the VM and pass through the GPU 1. Create a VM with Ubuntu 22.04 Server 2. Hardware → Add → PCI Device → Select your NVIDIA GPU 3. Check **All Functions** and **PCI-Express** 4. Boot the VM and install NVIDIA drivers: ```bash sudo apt install nvidia-driver-550 -y sudo reboot nvidia-smi # Verify GPU is detected ``` ### Step 4: Install Jellyfin with Docker + NVIDIA runtime ```bash # Install Docker curl -fsSL https://get.docker.com | sh # Install NVIDIA Container Toolkit curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed "s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g" | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt update && sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker ``` ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped ``` Select **NVIDIA NVENC** in Jellyfin transcoding settings. --- ## Mounting Media Storage in Proxmox Your media files likely live on a NAS or a separate disk. Here is how to make them available inside your Jellyfin container or VM. ### NFS mount (most common for NAS) On the Proxmox host: ```bash apt install nfs-common -y mkdir -p /mnt/media echo "NAS_IP:/volume1/media /mnt/media nfs defaults,_netdev 0 0" >> /etc/fstab mount -a ``` For LXC, add a bind mount in the container config: ``` mp0: /mnt/media,mp=/mnt/media,ro=1 ``` For VMs, mount NFS directly inside the VM or use Proxmox storage passthrough. ### SMB/CIFS mount ```bash apt install cifs-utils -y mkdir -p /mnt/media echo "//NAS_IP/media /mnt/media cifs credentials=/root/.smbcredentials,uid=1000,gid=1000,_netdev 0 0" >> /etc/fstab ``` Create `/root/.smbcredentials`: ``` username=your_user password=your_password ``` ```bash chmod 600 /root/.smbcredentials mount -a ``` --- ## Performance Tuning for Proxmox + Jellyfin ### CPU pinning (optional, advanced) For consistent transcoding performance, pin the Jellyfin container to specific CPU cores: ```bash # In /etc/pve/lxc/YOUR_CT_ID.conf lxc.cgroup2.cpuset.cpus: 2-5 ``` This dedicates cores 2-5 to Jellyfin, preventing other containers from competing during heavy transcoding. ### Memory limits Set a reasonable memory limit to prevent Jellyfin from consuming all host RAM during large library scans: - 2 GB: minimum for small libraries - 4 GB: recommended for most setups - 8 GB: large libraries with Trickplay generation ### Storage performance Place Jellyfin config on **local SSD storage** (not the NAS). Metadata access is random I/O and benefits enormously from SSD speed. In the Proxmox container config: ``` rootfs: local-lvm:vm-YOUR_CT_ID-disk-0,size=32G ``` --- ## Proxmox Helper Scripts (Community) The Proxmox community maintains helper scripts that automate Jellyfin LXC creation: ```bash bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/jellyfin.sh)" ``` This script creates an optimized LXC container with Jellyfin pre-installed and GPU passthrough configured. Review the script before running it. --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | `/dev/dri` not visible in LXC | Missing cgroup config | Add lxc.cgroup2 and lxc.mount entries | | `vainfo` shows no profiles | Wrong permissions | Add jellyfin user to render and video groups | | NVIDIA GPU not detected in VM | IOMMU not enabled | Check GRUB config and reboot host | | Transcoding falls back to CPU | GPU not configured in Jellyfin | Verify transcoding settings in dashboard | | Container cannot start after GPU config | Syntax error in .conf | Check `/etc/pve/lxc/ID.conf` for typos | | Permission denied on media mount | UID mismatch | Match PUID/PGID between host and container | --- ## FAQ **Can I run Jellyfin in an unprivileged LXC with GPU?** Yes, but it requires additional UID/GID mapping configuration. Privileged containers are simpler for GPU passthrough on a trusted home network. **Does Intel QSV work in an LXC container?** Yes. Mapping `/dev/dri/renderD128` into the container gives full QSV access. This is the recommended setup for Intel iGPU users. **Can I pass an NVIDIA GPU to an LXC?** It is possible using the NVIDIA container toolkit on the host, but it is fragile and poorly documented. A VM with PCI passthrough is more reliable for NVIDIA. **How many 4K transcodes can I expect?** Same as bare metal. The LXC adds negligible overhead. An Intel N100 handles 3-4 simultaneous 4K transcodes via QSV whether bare metal or in an LXC. **Can I snapshot my Jellyfin LXC?** Yes. Proxmox LXC snapshots are fast and include the full container state. Use them before major Jellyfin upgrades. --- > **Running Jellyfin on Proxmox? Monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, GPU usage tracking, and push notifications for your Jellyfin server on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Best Jellyfin Windows Client in 2026: JMP vs FluentFin vs Delfin (+ macOS & Linux) URL: https://jellywatch.app/blog/best-jellyfin-desktop-client-windows-macos-linux-2026 Published: 2026-04-18T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, desktop, windows, macos, linux, client, fluentfin, delfin, jmp, hdr, 2026 # Best Jellyfin Windows Client in 2026: JMP vs FluentFin vs Delfin ## Best Jellyfin Client for Windows in 2026 Looking for the best Jellyfin client on Windows? **Jellyfin Media Player (JMP)** is the top pick for maximum codec support and HDR passthrough. **FluentFin** is the modern alternative with a native WinUI 3 interface. Both are free, open source, and connect to any Jellyfin server. This guide compares every Windows, macOS, and Linux client available in 2026. --- # Best Jellyfin Desktop Clients in 2026: Windows, macOS & Linux Watching Jellyfin on a desktop or laptop is one of the most common use cases - yet choosing the right client is surprisingly confusing. The official web interface works but lacks codec support. Jellyfin Media Player is powerful but feels dated. FluentFin looks modern but is still in beta. This guide compares every desktop client available in 2026 and tells you which one to use based on your OS and priorities. --- ## Quick Recommendation | OS | Best client | Why | |---|---|---| | **Windows** | Jellyfin Media Player | Best codec support + HDR | | **Windows (modern UI)** | FluentFin | Native WinUI 3, beautiful | | **macOS** | Infuse | Best Apple integration | | **macOS (free)** | Jellyfin Media Player | MPV-powered, solid | | **Linux (GNOME)** | Delfin | Native GTK4, Flatpak | | **Linux (any)** | Jellyfin Media Player | Flatpak, universal | | **Any OS (no install)** | Jellyfin Web | Browser-based, zero setup | --- ## Jellyfin Media Player (JMP) - The All-Rounder **Platforms:** Windows, macOS, Linux **Status:** Official, stable **Price:** Free, open source Jellyfin Media Player combines the Jellyfin web interface with **MPV** as the playback engine. This gives you dramatically better codec support than any browser. ### Why JMP is the default recommendation - **Codec support:** H.264, H.265/HEVC, AV1, VP9, MPEG-2, VC-1 - virtually everything Direct Plays - **HDR passthrough:** On Windows with HDR-capable displays, JMP passes HDR10 metadata to the OS - **Hardware decoding:** Uses your GPU for smooth 4K playback at minimal CPU cost - **Keyboard shortcuts:** Space (play/pause), Left/Right (seek), F (fullscreen), M (mute) - **Subtitle rendering:** Full ASS/SSA styling support via libass ### Installation **Windows:** Download from [jellyfin.org/downloads](https://jellyfin.org/downloads/) → Jellyfin Media Player **macOS:** Download the .dmg from the same page **Linux (Flatpak - recommended):** ```bash flatpak install flathub com.github.iwalton3.jellyfin-media-player ``` ### HDR on Windows For HDR to work in JMP on Windows: 1. Enable **HDR** in Windows Settings → Display → HDR 2. In JMP settings, ensure **Hardware Decoding** is enabled 3. Play an HDR10 file - Windows should switch to HDR mode automatically > **Note:** HDR passthrough requires Windows 10/11 with a compatible GPU and display. JMP does not support Dolby Vision on Windows - it falls back to HDR10. ### Limitations - UI is the Jellyfin web interface embedded in a window - not a native desktop app - No offline download support - The project is transitioning to **Jellyfin Desktop** (Qt 6) - see below --- ## Jellyfin Desktop - The Next Generation (In Development) Jellyfin Desktop is the official successor to JMP, migrated from Qt 5 to **Qt 6**. As of April 2026: - Available on **Flathub** (Linux) and **Arch AUR** - Windows and macOS stable builds are **not yet available** - Same MPV backend, modernized framework If you are on Linux, Jellyfin Desktop is worth trying. On Windows and macOS, stick with JMP until stable builds ship. --- ## FluentFin - Native Windows Experience (Beta) **Platform:** Windows only **Status:** Beta, active development **Price:** Free, open source FluentFin is built with **WinUI 3** - Microsoft's modern UI framework. It looks and feels like a native Windows 11 app, with Fluent Design, Mica materials, and smooth animations. ### Why FluentFin stands out - **Native Windows UI** - not a web view, not Electron, genuine WinUI 3 - **Modern design** - follows Windows 11 design language - **Fast startup** - lighter than JMP - **Active development** - frequent updates on GitHub ### Installation Download from [github.com/insomniachi/FluentFin](https://github.com/insomniachi/FluentFin) → Releases Or install via **winget** (if available): ```bash winget install FluentFin ``` ### Limitations - **Beta** - expect occasional bugs and missing features - Codec support depends on Windows' built-in decoders (install HEVC Video Extensions from Microsoft Store for H.265) - HDR support is improving but not as mature as JMP - Windows only - no macOS or Linux ### Who should use FluentFin? Windows users who prioritize a **modern, native-feeling UI** over maximum codec compatibility. If you watch mostly H.264/H.265 content and want the best-looking Windows app, FluentFin is excellent. --- ## Delfin - Native Linux Client (Beta) **Platform:** Linux **Status:** Beta, active development **Price:** Free, open source Delfin is built with **GTK4 and libadwaita** - it follows GNOME design guidelines and feels right at home on GNOME desktops. ### Installation ```bash flatpak install flathub cafe.avery.Delfin ``` ### Why Delfin for Linux users - **Native GNOME integration** - adaptive layout, dark mode, system fonts - **GStreamer backend** - good codec support on Linux - **Lightweight** - fast startup, low memory usage - **Flatpak** - sandboxed, easy to install and update ### Limitations - Beta - some features still in development - GNOME-focused - may look out of place on KDE or other DEs - HDR support depends on your compositor and display setup --- ## tsukimi - Rust + GTK4 (Beta) **Platform:** Linux, Windows **Status:** Beta **Price:** Free, open source Built with GTK4 and Rust, tsukimi is fast and lightweight. Good option for Linux users who want a non-GNOME-specific GTK4 client. --- ## Blink - Cross-Platform Flutter Client (Beta) **Platform:** Windows, macOS, Linux **Status:** Beta **Price:** Free, open source Blink uses Flutter for a consistent cross-platform experience. The UI is clean and modern, though Flutter apps can feel slightly non-native on each platform. --- ## Rodel Player - Windows Store App **Platform:** Windows **Status:** Stable **Price:** Free (closed source) Available on the [Microsoft Store](https://apps.microsoft.com/detail/9nb0h051m4v4). Clean interface, easy to install, but closed-source and less customizable than open-source alternatives. --- ## Jellyfin Web (Browser) - Zero Install The built-in web interface works in any modern browser - no installation required. ### When to use the browser - Quick access on a shared computer - Testing your server setup - Platforms where no native client exists ### Browser limitations | Feature | Chrome/Edge | Firefox | Safari | |---|---|---|---| | H.264 | Yes | Yes | Yes | | H.265/HEVC | Partial (Windows) | No | Yes (macOS) | | AV1 | Yes | Yes | Yes (macOS 14+) | | HDR | No | No | No | | Chromecast | Yes | No | No | | Keyboard shortcuts | Yes | Yes | Yes | **The browser cannot Direct Play H.265 on most setups** - your server transcodes it, wasting CPU. This is the main reason to use a dedicated client. --- ## Desktop Client Comparison Table | Client | OS | UI Framework | H.265 | AV1 | HDR | Native feel | Status | |---|---|---|---|---|---|---|---| | **JMP** | Win/Mac/Linux | Qt 5 + MPV | Yes | Yes | Yes (Win) | Medium | Stable | | **Jellyfin Desktop** | Linux | Qt 6 + MPV | Yes | Yes | Yes | Medium | Beta | | **FluentFin** | Windows | WinUI 3 | Via codec | Via codec | Improving | Excellent | Beta | | **Delfin** | Linux | GTK4 | Yes | Yes | Depends | Excellent (GNOME) | Beta | | **tsukimi** | Linux/Win | GTK4 + Rust | Yes | Yes | Depends | Good | Beta | | **Blink** | All | Flutter | Yes | Yes | No | Medium | Beta | | **Infuse** | macOS | Native | Yes | Yes | Yes | Excellent | Stable | | **Browser** | All | Web | Partial | Yes | No | N/A | Stable | --- ## Infuse on macOS - The Premium Option For macOS users, **Infuse** by Firecore is the best Jellyfin client available: - Stunning native macOS interface - Full Dolby Vision and HDR10 support - Excellent codec support (virtually everything Direct Plays) - AirPlay to Apple TV - Offline downloads Requires **Infuse Pro** (~$9.99/year) for full Jellyfin integration. Worth it for Apple users. --- ## Music Desktop Clients If you use Jellyfin for music, dedicated music clients offer a better experience: | Client | Platform | Best feature | |---|---|---| | **Feishin** | All (Electron) | Spotify-like UI, gapless playback | | **Supersonic** | All (Go native) | Lightweight, fast | | **Tauon Music Box** | Linux | Feature-rich, Last.fm scrobbling | | **Sonixd** | All (Electron) | Mature, stable | --- ## FAQ **Which client has the best HDR support on Windows?** Jellyfin Media Player with Windows HDR mode enabled. FluentFin is improving but not there yet. **Can I use Jellyfin in a browser for 4K?** Yes for H.264 and AV1. No for H.265 in most browsers - it will transcode on your server. **Is FluentFin stable enough for daily use?** For H.264 content, yes. For H.265 and HDR, JMP is more reliable as of April 2026. **What is the lightest Jellyfin desktop client?** Delfin on Linux (GTK4, minimal resources) or the browser (zero install). **Does any desktop client support offline downloads?** Infuse on macOS supports offline downloads. Most other desktop clients do not. --- > **Watching on desktop? Monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see every active session including desktop clients, with codec details and transcode status. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Chromecast and Google Cast Guide (2026): Setup, Troubleshooting, and Google TV Streaming URL: https://jellywatch.app/blog/jellyfin-chromecast-google-cast-google-tv-streaming-guide-2026 Published: 2026-04-18T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, chromecast, google-cast, google-tv, casting, streaming, android, 2026 # Jellyfin Chromecast and Google Cast Guide (2026) Casting your Jellyfin library to a TV should be simple - tap a button, pick a device, watch. In practice, Chromecast and Google Cast support in Jellyfin has a complicated history. Some things work perfectly; others require workarounds. This guide covers every casting method available in 2026, what works, what does not, and the best alternatives. --- ## Chromecast Support in Jellyfin: The Current State As of Jellyfin 10.11.7 (April 2026), here is the honest status: | Method | Status | Notes | |---|---|---| | **Jellyfin Web → Chromecast** | Works (with limitations) | Built-in cast button in web player | | **Jellyfin Android → Chromecast** | Works | Cast icon in the official Android app | | **Chromecast with Google TV (native app)** | Best option | Install Jellyfin for Android TV directly | | **Chromecast HD (non-Google TV)** | Cast only | No native app - cast from phone/browser | | **Google Home / Nest Hub** | Not supported | No Jellyfin integration | --- ## Option 1: Chromecast with Google TV (Best Experience) If you have a **Chromecast with Google TV** (the one with a remote), you do not need to cast at all - install the Jellyfin app directly. ### Install Jellyfin on Google TV 1. Open the **Google Play Store** on your Chromecast with Google TV 2. Search for **Jellyfin** 3. Install **Jellyfin for Android TV** 4. Open the app → Add Server → enter your Jellyfin URL 5. Log in with your credentials This gives you the full Jellyfin Android TV experience - library browsing, 4K HDR playback, remote control navigation, and no casting latency. ### Google TV Performance | Chromecast Model | Chip | RAM | 4K HDR | AV1 | Dolby Vision | |---|---|---|---|---|---| | Chromecast with Google TV HD | Amlogic S805X2 | 1.5 GB | No (1080p max) | No | No | | Chromecast with Google TV 4K | Amlogic S905X4 | 2 GB | Yes | No | Yes (Profile 5) | | Google TV Streamer (2024) | MediaTek MT8696 | 4 GB | Yes | Yes | Yes | > **The Google TV Streamer (2024)** is the best Google-branded device for Jellyfin in 2026 - 4 GB RAM, AV1 decode, and Dolby Vision support. ### Optimize for Direct Play on Google TV In the Jellyfin app → Settings → Playback: - Set **Max streaming bitrate** to **Original** (no limit) - Enable **Direct Play** - Use **Ethernet** if possible (the USB-C adapter supports Ethernet on the Google TV Streamer) --- ## Option 2: Cast from the Jellyfin Android App The official Jellyfin Android app supports Google Cast: 1. Open the Jellyfin app on your Android phone 2. Start playing any media 3. Tap the **Cast icon** (top right of the player) 4. Select your Chromecast device 5. Playback transfers to your TV ### What works - H.264 and H.265 video casting - AAC and AC3 audio - Subtitle display (text-based subs like SRT) - Playback controls from your phone (play, pause, seek) ### What does not work well - **PGS/VobSub image subtitles** - these force a transcode on your server before casting - **TrueHD / DTS audio** - Chromecast does not support lossless audio; your server transcodes to AAC or EAC3 - **4K HDR casting** - the Chromecast receiver may not handle HDR metadata correctly when casting (vs. native app playback) - **High bitrate files (60+ Mbps)** - casting adds overhead; very high bitrate remuxes may buffer ### Casting vs. Native App | Feature | Casting | Native App (Google TV) | |---|---|---| | Video quality | Good (may transcode) | Best (Direct Play) | | Audio quality | Lossy only | Depends on device | | HDR support | Inconsistent | Full (device-dependent) | | Subtitle support | Text only | All formats | | Latency | 1-3 seconds | None | | Remote control | Phone | TV remote | **Verdict:** If you have a Chromecast with Google TV, always use the native app instead of casting. --- ## Option 3: Cast from the Jellyfin Web Interface The Jellyfin web player (in Chrome or Edge) includes a built-in Cast button: 1. Open Jellyfin in **Google Chrome** or **Microsoft Edge** 2. Start playing media 3. Click the **Cast icon** in the player controls 4. Select your Chromecast ### Browser casting requirements - Must use **Chrome** or **Chromium-based browser** (Firefox does not support Cast) - Your computer and Chromecast must be on the **same network** - The Jellyfin server must be reachable from the Chromecast (not just from your browser) ### Common issue: "Google Cast is unsupported" If you see this message in the Jellyfin web player: 1. Ensure you are using **Chrome** (not Firefox or Safari) 2. Check that the Cast extension is enabled: `chrome://flags/#cast-media-route-provider` → Enabled 3. Verify your Chromecast is on the same Wi-Fi network 4. Try clearing browser cache and reloading Jellyfin --- ## Option 4: Cast from Third-Party Apps ### Findroid (Android) Findroid, the popular third-party Jellyfin client, supports Chromecast casting with a similar experience to the official app. ### Infuse (iOS) Infuse supports **AirPlay** to Apple TV but does **not** support Google Cast. If you are on iOS and want to cast to a Chromecast, use the Jellyfin web interface in Chrome on a computer. --- ## Troubleshooting Chromecast Issues | Problem | Cause | Fix | |---|---|---| | Cast icon not appearing | Wrong browser or network | Use Chrome, same Wi-Fi as Chromecast | | "Unsupported" error | Cast API not loaded | Clear cache, check Chrome flags | | Buffering during cast | High bitrate or transcoding | Lower quality or use native app | | No audio | Unsupported audio codec | Server transcodes to AAC - check server logs | | Subtitles not showing | PGS/image subtitles | Switch to SRT subtitles | | Black screen on TV | HDR passthrough failure | Disable HDR in Jellyfin playback settings | | Cast disconnects randomly | Wi-Fi instability | Move Chromecast closer to router or use Ethernet | --- ## Alternatives to Chromecast for Jellyfin If casting is frustrating, consider a dedicated streaming device with a native Jellyfin app: | Device | Price | Native Jellyfin App | 4K HDR | |---|---|---|---| | Google TV Streamer | ~$100 | Yes | Yes + AV1 | | Chromecast with Google TV 4K | ~$50 | Yes | Yes | | Fire TV Stick 4K Max | ~$60 | Yes | Yes | | Nvidia Shield Pro | ~$200 | Yes | Yes | | Apple TV 4K (Infuse) | ~$129 | Yes (via Infuse) | Yes | A native app always outperforms casting in quality, reliability, and features. --- ## Monitor Your Casting Sessions When a user casts to a Chromecast, the session appears in Jellyfin like any other stream. **JellyWatch** shows you: - Whether the cast session is Direct Playing or transcoding - The exact codec and bitrate being sent to the Chromecast - CPU usage on your server (casting with transcoding can spike CPU) - Which device and client is being used --- > **Casting to Chromecast? See exactly what your server is doing.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring for every Jellyfin client including Chromecast. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## How to Install Seerr in 2026: Complete Setup Guide for Docker, Linux, Unraid, and Windows URL: https://jellywatch.app/blog/seerr-installation-guide-docker-linux-unraid-windows-2026 Published: 2026-04-18T11:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: seerr, installation, docker, linux, unraid, windows, jellyfin, emby, radarr, sonarr, guide, 2026 # How to Install Seerr in 2026: Complete Setup Guide Seerr is the unified successor to Jellyseerr and Overseerr - the community standard for letting users request movies and TV shows on your self-hosted media server. If you run Jellyfin or Emby with Radarr and Sonarr, Seerr is the missing piece that turns your stack into a proper streaming platform with user-facing request management. This guide covers a fresh Seerr installation from scratch on Linux, Unraid, and Windows - not a migration from Jellyseerr or Overseerr (see our [migration guide](https://jellywatch.app/blog/jellyseerr-overseerr-to-seerr-migration-guide-2026) for that). --- ## What Is Seerr? Seerr provides: - A polished web interface where users search for movies and TV shows - One-click request submission - Automatic handoff to Radarr (movies) and Sonarr (TV shows) - Request status tracking (pending → approved → downloading → available) - User management with request quotas - Notification support (Discord, Telegram, email, webhooks) **Default port:** `5055` --- ## Prerequisites Before installing Seerr, you need: - A running **Jellyfin** or **Emby** server - **Radarr** configured with at least one root folder and quality profile - **Sonarr** configured with at least one root folder and quality profile - **Docker** installed (for Docker/Unraid methods) --- ## Method 1: Docker Compose (Recommended) The fastest and most reliable installation method. ### docker-compose.yml ```yaml services: seerr: image: ghcr.io/seerr-team/seerr:latest init: true container_name: seerr environment: - LOG_LEVEL=info - TZ=Europe/Paris - PORT=5055 ports: - 5055:5055 volumes: - ./seerr/config:/app/config healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped ``` ### Important notes - The container runs as user `node` (UID 1000) by default - Ensure the config directory is owned by UID 1000:1000: ```bash mkdir -p ./seerr/config sudo chown -R 1000:1000 ./seerr/config ``` - The `init: true` flag ensures proper signal handling for graceful shutdowns ### Start Seerr ```bash docker compose up -d ``` Access Seerr at `http://YOUR_SERVER_IP:5055`. --- ## Method 2: Native Linux Installation (Debian/Ubuntu) If you prefer running Seerr directly on a Linux host without Docker: ### Prerequisites ```bash # Install Node.js 20+ (via NodeSource) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - sudo apt install -y nodejs git ``` ### Clone and build ```bash git clone https://github.com/seerr-team/seerr.git /opt/seerr cd /opt/seerr npm install npm run build ``` ### Create a systemd service ```ini # /etc/systemd/system/seerr.service [Unit] Description=Seerr Media Request Manager After=network.target [Service] Type=simple User=seerr Group=seerr WorkingDirectory=/opt/seerr ExecStart=/usr/bin/npm start Restart=on-failure Environment=PORT=5055 [Install] WantedBy=multi-user.target ``` ```bash sudo useradd -r -s /bin/false seerr sudo chown -R seerr:seerr /opt/seerr sudo systemctl enable --now seerr ``` Access at `http://YOUR_IP:5055`. > For most users, Docker remains the recommended method. Native installation requires manual updates and dependency management. --- ## Method 3: Unraid Installation ### Via Community Applications 1. Open the **Apps** tab in Unraid 2. Search for **Seerr** 3. Click **Install** 4. Configure the template: - **Config path:** `/mnt/user/appdata/seerr` - **Port:** `5055` - **TZ:** Your timezone 5. Click **Apply** ### Manual Docker on Unraid If Seerr is not yet in Community Apps: 1. Go to **Docker → Add Container** 2. Repository: `ghcr.io/seerr-team/seerr:latest` 3. Add path mapping: Container `/app/config` → Host `/mnt/user/appdata/seerr` 4. Add port mapping: `5055` → `5055` 5. Click **Apply** ### Fix permissions on Unraid ```bash chown -R 1000:1000 /mnt/user/appdata/seerr ``` --- ## Method 4: Windows Installation (Docker Desktop) Seerr does not have a native Windows installer - use Docker Desktop. ### Install Docker Desktop 1. Download from [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/) 2. Install and enable WSL 2 backend when prompted 3. Restart your computer ### docker-compose.yml for Windows ```yaml services: seerr: image: ghcr.io/seerr-team/seerr:latest init: true container_name: seerr environment: - LOG_LEVEL=info - TZ=Europe/Paris ports: - 5055:5055 volumes: - seerr-data:/app/config healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped volumes: seerr-data: ``` Open a terminal in the folder containing your `docker-compose.yml`: ```bash docker compose up -d ``` Access at `http://localhost:5055`. --- ## First-Run Setup Wizard Open `http://YOUR_IP:5055` and follow the wizard: ### Step 1: Connect Your Media Server **For Jellyfin:** 1. Select **Jellyfin** as your media server 2. Enter your Jellyfin URL: `http://jellyfin:8096` (Docker) or `http://YOUR_IP:8096` 3. Enter your Jellyfin admin username and password 4. Click **Save** **For Emby:** 1. Select **Emby** 2. Enter your Emby URL and API key 3. Click **Save** ### Step 2: Connect Radarr (Movies) 1. Click **Add Radarr Server** 2. Server name: `Radarr` 3. Hostname: `radarr` (Docker) or your server IP 4. Port: `7878` 5. API Key: found in Radarr → Settings → General → API Key 6. Select your **default quality profile** and **root folder** 7. Click **Test** → **Save** ### Step 3: Connect Sonarr (TV Shows) Same process: 1. Click **Add Sonarr Server** 2. Hostname: `sonarr`, Port: `8989` 3. API Key from Sonarr → Settings → General 4. Select quality profile and root folder 5. **Test** → **Save** ### Step 4: Import Users Seerr can import your existing Jellyfin/Emby users: 1. Go to **Settings → Users** 2. Click **Import Users from Jellyfin/Emby** 3. Set default permissions (request movies, request TV, auto-approve, etc.) --- ## Seerr Configuration Best Practices ### Request limits Prevent users from flooding your server with requests: Settings → Users → Default Permissions: - Movie request limit: **5 per week** - TV request limit: **3 per week** - Auto-approve: **Off** (unless you trust all users) ### Notifications Seerr supports notifications via: - **Discord** (webhook URL) - **Telegram** (bot token + chat ID) - **Email** (SMTP) - **Webhooks** (custom endpoints) - **Pushover**, **Slack**, **Gotify** Configure in Settings → Notifications. ### Reverse proxy (HTTPS) Never expose Seerr directly to the internet without HTTPS. **Caddyfile:** ``` requests.yourdomain.com { reverse_proxy seerr:5055 } ``` --- ## Seerr Ports and Network Reference | Service | Default Port | Protocol | |---|---|---| | **Seerr** | 5055 | HTTP | | Jellyfin | 8096 | HTTP | | Emby | 8096 | HTTP | | Radarr | 7878 | HTTP | | Sonarr | 8989 | HTTP | All services communicate over HTTP internally. Use a reverse proxy for external HTTPS access. --- ## Backing Up Seerr Seerr stores all data in the `/app/config` directory: - `db/` - SQLite database (users, requests, settings) - `settings.json` - Server configuration - `logs/` - Application logs ### Backup command ```bash docker stop seerr tar -czf seerr-backup-$(date +%Y%m%d).tar.gz ./seerr/config docker start seerr ``` Schedule this weekly with cron for automated protection. --- ## Seerr vs Jellyseerr vs Overseerr | Feature | Seerr | Jellyseerr | Overseerr | |---|---|---|---| | Status | Active development | Deprecated | Deprecated | | Jellyfin support | Yes | Yes | No | | Emby support | Yes | No | No | | Plex support | Yes | Yes | Yes | | Migration from predecessors | Automatic | N/A | N/A | **Seerr is the only actively maintained option in 2026.** Both Jellyseerr and Overseerr are deprecated. --- ## Troubleshooting | Problem | Fix | |---|---| | Cannot connect to Jellyfin | Verify URL and credentials - use Docker service name if on same network | | Radarr/Sonarr test fails | Check API key and ensure the service is reachable from Seerr container | | Permission denied on config | `chown -R 1000:1000 ./seerr/config` | | Port 5055 already in use | Change the host port in docker-compose.yml: `5056:5055` | | Users not importing | Ensure your Jellyfin/Emby admin account has permission to list users | --- ## Manage Seerr Requests from Your Phone Seerr has no official mobile app. **JellyWatch** and **EmbyWatch** fill this gap with native Android integration: - View all pending, approved, and available requests - Approve or reject requests with a single tap - Search TMDB and submit requests directly - Push notifications for new incoming requests - No browser needed - everything in one native app --- > **Seerr installed? Manage requests from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) for Jellyfin - or [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) for Emby - and approve media requests natively on Android. --- *Seerr image: `ghcr.io/seerr-team/seerr:latest`. Default port: 5055. Check the [Seerr GitHub](https://github.com/seerr-team/seerr) for the latest release notes.* --- ## Jellyfin 2FA Setup 2026: TOTP Plugin + Authelia SSO (Step-by-Step) URL: https://jellywatch.app/blog/jellyfin-two-factor-authentication-2fa-totp-plugin-guide-2026 Published: 2026-04-18T10:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, 2fa, two-factor-authentication, totp, security, authelia, authentik, plugin, 2026 # Jellyfin Two-Factor Authentication (2FA) in 2026: Complete Guide If your Jellyfin server is accessible from the internet - through a reverse proxy, Cloudflare Tunnel, or VPN - a username and password alone is not enough. One leaked credential and someone has full access to your media library, your users' data, and potentially your entire homelab. **Two-factor authentication (2FA)** adds a second verification step - typically a 6-digit code from an authenticator app - that makes stolen passwords useless. This guide covers every method to enable 2FA on Jellyfin in 2026. --- ## Does Jellyfin Have Built-In 2FA? As of Jellyfin 10.11.7 (April 2026), Jellyfin does **not** have native two-factor authentication built into the core server. However, there are two well-established approaches: | Method | How it works | Complexity | |---|---|---| | **TOTP Plugin** (from catalog) | Adds TOTP 2FA directly to Jellyfin login | Easy | | **SSO with external IdP** | Authelia or Authentik handles 2FA before Jellyfin | Medium-Advanced | Both methods are production-ready in 2026. --- ## Method 1: TOTP Plugin from the Jellyfin Plugin Catalog The simplest way to add 2FA to Jellyfin. This plugin adds a TOTP (Time-based One-Time Password) step to the standard Jellyfin login flow. ### How TOTP Works 1. User enters username and password as usual 2. If 2FA is enabled for that account, Jellyfin prompts for a 6-digit code 3. User opens their authenticator app (Google Authenticator, Authy, Bitwarden, etc.) and enters the code 4. Access granted only if both password and code are correct ### Installation 1. Open your Jellyfin Dashboard 2. Navigate to **Dashboard → Plugins → Catalog** 3. Search for **"Two-Factor Authentication"** or **"TOTP"** 4. Click **Install** 5. **Restart your Jellyfin server** > **Note:** The plugin name in the catalog is "Two-Factor Auth" or similar - search for "two-factor" or "totp" to find it. ### Configuration After installation and restart: 1. Go to **Dashboard → Plugins → Two-Factor Authentication** 2. The plugin settings page allows you to: - Enable/disable 2FA globally - Require 2FA for admin accounts - Set grace period for new setups ### Setting Up 2FA for Your Account 1. Go to your **User Profile → Security** (or the plugin's user settings page) 2. Click **Enable Two-Factor Authentication** 3. A QR code appears on screen 4. Open your authenticator app → **Scan QR Code** 5. Enter the 6-digit code displayed in your app to verify 6. **Save your backup codes** - store them securely offline ### Recommended Authenticator Apps | App | Platform | Cloud backup | Open source | |---|---|---|---| | **Aegis** | Android | Optional (encrypted) | Yes | | **2FAS** | Android, iOS | Yes (encrypted) | Yes | | **Bitwarden** | All | Yes | Yes | | **Google Authenticator** | Android, iOS | Yes (Google account) | No | | **Authy** | All | Yes | No | **Recommendation:** Use **Aegis** (Android) or **2FAS** (cross-platform) - both are open source and support encrypted backups. ### What Happens If You Lose Your Authenticator? This is the most common 2FA failure scenario. Prepare for it: 1. **Save backup codes** when you first enable 2FA - store them in a password manager or printed in a safe 2. **Admin override:** A server admin can disable 2FA for any user from the dashboard 3. **Database reset:** As a last resort, the plugin's 2FA data can be cleared from the Jellyfin database > **Critical:** If you are the only admin and lose your authenticator without backup codes, you will need to manually edit the Jellyfin database to regain access. Always save backup codes. --- ## Method 2: SSO-Based 2FA with Authelia or Authentik For a more robust setup - especially if you run multiple self-hosted services - use an external identity provider (IdP) that handles authentication and 2FA before Jellyfin ever sees the request. ### How It Works ``` User → Reverse Proxy → Authelia/Authentik (login + 2FA) → Jellyfin ``` The IdP intercepts the request, authenticates the user (password + 2FA), and only forwards authenticated requests to Jellyfin. ### Option A: Authelia (Lightweight) Authelia is a lightweight authentication server that sits behind your reverse proxy. ```yaml # docker-compose.yml snippet services: authelia: image: authelia/authelia:latest volumes: - ./authelia/config:/config ports: - 9091:9091 restart: unless-stopped ``` Configure Authelia to require 2FA for your Jellyfin domain: ```yaml # authelia configuration.yml access_control: default_policy: deny rules: - domain: jellyfin.yourdomain.com policy: two_factor ``` Authelia supports: - **TOTP** (Google Authenticator, Authy) - **WebAuthn** (YubiKey, hardware security keys) - **Duo Push** notifications ### Option B: Authentik (Full-Featured) Authentik provides a complete identity platform with a web admin UI, LDAP support, and advanced policies. For Jellyfin integration, install the **jellyfin-plugin-sso** plugin: 1. Dashboard → Plugins → Catalog → **SSO Authentication** 2. Configure OIDC provider pointing to your Authentik instance 3. Users see a "Sign in with Authentik" button on the Jellyfin login page Authentik supports: - **TOTP** - **WebAuthn / FIDO2** - **SMS** (not recommended) - **Push notifications** ### Authelia vs Authentik for Jellyfin 2FA | Feature | Authelia | Authentik | |---|---|---| | Setup complexity | Simple (YAML config) | Medium (web UI + PostgreSQL) | | Resource usage | Very low (~50 MB RAM) | Medium (~500 MB RAM) | | 2FA methods | TOTP, WebAuthn, Duo | TOTP, WebAuthn, SMS, Push | | User self-service | Limited | Full (password reset, profile) | | Best for | Small homelabs | Multi-service environments | --- ## Which Method Should You Choose? | Scenario | Recommended method | |---|---| | Solo admin, just want 2FA on Jellyfin | TOTP Plugin | | Family server, simple setup | TOTP Plugin | | Multiple services (Jellyfin + Radarr + Sonarr + Grafana) | Authelia or Authentik | | Enterprise / team environment | Authentik | | Already running a reverse proxy with auth | Add 2FA to existing IdP | --- ## 2FA Best Practices for Jellyfin Admins ### 1. Enable 2FA for all admin accounts - no exceptions Admin accounts can delete libraries, modify users, and access server logs. They must have 2FA. ### 2. Consider 2FA for all remote users If your server is accessible from the internet, every account is a potential attack vector. ### 3. Use hardware security keys for maximum security WebAuthn with a YubiKey is phishing-resistant - unlike TOTP codes, it cannot be intercepted by a fake login page. ### 4. Combine 2FA with Fail2Ban Even with 2FA, brute-force attempts waste server resources. Fail2Ban blocks IPs after repeated failures: ```ini [jellyfin] enabled = true maxretry = 5 bantime = 3600 ``` ### 5. Monitor failed login attempts **JellyWatch** sends push notifications for authentication failures - you know immediately if someone is trying to break in. --- ## Does 2FA Work with Jellyfin Mobile Apps? | Client | TOTP Plugin support | SSO support | |---|---|---| | Jellyfin Web | Yes | Yes | | Jellyfin Android | Depends on plugin implementation | Limited | | Jellyfin Android TV | Depends on plugin implementation | Limited | | Infuse (iOS/tvOS) | No (direct API auth) | No | | Findroid | Depends on plugin implementation | Limited | | JellyWatch | Direct API auth | N/A | > **Important:** Some third-party clients authenticate directly via the Jellyfin API and may not support the 2FA prompt. For these clients, SSO-based 2FA (Authelia/Authentik at the reverse proxy level) is more reliable because it intercepts the connection before the API is reached. --- ## FAQ **Does Jellyfin have built-in 2FA?** Not natively in the core server. Use the TOTP plugin from the plugin catalog or an external SSO provider like Authelia or Authentik. **Where do I find the 2FA plugin in the Jellyfin catalog?** Dashboard → Plugins → Catalog → search for "Two-Factor Authentication" or "TOTP". **Can I require 2FA for some users but not others?** With the TOTP plugin, 2FA is typically per-user - each user enables it individually. With Authelia/Authentik, you can set policies per user group. **What if I lose my phone with the authenticator app?** Use your backup codes to log in, then reconfigure 2FA with a new device. If you have no backup codes, another admin can disable your 2FA from the dashboard. **Is 2FA enough to secure my Jellyfin server?** 2FA is one layer. Combine it with: HTTPS (reverse proxy), Fail2Ban, strong passwords, regular updates, and monitoring (JellyWatch). **Does the TOTP plugin survive Jellyfin updates?** Yes. Plugins persist across updates. However, after a major version upgrade (e.g., 10.11 → 12.0), check plugin compatibility. --- ## Security Checklist for Jellyfin in 2026 | Layer | Tool | Status | |---|---|---| | HTTPS | Caddy / Nginx / Traefik | ☐ | | 2FA | TOTP Plugin or Authelia/Authentik | ☐ | | Brute-force protection | Fail2Ban | ☐ | | Strong passwords | Password policy | ☐ | | Regular updates | Watchtower or manual | ☐ | | Monitoring | JellyWatch | ☐ | | Backups | Automated scripts | ☐ | --- > **Secure your server - then monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - failed login alerts, session monitoring, and server health for Jellyfin admins on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same security monitoring experience for Emby servers.* --- ## Emby Metadata Guide (2026): Fix Wrong Posters, TMDB Matching, NFO Files, and Custom Artwork URL: https://jellywatch.app/blog/emby-metadata-guide-fix-wrong-posters-tmdb-nfo-2026 Published: 2026-04-15T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: emby, metadata, tmdb, nfo, artwork, posters, fix, guide, 2026, emby-metadata # Emby Metadata Guide (2026): Fix Wrong Posters, TMDB Matching & Custom Artwork Metadata is what transforms a folder of video files into a polished media library. When it goes wrong wrong posters, misidentified movies, missing episode descriptions the experience breaks down fast. This guide covers every method to fix, customize, and automate metadata in Emby in 2026. --- ## How Emby Fetches Metadata When you add media to a library, Emby: 1. Reads the **filename** to identify the title and year 2. Searches **TMDB** (movies) or **TVDB/TMDB** (TV shows) for a match 3. Downloads title, description, cast, ratings, posters, and backdrops 4. Stores everything in your config folder or alongside your media files The quality of this process depends entirely on your **file naming**. --- ## File Naming: The Foundation Emby is strict about naming. Follow these formats exactly: ### Movies ``` /media/movies/ Inception (2010)/ Inception (2010).mkv The Dark Knight (2008)/ The Dark Knight (2008).mkv ``` - Always include the **year in parentheses** - Put each movie in its own folder - Avoid special characters in filenames ### TV Shows ``` /media/tv/ Breaking Bad/ Season 01/ Breaking Bad - S01E01 - Pilot.mkv Breaking Bad - S01E02.mkv Season 02/ Breaking Bad - S02E01.mkv ``` - Use `S##E##` format for episodes - Season folders are optional but strongly recommended --- ## Fixing Wrong Metadata: Identify Feature When Emby picks the wrong movie or show: 1. Navigate to the item in Emby 2. Click the **three-dot menu** → **Edit** → **Identify** 3. Search by title, year, or TMDB/TVDB ID 4. Select the correct match 5. Emby re-fetches all metadata from the correct source ### Using TMDB/TVDB IDs for exact matching For ambiguous titles (remakes, foreign films), add the database ID to the folder name: ``` The Fly (1986) [tmdbid-4511]/ The Fly (1986).mkv ``` Emby reads the `[tmdbid-XXXX]` tag and matches exactly no guessing. --- ## NFO Files: Local Metadata Override NFO files let you store metadata locally alongside your media files. Emby reads them and uses them instead of (or in addition to) online sources. ### Movie NFO example Create `movie.nfo` in the movie folder: ```xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <movie> <title>Movie Name 2024 Your custom description here. 12345 Action Thriller Director Name 8.5 ``` ### TV Show NFO Create `tvshow.nfo` in the show root folder: ```xml Show Name 12345 Show description. ``` ### Enable NFO reading in Emby Dashboard → Libraries → [Library] → Edit → Metadata readers → enable **Nfo** Set NFO as the **first** reader to prioritize local data over online sources. --- ## Custom Artwork Emby supports local artwork files placed alongside your media. ### Supported artwork files | File | Purpose | |---|---| | `poster.jpg` | Movie/show poster | | `backdrop.jpg` | Background image | | `banner.jpg` | Wide banner | | `thumb.jpg` | Thumbnail | | `logo.png` | Transparent logo (ClearArt) | | `season01-poster.jpg` | Season-specific poster | Place these files in the same folder as your media. Emby detects them automatically on the next scan. ### Uploading artwork via the UI 1. Navigate to any item 2. Three-dot menu → **Edit** → **Images** 3. Upload a custom image or paste an image URL 4. Set as primary poster --- ## Bulk Metadata Management ### Refresh all metadata for a library 1. Dashboard → Libraries → [Library] → three-dot menu → **Refresh Metadata** 2. Choose: Replace all metadata / Replace missing only > **Warning:** "Replace all metadata" overwrites any manual edits. Use "Replace missing only" to preserve customizations. ### Lock metadata to prevent overwrites After manually fixing an item, lock it: 1. Edit the item → scroll to the **Lock** section 2. Toggle lock on each field you want to preserve 3. Locked fields are never overwritten by automatic refreshes --- ## Metadata Providers: Configuration Dashboard → Libraries → [Library] → Edit → Metadata providers ### Recommended order for movies 1. **TMDB** (primary best coverage and artwork) 2. **OMDB** (secondary adds Rotten Tomatoes scores) 3. **Nfo** (local override) ### Recommended order for TV shows 1. **TVDB** (primary best episode data) 2. **TMDB** (secondary better artwork) 3. **Nfo** (local override) --- ## Fixing Common Metadata Issues | Issue | Cause | Fix | |---|---|---| | Wrong movie matched | Ambiguous title | Use `[tmdbid-XXXX]` in folder name | | Missing episode info | Wrong naming format | Rename to `S##E##` format | | Poster not updating | Metadata locked | Unlock the image field | | Foreign film wrong language | TMDB language setting | Set preferred metadata language in library settings | | Anime wrong match | TVDB vs AniDB conflict | Use AniDB plugin for anime libraries | | Artwork blurry | Low-res source | Upload custom high-res artwork manually | | Metadata reverts after scan | Not locked | Lock fields after manual edits | --- ## Automating Metadata with Kometa **Kometa** (formerly Plex Meta Manager) supports Emby and can: - Apply custom collections automatically (Marvel, DC, Best of 2024) - Set custom posters from MDBList or TMDB - Add overlays (4K badge, HDR label, ratings) - Sync ratings from Trakt, IMDb, and Letterboxd ```yaml # kometa config.yml snippet for Emby libraries: Movies: metadata_path: - pmm: basic - pmm: imdb overlay_path: - pmm: resolution - pmm: ratings ``` --- ## Metadata for Anime Libraries Anime metadata is notoriously tricky. Emby handles it better with the right plugins: - **AniDB plugin** most accurate anime identification - **AniList plugin** good for seasonal anime - **MyAnimeList plugin** popular community ratings For anime, use absolute episode numbering and let the AniDB plugin handle matching. --- ## FAQ **Where does Emby store metadata?** In your config folder (Docker: `/config/metadata/`) or alongside media files if you enable "Save artwork and metadata into media folders" in library settings. **Can I use both NFO files and TMDB?** Yes. Configure the provider order NFO first means local data takes priority, TMDB fills in missing fields. **How do I fix metadata for an entire season at once?** Navigate to the season → three-dot menu → Refresh Metadata → applies to all episodes in that season. **Does refreshing metadata reset watch history?** No. Watch history is stored separately from metadata. **Why do my custom posters keep getting replaced?** You need to lock the image field after uploading. Edit the item → Images → lock the poster. --- ## Monitor Your Emby Server After Metadata Scans Large metadata refreshes can spike CPU and RAM especially when fetching artwork for thousands of items simultaneously. **EmbyWatch** lets you monitor your server during scans: - Real-time CPU and RAM usage - Active session tracking (ensure streams are not affected during scans) - Push notifications if the server becomes unresponsive - Schedule scans during off-peak hours from the dashboard --- > **Your Emby library looks perfect now monitor who is watching it.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) real-time server monitoring, session tracking, and push notifications for Emby admins on Android. *Also running Jellyfin? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) the same complete monitoring experience for Jellyfin.* --- ## Jellyfin Full Automation Guide (2026): Radarr, Sonarr, Bazarr, Jellyseerr From Request to Stream URL: https://jellywatch.app/blog/jellyfin-full-automation-guide-radarr-sonarr-bazarr-jellyseerr-2026 Published: 2026-04-15T13:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, automation, radarr, sonarr, bazarr, jellyseerr, prowlarr, qbittorrent, docker, guide, 2026 # Jellyfin Full Automation Guide (2026): Radarr, Sonarr, Bazarr & Jellyseerr A manual media server means you download files, rename them, move them, and refresh your library by hand. A fully automated stack means a user requests a movie, and it appears in Jellyfin subtitles included without you touching anything. This guide builds that stack from scratch. --- ## The Automation Stack ``` User request (Jellyseerr) → Radarr / Sonarr (find & grab) → qBittorrent (download) → Bazarr (subtitles) → Jellyfin (serve) ``` | Tool | Role | |---|---| | **Jellyseerr** | Users request movies and TV shows | | **Radarr** | Monitors and grabs movies automatically | | **Sonarr** | Monitors and grabs TV shows automatically | | **Prowlarr** | Manages all indexers in one place | | **qBittorrent** | Downloads the files | | **Bazarr** | Downloads subtitles automatically | | **Jellyfin** | Serves everything to your users | --- ## Docker Compose: Full Stack Create `~/automation/docker-compose.yml`: ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: host volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 restart: unless-stopped jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr environment: - LOG_LEVEL=info - TZ=Europe/Paris volumes: - ./jellyseerr/config:/app/config ports: - 5055:5055 restart: unless-stopped radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./radarr/config:/config - /mnt/media/movies:/movies - /mnt/downloads:/downloads ports: - 7878:7878 restart: unless-stopped sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./sonarr/config:/config - /mnt/media/tv:/tv - /mnt/downloads:/downloads ports: - 8989:8989 restart: unless-stopped prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./prowlarr/config:/config ports: - 9696:9696 restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - WEBUI_PORT=8080 volumes: - ./qbittorrent/config:/config - /mnt/downloads:/downloads ports: - 8080:8080 - 6881:6881 - 6881:6881/udp restart: unless-stopped bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./bazarr/config:/config - /mnt/media/movies:/movies - /mnt/media/tv:/tv ports: - 6767:6767 restart: unless-stopped ``` ```bash docker compose up -d ``` > **Critical:** All containers that handle media files must share the same `/mnt/downloads` and `/mnt/media` paths. This enables hardlinks files exist in both locations without doubling storage. --- ## Step 1: Configure Prowlarr (Indexers) Prowlarr manages all your indexers in one place and syncs them to Radarr and Sonarr automatically. 1. Open `http://your-server:9696` 2. Indexers → Add Indexer → search for your preferred trackers 3. Settings → Apps → Add Application: - Add **Radarr** (URL: `http://radarr:7878`, API key from Radarr → Settings → General) - Add **Sonarr** (URL: `http://sonarr:8989`, API key from Sonarr → Settings → General) 4. Click **Sync App Indexers** From now on, add indexers only in Prowlarr they sync everywhere automatically. --- ## Step 2: Configure qBittorrent 1. Open `http://your-server:8080` 2. Default login: `admin` / `adminadmin` **change this immediately** 3. Tools → Options → Downloads: - Default save path: `/downloads/complete` - Keep incomplete in: `/downloads/incomplete` 4. Tools → Options → Web UI → change username and password --- ## Step 3: Configure Radarr (Movies) 1. Open `http://your-server:7878` 2. Settings → Download Clients → Add → **qBittorrent**: - Host: `qbittorrent`, Port: `8080` - Username / Password: your qBittorrent credentials - Category: `radarr` 3. Settings → Media Management → Root Folders → Add `/movies` 4. Settings → Media Management → enable **Rename Movies** 5. Naming format (recommended): ``` {Movie Title} ({Release Year})/{Movie Title} ({Release Year}) ``` 6. Settings → Connect → Add → **Jellyfin**: - Host: `localhost` (or your server IP), Port: `8096` - API Key: from Jellyfin Dashboard → API Keys Now when Radarr imports a movie, Jellyfin refreshes automatically. --- ## Step 4: Configure Sonarr (TV Shows) Same process as Radarr: 1. Open `http://your-server:8989` 2. Settings → Download Clients → Add → **qBittorrent** (category: `sonarr`) 3. Settings → Media Management → Root Folders → Add `/tv` 4. Settings → Media Management → enable **Rename Episodes** 5. Naming format (recommended): ``` {Series Title}/Season {season:00}/{Series Title} - S{season:00}E{episode:00} - {Episode Title} ``` 6. Settings → Connect → Add → **Jellyfin** --- ## Step 5: Configure Bazarr (Subtitles) Bazarr automatically downloads subtitles for every movie and episode in your library. 1. Open `http://your-server:6767` 2. Settings → Providers → Add your subtitle providers: - **OpenSubtitles.com** (requires free account + API key) - **Addic7ed** (best for TV shows) - **Podnapisi** (good European language coverage) 3. Settings → Languages → Add your desired languages (e.g., English, French) 4. Settings → Radarr: - URL: `http://radarr:7878` - API Key: from Radarr → Settings → General 5. Settings → Sonarr: - URL: `http://sonarr:8989` - API Key: from Sonarr → Settings → General 6. Bazarr → Movies / Series → **Scan All** to download missing subtitles ### Bazarr best practices - Set a **score threshold** of 90+ to avoid bad matches - Enable **subtitle sync** to fix timing offsets automatically - Schedule scans at 3 AM to avoid impacting streaming performance --- ## Step 6: Configure Jellyseerr (User Requests) Jellyseerr gives your users a Netflix-like interface to request new content. 1. Open `http://your-server:5055` 2. Complete the setup wizard: - Connect to your Jellyfin server - Connect to Radarr (URL: `http://radarr:7878`, API key, root folder: `/movies`) - Connect to Sonarr (URL: `http://sonarr:8989`, API key, root folder: `/tv`) 3. Settings → Users → configure who can request and how many requests per week ### The request workflow 1. User searches for a movie in Jellyseerr 2. User clicks **Request** 3. Jellyseerr sends the request to Radarr/Sonarr 4. Radarr/Sonarr finds and grabs the file via Prowlarr 5. qBittorrent downloads it 6. Radarr/Sonarr imports and renames the file 7. Bazarr downloads subtitles 8. Jellyfin library refreshes automatically 9. User gets a notification: content is available The entire process is hands-free. --- ## File Naming: Why It Matters Jellyfin matches metadata from TMDB/TVDB based on filenames. Wrong naming = wrong metadata. **Movies:** ``` /mnt/media/movies/ The Dark Knight (2008)/ The Dark Knight (2008).mkv ``` **TV Shows:** ``` /mnt/media/tv/ Breaking Bad/ Season 01/ Breaking Bad - S01E01 - Pilot.mkv ``` Radarr and Sonarr handle renaming automatically when configured correctly. --- ## Quality Profiles: TRaSH Guides For the best quality settings, use **TRaSH Guides** with **Recyclarr** to sync community-tested quality profiles to Radarr and Sonarr automatically. ```bash docker run --rm -v ./recyclarr/config:/config \ ghcr.io/recyclarr/recyclarr:latest sync ``` See [trash-guides.info](https://trash-guides.info) for the full configuration. --- ## Automation Checklist | Step | Done | |---|---| | Prowlarr indexers configured | ☐ | | Prowlarr synced to Radarr + Sonarr | ☐ | | qBittorrent credentials changed | ☐ | | Radarr connected to qBittorrent | ☐ | | Radarr connected to Jellyfin | ☐ | | Sonarr connected to qBittorrent | ☐ | | Sonarr connected to Jellyfin | ☐ | | Bazarr connected to Radarr + Sonarr | ☐ | | Jellyseerr connected to Jellyfin + Radarr + Sonarr | ☐ | | Test: request a movie end-to-end | ☐ | --- ## Manage Your Automation Stack from Your Phone Once your stack is running, you want to manage it without opening five browser tabs. **JellyWatch** consolidates everything into one Android app: - Approve or reject Jellyseerr requests with one tap - Monitor Radarr and Sonarr download queues - See active Jellyfin sessions in real time - Get push notifications when new content is available - Check server health while your automation runs in the background --- > **Your automation stack is live manage it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) Jellyfin, Radarr, Sonarr, Jellyseerr, and Bazarr monitoring in one Android app. --- ## Jellyfin Custom CSS 2026: Ultrachromic, KefinTweaks, Netflix Theme & 15+ Snippets (Complete Guide) URL: https://jellywatch.app/blog/jellyfin-custom-css-snippets-netflix-theme-guide-2026 Published: 2026-04-15T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, custom-css, themes, netflix-theme, jellyflix, skin, ultrachromic, monochrome, css-snippets, 2026 # Jellyfin Custom CSS Guide (2026): Netflix Theme, Snippets & Skin Customization Jellyfin's default interface is clean and functional but with a few lines of CSS, you can transform it into something that looks like Netflix, Disney+, or a completely custom streaming platform. This guide covers every method: the Skin Manager plugin for one-click themes, manual CSS injection for precise control, and 15+ ready-to-use snippets you can paste directly into your dashboard. --- ## How Jellyfin CSS Customization Works Jellyfin lets you inject custom CSS directly from the admin dashboard. The CSS applies globally to all users on your server no plugin required for basic customization. **Two methods:** 1. **Skin Manager plugin** one-click theme installer (recommended for full themes) 2. **Dashboard Custom CSS** paste CSS directly (recommended for tweaks and snippets) Both methods can be used simultaneously. The Skin Manager applies a base theme; your dashboard CSS adds overrides on top. --- ## Method 1: Skin Manager Plugin (One-Click Themes) The Skin Manager plugin gives you a graphical interface to install and switch community themes without touching CSS manually. ### Install Skin Manager 1. Dashboard → Plugins → Repositories → Add: - Name: `Awesome Jellyfin` - URL: `https://raw.githubusercontent.com/awesome-jellyfin/awesome-jellyfin/main/catalog.json` 2. Dashboard → Plugins → Catalog → search **Skin Manager** → Install 3. Restart Jellyfin ### Add theme repositories Open Dashboard → Skin Manager → Add Repository: | Theme | Repository URL | |---|---| | **Ultrachromic** | `https://raw.githubusercontent.com/CTalvio/Ultrachromic/main/skin.json` | | **JellyFlix (Netflix)** | `https://raw.githubusercontent.com/prayag17/JellyFlix/master/skin.json` | | **Monochrome** | `https://raw.githubusercontent.com/CTalvio/Monochromic/main/skin.json` | | **Finnergie** | `https://raw.githubusercontent.com/loof2736/scyfin/master/skin.json` | Click **Apply** on any theme it takes effect immediately, no restart needed. --- ## Method 2: Manual CSS Injection For precise control or small tweaks, inject CSS directly: **Dashboard → General → Custom CSS Code → paste your CSS → Save** Changes apply instantly on the next page load. --- ## The Best Jellyfin Themes in 2026 ### JellyFlix The Netflix Look The most popular Jellyfin theme. Red accents, bold typography, full-width hero banners your library feels like Netflix. **Install via Skin Manager** or paste the CSS from [github.com/prayag17/JellyFlix](https://github.com/prayag17/JellyFlix). Key features: - Netflix-style hero section on the home page - Red `#E50914` primary color - Improved card hover effects with smooth animations - Cleaner top navigation bar ### Ultrachromic Vibrant and Cinematic The most actively maintained community theme. Dark background, vivid accent colors, cinematic poster display. Available in multiple color variants: Default, Colorful, Monochrome, and more. **Install via Skin Manager** → search Ultrachromic. ### Monochrome Minimal OLED Pure black backgrounds, no color distractions. Perfect for OLED displays and users who want content to take center stage. **Install via Skin Manager** → search Monochrome. ### Finnergie (Scyfin) Modern Cards A light/dark theme with a modern card-based layout. Good for users who prefer a brighter, more spacious interface. --- ## 15+ Ready-to-Use CSS Snippets Paste any of these into **Dashboard → General → Custom CSS Code**. ### Change the accent color ```css :root { --accent: #E50914; /* Netflix red */ } ``` Other popular colors: - `#0071EB` Disney+ blue - `#1DB954` Spotify green - `#FF6B35` warm orange ### Hide the Live TV tab ```css .lnkMyMediaTab[href^="livetv"] { display: none !important; } ``` ### Hide the Browse tab ```css .lnkMyMediaTab[href^="explore"] { display: none !important; } ``` ### Make posters larger on the home screen ```css .card { font-size: 1.1vw !important; } ``` ### Increase backdrop blur intensity ```css .backdropContainer { filter: blur(20px) !important; } ``` ### Round card corners more aggressively ```css .card .cardContent { border-radius: 12px !important; } ``` ### Hide the Jellyfin logo in the top bar ```css .headerLogo { display: none !important; } ``` ### Dark scrollbar ```css ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #111; } ::-webkit-scrollbar-thumb { background: #444; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #666; } ``` ### OLED pure black background ```css .backgroundContainer, .backdropContainer, body { background: #000000 !important; } ``` ### Compact view smaller cards ```css .card { font-size: 0.8vw !important; } ``` ### Highlight currently playing item ```css .card.playing .cardContent { border: 2px solid var(--accent) !important; box-shadow: 0 0 12px var(--accent) !important; } ``` ### Make the sidebar always visible ```css .mainDrawer { transform: none !important; visibility: visible !important; } ``` --- ## Combining Skin Manager + Custom CSS The most powerful setup: apply a full theme via Skin Manager, then add your own tweaks on top. **Example:** Apply Ultrachromic via Skin Manager, then add this to Dashboard CSS to change the accent to blue: ```css :root { --accent: #0071EB; } ``` Your custom CSS always overrides the theme no conflicts. --- ## Per-User CSS (Advanced) Want different themes for different users? Each user can set their own CSS: **User Settings → Display → Custom CSS** This overrides the server-wide CSS for that user only. --- ## CSS Troubleshooting **Changes not applying?** - Hard refresh: `Ctrl + Shift + R` (Windows/Linux) or `Cmd + Shift + R` (Mac) - Clear browser cache - Check for syntax errors a missing `;` or `}` breaks all CSS below it **Theme looks broken after Jellyfin update?** - Community themes may need updates after major Jellyfin releases - Check the theme's GitHub repository for compatibility notes **CSS works in browser but not on TV app?** - Custom CSS only applies to the Jellyfin web interface - Android TV, iOS, and other native clients do not load web CSS --- ## Theme Comparison | Theme | Style | Best for | OLED | Install | |---|---|---|---|---| | JellyFlix | Netflix-like | Family servers | No | Skin Manager | | Ultrachromic | Vibrant, cinematic | Shared servers | No | Skin Manager | | Monochrome | Minimal, dark | Solo / OLED | Yes | Skin Manager | | Finnergie | Modern cards | Bright preference | No | Skin Manager | | Custom CSS | Anything | Power users | Yes | Dashboard | --- > **Your Jellyfin looks great now monitor who is enjoying it.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) real-time session monitoring, server health, and push notifications for Jellyfin admins on Android. --- ## How to Install an Emby Server in 2026: The Complete Step-by-Step Guide (Docker, Linux, Windows) URL: https://jellywatch.app/blog/how-to-install-emby-server-complete-guide-2026 Published: 2026-04-15T12:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: emby, installation, docker, guide, setup, hardware-transcoding, premiere, 2026, self-hosting # How to Install an Emby Server in 2026: Complete Guide Emby is a powerful self-hosted media server with a polished interface, strong client support, and a mature feature set. This guide covers the complete installation process in 2026 from Docker Compose to hardware transcoding and remote access. --- ## What You Need Before Starting - A machine running **Ubuntu 22.04 / Debian 12** (or Windows 10/11) - **Docker Engine** and **Docker Compose plugin** installed - At least **4 GB RAM**, a **64-bit CPU** - Your media files on the host (e.g., `/mnt/media`) - An **Emby Premiere** license for hardware transcoding and full mobile access (optional for basic setup) ### Install Docker (Linux) ```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker ``` --- ## Method 1: Docker Compose (Recommended) Docker is the cleanest way to run Emby easy updates, isolated environment, and consistent behavior across any Linux host. ### Project structure ``` ~/emby/ docker-compose.yml config/ ← Emby config & metadata (use SSD) cache/ ← Transcoding temp files ``` ```bash mkdir -p ~/emby && cd ~/emby ``` ### docker-compose.yml ```yaml services: emby: image: emby/embyserver:latest container_name: emby environment: - UID=1000 - GID=1000 - GIDLIST=1000 volumes: - ./config:/config - /mnt/media:/media:ro ports: - "8096:8096" - "8920:8920" restart: unless-stopped ``` > **Port 8096** is HTTP, **port 8920** is HTTPS (with a self-signed certificate). For production, use a reverse proxy instead of exposing 8920 directly. ### Start Emby ```bash docker compose up -d ``` Open `http://YOUR_SERVER_IP:8096` to complete the setup wizard. --- ## Method 2: Docker Compose with Hardware Transcoding Hardware transcoding requires **Emby Premiere**. Once activated, it dramatically reduces CPU load during playback. ### Intel Quick Sync (QSV) For Intel CPUs with integrated graphics (N100, i3/i5/i7 12th gen+): ```bash # Verify the render device exists ls /dev/dri # Expected: card0 renderD128 ``` ```yaml services: emby: image: emby/embyserver:latest container_name: emby environment: - UID=1000 - GID=1000 - GIDLIST=1000,109 # 109 = render group volumes: - ./config:/config - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 ports: - "8096:8096" restart: unless-stopped ``` > Check the render group ID on your system: `getent group render | cut -d: -f3` ### NVIDIA NVENC For NVIDIA GPUs: ```yaml services: emby: image: emby/embyserver:latest container_name: emby runtime: nvidia environment: - UID=1000 - GID=1000 - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility volumes: - ./config:/config - /mnt/media:/media:ro ports: - "8096:8096" restart: unless-stopped ``` ### Enable hardware transcoding in Emby 1. Open Dashboard → **Transcoding** 2. Set **Hardware acceleration** to **Intel QuickSync Video** (or NVENC/VAAPI) 3. Enable the codecs you want to accelerate (H.264, H.265, VP9) 4. Save > **Emby Premiere is required** to use hardware transcoding. Activate it from Dashboard → **Emby Premiere** → enter your license key. --- ## Method 3: Full Stack with Caddy Reverse Proxy For HTTPS remote access with automatic SSL certificates: ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped emby: image: emby/embyserver:latest container_name: emby environment: - UID=1000 - GID=1000 volumes: - ./config:/config - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 restart: unless-stopped volumes: caddy_data: ``` **Caddyfile:** ``` emby.yourdomain.com { reverse_proxy emby:8096 } ``` Point your domain DNS A record to your server IP, then: ```bash docker compose up -d ``` Caddy handles SSL automatically via Let's Encrypt. --- ## Method 4: Native Linux Installation (APT) For a bare-metal installation without Docker: ```bash # Download the latest .deb package from emby.media/downloads wget https://github.com/MediaBrowser/Emby.Releases/releases/latest/download/emby-server-deb_amd64.deb # Install sudo dpkg -i emby-server-deb_amd64.deb # Enable and start sudo systemctl enable --now emby-server # Check status sudo systemctl status emby-server ``` Access at `http://localhost:8096`. > For hardware transcoding on bare metal, add the `emby` user to the `render` and `video` groups: > ```bash > sudo usermod -aG render,video emby > sudo systemctl restart emby-server > ``` --- ## Method 5: Windows Installation 1. Download the Windows installer from [emby.media/downloads](https://emby.media/downloads/) 2. Run the `.exe` Emby installs as a Windows Service 3. Access at `http://localhost:8096` For hardware transcoding on Windows, select **DXVA2** or **D3D11VA** in the transcoding settings (requires Emby Premiere). --- ## First-Run Setup Wizard Open `http://YOUR_IP:8096` and follow the wizard: ### 1. Create your admin account Choose a strong username and password. ### 2. Add your media libraries Click **Add Media Library** for each content type: | Content type | Example path | |---|---| | Movies | `/media/movies` | | TV Shows | `/media/tv` | | Music | `/media/music` | | Photos | `/media/photos` | **File naming is critical** for correct metadata matching: ``` /media/movies/ Inception (2010)/ Inception (2010).mkv /media/tv/ The Office/ Season 01/ The Office - S01E01.mkv ``` ### 3. Configure metadata providers Emby uses TMDB for movies and TVDB for TV shows by default. Set your preferred metadata language in **Dashboard → Libraries → [Library] → Metadata language**. ### 4. Activate Emby Premiere (optional) Dashboard → **Emby Premiere** → enter your license key. Premiere unlocks: - Hardware transcoding - Full mobile app access - Live TV and DVR - Offline sync - Backup and restore --- ## Emby Premiere Pricing in 2026 | Plan | Price | |---|---| | Monthly | ~$4.99 / month | | Yearly | ~$54 / year | | Lifetime | ~$119 one-time | For long-term self-hosters, the **lifetime plan** is the best value it pays for itself in under 2 years. --- ## Post-Installation Checklist | Task | Why | |---|---| | Activate Emby Premiere | Unlock hardware transcoding and mobile apps | | Enable hardware transcoding | Smooth 4K, low CPU | | Set up a reverse proxy (Caddy) | HTTPS for remote access | | Configure user accounts | Control library access per user | | Install Trakt plugin | Sync watch history externally | | Install OpenSubtitles plugin | Automatic subtitle downloads | | Set up automated backups | Protect your config | | Install EmbyWatch on Android | Monitor from your phone | --- ## Updating Emby ### Docker ```bash docker compose pull docker compose up -d ``` ### APT ```bash sudo apt update && sudo apt upgrade emby-server ``` > Always back up your `./config` folder before upgrading. --- ## Troubleshooting | Problem | Fix | |---|---| | Cannot access port 8096 | Check firewall: `sudo ufw allow 8096/tcp` | | Hardware transcoding not working | Verify `/dev/dri` is mapped, Premiere is active, and group permissions are correct | | Library scan stuck | Check file permissions Emby user must be able to read media | | Metadata wrong | Use **Identify** to manually match TMDB/TVDB ID | | Mobile app limited | Emby Premiere required for full mobile access | | High CPU during playback | Enable hardware transcoding (requires Premiere) | --- ## Monitor Your Emby Server Once your server is running, you need real-time visibility into active streams, CPU load, and transcoding sessions. **EmbyWatch** is the dedicated Android admin app for Emby: - Real-time session monitoring - Transcoding diagnostics - CPU, RAM, and storage alerts - Push notifications for new sessions and server events - Radarr, Sonarr, and Seerr integration - Android home screen widget --- > **Your Emby server is live now keep it under control.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) the essential Android companion for every Emby admin. *Also running Jellyfin? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) the same monitoring experience built for Jellyfin.* --- ## How to Install Jellyfin in 2026: Docker Setup Guide (5 Minutes, Zero to Streaming) URL: https://jellywatch.app/blog/how-to-install-jellyfin-server-complete-guide-2026 Published: 2026-04-15T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, installation, docker, guide, setup, hardware-transcoding, 2026, self-hosting # How to Install a Jellyfin Server in 2026: Complete Guide Jellyfin is the leading free, open-source media server in 2026. No subscriptions, no accounts, no telemetry just your media, your rules. This guide covers the fastest and most reliable installation method: **Docker Compose on Linux**, with optional sections for Windows and bare-metal Linux. --- ## Prerequisites Before you start, make sure you have: - A machine running **Ubuntu 22.04 / Debian 12** (or Windows 10/11 for the Windows section) - **Docker Engine** and **Docker Compose plugin** installed - At least **4 GB RAM** and a **64-bit CPU** - Your media files accessible on the host (e.g., `/mnt/media`) ### Install Docker (Linux) ```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker ``` Verify: ```bash docker --version docker compose version ``` --- ## Method 1: Docker Compose (Recommended) Docker is the officially recommended deployment method. It isolates Jellyfin, makes updates trivial, and works identically on any Linux host. ### Project structure ``` ~/jellyfin/ docker-compose.yml config/ ← Jellyfin config & metadata (use SSD) cache/ ← Transcoding cache ``` ```bash mkdir -p ~/jellyfin && cd ~/jellyfin ``` ### docker-compose.yml ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: "1000:1000" network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped environment: - JELLYFIN_PublishedServerUrl=http://YOUR_SERVER_IP:8096 ``` > **Note:** `network_mode: host` is recommended on Linux for best performance and automatic device discovery. On Windows/macOS, replace it with `ports: - "8096:8096"`. ### Start Jellyfin ```bash docker compose up -d ``` Jellyfin is now running at `http://YOUR_SERVER_IP:8096`. Open it in your browser to complete the setup wizard. --- ## Method 2: Docker Compose with Hardware Transcoding (Intel QSV) If your server has an Intel CPU with integrated graphics (N100, i3/i5/i7 12th gen+), enable hardware transcoding for smooth 4K streams at minimal CPU cost. ### Check your GPU is available ```bash ls /dev/dri # Should show: card0 renderD128 ``` ### Updated docker-compose.yml ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: "1000:1000" network_mode: host volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 group_add: - "109" # render group check with: getent group render restart: unless-stopped ``` ### Enable QSV in Jellyfin 1. Open Dashboard → **Playback → Transcoding** 2. Set **Hardware acceleration** to **Intel QuickSync (QSV)** 3. Enable **HEVC**, **H.264**, **VP9**, **AV1** (decode) 4. Enable **Hardware Tone Mapping** (for HDR → SDR) 5. Save and restart the container ### NVIDIA NVENC For NVIDIA GPUs, add the NVIDIA runtime: ```yaml runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility ``` Then select **NVIDIA NVENC** in the transcoding settings. --- ## Method 3: Full Stack with Caddy Reverse Proxy For remote access with automatic HTTPS, add Caddy to your Compose file. ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro devices: - /dev/dri/renderD128:/dev/dri/renderD128 restart: unless-stopped volumes: caddy_data: ``` **Caddyfile:** ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } ``` Point your domain DNS A record to your server IP, then: ```bash docker compose up -d ``` Caddy automatically obtains and renews a Let's Encrypt SSL certificate. --- ## Method 4: Native Linux Installation (APT) If you prefer running Jellyfin directly on the host without Docker: ```bash # Add the Jellyfin repository curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash # Enable and start sudo systemctl enable --now jellyfin # Check status sudo systemctl status jellyfin ``` Access at `http://localhost:8096`. > **Tip:** For hardware transcoding on bare metal, add the `jellyfin` user to the `render` and `video` groups: > ```bash > sudo usermod -aG render,video jellyfin > sudo systemctl restart jellyfin > ``` --- ## Method 5: Windows Installation 1. Download the Windows installer from [jellyfin.org/downloads](https://jellyfin.org/downloads/) 2. Run the `.exe` Jellyfin installs as a Windows Service 3. Access at `http://localhost:8096` For hardware transcoding on Windows, select **DXVA2** or **D3D11VA** in the transcoding settings. > **Note:** Linux/Docker delivers better hardware transcoding performance and stability than Windows. Use Windows only if it is your only option. --- ## First-Run Setup Wizard Once Jellyfin is running, open `http://YOUR_IP:8096` and follow the wizard: ### 1. Create your admin account Choose a strong username and password. This is your server admin never share it. ### 2. Add your media libraries Click **Add Media Library** for each content type: | Content type | Example path | |---|---| | Movies | `/media/movies` | | TV Shows | `/media/tv` | | Music | `/media/music` | | Photos | `/media/photos` | **Naming conventions matter.** Jellyfin matches metadata from TMDB/TVDB based on filenames: ``` /media/movies/ The Dark Knight (2008)/ The Dark Knight (2008).mkv /media/tv/ Breaking Bad/ Season 01/ Breaking Bad - S01E01.mkv ``` ### 3. Configure metadata language Set your preferred metadata language in **Dashboard → Libraries → [Library] → Metadata language**. ### 4. Enable hardware transcoding Dashboard → Playback → Transcoding → select your GPU type. --- ## Post-Installation Checklist | Task | Why | |---|---| | Enable hardware transcoding | Smooth 4K, low CPU | | Set up a reverse proxy (Caddy/Nginx) | HTTPS for remote access | | Configure Fail2Ban | Block brute-force logins | | Install Intro Skipper plugin | Netflix-style skip buttons | | Install Playback Reporting plugin | Usage statistics | | Set up automated backups | Protect your config | | Install JellyWatch on Android | Monitor from your phone | --- ## Updating Jellyfin ### Docker ```bash docker compose pull docker compose up -d ``` ### APT ```bash sudo apt update && sudo apt upgrade jellyfin ``` > **Always back up `/config` before a major version upgrade.** Jellyfin 10.11 introduced a database migration that is irreversible. --- ## Troubleshooting | Problem | Fix | |---|---| | Cannot access port 8096 | Check firewall: `sudo ufw allow 8096/tcp` | | Hardware transcoding not working | Verify `/dev/dri` is mapped and group permissions are correct | | Library scan stuck | Check file permissions Jellyfin user must be able to read media | | Metadata wrong | Use the **Identify** feature to manually match TMDB/TVDB ID | | High CPU at idle | Disable chapter image extraction or reschedule background tasks | --- ## Monitor Your Jellyfin Server Once your server is live, you need visibility into what is happening active streams, CPU usage, transcoding load, and failed logins. **JellyWatch** is the dedicated Android admin app for Jellyfin: - Real-time session monitoring - Transcoding diagnostics (why is this stream buffering?) - CPU, RAM, and storage alerts - Push notifications for new sessions and server events - Radarr, Sonarr, and Jellyseerr integration - Android home screen widget --- > **Your Jellyfin server is live now keep it under control.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) the essential Android companion for every Jellyfin admin. *Questions? Join the community on [Discord](https://discord.com/invite/JRkt5U5uZs) or the [Jellyfin Forum](https://forum.jellyfin.org).* --- ## Jellyfin Is Dropping Version 10: Why the Next Release Will Be 12.0 and What It Means for You URL: https://jellywatch.app/blog/jellyfin-version-12-0-versioning-change-roadmap-2026 Published: 2026-04-09T10:00:00+00:00 Author: JellyWatch Team Category: Other Tags: jellyfin, 12.0, versioning, roadmap, state-of-the-fin, 2026, community, ef-core, postgresql # Jellyfin Is Dropping Version 10: The 12.0 Debate Explained In January 2026, the Jellyfin team dropped a quiet but significant announcement in their "State of the Fin" blog post: > "We are considering 'dropping' the major version 10, which would make the next release 12.0." For a project that has been on version 10.x since 2019, this is a meaningful shift. The announcement sparked immediate discussion on Hacker News, Lemmy, and the Jellyfin forum - with opinions ranging from enthusiastic support to confusion about why version 11 was being skipped entirely. This article explains what happened, why the team is considering this change, and what it means for the future of Jellyfin. --- ## Why Version 10 Has Lasted So Long Jellyfin launched in December 2018 as a fork of Emby. The first stable release was version 10.0.0 - inheriting Emby's versioning at the point of the fork. Every release since has been 10.x.y. This created an unusual situation: Jellyfin has shipped releases as significant as any "major version" in other software projects - complete UI rewrites, database overhauls, new codec support - all under the "10.x" label that implies incremental updates. The 10.11 release made this problem impossible to ignore. --- ## The 10.11 Versioning Problem When Jellyfin 10.11.0 shipped in October 2025, many users treated it as a routine minor update. The version bump from 10.10 to 10.11 looked small. The actual change - a complete database migration from raw SQLite to EF Core - was anything but small. Users who upgraded without backing up their configuration lost watch history. Libraries with unusual structures broke. Performance regressions hit large installations hard. The community feedback was consistent: the versioning did not communicate the risk level of the upgrade. A change this significant should have been labeled 11.0 at minimum - or even a new major version. From the State of the Fin: > "We received a substantial amount of feedback regarding our versioning scheme following the 10.11 release, particularly concerning the stability of what are perceived as 'minor' version updates." --- ## Why 12.0 and Not 11.0? This is the question that generated the most discussion on Hacker News and the Jellyfin forum. The answer is practical: Emby is currently on version 4.x. Plex has its own versioning. Jumping to 11.0 would still look like a minor increment to users familiar with other software. Jumping to 12.0 creates a clear break - it signals "this is a new era, not just the next point release." There is also a precedent in the open-source world. When projects make fundamental architectural changes, a major version bump communicates that clearly. Jellyfin 12.0 would be the first release where the version number itself tells users: *back up before upgrading, something significant changed.* Some community members on Hacker News pointed out that skipping 11 is unusual and could confuse users. The counter-argument: Jellyfin has been "version 10" for seven years. The number itself has lost meaning. A clean break to 12.0 is more honest than pretending 11.0 is a natural progression. --- ## What Is Planned for 12.0 Based on the State of the Fin and active development branches, the next major release is expected to include: ### New Web UI as Default The "Experimental" layout introduced in 10.11 - with a redesigned navigation, updated UI components, and CSS variable-based theming - will become the default for all non-TV devices. The legacy "Classic" layout will remain available but is no longer the primary interface. This is the most visible change for end users. The new UI is cleaner, faster to load, and significantly easier to theme. ### Theming Overhaul The CSS variable system introduced in the new web UI makes custom themes dramatically easier to create and maintain. Theme authors will have a stable API to target instead of overriding internal class names that change between releases. For server admins who use themes like Ultrachromic or JellyFlix, this means themes will be more reliable across updates. ### Performance Fixes for Large Libraries The client-side enumeration issues introduced in 10.11 - where large libraries caused 30+ second load times - are a priority fix for 12.0. The team is investigating ways to push filtering back to the database layer rather than loading entire datasets into memory. ### PostgreSQL Support (Roadmap) The EF Core migration in 10.11 was the prerequisite for external database support. PostgreSQL is on the roadmap for 12.0 or a subsequent release. This would allow Jellyfin to scale to much larger libraries and enable multi-instance setups with a shared database. ### Plugin API Updates Several plugin APIs are being updated to align with the new EF Core database architecture. Plugin authors will need to update their plugins for 12.0 compatibility - similar to the breaking changes that accompanied 10.11. --- ## The Community Reaction ### On Hacker News The State of the Fin post reached the Hacker News front page in January 2026. The discussion was largely positive, with several threads noting that Jellyfin's growth trajectory - from a niche Emby fork to the dominant self-hosted media server - mirrors other successful open-source projects that eventually outgrew their original versioning. One commenter noted that the 10.11 experience had pushed them to finally build a homelab, which then expanded into a full NAS and self-hosted cloud storage setup. The Jellyfin community's transparency about what went wrong - and what they were doing to fix it - was cited as a reason for trust rather than abandonment. ### On the Jellyfin Forum The versioning discussion on the forum was more mixed. Some users wanted 11.0 for continuity. Others supported 12.0 as a clean break. A vocal minority argued that version numbers do not matter - what matters is clear release notes and mandatory backup warnings. The team's response was measured: nothing is finalized, but the feedback from 10.11 made it clear that the current versioning scheme was not serving users well. --- ## What This Means for Jellyfin Admins ### Short term (now through 10.11.x) - Stay on the latest 10.11.x point release (10.11.7 as of April 2026) - Ensure your backup strategy is solid before any future upgrade - Monitor the GitHub releases page for 12.0 RC announcements ### When 12.0 arrives - Treat it as a major upgrade regardless of how smooth the migration looks - Back up your entire `/config` folder before upgrading - Wait for the first point release (12.0.1) before upgrading production servers - Check plugin compatibility - the API changes will break some plugins ### The bigger picture Jellyfin 12.0 represents the project's maturation from a scrappy Emby fork into a serious, architecturally sound media server platform. The EF Core foundation, the new web UI, and the potential PostgreSQL support are not incremental improvements - they are the infrastructure for the next decade of Jellyfin development. The versioning change is not just cosmetic. It is the project acknowledging that it has grown into something that deserves a number that reflects its ambition. --- ## Jellyfin Turns 7 December 2025 marked Jellyfin's 7th anniversary. From the State of the Fin: > "A lot has changed in 7 years, but we remain steadfast in our commitment to Open Source and to being the best personal media server out there." Seven years from a fork born out of frustration with Emby's closed-source pivot, Jellyfin now holds 51% of the self-hosted media server market among homelab users. The next seven years - starting with 12.0 - look even more interesting. --- > **Stay ahead of every Jellyfin update - monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, server health, and push notifications for Jellyfin admins on Android. --- ## Why Emby's Transcoding Engine Is Falling Behind Jellyfin in 2026: A Technical Deep Dive URL: https://jellywatch.app/blog/emby-transcoding-vs-jellyfin-2026-technical-deep-dive Published: 2026-04-08T14:00:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: emby, jellyfin, transcoding, comparison, hdr, tone-mapping, av1, 2026, community # Why Emby's Transcoding Engine Is Falling Behind Jellyfin in 2026 A thread posted on the Emby community forums in early 2026 sparked one of the most heated debates the self-hosting community has seen in years. The title was blunt: *"Hard comparison: Why is Emby's transcoding engine so far behind Jellyfin? (And why I'm switching back)"*. The author - a long-time Emby Premiere subscriber - had spent weeks running side-by-side tests. Their conclusion was stark: Jellyfin now outperforms Emby in almost every technical transcoding metric. This article breaks down the technical arguments, the community's response, and what it means for users deciding between the two platforms in 2026. --- ## The Core Claim The original post identified several specific areas where Jellyfin had pulled ahead: ### 1. HDR Tone Mapping Quality This is the most technically significant gap. When a client cannot display HDR content natively, the server must convert HDR to SDR - a process called tone mapping. Done poorly, it produces washed-out, grey-looking video. Jellyfin's tone mapping pipeline, particularly on Linux/Docker with Intel Quick Sync or NVIDIA NVENC, produces noticeably more accurate colors. The BT.2390 algorithm used by Jellyfin preserves highlight detail and shadow depth better than Emby's implementation. This gap had already been noted in the Emby community as early as 2024: > "In two areas [Jellyfin] is significantly better than Emby: transcoding and tone mapping. The tone mapping is also faster and noticeably visually better (more accurate)." ### 2. AV1 Codec Support Jellyfin added full AV1 hardware decode and encode support (on compatible GPUs) in version 10.10. Emby's AV1 support lags behind - particularly for hardware-accelerated AV1 encoding, which Jellyfin handles via Intel Arc, NVIDIA RTX 40-series, and AMD RDNA3. For users building future-proof libraries with AV1 content, this is a meaningful difference. ### 3. Transcoding to H.265 and AV1 Jellyfin can transcode and stream in H.265 and AV1 - meaning remote users on bandwidth-constrained connections get smaller, higher-quality streams. Emby's transcoding output options are more limited in this regard. ### 4. FFmpeg Version and Integration Jellyfin 10.11 ships with FFmpeg 7.1, bringing the latest codec improvements, better HDR handling, and improved subtitle rendering during hardware transcoding. Emby's FFmpeg integration has historically lagged behind Jellyfin's in adopting new FFmpeg capabilities. --- ## The Community Response The thread generated hundreds of replies across the Emby forums. The responses fell into predictable camps: ### The "Emby is still better overall" camp Long-time Emby users pushed back on the framing. Their arguments: - Emby's UI polish and client ecosystem remain superior for non-technical users - Emby's stability and support model (Premiere subscription = funded development) is more sustainable - Transcoding quality differences are marginal for most real-world use cases - Emby's WAF (Wife Acceptance Factor) is higher - it just works without tinkering ### The "Jellyfin has caught up" camp A significant portion of the thread agreed with the original poster's technical findings: > "The more I use JF for Android TV - the more I like it. Being honest here, I like it more than the Emby Android TV App. It is a modern-looking, functional version of that app." Several users noted that Jellyfin's Android TV client had surpassed Emby's in both visual design and functionality - a reversal from just two years prior. ### The "use both" pragmatists A third group pointed out that Jellyfin and Emby can coexist on the same server, pointing to the same media files. Some admins run Jellyfin for technical users who want maximum transcoding control, and Emby for family members who prefer its interface. --- ## What Emby Does Better Fairness requires acknowledging where Emby still leads: | Feature | Emby advantage | |---|---| | **Out-of-box experience** | Easier initial setup, more polished defaults | | **Official support** | Paid Premiere = funded development team | | **Live TV stability** | More mature IPTV and DVR implementation | | **Client breadth** | More official clients for niche platforms | | **Plugin stability** | Official plugins are more thoroughly tested | Emby Premiere also funds a dedicated development team - something Jellyfin, as a volunteer-only project, cannot match in terms of sustained engineering bandwidth. --- ## The Deeper Issue: Sustainable Development The most thoughtful replies in the thread moved beyond feature comparisons to the sustainability question. Jellyfin's transcoding improvements are impressive - but they come from volunteer contributors working in their spare time. The EF Core migration took six years of incremental volunteer effort. When a critical bug appears, fixes depend on contributors having free time. Emby's Premiere model funds a small but dedicated team. Updates are more predictable. Support is more responsive. For a home server that family members depend on, this reliability argument carries real weight. --- ## The Verdict in 2026 The honest answer is that the gap has narrowed dramatically: - **For transcoding quality and codec support**: Jellyfin leads, particularly on Linux/Docker - **For ease of use and client polish**: Emby still has an edge for non-technical users - **For cost**: Jellyfin wins unconditionally (free vs. ~$119 Premiere lifetime) - **For privacy**: Jellyfin wins (no external account required) - **For long-term stability**: Emby's funded model provides more predictable development The 2026 self-hosting community survey showing Jellyfin at 51% market share among homelab users reflects this shift. Technical users have largely moved to Jellyfin. Casual users and those who value polish and support remain on Emby or Plex. --- ## What This Means for EmbyWatch Users If you are running Emby and happy with it, there is no urgent reason to switch. Emby remains a capable, well-supported platform. But if transcoding quality - particularly HDR tone mapping for remote users - is a pain point, the community evidence suggests Jellyfin's pipeline is worth evaluating. Whichever platform you choose, monitoring your active sessions and transcoding load is essential for a well-run server. --- > **Running Emby or Jellyfin? Monitor your transcoding sessions in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) for Jellyfin - or [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) for Emby - and see exactly what your server is doing with every stream. --- ## Jellyfin 10.11 EF Core Migration: What Really Happened and What We Learned URL: https://jellywatch.app/blog/jellyfin-10-11-ef-core-migration-chaos-lessons-learned-2026 Published: 2026-04-07T09:00:00+00:00 Author: JellyWatch Team Category: Other Tags: jellyfin, 10.11, ef-core, database, migration, upgrade, performance, 2026 # Jellyfin 10.11 EF Core Migration: What Really Happened When Jellyfin 10.11.0 dropped in October 2025, it carried the biggest backend change in the project's history: a complete database overhaul replacing raw SQLite calls with Entity Framework Core (EF Core). The promise was faster queries, a unified database, and a path toward PostgreSQL support. What followed was one of the most turbulent upgrade cycles the Jellyfin community has ever experienced. This article documents what actually happened - based on hundreds of forum threads, GitHub issues, and the official "State of the Fin" post from January 2026 - and what every Jellyfin admin should know before upgrading. --- ## What Changed in 10.11 Prior to 10.11, Jellyfin used multiple SQLite database files: - `library.db` - all media metadata - `jellyfin.db` - users, authentication, settings - Several plugin-specific databases Version 10.11 consolidated everything into a **single `jellyfin.db`** managed by EF Core. This migration ran automatically on first startup - and for many users, it did not go smoothly. --- ## The Problems That Hit the Community ### 1. Migration Failures (GitHub #15027, #15060) The most severe issue: the migration process itself failed for a significant number of users. Common symptoms: - Server stuck at startup for hours with no progress - Log messages showing migration errors mid-process - Server refusing to start after a failed migration attempt - Database left in a partially migrated, corrupted state Users who had not backed up their config before upgrading lost their entire watch history and metadata. ### 2. Catastrophic Performance Regression Even for users who migrated successfully, the performance impact was severe: - **Collections library**: 10-15 seconds to load (previously instant) - **Large movie libraries**: 30-50 seconds on the home page - **Home Videos libraries with 16,000+ items**: would not load at all - **Library scans**: caused the entire UI to become unresponsive One user on the forum described it bluntly: > "10.10 and under were fast and awesome. Once my install was corrupted by the 10.11 upgrade I had to wipe and do a fresh install at 10.11.1 and it's working again but so slow and laggy - it literally breaks the UI as in it will not load until a scan is done." The root cause was **client-side enumeration** - EF Core was loading entire datasets into memory and filtering them in application code rather than pushing filters down to the database engine. For large libraries, this meant loading tens of thousands of records into RAM on every page request. ### 3. Broken Home Videos Library Type The "Home Videos" library type was effectively broken in 10.11.0 and 10.11.2: - Infinite loading or no load at all - Items not displaying correctly - No shuffle or play-all option - Subfolders not shown when nested folders were used For users with large personal video archives, this was a dealbreaker. Several reverted to 10.10.7. ### 4. Slow Playlist Loading Users with large playlists (500+ items) reported that playlist loading degraded from under a second to 30+ seconds. The issue was consistent across all 10.11.x releases through early 2026. --- ## The Team's Response To their credit, the Jellyfin team moved quickly. From the official State of the Fin (January 2026): > "We have been moving quickly to address these issues, delivering four additional point releases with over 100 changes since the initial 10.11.0 release." By 10.11.5 (March 2026), most migration and general bugs were resolved. Performance issues caused by client-side enumeration were still being investigated. ### Timeline of fixes | Version | Key fixes | |---|---| | 10.11.1 | Migration bug fixes, startup failures | | 10.11.2 | Performance improvements, partial Home Videos fix | | 10.11.3 | General stability, watched status fixes | | 10.11.4 | Metadata display, music issues | | 10.11.5 | Xbox TV mode, additional stability | | 10.11.7 | 4 critical security fixes + 25 bug fixes | --- ## Why Did This Happen? The Jellyfin team acknowledged the situation directly. The EF Core migration had been in development since 2019 - six years of incremental work by volunteer contributors. The final push involved: - 6+ months of active development - 6 months of release candidate testing - A limited pool of RC testers compared to the full user base The scale of the change meant that edge cases only surfaced at production scale. Libraries with unusual structures (deeply nested folders, Home Videos with thousands of items, large playlists) hit code paths that RC testing had not covered. --- ## The Versioning Debate The 10.11 release triggered a broader community discussion about Jellyfin's versioning scheme. Many users expected a "minor" version bump (10.10 → 10.11) to be a safe, incremental update. Instead, it was the most disruptive release in years. From the State of the Fin: > "We received a substantial amount of feedback regarding our versioning scheme following the 10.11 release, particularly concerning the stability of what are perceived as 'minor' version updates. This has prompted internal discussions about potentially revising our versioning scheme in the next major release. While nothing has been finalized yet, we are considering 'dropping' the major version 10, which would make the next release 12.0." This would align Jellyfin's versioning with the actual impact of its releases - a 12.0 label would correctly signal "this is a major change, back up before upgrading." --- ## What This Means for PostgreSQL Support The EF Core migration was not just about performance - it was the prerequisite for external database support. With EF Core managing all database interactions, adding a PostgreSQL backend becomes architecturally possible. As of early 2026, PostgreSQL support is on the roadmap but not yet implemented. The community discussion on the Jellyfin forum has been active, with users asking about MySQL/MariaDB support as well. The team's position: EF Core opens the door, but the actual implementation requires additional work. --- ## Lessons for Jellyfin Admins ### Before any major Jellyfin upgrade: 1. **Always back up your `/config` folder** - this is non-negotiable after 10.11 2. **Read the release notes** - "minor" version bumps can contain major changes 3. **Wait for the first point release** - 10.11.1 fixed the worst migration issues 4. **Test on a non-production instance first** if you have a large or unusual library 5. **Monitor the first startup** - the migration can take 5-15 minutes on large libraries ### If you hit migration issues: - Do not restart the server mid-migration - Check GitHub issues #15027, #15060, and the group issue #15686 for your specific error - Restore from backup and upgrade to the latest point release instead of 10.11.0 --- ## The Silver Lining Despite the rough launch, the EF Core migration is genuinely the right long-term move. The unified database simplifies backups, enables future features, and lays the groundwork for PostgreSQL. By 10.11.5+, most users report a stable experience. The community's response - detailed bug reports, patient testing, and constructive feedback on versioning - helped the team ship fixes faster than any previous release cycle. Jellyfin 10.11 was painful. It was also necessary. --- > **Upgrading to Jellyfin 10.11? Monitor your server through the migration.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time server health, CPU monitoring, and session tracking to verify your upgrade went smoothly. --- ## Jellyfin DevOps: Automate Updates, Healthchecks, and Monitoring (2026) URL: https://jellywatch.app/blog/jellyfin-devops-homelab-automation-watchtower-2026 Published: 2026-04-03T11:49:46+00:00 Author: JellyWatch Team Category: Tutorial Tags: devops, docker, watchtower, automation, homelab, jellyfin, monitoring, 2026 # Jellyfin DevOps: Automate Your Homelab (2026) Most Jellyfin admins set up their stack once and manually update it every few months - if they remember. A DevOps approach changes that: your stack updates itself, monitors itself, and alerts you when something needs attention. This guide applies real DevOps practices to a Jellyfin homelab. --- ## What "DevOps for Homelab" Actually Means In a professional context, DevOps covers CI/CD, infrastructure as code, monitoring, and automated recovery. For a Jellyfin homelab, the practical equivalent is: | DevOps Concept | Homelab Implementation | |---|---| | Continuous Deployment | Watchtower auto-updates containers | | Infrastructure as Code | Docker Compose version-controlled in Git | | Dependency Management | Renovate Bot for image version PRs | | Health Monitoring | Docker healthchecks + JellyWatch | | Alerting | Ntfy / Apprise notifications | | Backup & Recovery | Automated config backups with cron | --- ## 1. Infrastructure as Code: Git-Track Your Stack The first DevOps principle: **everything in version control**. ```bash mkdir ~/homelab && cd ~/homelab git init ``` Your `docker-compose.yml` is your infrastructure definition. Commit every change: ```bash git add docker-compose.yml git commit -m "feat: add Bazarr for subtitle automation" ``` When something breaks after an update, `git diff` shows exactly what changed. `git revert` rolls it back. ### Recommended structure ``` ~/homelab/ docker-compose.yml .env # secrets (add to .gitignore) .env.example # template without secrets configs/ Caddyfile prometheus.yml scripts/ backup.sh healthcheck.sh ``` --- ## 2. Automated Container Updates: Watchtower Watchtower monitors your running containers and automatically pulls new image versions. ```yaml services: watchtower: image: containrrr/watchtower:latest volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - WATCHTOWER_SCHEDULE=0 0 4 * * * # 4 AM daily - WATCHTOWER_CLEANUP=true # remove old images - WATCHTOWER_NOTIFICATIONS=ntfy - WATCHTOWER_NOTIFICATION_NTFY_URL=http://ntfy:80/watchtower - WATCHTOWER_ROLLING_RESTART=true # restart one at a time restart: unless-stopped ``` ### What to auto-update vs pin | Container | Strategy | Reason | |---|---|---| | Jellyfin | Pin to minor version | Major updates need manual testing | | Radarr / Sonarr | Auto-update | Stable, frequent small fixes | | Caddy | Auto-update | Security patches important | | Watchtower itself | Auto-update | Meta | To pin Jellyfin and exclude it from Watchtower: ```yaml jellyfin: image: jellyfin/jellyfin:10.11 labels: - "com.centurylinklabs.watchtower.enable=false" ``` --- ## 3. Dependency Management: Renovate Bot If your stack is in a Git repo (GitHub, Gitea, self-hosted), **Renovate Bot** automatically opens pull requests when new image versions are available - before Watchtower deploys them. This gives you a review step for major updates. ### renovate.json ```json { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:base"], "docker-compose": { "enabled": true }, "packageRules": [ { "matchDatasources": ["docker"], "matchPackageNames": ["jellyfin/jellyfin"], "automerge": false, "reviewers": ["your-username"] }, { "matchDatasources": ["docker"], "matchPackageNames": ["linuxserver/radarr", "linuxserver/sonarr"], "automerge": true } ] } ``` Renovate opens a PR like: *"Update jellyfin/jellyfin from 10.11.5 to 10.11.7"* - you review the changelog, merge, Watchtower deploys. --- ## 4. Docker Healthchecks Healthchecks tell Docker (and your monitoring tools) whether a container is actually working - not just running. ```yaml jellyfin: image: jellyfin/jellyfin:latest healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8096/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped radarr: image: linuxserver/radarr:latest healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7878/ping"] interval: 30s timeout: 5s retries: 3 start_period: 30s restart: unless-stopped jellyseerr: image: fallenbagel/jellyseerr:latest healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] interval: 15s timeout: 3s retries: 3 start_period: 20s restart: unless-stopped ``` With `restart: unless-stopped` and a healthcheck, Docker automatically restarts unhealthy containers. ### Check container health ```bash docker ps --format "table {{.Names}}\t{{.Status}}" ``` Output: ``` NAMES STATUS jellyfin Up 14 days (healthy) radarr Up 14 days (healthy) sonarr Up 14 days (healthy) caddy Up 14 days (healthy) ``` --- ## 5. Automated Backups A DevOps backup strategy runs automatically, retains multiple versions, and alerts on failure. ```bash #!/bin/bash # /home/user/homelab/scripts/backup.sh BACKUP_DIR="/backups/homelab" DATE=$(date +%Y%m%d-%H%M) RETENTION_DAYS=14 NTFY_URL="http://localhost:8090/homelab-alerts" mkdir -p "$BACKUP_DIR" # Stop Jellyfin for consistent backup docker stop jellyfin # Backup all config volumes tar -czf "$BACKUP_DIR/jellyfin-$DATE.tar.gz" /path/to/jellyfin/config tar -czf "$BACKUP_DIR/radarr-$DATE.tar.gz" /path/to/radarr/config tar -czf "$BACKUP_DIR/sonarr-$DATE.tar.gz" /path/to/sonarr/config docker start jellyfin # Cleanup old backups find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete # Notify success curl -s -d "Backup completed: $DATE" "$NTFY_URL" > /dev/null echo "Backup done: $DATE" ``` Add to crontab: ```bash # Every Sunday at 3 AM 0 3 * * 0 /home/user/homelab/scripts/backup.sh >> /var/log/homelab-backup.log 2>&1 ``` --- ## 6. Alerting Pipeline Combine Watchtower + healthcheck failures + backup results into one notification channel. ```yaml services: ntfy: image: binwiederhier/ntfy:latest volumes: - ./ntfy/cache:/var/cache/ntfy ports: - "8090:80" restart: unless-stopped ``` Subscribe to `homelab-alerts` on your phone via the Ntfy Android app. Every update, backup, and container restart sends a notification. --- ## 7. The Self-Healing Stack With all pieces in place, your stack becomes self-healing: ``` Container crashes → Docker detects unhealthy → Docker restarts container → Ntfy sends alert to your phone → JellyWatch shows session recovery New image available → Renovate opens PR → You review changelog → Merge PR → Watchtower deploys at 4 AM → Ntfy confirms update Sunday 3 AM → Backup script runs → Configs archived with 14-day retention → Ntfy confirms backup success ``` --- ## Complete docker-compose.yml ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./configs/Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped jellyfin: image: jellyfin/jellyfin:10.11 volumes: - ./jellyfin/config:/config - /path/to/media:/media:ro devices: - /dev/dri:/dev/dri healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8096/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - "com.centurylinklabs.watchtower.enable=false" restart: unless-stopped radarr: image: linuxserver/radarr:latest environment: - PUID=1000 - PGID=1000 volumes: - ./radarr/config:/config - /path/to/media/movies:/movies - /path/to/downloads:/downloads healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7878/ping"] interval: 30s timeout: 5s retries: 3 restart: unless-stopped sonarr: image: linuxserver/sonarr:latest environment: - PUID=1000 - PGID=1000 volumes: - ./sonarr/config:/config - /path/to/media/tv:/tv - /path/to/downloads:/downloads healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8989/ping"] interval: 30s timeout: 5s retries: 3 restart: unless-stopped jellyseerr: image: fallenbagel/jellyseerr:latest volumes: - ./jellyseerr/config:/app/config healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] interval: 15s timeout: 3s retries: 3 start_period: 20s restart: unless-stopped watchtower: image: containrrr/watchtower:latest volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - WATCHTOWER_SCHEDULE=0 0 4 * * * - WATCHTOWER_CLEANUP=true - WATCHTOWER_NOTIFICATIONS=ntfy - WATCHTOWER_NOTIFICATION_NTFY_URL=http://ntfy:80/homelab-alerts - WATCHTOWER_ROLLING_RESTART=true restart: unless-stopped ntfy: image: binwiederhier/ntfy:latest volumes: - ./ntfy/cache:/var/cache/ntfy ports: - "8090:80" restart: unless-stopped volumes: caddy_data: ``` --- ## FAQ **Is Watchtower safe for a production Jellyfin server?** For Jellyfin itself, pin the version and exclude it from Watchtower. For supporting services (Radarr, Sonarr, Caddy), auto-update is generally safe. **Does Renovate work with self-hosted Gitea?** Yes. Renovate supports Gitea, Forgejo, GitHub, and GitLab. **What if a healthcheck fails but the container is actually fine?** Tune the `start_period` - some containers take longer to initialize. Jellyfin needs at least 60 seconds on first start. **Can JellyWatch detect container restarts?** JellyWatch detects when Jellyfin goes offline and comes back - you get a push notification for both events. --- > **Your stack is automated - now monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, server health, and push alerts for your Jellyfin homelab. --- ## Jellyfin 10.11.7: Critical Security Update - Upgrade Immediately URL: https://jellywatch.app/blog/jellyfin-10-11-7-critical-security-update-april-2026 Published: 2026-04-01T17:22:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, security, update, 10.11.7, critical, vulnerability, upgrade, cve, ghsa, 2026 # Jellyfin 10.11.7: Critical Security Update - Upgrade Immediately The Jellyfin team has released **version 10.11.7**, a critical update that addresses **four security vulnerabilities** alongside 25 general bug fixes. The project describes these fixes as "extremely important" and urges all users to upgrade without delay. > **WARNING:** This release contains several extremely important security fixes. Users of all versions prior to 10.11.7 are advised to upgrade immediately. --- ## What Happened? On April 1, 2026, the Jellyfin project published version 10.11.7 with four security patches tracked under GitHub Security Advisories: - **GHSA-j2hf-x4q5-47j3** - **GHSA-8fw7-f233-ffr8** - **GHSA-v2jv-54xj-h76w** - **GHSA-jh22-fw8w-2v9x** All four fixes were implemented by **@Shadowghost**, a core Jellyfin maintainer. As per Jellyfin's security policy, the full details of these vulnerabilities **will be disclosed publicly in 14 days**. This delay gives users time to upgrade before exploit details become widely available. --- ## Why You Must Upgrade Now Four simultaneous security advisories in a single release is unusual for Jellyfin. The project rarely uses the word "extremely" - this signals that: - The vulnerabilities may be **remotely exploitable** - They could affect servers **exposed to the internet** - Waiting for the 14-day disclosure window to close **puts your server at risk** If your Jellyfin server is accessible from the internet - whether through a reverse proxy, Cloudflare Tunnel, or port forwarding - you should treat this update as **urgent**. --- ## How to Upgrade ### Docker (recommended) ```bash docker pull jellyfin/jellyfin:latest docker compose down docker compose up -d ``` ### Debian / Ubuntu ```bash sudo apt update sudo apt install --only-upgrade jellyfin ``` ### Windows Download the latest installer from [jellyfin.org/downloads](https://jellyfin.org/downloads/) and run it over your existing installation. > **Always back up your configuration folder before upgrading.** Jellyfin 10.11.x uses a unified database - a backup ensures you can roll back if anything goes wrong. --- ## Other Fixes in 10.11.7 Beyond security, this release includes **25 bug fixes**: - **FFmpeg 8.1 compatibility** - Fixed readrate options and filter detection for the latest FFmpeg - **Subtitle extraction** - Fixed caching of empty files and improved codec parameter detection - **HLS streaming** - Fixed segment length adjustment for remuxed content and fractional framerate playlists - **Library database** - WAL checkpoint before migration, deduplicated provider IDs, reattached user data after item removal - **TMDB metadata** - Fixed image URLs missing size parameter, crew department mapping - **Random sort** - Fixed duplicate items appearing in random sort results - **Subtitle downloads** - Fixed broken library-level subtitle download settings - **Session info** - Fixed WebSocket listener not using SessionInfoDto - **Null reference fixes** - Multiple null reference exceptions resolved in font handling, season episodes, and H264 profile checks - **NFO saver** - Fixed wrong provider ID for collection numbers - **Backup restore** - Fixed metadata location during backup restoration --- ## Timeline | Date | Event | |---|---| | **April 1, 2026** | Jellyfin 10.11.7 released with 4 security fixes | | **~April 15, 2026** | Full vulnerability details will be publicly disclosed | Do not wait for the disclosure. Upgrade now. --- ## Monitor Your Server After Upgrading After upgrading, verify your server is running correctly: - Check active sessions and playback - Review recent login attempts for suspicious activity - Monitor CPU and memory usage for any regressions JellyWatch lets you monitor all of this from your phone - real-time session tracking, failed login alerts, and server health dashboards. --- > **Your Jellyfin server deserves real-time security monitoring.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - get instant alerts on failed logins, track active sessions, and monitor server health from anywhere. --- *Stay safe. Keep your server updated.* --- ## Jellyfin Latest Version 2026: 10.11.7 Features, Fixes & the 12.0 Roadmap URL: https://jellywatch.app/blog/jellyfin-current-version-latest-features-march-2026 Published: 2026-03-29T22:45:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, version, 10.11, 10.12, roadmap, updates, features, 2026, upgrade # Jellyfin in March 2026: Current Version, Latest Features, and What's Next ## Current Stable Version **Jellyfin 10.11.5** is the current stable release as of March 2026. The 10.11 branch has been actively maintained with five point releases since the initial 10.11.0 launch in late 2025, addressing migration issues, general bugs, and performance regressions. | Version | Release | Key Focus | |---|---|---| | 10.11.0 | October 2025 | EF Core migration, unified database | | 10.11.1 | November 2025 | Migration bug fixes | | 10.11.2 | December 2025 | Performance improvements | | 10.11.3 | January 2026 | General stability | | 10.11.4 | February 2026 | Metadata and watched status fixes | | **10.11.5** | **March 2026** | **Current stable** | --- ## What Changed in Jellyfin 10.11 ### Database Overhaul (Biggest Change) The most significant change in 10.11 is the **EF Core database migration**. Jellyfin previously used a separate `library.db` file. Version 10.11 consolidates everything into a single unified `jellyfin.db`. **Why it matters:** - Simpler backups - one database file instead of several - Better query performance for large libraries - Foundation for future features that require relational data **Migration is automatic** on first startup. Your data migrates without manual intervention. Back up your config folder before upgrading regardless. ### Built-In Backup Support 10.11 introduced native backup functionality. You can now schedule automatic backups directly from the Jellyfin Dashboard without third-party plugins. Go to **Dashboard → Scheduled Tasks → Backup Database** to configure it. ### FFmpeg 7.1 Jellyfin 10.11 bundles FFmpeg 7.1, bringing: - Improved AV1 hardware encoding quality (NVIDIA RTX 40 series, Intel Arc) - Better HDR tone mapping algorithms - Reduced memory usage during transcoding - Improved Dolby Vision handling ### Performance Notes The EF Core migration introduced some performance regressions for large libraries, particularly around client-side enumeration of datasets. The team is actively working on these. Point releases 10.11.2 onwards have progressively improved this, but users with very large libraries (10,000+ items) may still notice slower library loading compared to 10.10. --- ## Web UI: The New Experimental Layout Is Now Default Starting with the 10.12 development branch (available as "Experimental" in 10.11), **the new web UI layout is now enabled by default** for all non-TV devices. Changes in the new web UI: - Redesigned navigation layout with improved sidebar - Updated UI components (buttons, modals, media cards) - Theming support overhaul - CSS variables replace hardcoded values, making custom themes easier to maintain - Faster initial load time The legacy "Classic" layout remains available in user settings for users who prefer it. --- ## Client Updates in Early 2026 ### Swiftfin 1.4 (iOS / tvOS) - January 2026 The official Jellyfin client for Apple devices shipped a major update: - Complete navigation and routing overhaul - Full Jellyfin 10.11 support - Revamped media player manager - tvOS resync in progress (separate release coming) ### Jellyfin for Android TV - v0.19.6 - Direct Play support added for VC-1 and AV1 codecs - Music transcoding improvements (seeking, duration display, lyrics sync) - Fire TV AV1 support now works on older devices ### Jellyfin for Xbox - Full gamepad navigation (requires Jellyfin 10.11+) - 4K and HDR support enabled - Web UI TV mode fixed in 10.11.5 ### Jellyfin Desktop The desktop app is rebranded from "Jellyfin Media Player" to **Jellyfin Desktop**, migrated from Qt 5 to Qt 6. Available on Flathub (Linux) and Arch AUR. Windows/macOS stable builds are not yet available. --- ## What's Coming: The 10.12 / 12.0 Roadmap The next major release is internally called **10.12** (or possibly **12.0** - the team is considering a versioning change). Key planned features: ### New Web UI as Default (Complete) The experimental layout is already default in 10.11. 10.12 will finalize and stabilize it. ### Theming Overhaul Full CSS variable support for runtime theme customization. Custom theme authors will have a much more stable API to target. ### Performance Improvements Client-side enumeration fixes for large libraries - one of the most-requested improvements following the EF Core migration. ### Plugin API Updates Several plugin APIs are being updated to match the new database architecture. --- ## How to Upgrade to 10.11.5 ### Docker (Recommended) ```bash docker pull jellyfin/jellyfin:latest docker compose down && docker compose up -d ``` Always back up your `/config` volume before upgrading. ### Linux (APT) ```bash sudo apt update && sudo apt upgrade jellyfin ``` ### Windows Download the installer from [jellyfin.org/downloads](https://jellyfin.org/downloads) and run it. Your config is preserved automatically. --- ## Known Issues in 10.11 - Large library performance (client enumeration) - being fixed in upcoming releases - Some edge-case migration failures - isolated and unlikely to affect most users - Music metadata display issues - fix planned for next point release Track known issues at [github.com/jellyfin/jellyfin/issues/15045](https://github.com/jellyfin/jellyfin/issues/15045). --- > **Running Jellyfin 10.11? See what's actually happening on your server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and server health for Jellyfin admins on Android. --- *Version information accurate as of March 2026. Check [jellyfin.org](https://jellyfin.org) for the latest release notes.* --- ## Free Jellyfin Server on Oracle Cloud: 4 Cores, 24 GB RAM, Forever (2026 Guide) URL: https://jellywatch.app/blog/jellyfin-oracle-cloud-free-tier-arm-setup-2026 Published: 2026-03-29T22:12:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: oracle-cloud, vps, free-tier, arm, docker, self-hosting, cloud, remote-access, caddy # Host Jellyfin for Free on Oracle Cloud: ARM VM Setup Guide (2026) What if you could run a Jellyfin server with 4 CPU cores, 24 GB of RAM, a static public IP, and 10 TB of monthly bandwidth - permanently, for free? That is exactly what **Oracle Always Free Tier** offers in 2026. While Oracle Cloud is not the most obvious Jellyfin host, its free ARM instance is one of the most generous no-cost compute options available anywhere. This guide walks you through the complete setup. --- ## What Oracle Always Free Tier Gives You Oracle's Always Free Tier includes resources that are **permanently free** - not a trial, not time-limited: | Resource | Free Allocation | |---|---| | **CPU** | Up to 4 Ampere A1 ARM cores | | **RAM** | Up to 24 GB | | **Boot volume** | Up to 200 GB | | **Outbound bandwidth** | 10 TB per month | | **Static public IPv4** | 1 (free when attached to a running instance) | | **OS options** | Ubuntu, Oracle Linux, Debian (aarch64) | A VM with 4 ARM cores and 24 GB RAM can comfortably run Jellyfin for a small household - as long as you rely on **Direct Play**. There is no GPU on the free tier, which means hardware transcoding is not available. --- ## Is Oracle Cloud Right for Your Jellyfin Setup? **Good use case:** - You want remote access to your Jellyfin library without exposing your home IP - Your clients (Apple TV, Android TV, modern browsers) can Direct Play your media - You store media on a NAS or cloud storage and mount it remotely - You want a zero-cost always-on server with a stable public URL **Bad use case:** - Your users frequently trigger transcodes (mobile clients on weak connections, mixed codec libraries) - You need hardware transcoding for 4K HDR tone-mapping - You want to store a large media library directly on the VM (200 GB fills quickly) > **Key constraint:** Software transcoding on ARM CPUs is feasible for 1080p but struggles with 4K HEVC. One simultaneous 4K software transcode can saturate all 4 cores. Design your setup around Direct Play. --- ## Step 1: Create Your Oracle Cloud Account 1. Go to [cloud.oracle.com](https://cloud.oracle.com) and click **Start for free** 2. A credit card is required for identity verification - **you will not be charged** if you stay within the Always Free limits 3. Choose a **Home Region** geographically close to your users - this cannot be changed after account creation 4. Complete identity and phone verification > **Account tip:** Use your real name, a billing address that matches your card, and a professional email address. Oracle has been known to terminate accounts flagged as suspicious. A personal or business Google Workspace account works well. --- ## Step 2: Provision Your ARM Instance 1. In the Oracle Cloud Console, go to **Compute → Instances → Create Instance** 2. Name your instance (e.g., `jellyfin-server`) 3. Under **Image**, click **Change Image** → select **Ubuntu 22.04** with architecture **aarch64** 4. Under **Shape**, click **Change Shape**: - Select **Ampere** (ARM processor) - Choose **VM.Standard.A1.Flex** - Set **4 OCPUs** and **24 GB memory** (the full free-tier allocation) 5. Under **Networking**, ensure **Assign a public IPv4 address** is checked 6. Under **SSH Keys**, paste your public SSH key (or generate a new key pair and download the private key) 7. Click **Create** Your instance will be ready in 1-3 minutes. Note the **Public IP address** - you will need it throughout this guide. --- ## Step 3: Open Required Network Ports Oracle's default security rules block all incoming traffic. You must open ports in two places. ### In Oracle Cloud Console (Security List): 1. Go to **Networking → Virtual Cloud Networks → [Your VCN] → Security Lists → Default Security List** 2. Click **Add Ingress Rules** and add: | Source CIDR | Protocol | Port | Purpose | |---|---|---|---| | 0.0.0.0/0 | TCP | 22 | SSH | | 0.0.0.0/0 | TCP | 80 | HTTP | | 0.0.0.0/0 | TCP | 443 | HTTPS | ### On the VM (OS firewall): ```bash ssh ubuntu@YOUR_PUBLIC_IP sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` --- ## Step 4: Install Docker ```bash # Install Docker Engine curl -fsSL https://get.docker.com | sh sudo usermod -aG docker ubuntu newgrp docker # Verify docker run hello-world ``` --- ## Step 5: Deploy Jellyfin with Caddy Create your project directory and configuration: ```bash mkdir -p ~/jellyfin && cd ~/jellyfin ``` Create `docker-compose.yml`: ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./config:/config - ./cache:/cache - /mnt/media:/media:ro restart: unless-stopped volumes: caddy_data: ``` Create `Caddyfile`: ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } ``` Point your domain's DNS A record to your Oracle VM's public IP, then launch: ```bash docker compose up -d ``` Caddy automatically obtains and renews an SSL certificate. Jellyfin is accessible at `https://jellyfin.yourdomain.com`. --- ## Step 6: Mount Your Media The VM's 200 GB boot volume is not enough for a serious media library. Mount your media from an external source. ### Option A: Rclone (Google Drive, OneDrive, S3) Mount cloud storage directly into the VM: ```bash sudo apt install rclone -y rclone config # follow the wizard for your provider mkdir -p /mnt/media # Mount (add to /etc/fstab or a systemd service for persistence) rclone mount remote:jellyfin-media /mnt/media \ --vfs-cache-mode full \ --vfs-cache-max-size 10G \ --daemon ``` ### Option B: SSHFS from Your Home NAS If you have a home server with your media, mount it over SSH: ```bash sudo apt install sshfs -y sshfs user@your.home.nas:/media /mnt/media \ -o reconnect,ServerAliveInterval=15,IdentityFile=~/.ssh/id_rsa ``` > **Bandwidth note:** With SSHFS, every stream pulls data from your home internet connection through the Oracle VM. Your home upload speed becomes the bottleneck - 50 Mbps upload handles one or two 4K Direct Play streams comfortably. ### Option C: Oracle Object Storage Oracle provides free object storage in the Always Free tier (10 GB standard, more with pay-as-you-go). Mount it via rclone using the S3-compatible API. Best for small libraries or frequently-accessed content. --- ## Performance Expectations | Scenario | Oracle ARM Free Tier | |---|---| | Direct Play - H.264 1080p | Excellent - near-zero CPU | | Direct Play - HEVC 4K | Excellent - ARM handles it natively | | Audio transcode only (EAC3 → AAC) | Good - minimal CPU load | | Video transcode - 1080p H.264 (software) | Acceptable - 1-2 streams | | Video transcode - 4K HEVC (software) | Poor - 1 stream max, high CPU | | Simultaneous 4K transcodes | Not recommended | For 2-4 users watching pre-compatible content (H.264/HEVC Direct Play, EAC3 audio), the Oracle free tier is a reliable daily driver. --- ## Bandwidth: Is 10 TB Really Enough? Streaming 4K at 25 Mbps for 4 hours/day consumes roughly **36 GB/day** - about **1.1 TB/month** for one user. Oracle's 10 TB monthly free allocation comfortably supports 5-8 simultaneous daily-use users streaming 4K at streaming-service bitrates. For 4K Blu-ray remuxes at 60-80 Mbps, the math changes: one user streaming 2 hours/day uses ~2.1 TB/month. Adjust your expectations based on your library's bitrates. --- ## Keeping Your Instance Alive Oracle may reclaim idle Always Free instances. To prevent termination: - Keep the instance running - do not stop it unless necessary - Oracle monitors CPU utilization; a Jellyfin server in idle mode (near 0% CPU) can trigger reclamation warnings - Install a lightweight cron job that generates occasional minimal CPU activity if needed - Respond promptly to any Oracle emails about your account --- > **Hosting Jellyfin on Oracle Cloud?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor your remote Oracle server sessions from your Android phone, get push notifications when users connect, and catch CPU spikes before they affect playback quality. --- *Oracle Always Free Tier specifications accurate as of March 2026. Oracle may change free tier limits at any time - verify current allocations at [cloud.oracle.com/free](https://cloud.oracle.com/free) before provisioning.* --- ## Best Jellyfin App for Apple TV 2026: Infuse vs Swiftfin (Honest Comparison & Setup) URL: https://jellywatch.app/blog/infuse-jellyfin-apple-tv-ios-setup-2026 Published: 2026-03-29T21:10:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: infuse, apple-tv, ios, tvos, swiftfin, jellyfin, clients, direct-play, dolby-vision # Infuse + Jellyfin on Apple TV and iOS: The Complete Setup Guide (2026) If you use an Apple TV, iPhone, or iPad to stream from Jellyfin, two clients dominate the conversation in 2026: **Swiftfin** (the official open-source app) and **Infuse** (the premium third-party player by Firecore). Both connect to Jellyfin - but they take very different approaches to playback, metadata, and user experience. This guide covers connecting Infuse to your Jellyfin server, optimizing for Direct Play, and understanding what Apple's hardware can and cannot do for your home theater. --- ## Infuse vs Swiftfin in 2026 | Feature | Infuse | Swiftfin 1.4 | |---|---|---| | **Platform** | iOS, tvOS, macOS | iOS, tvOS | | **Price** | Free + Pro (~$9.99/yr) | Free - open source | | **Direct Play breadth** | Excellent | Very good | | **Dolby Vision** | ✓ | ✓ | | **UI polish** | ★★★★★ | ★★★★ | | **Native Jellyfin metadata** | Via Direct Mode | Full native | | **Admin features** | None | None | | **Active development** | Firecore (paid team) | Community | **Swiftfin 1.4** (January 2026) brought a full navigation overhaul, Jellyfin 10.11 support, and a revamped media player manager - it is significantly better than it was a year ago. **Infuse** remains the top pick for maximum codec compatibility, the smoothest scrubbing experience, and users who prioritize playback quality. For users who want a native Jellyfin UI with full metadata fidelity, Swiftfin 1.4 is now a compelling alternative. --- ## Connecting Infuse to Your Jellyfin Server ### Step 1: Add Your Jellyfin Server 1. Open Infuse → go to **Settings → Add Files Source** 2. Select **Jellyfin** from the source list 3. Enter your Jellyfin server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 4. Enter your Jellyfin username and password 5. Tap **Connect** Infose discovers your libraries automatically. ### Step 2: Disable Library Mode (Critical) This is the single most important Infuse setting for Jellyfin users: 1. Go to **Settings → [Your Jellyfin share] → Library Mode** 2. **Turn it OFF** **Library Mode ON:** Infuse fetches metadata (posters, descriptions, ratings) from its own cloud servers. This adds latency, may conflict with your Jellyfin metadata, and causes watch progress sync issues. **Library Mode OFF (Direct Mode):** Infuse uses your Jellyfin server as the single source of truth for all metadata, artwork, and watch progress. This is the correct configuration for Jellyfin users. ### Step 3: Verify the Connection Browse to any movie in Infuse. If you see your Jellyfin server's poster art and descriptions, Direct Mode is working correctly. Tap play on a 4K file and check the playback info (long-press on the Apple TV remote) - it should say **Direct Play**, not transcoding. --- ## Optimizing for Direct Play Infose's core strength is its codec support. On Apple TV 4K (3rd gen, 2022), the A15 Bionic chip handles virtually every format natively: | Codec | Infuse Direct Play | |---|---| | H.264 (AVC) | ✓ | | H.265 / HEVC Main 10 | ✓ | | AV1 | ✓ (A15 hardware decoder) | | VP9 | ✓ | | MPEG-2, VC-1 | ✓ | For maximum Direct Play: - Set **Infuse → Settings → Streaming Quality** to **Auto** or the highest available option - Ensure your Jellyfin server is accessible at sufficient bandwidth - a 4K Blu-ray remux at 80 Mbps requires stable gigabit-class local networking or a fast uplink for remote access - Use Ethernet on your Apple TV, not Wi-Fi, for high-bitrate files --- ## HDR and Dolby Vision on Apple TV Apple TV 4K handles HDR at the system level - Infuse passes the signal and the Apple TV switches HDMI output modes automatically: | Format | Infuse on Apple TV 4K | |---|---| | HDR10 | ✓ - full support | | HDR10+ | ✓ - full support | | Dolby Vision | ✓ - full support | | HLG | ✓ - full support | No manual configuration is needed. The Apple TV detects the HDR format from the file and switches the TV's picture mode automatically when **Match Content** is enabled in Apple TV Settings → Video and Audio. > **Enable Match Content:** Go to Apple TV **Settings → Video and Audio → Match Content** and enable both **Match Dynamic Range** and **Match Frame Rate**. Without this, all content plays at your default output resolution/HDR mode regardless of source. --- ## Audio: The Apple TV Limitation Regardless of which client you use, **Apple TV does not bitstream TrueHD or DTS** to your AV receiver. This is a hardware and operating system limitation - not an Infuse limitation. | Audio Format | Apple TV + Infuse | |---|---| | Dolby Digital (AC3) | ✓ - bitstreamed | | Dolby Digital Plus (EAC3) | ✓ - bitstreamed | | Dolby Atmos (via DD+) | ✓ - Atmos metadata via DD+ | | TrueHD / TrueHD Atmos | ✗ - decoded to LPCM at best | | DTS / DTS-HD MA / DTS:X | ✗ - transcoded or downmixed | For users with a capable AV receiver that requires TrueHD or DTS bitstream, the Apple TV is not the right playback device - regardless of client. See the streaming device comparison guide for alternatives. --- ## Infuse Pricing in 2026 | Plan | Price | What You Get | |---|---|---| | **Free** | $0 | Local network only, basic codec support | | **Pro (Annual)** | ~$9.99 / year | Full Jellyfin remote support, all codecs, no ads | For Jellyfin users who want remote streaming and full codec support, Infuse Pro is required. At ~$10/year it is one of the better value subscriptions in the Apple ecosystem. > Check current pricing at [firecore.com/infuse](https://firecore.com/infuse) - prices vary by region. --- ## Common Issues and Fixes **Buffering on 4K remux content?** Switch to Ethernet. Ensure your router's QoS is not throttling the stream. A 4K remux at 60-80 Mbps saturates Wi-Fi 5 when other devices are active. **Watch progress not syncing back to Jellyfin?** Confirm Library Mode is OFF. With Direct Mode enabled, Infuse reports watched status directly to your Jellyfin server. **Metadata looks wrong?** Library Mode may still be active. Disabling it forces Infuse to use your Jellyfin server's metadata exclusively. **AV1 content showing as transcoding?** AV1 hardware decode is only available on Apple TV 4K 3rd gen (2022) with A15 chip. Older models (1st/2nd gen) do not have hardware AV1 and will trigger a transcode on your server. **Swiftfin or Infuse?** For native Jellyfin UI and full server management features, Swiftfin 1.4 is now a strong choice. For the smoothest playback experience and widest codec support as a pure player, Infuse remains the top option. --- > **Running a Jellyfin server with Apple TV users?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see every Infuse and Swiftfin session in real time, confirm your users are Direct Playing, and get notified the moment a stream triggers an unexpected transcode. --- *Swiftfin 1.4 released January 2026. Infuse pricing approximate - verify at firecore.com for current rates.* --- ## 4K Remux vs Encode for Jellyfin: What Should You Actually Store? (2026) URL: https://jellywatch.app/blog/jellyfin-4k-remux-vs-encode-storage-guide-2026 Published: 2026-03-29T20:45:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: 4k, remux, encode, hevc, av1, storage, direct-play, handbrake, dolby-vision, quality # 4K Remux vs Encode for Jellyfin: What Should You Actually Store? (2026) It is the most-debated question in any Jellyfin community: store **raw Blu-ray remuxes** (50-80 GB each) or **re-encoded files** (15-25 GB)? The answer affects your storage budget, your server's transcoding load, and the quality your users actually see and hear. Both approaches are legitimate - but the right one depends on your hardware, your storage budget, and what your clients can Direct Play. --- ## What Is a Remux? A **remux** is a direct copy of the Blu-ray disc data, reorganized into an MKV container with **zero re-encoding**. The video bitstream, all HDR metadata (HDR10, HDR10+, Dolby Vision), and all audio tracks (TrueHD Atmos, DTS:X, etc.) are transferred without any modification. **Typical sizes:** - 1080p Blu-ray remux: 15-35 GB - 4K Blu-ray remux (HEVC): 50-90 GB **Quality:** Bit-for-bit identical to the source Blu-ray disc. --- ## What Is an Encode? An **encode** runs the source video through a software codec (HEVC/H.265 or AV1) using tools like Handbrake or FFmpeg. The encoder analyzes the video and discards data the human eye is unlikely to notice, dramatically reducing file size. **Typical sizes after encoding (4K HEVC, CRF 17):** - 4K HEVC encode: 18-30 GB (vs 50-90 GB remux) - Storage saved: roughly **3-4x smaller** **Quality:** Very high at CRF 16-18, but always marginally below source on close inspection. --- ## Side-by-Side Comparison | | Remux | HEVC Encode (CRF 17) | AV1 Encode (CRF 28) | |---|---|---|---| | **4K file size** | 50-90 GB | 18-30 GB | 10-20 GB | | **Quality** | Source-identical | Near-source | Near-source | | **HDR10 / HDR10+** | Preserved ✓ | Preserved ✓ | Preserved ✓ | | **Dolby Vision** | Preserved ✓ | Complex workflow ▲ | Very limited ✗ | | **TrueHD / DTS audio** | Preserved ✓ | Optional - keep or reencode | Optional | | **Direct Play compatibility** | Widest (no codec change) | Wide (HEVC universal) | Limited (newer codec) | | **Encoding time per film** | 0 minutes | 1-4 hours | 6-20+ hours | | **Server CPU at playback** | 0 (Direct Play) | 0 (Direct Play) | 0 (Direct Play) | --- ## The Direct Play Argument This is the most important factor for Jellyfin users: **a file only has value if your clients can Direct Play it**. When Jellyfin transcodes a file - for any reason - you lose: - All HDR metadata (washed-out colors on SDR devices) - Lossless audio (TrueHD/DTS downmixed to lossy AAC) - Full bitrate and quality - Server resources ### Remux Direct Play requirements: - Client must support HEVC Main 10 for 4K HDR - Client must support the audio codec (TrueHD, DTS-HD MA) or server transcodes audio only - Network must sustain 60-80 Mbps consistently for high-bitrate remuxes ### HEVC Encode Direct Play requirements: - Client must support HEVC (same as remux) - **Audio can be baked in as AAC/EAC3** during encode - guaranteeing audio Direct Play on every client - Lower bitrate means compatibility with more client setups and bandwidth situations **The encode advantage for mixed environments:** By re-encoding audio to EAC3 or AAC during the encode process, you guarantee every client Direct Plays without an audio transcode - including Fire TV sticks, phones, and tablets that cannot handle TrueHD. This removes a major source of unnecessary server CPU load. --- ## Dolby Vision: Where Remux Wins Clearly Dolby Vision is the most important argument for keeping remuxes. Re-encoding a Dolby Vision file correctly requires specialized tools (`dovi_tool`, `mp4muxer`) and a precise workflow. A standard Handbrake or FFmpeg encode **strips Dolby Vision metadata entirely**, leaving you with standard HDR10 at best. While workflows exist to preserve DV in HEVC encodes, they are complex, slow, and prone to compatibility issues across clients. For AV1, DV encode support is even more limited. **Rule of thumb:** If the content has Dolby Vision and DV matters to you - keep the remux. --- ## Audio: Remux vs Encode | Audio Track | Remux | Encode | |---|---|---| | TrueHD Atmos (original) | ✓ Preserved | Optional - keep or drop | | DTS-HD MA / DTS:X | ✓ Preserved | Optional - keep or drop | | Dolby Digital Plus (compatibility) | Often present | Recommended to add | | AAC stereo (fallback) | Rarely included | Recommended to add | For a Jellyfin server serving clients that cannot handle TrueHD (phones, Fire TV, Roku), adding a compatibility audio track during encode is a significant quality-of-life improvement. Users on those devices get Direct Play instead of a server-side audio transcode. --- ## Storage Math in 2026 | Library | Remux only | Mixed strategy | Encode only | |---|---|---|---| | 200 movies (4K) | ~12-16 TB | ~5-7 TB | ~3-5 TB | | 500 movies (4K) | ~30-40 TB | ~13-20 TB | ~8-13 TB | A 20 TB hard drive costs roughly **$300-400 in 2026**. Encoding your entire 500-movie library to save 25 TB saves roughly $400-500 in storage hardware - at the cost of potentially hundreds of hours of CPU/GPU encoding time and marginal quality loss on your best content. For most self-hosters, the ROI on encoding everything is questionable. **Selective encoding** makes more sense. --- ## Handbrake Settings for Jellyfin Compatibility If you encode, these settings maximize Direct Play compatibility across all Jellyfin clients: | Setting | Recommended Value | Reason | |---|---|---| | Encoder | H.265 (HEVC) | Widest 4K client support in 2026 | | Quality (CRF) | 17-18 for 4K, 20-22 for 1080p | Near-source quality | | Preset | Medium or Slow | Better compression ratio | | Bit depth | 10-bit | Required for HDR10 preservation | | Audio - primary | EAC3 5.1 Atmos | Broad client support, Atmos metadata preserved | | Audio - fallback | AAC 2.0 | Universal compatibility | | Subtitles | SRT/ASS passthrough (soft) | Avoids subtitle burn-in transcoding | > **On AV1 in 2026:** AV1 encodes are ~30% smaller than HEVC at the same quality, but encoding is extremely slow (even with GPU acceleration) and client support is still maturing. HEVC is the safer bet for library-wide encoding until AV1 decode is universal across streaming devices. --- ## The Practical Recommendation | Your Situation | Best Strategy | |---|---| | Storage is plentiful, AV receiver setup | Full remux - zero compromise | | Premium home theater + TrueHD required | Remux for everything | | Dolby Vision content you care about | Always remux | | Mixed client environment (Fire TV, phones, PC) | HEVC encode with EAC3 audio | | 1080p SDR content | Encode freely - remux benefit is minimal | | Remote streaming / limited upload bandwidth | HEVC encode at lower bitrate | | Building a new library from scratch | Remux DV titles, encode HDR10 at CRF 17-18 | **Bottom line:** Remux is always the quality leader. For a pure home theater setup with capable clients, keep remuxes. For a mixed-device server where simplicity and compatibility matter more than absolute quality, well-configured HEVC encodes are a practical alternative. --- > **Not sure if your library is Direct Playing or transcoding on each device?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see the exact playback method (Direct Play, Direct Stream, or Transcode) for every active session on your server, with full codec and bitrate details, in real time from your Android phone. --- *Storage prices and encoder benchmarks as of 2026. CRF values are starting points - adjust based on your source material and quality expectations.* --- ## The 2026 Streaming Device A/V Comparison for Jellyfin: Which Box Actually Handles Your Library? URL: https://jellywatch.app/blog/best-streaming-device-jellyfin-4k-hdr-av1-2026 Published: 2026-03-29T20:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: hardware, streaming-device, 4k, hdr, dolby-vision, truehd, av1, jellyfin, home-theater # The 2026 Streaming Device A/V Comparison for Jellyfin If you run a serious Jellyfin library - local 4K remuxes, TrueHD soundtracks, high-bitrate HEVC - your streaming device is the final bottleneck. Pick the wrong box and you're triggering unnecessary transcoding on your server, losing audio fidelity, or missing HDR entirely. This guide answers one question: **which streaming device in 2026 can actually Direct Play your Jellyfin files without compromise?** The focus is on **local playback quality**: Direct Play of 4K HDR content, lossless audio bitstream passthrough, and format compatibility. Prices are as of March 2026. --- ## Why Direct Play Is Everything When Jellyfin transcodes a file, several things happen: - HDR metadata is stripped or tone-mapped - Lossless audio (TrueHD, DTS-HD MA) is downmixed to lossy AAC or Dolby Digital Plus - Your server CPU/GPU burns cycles that could be zero-cost - Bitrate is capped well below the source For a 4K Blu-ray remux at 60-80 Mbps with TrueHD Atmos, **only Direct Play preserves the source quality**. Everything else is a compromise. --- ## Key Specs Explained | Spec | Why It Matters | |---|---| | **HDMI Version** | 2.1 needed for 4Kp120Hz/VRR; 2.0 caps at 4Kp60Hz | | **4K HDR10** | Baseline HDR - every modern HDR device supports it (or should) | | **HDR10+** | Dynamic metadata HDR - Samsung/Amazon ecosystem | | **Dolby Vision** | Best HDR - dynamic metadata + up to 12-bit color depth | | **AV1** | Next-gen codec - ~30% better than HEVC at same bitrate, royalty-free | | **TrueHD Bitstream** | Lossless Dolby Atmos - must be passed through to AV receiver | | **DTS Bitstream** | Lossless DTS:X / DTS-HD MA - required for DTS soundtracks | > **✓** Fully supported   **▲** Partial / caveats   **✗** Not supported --- ## Full Comparison Table - March 2026 | Device | Price | HDMI | HDR10 | HDR10+ | Dolby Vision | AV1 | TrueHD | DTS | |---|---|---|---|---|---|---|---|---| | *💰 Budget* | | | | | | | | | | Onn 4K Box | ~$20 | 2.0 | ▲ | ✗ | ✗ | ✗ | ✗ | ✗ | | Onn 4K Pro | ~$50 | 2.0 | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | | *⚡ Mid-Range* | | | | | | | | | | Fire TV Stick 4K Plus | ~$50 | 2.0 | ✓ | ✓ | ▲ | ✓ | ✗ | ✗ | | Fire TV Stick 4K Max | ~$60 | 2.0 | ✓ | ✓ | ▲ | ✓ | ✗ | ✗ | | Roku Ultra | ~$100 | 2.1bt | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | | *⭐ Premium* | | | | | | | | | | Apple TV 4K (3rd gen) | ~$129 | 2.1 | ✓ | ✓ | ✓ | ▲ | ✗ | ✗ | | Vero V (OSMC) | ~$185 | 2.1 | ✓ | ✓ | ▲ | ✓ | ✓ | ✓ | | Nvidia Shield Pro | ~$200 | 2.0b | ✓ | ✗ | ▲ | ✓ | ✓ | ✓ | | *🔬 Specialty* | | | | | | | | | | Ugoos AM6B+ | $208 | 2.0b | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | | *🖥️ Mini PC* | | | | | | | | | | Mini PC (x86) | $150-350 | 2.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | **Notes:** - Apple TV 4K: HDMI 2.1 port present but lacks bandwidth for 4Kp120Hz in practice - Roku Ultra HDMI 2.1bt: supports VRR but caps at 4Kp60Hz for standard content - Ugoos AM6B+: S922X-J chip, CoreELEC kernel 4.9 - Dolby Vision FEL support is hardware-unique to this chipset - Mini PC: Intel 12th/13th gen or newer recommended for full AV1 decode and Dolby Vision - Prices as of March 2026 - sale prices common on Fire TV and Onn devices --- ## Budget Tier ### Onn 4K Box (~$20) Walmart's entry-level Google TV dongle. Fine for streaming apps, but falls short for serious local content: **HDR10 is partial** (limited profiles), no Dolby Vision, no AV1, no lossless audio passthrough. Most 4K Blu-ray remuxes will trigger a transcode on your Jellyfin server. Works well as a second-room device for casual streaming or SDR content. For a primary Jellyfin setup, skip it. **Verdict:** Fine for streaming apps. Poor for local 4K remux. ### Onn 4K Pro (~$50) A significant step up. Full HDR10, HDR10+, **Dolby Vision**, and **AV1 hardware decode** - on Google TV with 3 GB RAM, 32 GB storage, and Wi-Fi 6. The Onn 4K Pro Direct Plays essentially any HDR video content in Jellyfin including Dolby Vision. The caveat is audio: **no TrueHD or DTS bitstream**. With a capable AV receiver, your Atmos soundtrack arrives as lossy Dolby Digital Plus at best. **Verdict:** Best value for HDR video at $50. Hits an audio ceiling if lossless passthrough is required. --- ## Mid-Range Tier ### Fire TV Stick 4K Plus (~$50) Handles HDR10, HDR10+, and partially Dolby Vision. The catch: **Dolby Vision works reliably in streaming apps** (Prime Video, Netflix) but is **inconsistent for Jellyfin local file playback** due to how Fire OS exposes the DV pipeline to third-party apps. AV1 decode is fully supported. Audio capped at Dolby Digital Plus. **Verdict:** Solid for streaming services + Jellyfin SDR/HDR10. Dolby Vision in Jellyfin is unreliable. ### Fire TV Stick 4K Max (~$60) Faster processor (MediaTek MT8696T) and Wi-Fi 6E over the 4K Plus, but **A/V specs are nearly identical**. Same Dolby Vision caveat applies. The faster chip improves UI smoothness. **Verdict:** Worth $10 over the 4K Plus for speed. Same A/V ceiling. ### Roku Ultra (~$100) The sleeper pick. HDMI 2.1 with VRR, full **Dolby Vision**, HDR10+, and AV1 hardware decode at $100. The Jellyfin app on Roku handles high-bitrate Direct Play well in 2026. The limit is audio: Roku passes Dolby Digital Plus but **does not support TrueHD or DTS bitstream passthrough** to your AV receiver. **Verdict:** Best all-round HDR support under $100. Stops at lossless audio. --- ## Premium Tier ### Apple TV 4K - 3rd Generation (~$129) The most polished streaming experience available. Full Dolby Vision, HDR10+, and HDR10. Swiftfin - the third-party Jellyfin client for tvOS - has matured significantly in 2026. AV1 decode is partial: the hardware decoder exists but is not consistently exposed to all third-party apps. The dealbreaker for audiophiles: **Apple's HDMI audio stack does not pass TrueHD or DTS**, regardless of source or client. Dolby Atmos is always delivered via lossy Dolby Digital Plus. **Verdict:** Best polished Dolby Vision output. Exceptional UI. Zero lossless audio - a dealbreaker for AV receiver setups. ### Vero V by OSMC (~$185) Built by the OSMC team on a custom board with the Raspberry Pi CM4 module and dedicated media hardware, designed from the ground up for local media playback. **Key features:** - Genuine HDMI 2.1 - Full **TrueHD and DTS:X bitstream passthrough** - HDR10 + HDR10+ + Dolby Vision (TV-LED profiles only - projector profiles not supported) - AV1 hardware decode - Silent operation, low power draw For Jellyfin, the primary interface is Kodi + the Jellyfin for Kodi addon - excellent for high-bitrate local playback. If you need TrueHD passthrough and high HDR quality without going Mini PC, the Vero V is the most complete package under $200. **Verdict:** Best under $200 for lossless audio + Jellyfin. Dolby Vision limited to TV-LED profiles. ### Nvidia Shield Pro (~$200) The Android TV benchmark since 2015. The Tegra X1+ handles 4K HEVC and AV1 decode with ease, and HDMI 2.0b supports full **TrueHD and DTS:X bitstream passthrough** - the main reason it stays on the list in 2026. Dolby Vision is the Shield's weakness in Jellyfin: it works in streaming apps, but **Jellyfin's Android TV app has persistent issues with DV passthrough for local files** - DV frequently falls back to HDR10. The Shield also has **no HDR10+ support** at the hardware level. **Verdict:** Rock-solid TrueHD/DTS passthrough. Best Android TV app compatibility. Dolby Vision in Jellyfin remains inconsistent. --- ## Specialty: Ugoos AM6B+ ($208) The Ugoos AM6B+ runs **CoreELEC** on the Amlogic S922X-J chip - a combination unique in the consumer market. This chip supports **hardware Dolby Vision FEL (Full Enhancement Layer)**, the highest DV profile, while simultaneously bistreaming TrueHD from a local Blu-ray remux. No Android TV device can replicate this. The AM6B+ is the only streaming box that delivers true Dolby Vision FEL + lossless TrueHD Atmos from a local file. **Trade-offs:** - **No AV1 hardware decode** - the S922X-J predates AV1 - CoreELEC is a power-user OS - not consumer-friendly out of the box - Primary interface is Kodi + Jellyfin for Kodi addon - Requires manual CoreELEC setup and technical knowledge **Verdict:** The only device for Dolby Vision FEL + TrueHD simultaneously. For enthusiasts only. --- ## Mini PC (x86): Zero Compromises ($150-350) A small x86 PC running Windows or Linux checks **every single box**: HDR10, HDR10+, Dolby Vision, AV1 hardware decode, TrueHD bitstream, DTS:X bitstream - all simultaneously, no asterisks. ### Recommended Configurations | Build | Price | Notes | |---|---|---| | Intel N100 Mini PC | ~$150 | AV1 decode ✓ - best budget pick | | Intel N150 Mini PC | ~$180 | Slightly faster for mixed workloads | | Intel N305 Mini PC | ~$250 | 8 E-cores - handles any edge case | | Intel Arc A380 Mini PC | ~$350 | Full AV1 encode + decode, peak Quick Sync | **Intel 12th/13th gen or newer** is required for full Dolby Vision passthrough and AV1 hardware decode. For playback, use **Kodi with the Jellyfin for Kodi addon** or the **Jellyfin Media Player** desktop client. A Mini PC can also run the Jellyfin server itself, eliminating the network entirely for local playback. **Verdict:** Zero A/V compromises. Requires more setup than plug-and-play streamers. --- ## Quick Recommendation Guide | Use Case | Best Device | Price | |---|---|---| | Budget + solid HDR video | Onn 4K Pro | ~$50 | | Mixed streaming + casual Jellyfin | Fire TV Stick 4K Max | ~$60 | | Best HDR under $100 | Roku Ultra | ~$100 | | Best polished Dolby Vision | Apple TV 4K 3rd Gen | ~$129 | | TrueHD + DTS, best Android TV | Nvidia Shield Pro | ~$200 | | TrueHD + strong HDR under $200 | Vero V (OSMC) | ~$185 | | Dolby Vision FEL + TrueHD | Ugoos AM6B+ (CoreELEC) | $208 | | Zero compromises, every format | Mini PC (Intel 12th Gen+) | $150-350 | --- ## The Lossless Audio Gap Nearly every streaming stick on this list **cannot bitstream TrueHD**. This means Dolby TrueHD Atmos - standard on 4K Blu-ray remuxes - is decoded on the device and sent as multi-channel PCM, or downmixed to lossy Dolby Digital Plus. Your AV receiver never receives the TrueHD bitstream. Only four options on this list deliver lossless audio passthrough: the **Nvidia Shield Pro**, **Vero V**, **Ugoos AM6B+**, and a **Mini PC**. For users with a soundbar, Dolby Digital Plus is perfectly acceptable. For home theater purists with a capable AV receiver, the lossless gap is a dealbreaker - and the device list narrows sharply. --- > **Running a Jellyfin server feeding these devices?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor every active stream in real time, see instantly whether your device is Direct Playing or triggering a transcode, and get notified the moment something buffers. --- *Prices as of March 2026. Sale prices common on Fire TV and Onn devices - check Amazon and Walmart regularly.* --- ## How Much Hardware Does Jellyfin Actually Need? CPU, GPU & RAM Guide (2026 Benchmarks) URL: https://jellywatch.app/blog/jellyfin-server-hardware-requirements-2026 Published: 2026-03-29T03:45:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: hardware, cpu, gpu, transcoding, nas, mini-pc, requirements, jellyfin, quick-sync # Jellyfin Server Hardware Requirements in 2026 Building a Jellyfin server starts with one question: how much hardware do you actually need? The answer depends almost entirely on **how many users you serve** and **whether your clients can Direct Play**. This guide covers every hardware component with specific recommendations for each use case. --- ## The Core Variable: Direct Play vs Transcoding Before looking at specs, understand the fundamental rule: | Playback Mode | Server CPU Usage | |---|---| | **Direct Play** | Near zero | | **Direct Stream** (audio transcode only) | Minimal | | **Full Video Transcode (software)** | Very high | | **Full Video Transcode (hardware/GPU)** | Low | If all your clients Direct Play, even a Raspberry Pi can serve dozens of users. If you expect transcoding, hardware selection matters significantly. --- ## Minimum Requirements by Use Case ### Single User, Direct Play Only | Component | Minimum | |---|---| | CPU | Any 2-core 64-bit processor | | RAM | 4 GB | | Storage (OS + Config) | 20 GB SSD | | Network | 100 Mbps | A Raspberry Pi 4 or 5, an old laptop, or any low-power ARM device handles this comfortably. ### Small Family (2-4 users), Mixed Direct Play | Component | Recommended | |---|---| | CPU | Intel N100 or equivalent (4 cores) | | RAM | 8 GB | | Storage (OS + Config) | 60 GB SSD | | Storage (Media) | NAS or USB HDD | | Network | Gigabit Ethernet | | GPU | Intel iGPU (built-in Quick Sync) | The **Intel N100** is the community favourite for this tier. It handles 3-4 simultaneous 4K HDR transcodes via Quick Sync at under 15W. ### Multi-User Server (5-10 users), Regular Transcoding | Component | Recommended | |---|---| | CPU | Intel N305, Core i5 12th gen+, or Ryzen 5 | | RAM | 16 GB | | Storage (OS + Config) | 120 GB NVMe SSD | | Storage (Media) | 10 TB+ NAS or direct-attached HDD | | Network | Gigabit Ethernet | | GPU | Intel Arc A380 or NVIDIA GTX 1660+ | At this tier, hardware acceleration is mandatory. Without it, a single 4K transcode saturates the CPU for all other users. ### Large Server (10+ users, public or community) | Component | Recommended | |---|---| | CPU | Intel Core i7/i9 or Xeon, 8+ cores | | RAM | 32-64 GB | | Storage (OS + Config) | 256 GB NVMe | | Storage (Media) | RAID NAS or ZFS array | | Network | 2.5 GbE or 10 GbE | | GPU | NVIDIA RTX 3060+ or Intel Arc A770 | --- ## RAM: How Much Does Jellyfin Actually Use? Jellyfin itself is not RAM-hungry. The server process typically consumes **300-800 MB at idle**. RAM matters for: - **Metadata cache** - large libraries (5,000+ items) benefit from more RAM - **Simultaneous transcodes** - each software transcode uses ~500 MB-1 GB - **Operating system** - Linux needs ~512 MB baseline; Docker adds ~200 MB overhead | Setup | RAM Recommendation | |---|---| | Single user, small library | 4 GB | | Small family, 1,000-5,000 items | 8 GB | | Multi-user, large library | 16 GB | | Community server, 10,000+ items | 32 GB | --- ## GPU: Hardware Acceleration Deep Dive Hardware acceleration is the single most impactful component for a Jellyfin server that serves more than one or two users. ### Intel Quick Sync (iGPU) The best bang-for-buck option in 2026. Available in all Intel desktop and laptop CPUs with integrated graphics. | Intel CPU Generation | 4K H.265 Transcodes | AV1 Decode | AV1 Encode | |---|---|---|---| | 8th-10th Gen (UHD 620/630) | 2-3 | No | No | | 11th Gen (Xe, 80 EU) | 3-4 | No | No | | 12th Gen+ (Alder Lake+) | 4-6 | Yes | Limited | | Intel Arc A380 | 6-8 | Yes | Yes | | Intel Arc A770 | 10-12 | Yes | Yes | ### NVIDIA NVENC Best for servers that already have a discrete NVIDIA GPU. | GPU | 4K H.265 Transcodes | AV1 Encode | Notes | |---|---|---|---| | GTX 1660 Super | 3 (limited) | No | NVENC session cap on consumer GPUs | | RTX 3060 | 8+ | No | No NVENC cap on RTX | | RTX 4060 | 10+ | Yes | AV1 NVENC, excellent efficiency | > **Note:** NVIDIA consumer GPUs (GTX/RTX) have a 3-session NVENC cap by default on Windows. On Linux with the unofficial patch or in Docker, this cap can be removed. ### AMD AMF AMD GPUs support hardware transcoding via AMF. Generally on par with Intel Quick Sync on modern RDNA2/RDNA3 hardware. Less community documentation than Intel or NVIDIA. --- ## Storage: Where Most Admins Get It Wrong Storage has two distinct requirements: ### OS and Jellyfin Config (SSD - mandatory) - Jellyfin stores all metadata, thumbnails, Trickplay images, and transcoding cache on the config drive - **Slow config storage = slow UI, slow metadata loading, slow library scans** - Minimum: 60 GB SSD. Recommended: 120-256 GB NVMe SSD - For a library of 1,000 movies, expect 10-30 GB of Trickplay and metadata cache alone ### Media Storage (HDD acceptable) - Media files are read sequentially during playback - A standard 7200 RPM HDD sustains 150-200 MB/s - enough for even the highest-bitrate 4K remux (80 Mbps = 10 MB/s) - Use HDD for media, NVMe for config/cache - this is the standard recommendation across every Jellyfin community --- ## Network Requirements | Use Case | Minimum Bandwidth | |---|---| | 1080p Direct Play (H.264) | 10-40 Mbps | | 4K Direct Play (HEVC remux) | 60-80 Mbps | | 4K transcode to 1080p | 10-20 Mbps | | Remote access (per user) | 10 Mbps upload per stream | For local streaming, gigabit Ethernet is strongly recommended over Wi-Fi for high-bitrate 4K content. Wi-Fi 6 is acceptable for 1080p and lower-bitrate 4K encodes. --- ## Recommended Hardware in 2026 | Budget | Recommended Build | Est. Cost | |---|---|---| | **Budget (~$130)** | Intel N100 mini PC, 16 GB RAM, 500 GB SSD | ~$130 | | **Mid-range (~$300)** | Intel N305 mini PC, 16 GB RAM, 1 TB NVMe | ~$280 | | **Performance (~$600)** | Intel Core i5-13500H NUC + Intel Arc A380 eGPU | ~$550 | | **Serious server** | Used Xeon workstation + RTX 3060 | ~$400-700 | All these builds can handle 4K hardware transcoding with Jellyfin. The N100 is the sweet spot for most home setups. --- > **Running a Jellyfin server and want to monitor what your hardware is actually doing?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see CPU load, active transcodes, and stream details in real time from your Android phone. --- *Prices and hardware recommendations as of March 2026. Performance figures are approximate and vary by workload, driver version, and configuration.* --- ## Jellyfin Surpasses Plex: How Open Source Won the Self-Hosting Media Server War in 2026 URL: https://jellywatch.app/blog/jellyfin-surpasses-plex-self-hosting-market-share-2026 Published: 2026-03-25T16:00:00+00:00 Author: JellyWatch Team Category: Other Tags: jellyfin, plex, market-share, self-hosting, open-source, comparison, 2026 # Jellyfin Surpasses Plex: The Self-Hosting Shift of 2026 Something remarkable happened in the self-hosted media server space. According to the r/selfhosted community survey of over 2,100 respondents, **Jellyfin claimed 51.2% of the self-hosted media server market in 2024** - surpassing Plex for the first time among homelab enthusiasts. This is not a minor fluctuation. It represents a fundamental shift in how the self-hosting community thinks about media servers. --- ## The Numbers | Platform | Market share (2024 survey) | |---|---| | **Jellyfin** | 51.2% | | **Plex** | ~40% | | **Emby** | ~8% | The same survey found that **84.2% of deployments run on Linux**, confirming that the self-hosting community overwhelmingly favors open-source infrastructure. --- ## Why Jellyfin Won ### 1. Zero Cost, Forever Jellyfin has no premium tier. Every feature - hardware transcoding, Live TV, mobile apps, multi-user - is free. Plex locks these behind Plex Pass ($4.99/month or $119 lifetime). For a community that self-hosts specifically to avoid subscriptions, this matters enormously. ### 2. No Account Required Plex requires a Plex account and routes authentication through Plex servers. If Plex's cloud goes down, you cannot access your own server. This has happened multiple times, and each incident pushes users toward Jellyfin. Jellyfin requires zero external accounts. Your server, your authentication, your data. ### 3. No Ads, No "Discover" Tab Plex has increasingly pushed free ad-supported content, a "Discover" tab, and streaming recommendations into the interface. For users who built a media server to escape exactly this, it feels like a betrayal. Jellyfin shows your content and nothing else. ### 4. The Plugin Ecosystem Exploded Jellyfin's open API and plugin system attracted a massive wave of community development. In 2026, there are over 70 third-party clients and dozens of plugins covering everything from anime metadata to Discord notifications. The Intro Skipper plugin alone - giving Netflix-style skip buttons - was a killer feature that Plex still does not match natively. ### 5. Hardware Got Cheap The Intel N100 mini PC revolution made powerful Jellyfin servers available for $130. A silent, 10W device that handles 4 simultaneous 4K transcodes eliminated the "Jellyfin needs expensive hardware" argument. ### 6. Docker Made Setup Easy The self-hosting renaissance of 2025-2026 was fueled by Docker Compose making complex stacks trivial to deploy. A complete Jellyfin + Radarr + Sonarr + Jellyseerr stack deploys in minutes with a single `docker compose up -d`. --- ## What This Means for the Ecosystem ### For Jellyfin More users means more contributors, more plugins, more clients, and faster development. Jellyfin 10.11's EF Core migration and built-in backup support show a project that is maturing rapidly. ### For Plex Plex is not dying - it still dominates among casual users who want zero-configuration streaming. But in the self-hosting community specifically, the trend is clear. Plex's response has been to double down on its cloud ecosystem, ad-supported content, and rental marketplace - features that appeal to mainstream users but alienate the self-hosting core. ### For Emby Emby holds steady at ~8% but faces pressure from both sides. Jellyfin offers the same features for free; Plex offers a more polished experience. Emby's niche is users who want a middle ground with official support. --- ## The Companion App Ecosystem One area where Jellyfin lagged behind Plex was mobile admin tools. Plex had Tautulli; Jellyfin had nothing comparable. **JellyWatch** filled this gap - providing real-time session monitoring, push notifications, Radarr/Sonarr/Jellyseerr integration, and server health tracking in a native Android app. For Emby users, **EmbyWatch** provides the same experience. The availability of dedicated admin tools was one of the final barriers to Jellyfin adoption for serious server administrators. --- ## Is 2026 the Right Time to Switch? ### If you are on Plex Yes. Jellyfin 10.11 is the most stable and feature-complete release ever. The migration path is well-documented (Trakt sync for watch history, same media files, same folder structure). You lose Plex's cloud relay but gain privacy, freedom, and zero cost. ### If you are on Emby The switch is even easier - Jellyfin forked from Emby, so the architecture is similar. Your media files work identically. ### If you are starting fresh Jellyfin is the obvious choice in 2026. Free, open source, massive community, excellent hardware support, and a mature plugin ecosystem. --- ## FAQ **Is Jellyfin really better than Plex now?** For self-hosters who value privacy, cost, and control - yes. For casual users who want plug-and-play with zero configuration - Plex is still easier. **Will Plex become irrelevant?** No. Plex serves a different audience (mainstream, cloud-first). But in the self-hosting niche, Jellyfin is now the default. **Is Jellyfin stable enough for a family server?** Absolutely. Jellyfin 10.11 with an Intel N100 mini PC is rock-solid for family use. **What about Emby?** Emby is a fine product but struggles to justify its Premiere pricing when Jellyfin offers the same features for free. --- > **Join the 51%. Start monitoring your Jellyfin server like a pro.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the admin companion app that Plex users wish they had. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin and Home Assistant Integration Guide (2026): Automations, Media Controls, and Dashboard Cards URL: https://jellywatch.app/blog/jellyfin-home-assistant-integration-2026 Published: 2026-03-24T18:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, home-assistant, automation, smart-home, integration, 2026 # Jellyfin and Home Assistant Integration Guide (2026) Home Assistant and Jellyfin are two of the most popular self-hosted applications - and they work beautifully together. Connect them and you can dim the lights when a movie starts, pause playback when someone rings the doorbell, and display now-playing info on your HA dashboard. This guide covers the full integration: setup, automations, dashboard cards, and advanced use cases. --- ## Prerequisites - Home Assistant (any recent version, HAOS or supervised) - Jellyfin server accessible from your HA instance - Jellyfin API key (Dashboard → API Keys → Create) --- ## Step 1: Add the Jellyfin Integration Jellyfin has an official integration in Home Assistant: 1. Settings → Devices & Services → **Add Integration** 2. Search for **Jellyfin** 3. Enter your Jellyfin server URL: `http://your-server:8096` 4. Enter your admin username and password 5. Click Submit Home Assistant discovers all your Jellyfin media players (one per active client/session) and creates entities automatically. --- ## What the Integration Provides ### Media player entities For each active Jellyfin session, HA creates a `media_player` entity: - `media_player.jellyfin_living_room_tv` - `media_player.jellyfin_bedroom` Each entity exposes: - **State**: playing, paused, idle, off - **Media title, artist, album** (for music) - **Media content type**: movie, episode, music - **Position and duration** - **Volume level** - **Thumbnail/artwork** ### Sensor entities - `sensor.jellyfin_server_version` - `sensor.jellyfin_active_sessions` - count of active streams --- ## Step 2: Dashboard Cards ### Now Playing card Add a media player card to your HA dashboard: ```yaml type: media-control entity: media_player.jellyfin_living_room_tv ``` This shows the current title, artwork, playback controls (play/pause/stop/seek), and volume. ### Active sessions counter ```yaml type: entity entity: sensor.jellyfin_active_sessions name: Jellyfin Active Streams icon: mdi:television-play ``` ### Custom now-playing card with markdown ```yaml type: markdown content: | ## Now Playing **{{ state_attr('media_player.jellyfin_living_room_tv', 'media_title') }}** {{ state_attr('media_player.jellyfin_living_room_tv', 'media_series_title') }} Position: {{ (state_attr('media_player.jellyfin_living_room_tv', 'media_position') / 60) | round(0) }} min ``` --- ## Step 3: Automations ### Dim lights when a movie starts ```yaml alias: Dim lights when Jellyfin plays trigger: - platform: state entity_id: media_player.jellyfin_living_room_tv to: playing condition: - condition: state entity_id: light.living_room state: "on" action: - service: light.turn_on target: entity_id: light.living_room data: brightness_pct: 20 transition: 3 ``` ### Restore lights when playback pauses or stops ```yaml alias: Restore lights when Jellyfin pauses trigger: - platform: state entity_id: media_player.jellyfin_living_room_tv to: - paused - idle action: - service: light.turn_on target: entity_id: light.living_room data: brightness_pct: 80 transition: 2 ``` ### Pause Jellyfin when the doorbell rings ```yaml alias: Pause Jellyfin on doorbell trigger: - platform: state entity_id: binary_sensor.doorbell to: "on" condition: - condition: state entity_id: media_player.jellyfin_living_room_tv state: playing action: - service: media_player.media_pause target: entity_id: media_player.jellyfin_living_room_tv ``` ### Turn on the TV when Jellyfin starts playing ```yaml alias: Turn on TV when Jellyfin plays trigger: - platform: state entity_id: media_player.jellyfin_living_room_tv from: idle to: playing action: - service: media_player.turn_on target: entity_id: media_player.samsung_tv ``` ### Send a notification when someone starts watching ```yaml alias: Notify when Jellyfin session starts trigger: - platform: state entity_id: media_player.jellyfin_living_room_tv to: playing action: - service: notify.mobile_app_my_phone data: title: "Jellyfin" message: >- Now playing: {{ state_attr('media_player.jellyfin_living_room_tv', 'media_title') }} ``` --- ## Advanced: Home Theater Scene Create a full "Movie Night" scene triggered by Jellyfin: ```yaml alias: Movie Night Scene trigger: - platform: state entity_id: media_player.jellyfin_living_room_tv to: playing attribute: media_content_type # Only trigger for movies, not episodes condition: - condition: template value_template: > {{ state_attr('media_player.jellyfin_living_room_tv', 'media_content_type') == 'movie' }} action: - service: scene.turn_on target: entity_id: scene.movie_night - service: media_player.volume_set target: entity_id: media_player.sonos_living_room data: volume_level: 0.4 - service: cover.close_cover target: entity_id: cover.living_room_blinds ``` --- ## Controlling Jellyfin from Home Assistant You can control Jellyfin playback directly from HA: ```yaml # Pause all Jellyfin sessions (e.g., at bedtime) service: media_player.media_pause target: entity_id: - media_player.jellyfin_living_room_tv - media_player.jellyfin_bedroom ``` Or use a dashboard button: ```yaml type: button name: Pause All Jellyfin tap_action: action: call-service service: media_player.media_pause target: entity_id: media_player.jellyfin_living_room_tv ``` --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Integration not finding server | Wrong URL or firewall | Verify URL from HA host | | No media player entities | No active sessions | Entities appear only when sessions are active | | Automations not triggering | Entity name wrong | Check exact entity ID in Developer Tools | | State shows "unavailable" | Jellyfin server offline | Check server status | | Artwork not loading | HA cannot reach Jellyfin | Ensure HA can access Jellyfin URL | --- ## FAQ **Does the integration work with multiple users?** Yes. Each active session creates a separate media_player entity, regardless of which user is watching. **Can I start playback from Home Assistant?** Yes, using `media_player.play_media` service with a Jellyfin item ID. **Does it work with Jellyfin Music?** Yes. Music sessions expose artist, album, and track information. **Does it work remotely (outside home network)?** Yes, as long as HA can reach your Jellyfin server URL. --- > **Jellyfin integrated with your smart home - now monitor the server side too.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding alerts, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same smart home monitoring experience for Emby servers.* --- ## Awesome Jellyfin Plugins 2026: 60+ Best Plugins Worth Installing (Complete Guide) URL: https://jellywatch.app/blog/awesome-jellyfin-plugins-complete-guide-2026 Published: 2026-03-24T17:06:43+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, plugins, awesome, ecosystem, metadata, anime, extensions, 2026, guide # The Awesome Jellyfin Plugin Ecosystem in 2026: Every Plugin Worth Installing Jellyfin ships as a solid media server out of the box. But its real power comes from what the community has built on top of it. In 2026, there are dozens of plugins covering everything from anime metadata to sleep timers, from Discord rich presence to automated library cleanup. This guide covers the full plugin ecosystem - what each plugin does, who it is for, and how to think about building your ideal Jellyfin setup. --- ## How Jellyfin Plugins Work Plugins are installed directly from the Jellyfin dashboard under **Dashboard > Plugins > Catalog**. If you want to skip the manual research, [browse the full plugin directory on the JellyWatch Hub](https://jellywatch.app/hub) — every plugin in this article has a dedicated page with install instructions and live GitHub releases. Most official and community plugins are available through the built-in repository. Some require adding a custom repository URL. | Label | Meaning | |---|---| | Official | Maintained by the Jellyfin project | | Beta | Active development, may have rough edges | | Stale | No recent commits, may not work on latest Jellyfin | Always check compatibility with your Jellyfin version before installing. --- # UI and Interface Enhancements These plugins reshape how Jellyfin looks and feels. You can also [see all UI and theme plugins on the Hub](https://jellywatch.app/hub/category/ui-themes) for one-click access to install instructions. ## Jellyfin-Enhanced A Swiss Army knife for the Jellyfin web UI. Adds keyboard shortcuts, subtitle styling, TMDB reviews, Jellyseerr search and request integration, and a collection of other quality-of-life improvements - all without touching index.html. - **Hub page:** [Jellyfin-Enhanced on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-enhanced-imp) ## Jellyfin-MonWUI-Plugin A full UI enhancement toolkit: customizable sliders, hover trailers, a built-in music player, notification system, and additional interface modules. - **Hub page:** [Jellyfin-MonWUI-Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-monwui-plugin-imp) ## jellyfin-editors-choice-plugin Adds a Netflix-style full-width content slider to the Jellyfin home page. Curate featured content manually and display it prominently. - **Hub page:** [Editors Choice Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-editors-choice-imp) ## jellyfin-plugin-media-bar A featured content bar for the home screen. Pairs well with the editors choice plugin for a polished, curated front page. - **Hub page:** [Media Bar Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-media-bar-imp) ## jellyfin-plugin-home-sections Lets users customize the Jellyfin home screen with dynamic sections like "Because You Watched" and "Latest Movies". Extensible by other plugins. - **Hub page:** [Home Sections Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-home-sections-imp) ## jellyfin-plugin-collection-sections Adds collection and playlist sections to the home screen via the home-sections plugin. - **Hub page:** [Collection Sections on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-collection-sections-imp) ## jellyfin-plugin-custom-tabs Add personalized tabs in the Jellyfin web UI for quick access to custom content. - **Hub page:** [Custom Tabs on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-custom-tabs-imp) ## jellyfin-plugin-pages Enables other plugins to create custom Jellyfin pages that match the native UI style. - **Hub page:** [Pages Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-pages-imp) ## HoverTrailer Displays movie trailers on hover in the library grid. Simple, effective, and popular. - **Hub page:** [HoverTrailer on the JellyWatch Hub](https://jellywatch.app/hub/hovertrailer-imp) ## InPlayerEpisodePreview Adds an episode list panel directly inside the video player. No more leaving playback to navigate episodes. - **Hub page:** [InPlayerEpisodePreview on the JellyWatch Hub](https://jellywatch.app/hub/inplayerepisodepreview-imp) ## JellyfinTweaks Override Jellyfin settings like "Enable Backdrops" and "Enable Theme Music" across all devices from a single admin toggle. - **Hub page:** [JellyfinTweaks on the JellyWatch Hub](https://jellywatch.app/hub/jellyfintweaks-imp) ## KefinTweaks A collection of additional enhancements and customizations for the Jellyfin interface. - **Hub page:** [KefinTweaks on the JellyWatch Hub](https://jellywatch.app/hub/kefintweaks-imp) ## Jellyfin-JavaScript-Injector Inject custom JavaScript into the Jellyfin UI without modifying index.html. Useful for advanced customizations that survive updates. - **Hub page:** [JavaScript Injector on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-javascript-injector-imp) ## Static Assets Upload and serve static assets (CSS, JavaScript, images) directly from Jellyfin. Enables persistent custom styling. - **Hub page:** [Static Assets on the JellyWatch Hub](https://jellywatch.app/hub/jelly-static-assets-imp) --- # Library and Collection Management ## jellyfin-plugin-auto-collections Automatically creates and maintains dynamic collections based on flexible criteria. Define rules once, let the plugin keep collections current as your library grows. - **Hub page:** [Auto Collections on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-auto-collections-imp) ## jellyfin-plugin-collection-import Create and sort collections by importing from external sources like MDBList. Great for building curated lists from community-maintained databases. - **Hub page:** [Collection Import on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-collection-import-imp) ## TheDwarfsHammer Enhanced collection management and content discovery. Adds tools for organizing and browsing collections beyond what the default UI offers. - **Hub page:** [TheDwarfsHammer on the JellyWatch Hub](https://jellywatch.app/hub/thedwarfshammer-imp) ## jellyfin-plugin-provider-stuff Automates tagging library items with streaming provider tags and creates per-provider collections. - **Hub page:** [Provider Stuff on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-provider-stuff-imp) ## jellyfin-plugin-localrecs Generates personalized movie and TV recommendations based on local watch history - no external services required. Privacy-first recommendation engine. - **Hub page:** [Local Recommendations on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-localrecs-imp) ## jellynext Creates per-user virtual libraries for personalized Trakt recommendations and new seasons. Each user gets a tailored "what to watch next" library. - **Hub page:** [JellyNext on the JellyWatch Hub](https://jellywatch.app/hub/jellynext-imp) ## jellyfin-smartlists-plugin Creates dynamic collections and playlists that automatically update based on customizable rules as the library changes. - **Hub page:** [Smartlists on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-smartlists-imp) ## Plexyfin Synchronizes artwork and collections from a Plex Media Server to Jellyfin. Particularly useful for users of Kometa. - **Hub page:** [Plexyfin on the JellyWatch Hub](https://jellywatch.app/hub/plexyfin-imp) ## jellyfin-local-posters Automatically matches and imports local posters using TPDb and MediUX filename formats. Also supports syncing posters from Google Drive. - **Hub page:** [Local Posters on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-local-posters-imp) --- # Metadata Providers Metadata providers extend Jellyfin's ability to fetch artwork, descriptions, ratings, and other information for your media. [Browse all metadata plugins on the Hub](https://jellywatch.app/hub/category/metadata) to compare options side by side. ## jellyfin-plugin-AnimeMultiSource The most comprehensive anime metadata plugin available. Aggregates metadata, tags, artwork, and people from AniList, AniDB, MAL/Jikan, TVDB, and Fanart.tv - with rate limiting and persistent caching for large libraries. - **Hub page:** [AnimeMultiSource on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-animemultisource-imp) ## jellyfin-plugin-animethemes Fetches anime opening and ending themes from AnimeThemes.moe, supporting both audio and video formats. - **Hub page:** [Anime Themes on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-animethemes-imp) ## Shokofin Integrates Jellyfin with Shoko Server for deep anime library management. If you use Shoko, this is the essential plugin. - **Hub page:** [Shokofin on the JellyWatch Hub](https://jellywatch.app/hub/shokofin-imp) ## jellyfin-plugin-myanimelist Provides MyAnimeList metadata for anime series. - **Hub page:** [MyAnimeList Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-myanimelist-imp) ## jellyfin-plugin-hikka Metadata and images for anime and manga from the Hikka website. - **Hub page:** [Hikka Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-hikka-imp) ## jellyfin-plugin-shikimori Metadata provider for shikimori.one, a Russian-language anime and manga database. - **Hub page:** [Shikimori Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-shikimori-imp) ## jellyfin-plugin-kinopoisk Metadata provider for Kinopoisk, the largest Russian-language film database. - **Hub page:** [Kinopoisk Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-kinopoisk-imp) ## jellyfin-plugin-itunes Fetches album and artist metadata from Apple Music. Useful for music libraries where standard providers fall short. - **Hub page:** [Apple Music Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-itunes-imp) ## jellyfin-youtube-metadata-plugin Fetches metadata for YouTube content imported into Jellyfin. - **Hub page:** [YouTube Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-youtube-metadata-imp) ## jellyfin-icon-metadata Adds metadata provider icons to Jellyfin item pages, making it easy to see where each piece of metadata came from. - **Hub page:** [Icon Metadata on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-icon-metadata-imp) ## Jellyfin.Plugin.MDBList_Ratings Retrieves ratings from MDBList using TMDb IDs and integrates them into Jellyfin's rating fields. Optional UI enhancements display ratings from multiple sources simultaneously. - **Hub page:** [MDBList Ratings on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-mdblist-ratings-imp) --- # Notifications and Integrations Notification plugins push server events to Discord, Telegram, email, and more. [See every notification plugin on the Hub](https://jellywatch.app/hub/category/notifications) when you are ready to install. ## jellyfin-plugin-DiscordNotifier Send notifications of Jellyfin server events to a Discord channel. New media, user activity, server alerts - all piped to Discord. - **Hub page:** [Discord Notifier on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-discord-notifier-imp) ## jellyfin-plugin-TelegramNotifier Receive Jellyfin server event notifications via Telegram. - **Hub page:** [Telegram Notifier on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-telegram-notifier-imp) ## Jellyfin-Newsletter Sends newsletters and notifications about library changes (additions, updates, deletions) via email, Discord, or Telegram. - **Hub page:** [Jellyfin Newsletter on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-newsletter-imp) ## jellyfin-rpc Two separate implementations of Discord Rich Presence for Jellyfin. Both display your current Jellyfin activity directly on your Discord profile. - **by kennethsible:** [Jellyfin RPC (kennethsible) on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-rpc-kennethsible-imp) - **by Radiicall:** [Jellyfin RPC (Radiicall) on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-rpc-radiicall-imp) ## jellyfin-plugin-streamyfin Companion plugin for the Streamyfin client. Enables centralized configuration of the Streamyfin app from the server side. - **Hub page:** [Streamyfin Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-streamyfin-imp) --- # Playback and Search ## intro-skipper One of the most popular Jellyfin plugins. Fingerprints audio to automatically detect intro and outro segments, then adds skip buttons during playback. Works across your entire library without manual configuration. - **Hub page:** [Intro Skipper on the JellyWatch Hub](https://jellywatch.app/hub/intro-skipper-imp) ## Gelato Replaces Jellyfin's default search with Stremio-powered results and can automatically import entire catalogs into your library through scheduled tasks. - **Hub page:** [Gelato on the JellyWatch Hub](https://jellywatch.app/hub/gelato-imp) ## jellyfin-plugin-meilisearch Offloads Jellyfin search queries to a Meilisearch instance for significantly faster and more accurate results on large libraries. - **Hub page:** [Meilisearch Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-meilisearch-imp) ## jellyfin-plugin-cinemamode Enables Jellyfin's Cinema Mode with local trailers and pre-rolls. Play trailers before your main feature for a proper cinema experience. - **Hub page:** [Cinema Mode on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-cinemamode-imp) --- # Anime and Tracking ## jellyfin-ani-sync Automatically tracks and synchronizes anime watching progress between Jellyfin and AniList, MyAnimeList, and other services. - **Hub page:** [Ani-Sync on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-ani-sync-imp) ## MyAnimeSync Automatically synchronizes anime watching progress between Jellyfin and MyAnimeList. - **Hub page:** [MyAnimeSync on the JellyWatch Hub](https://jellywatch.app/hub/myanimesyncc-imp) ## jellyfin-plugin-onepace Plugin for the One Pace project - the fan-edited version of One Piece that removes filler. Handles the non-standard episode structure correctly. - **Hub page:** [One Pace Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-onepace-imp) --- # Scrobbling and External Sync ## jellyfin-plugin-listenbrainz Automatically syncs your music listening activity with ListenBrainz, the open-source alternative to Last.fm. - **Hub page:** [ListenBrainz Sync on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-listenbrainz-imp) ## jellyfin-plugin-letterboxd-sync Automatically syncs your watched movie history with Letterboxd. - **Hub page:** [Letterboxd Sync on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-letterboxd-sync-imp) ## Jellyfin.Plugin.JF_To_Stash_Sync Synchronizes viewing activity with Stash, the self-hosted content manager. - **Hub page:** [JF to Stash Sync on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-jf-to-stash-sync-imp) --- # Authentication and Access Control ## jellyfin-plugin-ldapauth (Official) Allows using LDAP as an authentication provider. Essential for organizations or home labs with centralized user management. - **Hub page:** [LDAP Authentication on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-ldap-auth-imp) ## jellyfin-plugin-sso (Beta) Allows users to sign in through an SSO provider (OAuth2/OIDC). Supports Google, Authelia, Authentik, and others. - **Hub page:** [SSO Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-sso-imp) ## TeleJelly Allows users to sign in through the Telegram Login Widget. - **Hub page:** [TeleJelly on the JellyWatch Hub](https://jellywatch.app/hub/telejelly-imp) ## Jellyfin.Plugin.StreamLimit Limits the number of simultaneous streams per user. Essential for shared servers where you need to control bandwidth usage. - **Hub page:** [Stream Limit on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-stream-limit-imp) --- # Library Maintenance and Cleanup ## jellyfin-plugin-media-cleaner Automatically removes played media after a specified time period. Useful for keeping storage under control on servers with limited space. - **Hub page:** [Media Cleaner on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-media-cleaner-imp) ## jellyfin-plugin-discontinue-watching Lets you remove items from the Continue Watching list without resetting watch progress. Also supports auto-hiding items after inactivity. - **Hub page:** [Discontinue Watching on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-discontinue-watching-imp) ## jellyfin-plugin-jellysleep Adds sleep timer functionality to Jellyfin. Set a timer and playback stops automatically. - **Hub page:** [JellySleep on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-jellysleep-imp) ## jellyfin-transcode-nag Nags users when they are transcoding due to unsupported formats or codecs. Helps educate users about direct play and reduces server load. - **Hub page:** [Transcode Nag on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-transcode-nag-imp) ## jellyfin-plugin-air-times Provides localized series air times based on server location. - **Hub page:** [Air Times on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-air-times-imp) ## jellyfin-musictags-plugin Automatically extracts audio file metadata and converts it into standard Jellyfin tags. - **Hub page:** [Music Tags on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-musictags-imp) ## jellyfin-plugin-languageTags Adds language tags to media based on audio tracks using FFmpeg. - **Hub page:** [Language Tags on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-languagetags-imp) ## JellySTRMprobe Probes STRM files to extract media information (codec, resolution, duration, audio) that Jellyfin skips during library scans. - **Hub page:** [JellySTRMprobe on the JellyWatch Hub](https://jellywatch.app/hub/jellystrm-probe-imp) ## Jellyfin-Xtream-Library Syncs Xtream VOD and Series content to native Jellyfin libraries via STRM files, with automatic metadata lookup and Live TV support. - **Hub page:** [Jellyfin Xtream Library on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-xtream-library-imp) --- # Miscellaneous and Niche Plugins ## Jellyfin-Roulette Adds a roulette feature that plays a random entry from a playlist. Great for when you cannot decide what to watch. - **Hub page:** [Jellyfin Roulette on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-roulette-imp) ## Jellyfin-Seasonals A plugin with collections of seasonal themes and animations. Adds holiday flair to your Jellyfin home screen. - **Hub page:** [Jellyfin Seasonals on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-seasonals-imp) ## jellyfin-plugin-GetAvatar Allows users to choose an avatar from a collection of images. - **Hub page:** [GetAvatar on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-getavatar-imp) ## jellyfin-plugin-MediathekViewDL Integrates MediathekViewDL into Jellyfin, allowing users to search, download, and manage content from German public broadcasters. - **Hub page:** [MediathekViewDL on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-mediathekviewdl-imp) ## media-upload-plugin A media manager that provides uploads, bulk downloads from URLs, and directory browsing within Jellyfin. - **Hub page:** [Media Upload Plugin on the JellyWatch Hub](https://jellywatch.app/hub/media-upload-plugin-imp) ## playlist-generator Create personal playlists based on your listening history. - **Hub page:** [Playlist Generator on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-playlist-generator-imp) ## jellyfin-powertoys A collection of plugins to enhance Jellyfin with additional features and tools. - **Hub page:** [Jellyfin Powertoys on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-powertoys-imp) ## jellyfin-plugin-ratings Adds user ratings, card overlays, media requests, deletion workflows, chat, and new media notifications to Jellyfin. - **Hub page:** [Ratings Plugin on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-plugin-ratings-imp) ## Universal Plugin Repo Consolidates many plugin repositories into a universal catalogue. Add one repository URL and get access to dozens of community plugins. - **Hub page:** [Universal Plugin Repo on the JellyWatch Hub](https://jellywatch.app/hub/universal-plugin-repo-imp) --- # Building Your Plugin Stack Not every plugin is for everyone. Here is how to think about it. If you prefer a data-driven shortcut, the [most popular plugins ranked by community votes](https://jellywatch.app/hub/best) on the JellyWatch Hub are an excellent starting point — that list is curated by the same admins who use them in production. ## Essential for Most Servers | Plugin | Why | |---|---| | intro-skipper | Automatic intro/outro detection, universally useful | | jellyfin-plugin-sso | Single sign-on for multi-user setups | | Jellyfin.Plugin.StreamLimit | Control concurrent streams on shared servers | | jellyfin-plugin-DiscordNotifier | Stay informed about server activity | ## For Anime Libraries | Plugin | Why | |---|---| | jellyfin-plugin-AnimeMultiSource | Best multi-source anime metadata | | jellyfin-ani-sync | Keep AniList/MAL in sync automatically | | Shokofin | Deep Shoko Server integration | | jellyfin-plugin-animethemes | Opening and ending themes | ## For Music Libraries | Plugin | Why | |---|---| | jellyfin-musictags-plugin | Better tag extraction | | jellyfin-plugin-listenbrainz | Scrobble to ListenBrainz | | jellyfin-plugin-itunes | Apple Music metadata | ## For Shared/Multi-User Servers | Plugin | Why | |---|---| | jellyfin-plugin-ldapauth | Centralized authentication | | Jellyfin.Plugin.StreamLimit | Limit concurrent streams | | jellyfin-plugin-discontinue-watching | Clean up Continue Watching | | jellyfin-transcode-nag | Educate users about direct play | --- # The Admin Layer: JellyWatch Plugins extend what Jellyfin can do. But managing a Jellyfin server - watching active streams, diagnosing transcoding issues, monitoring CPU and storage - requires a dedicated tool. **JellyWatch** is the Android admin companion for Jellyfin: - Real-time session monitoring - see every active stream - Transcoding diagnostics - know exactly why a stream is buffering - Server health: CPU, RAM, GPU, storage - Push notifications for new sessions and CPU spikes - Radarr, Sonarr, and Jellyseerr integration - Watch history and viewing statistics - Android home screen widget - Watch Pass: share premium access with your users While your plugins handle the automation, you keep the server running smoothly from your pocket. --- # FAQ: Jellyfin Plugins **How do I install Jellyfin plugins?** Go to Dashboard > Plugins > Catalog in the Jellyfin admin interface. For plugins not in the default catalog, add the custom repository URL under Repositories. **Are Jellyfin plugins safe to install?** Most community plugins are open source - you can review the code. Stick to plugins with active repositories and recent commits. Avoid plugins marked Stale on critical functionality. **Will plugins break when Jellyfin updates?** Sometimes. Plugins targeting a specific Jellyfin API version may stop working after a major update. Check the plugin's GitHub issues before updating Jellyfin on a production server. **What is the most popular Jellyfin plugin?** intro-skipper is consistently the most widely used plugin. Automatic intro and outro detection is useful for virtually every library. **Can I run multiple metadata providers?** Yes. Jellyfin lets you configure priority order for metadata providers. You can stack multiple providers and Jellyfin will fall back down the list if the primary source lacks data. **Is there a plugin for requesting media?** Not directly - media requests are handled by Jellyseerr (a separate service). However, several plugins like jellyfin-plugin-ratings and Jellyfin-Enhanced add Jellyseerr integration to the Jellyfin UI. --- # Final Thoughts The Jellyfin plugin ecosystem is one of the most active corners of the self-hosting community. From a single intro-skipper install to a fully customized multi-user server with SSO, Discord notifications, and automated collection management - the building blocks are all here. Start with the essentials. Add plugins as you identify specific needs. And keep an eye on the community - new plugins appear regularly. Your server, your rules. **Stay current:** new plugins land in this ecosystem every month. Bookmark the [newest plugins added in the last 30 days](https://jellywatch.app/hub/new-this-month) on the JellyWatch Hub to keep an eye on what is fresh — or browse the [community-curated awesome list](https://jellywatch.app/hub/awesome) for the highest-engagement picks. --- # ⚠ The Hidden Risk of Jellyfin Plugins Most admins discover issues only after users complain. Common problems: - CPU spikes during intro scans - Excessive RAM usage - Background task stacking - Docker auto-restarts - Slow browsing performance Plugins are powerful - but without monitoring, they are blind spots. > **Professional plugins deserve professional monitoring.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - track CPU spikes, active sessions, and plugin impact on your Jellyfin server in real time. JellyWatch helps you: - Detect CPU spikes in real time - Track plugin-related load - Monitor active streams - Identify background scan overload - Prevent downtime before users notice --- # Strategic Plugin Installation Framework 1. Install one plugin at a time 2. Restart Jellyfin 3. Monitor CPU and RAM for 24 hours 4. Only then install the next plugin Professional admins never install 10 plugins at once. --- # Comparison of Plugin Categories | Category | Must-Have | Risk Level | Monitoring Needed | |-----------|------------|------------|-------------------| | Automation | Intro Skipper | High | Yes | | UI/UX | Jellyscrub | Medium | Recommended | | Metadata | TMDB Box Sets | Low | Optional | | Analytics | Playback Reporting | Medium | Yes | | Artwork | Fanart.tv | Low | No | --- # FAQ - Jellyfin Plugins & Performance (2026) **1. Do Jellyfin plugins slow down the server?** Yes, especially during initial scans or metadata refresh cycles. **2. Can Intro Skipper cause high CPU usage?** Yes, fingerprint analysis can temporarily spike CPU to 80-100%. **3. Why does Jellyfin become slow after installing plugins?** Background tasks may stack and overload system resources. **4. How many plugins are too many?** Depends on hardware, but installing 10+ without monitoring is risky. **5. Do plugins increase RAM usage?** Yes, especially reporting and analytics plugins. **6. Can plugins cause Docker restarts?** Yes, under heavy load or memory pressure. **7. Is Jellyfin stable with many plugins?** Yes, if properly monitored. **8. How do I know which plugin causes issues?** By tracking CPU, RAM, and background tasks in real time. **9. Should I disable unused plugins?** Yes, unused plugins still consume resources. **10. Does OpenSubtitles affect performance?** Minimal, unless scanning very large libraries. **11. Can plugins corrupt metadata?** Rarely, but misconfigured repositories increase risk. **12. What is the safest way to test new plugins?** Install one at a time and monitor for 24 hours. **13. Why does intro detection take hours?** It scans every episode to detect audio fingerprints. **14. Is monitoring necessary for home users?** If you have multiple users or 4K streams, yes. **15. What is the best way to prevent Jellyfin crashes?** Proactive monitoring and staged plugin installation. --- > **Managing a Jellyfin server with all these plugins? Keep it under control.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and server health for Jellyfin admins on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience for Emby servers.* --- ## Best Jellyfin Client for Every Device in 2026: 70+ Apps Ranked (Android, iOS, TV, Desktop) URL: https://jellywatch.app/blog/awesome-jellyfin-clients-complete-ecosystem-guide-2026 Published: 2026-03-24T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, clients, apps, ecosystem, android, ios, apple-tv, android-tv, desktop, 2026, guide, awesome # Best Jellyfin Client for Every Device in 2026: 70+ Apps Ranked ## What Is a Jellyfin Client? A Jellyfin client is any app that connects to your self-hosted Jellyfin server and lets you stream your media library. Unlike Plex, every Jellyfin client is free - there are over 70 available across Android, iOS, Windows, macOS, Linux, Apple TV, Android TV, Samsung, LG, Roku, and even Nintendo Switch. This guide ranks them all and helps you pick the right one for each screen in your home. --- # The Awesome Jellyfin Client Ecosystem in 2026: Every App for Every Device One of Jellyfin's greatest strengths is rarely talked about: its **client ecosystem**. While Plex and Emby lock you into their own apps, Jellyfin's open API has spawned an extraordinary range of third-party clients - covering every platform imaginable, from Nintendo Switch to HarmonyOS. In 2026, there are over **70 Jellyfin clients** available. This guide organizes them all, explains what makes each one worth considering, and helps you pick the right app for every screen in your home. Every client below that is also indexed on the JellyWatch Hub links straight to its Hub page — [browse the full client directory](https://jellywatch.app/hub) for install instructions, screenshots, and live GitHub releases. --- ## Understanding the Client Landscape Before diving in, a few labels you'll see throughout this guide: | Badge | Meaning | |---|---| | Official | Maintained by the Jellyfin project | | Beta | Active development, may have rough edges | | Music Client | Focused on audio streaming | | Reader | For books and comics | | OSS | Open source | Most Jellyfin clients are **free and open source**. A handful are closed-source or offer paid tiers - these are clearly noted. --- # Browser-Based Clients Browser clients run directly in your web browser - no installation required on the viewing device. ## Jellyfin Vue (Official, Beta) **Hub page:** [Jellyfin Vue on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-vue-imp) The next-generation official web client, built with Vue.js. Jellyfin Vue is a complete rewrite of the default web interface with a modern component architecture. - **Best for:** Users who want the cutting-edge official experience - **Try it:** [jf-vue.pages.dev](https://jf-vue.pages.dev/) (live demo) - **Status:** Beta - stable enough for daily use, but expect occasional rough edges ## Shadfin (Beta) A browser client built with shadcn/ui components, offering a clean and modern aesthetic that feels closer to a commercial streaming platform. - **Best for:** Users who want a polished, minimal web interface - **Demo:** [main.shadfin-standalone.pages.dev](https://main.shadfin-standalone.pages.dev) ## Pelagica A lightweight browser client focused on simplicity and speed. Pelagica strips away complexity and delivers a clean browsing experience. - **Best for:** Minimalists who want fast library browsing - **Demo:** [pelagica.jan.run](https://pelagica.jan.run) ## Finetic A browser-based client with a focus on clean UI and straightforward navigation. Good option for shared servers where users need a simple interface. ## Aperture (Beta) An experimental browser client exploring new UI paradigms for media browsing. Worth watching as it matures. ## Music Browser Clients Several browser clients focus specifically on music: - **Feishin (Beta)** - The most feature-complete music browser client. Supports Jellyfin and Navidrome, with a Spotify-inspired interface, gapless playback, and scrobbling. [Feishin on the JellyWatch Hub](https://jellywatch.app/hub/feishin-imp) - **sonixd (Beta)** - The predecessor to Feishin, still widely used. Electron-based, works in browser and as a desktop app. [Sonixd on the JellyWatch Hub](https://jellywatch.app/hub/sonixd-imp) - **Preserve (Beta)** - A music client with a focus on library organization and playlist management. [preserveplayer.com](https://preserveplayer.com/) - **ampcast (Beta)** - Supports multiple music backends including Jellyfin, with a radio-style interface. [Ampcast on the JellyWatch Hub](https://jellywatch.app/hub/ampcast-imp) - **Jelly Music App** - A lightweight web-based music player. Simple and fast. [Jelly Music App on the JellyWatch Hub](https://jellywatch.app/hub/jelly-music-app-imp) --- # Desktop Clients > Browse the [full Jellyfin client directory on the Hub](https://jellywatch.app/hub) for install instructions, GitHub stats, and direct download links to every desktop client below. ## Windows ### Jellyfin Media Player (Official) **Hub page:** [Jellyfin Media Player on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-media-player-imp) The official desktop client, combining the Jellyfin web interface with **MPV** as the playback engine. This gives you better codec support than any browser, full hardware decoding, and keyboard shortcuts. - **Best for:** Primary desktop viewing - **Download:** [jellyfin.org/downloads](https://jellyfin.org/downloads/clients/) - Available on Windows, macOS, and Linux ### Jellyfin MPV Shim (Official) **Hub page:** [Jellyfin MPV Shim on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-mpv-shim-imp) A lightweight companion that lets you cast from the Jellyfin web interface to a local MPV player window. Ideal if you already use the web UI but want better playback quality. ### FluentFin (Beta) **Hub page:** [FluentFin on the JellyWatch Hub](https://jellywatch.app/hub/fluentfin-imp) A Windows-native client built with WinUI 3, following Microsoft's Fluent Design System. If you care about a native Windows look and feel, FluentFin delivers it. - **Best for:** Windows users who want a native app experience - **Hub page:** [FluentFin on the JellyWatch Hub](https://jellywatch.app/hub/fluentfin-imp) ### Blink (Beta) A cross-platform desktop client (Windows, macOS, Linux) built with Flutter. Clean interface, active development. ### tsukimi (Beta) A desktop client built with GTK4 and Rust, targeting Linux and Windows. Lightweight and fast, with a focus on performance. ### Rodel Player A Windows-exclusive client available on the Microsoft Store. Closed-source but free, with a clean interface optimized for Windows. - **Download:** [Microsoft Store](https://apps.microsoft.com/detail/9nb0h051m4v4) ### Hills Available on both Windows (Microsoft Store) and Android. Freemium model - free tier available, paid features unlock additional functionality. ### Windows Music Clients - **Feishin (Beta)** - Best music client on Windows, Electron-based - **Sonixd (Beta)** - Mature, stable music client - **Supersonic (Beta)** - Native Go application, very lightweight - **Tauon Music Box** - Feature-rich music player with Last.fm scrobbling - **Jellyamp** - Electron-based music client, simple and clean - **Foxy** - Music-focused desktop client - **Jelly Music App** - Cross-platform web-based music player --- ## macOS ### Jellyfin Media Player (Official) Same as the Windows version - the best all-around macOS client for video. ### Infuse **Hub page:** [Infuse on the JellyWatch Hub](https://jellywatch.app/hub/infuse-imp) The gold standard for media playback on Apple devices. Infuse connects to Jellyfin as a backend and delivers: - Stunning UI with cinematic artwork display - Full Dolby Vision and Atmos support - Excellent codec support including MKV, HEVC, AV1 - AirPlay and offline downloads **Note:** Requires Infuse Pro for full Jellyfin integration. Worth every penny for Apple users. ### Discrete (Music Client) A music client for macOS and iOS with a clean, native interface. Free with optional paid features. ### Dee Jellie (Music Client) A premium music client for macOS, iOS, and Apple TV. Paid only, but delivers a polished native experience. ### macOS-Specific Options - **Phyn** - Available on macOS, iOS, and Android. Freemium model. - **SenPlayer** - Polished media player for Apple ecosystem. Freemium. - **VidHub** - Cross-platform player with excellent Apple TV support. Freemium. - **HamHub** - Free media player for Apple devices. - **iPlay** - Open-source cross-platform client. - **Jellyflix** - Cross-platform client available on macOS. - **Coppelia (Beta, Music Client)** - Music client for macOS, iOS, Android, and Linux. - **Finer (Music Client)** - Music client for macOS and iOS. Free on App Store. --- ## Linux ### Jellyfin Media Player (Official) Available as a Flatpak on Flathub - the easiest installation method on most Linux distributions. ```bash flatpak install flathub com.github.iwalton3.jellyfin-media-player ``` ### Delfin (Beta) A native Linux client built with GTK4 and libadwaita, following GNOME design guidelines. Feels right at home on GNOME desktops. - **Download:** [Flathub](https://flathub.org/apps/cafe.avery.Delfin) ### tsukimi (Beta) Built with GTK4 and Rust - fast, lightweight, and native-feeling on Linux. ### Bloodin (Beta) Cross-platform client (Windows, macOS, Linux) in active development. ### Linux Music Clients - **Supersonic (Beta)** - Native Go app, available on Flathub. Excellent performance. - **Tauon Music Box** - Feature-rich, available on Flathub. - **Gelly (Beta)** - GTK4 music client, available on Flathub. [flathub.org/apps/io.m51.Gelly](https://flathub.org/apps/io.m51.Gelly) - **Feishin (Beta)** - Electron-based, cross-platform. - **Coppelia (Beta)** - Music client with Linux support. --- # Mobile Clients > Looking for the most installed mobile picks? See the [most viewed Jellyfin clients on the Hub](https://jellywatch.app/hub/most-viewed) — the ranking is based on real reader interest. ## iOS ### Jellyfin Mobile for iOS (Official) The official iOS app. Free, open source, covers the basics well. Available on the App Store. ### Swiftfin (Official, Beta) **Hub page:** [Swiftfin on the JellyWatch Hub](https://jellywatch.app/hub/swiftfin-imp) The community's favorite iOS client. Built natively in Swift, Swiftfin delivers a significantly better experience than the official app: - Native SwiftUI interface - Better performance and smoother animations - Advanced playback controls - Active development with frequent updates **This is the recommended iOS client for most users.** ### Streamyfin **Hub page:** [Streamyfin on the JellyWatch Hub](https://jellywatch.app/hub/streamyfin-imp) A cross-platform client (iOS and Android) with a focus on a clean, modern interface. Available on both App Store and Google Play. ### Infuse The best iOS client for pure playback quality. See the macOS section for details. ### Jellyflix Cross-platform client available on iOS, Android, and desktop. Clean interface, free. ### Fladder A Flutter-based cross-platform client covering iOS, Android, macOS, Windows, Linux, and browser. One codebase, every platform. ### iOS-Specific Options - **Filebar** - Freemium media player for iOS and Apple TV - **Sunkfin** - Lightweight iOS client - **JellyTV** - Paid iOS client focused on TV-style browsing - **yybx** - Paid iOS and Apple TV client - **HamHub** - Free media player - **SenPlayer** - Freemium player for Apple ecosystem - **VidHub** - Freemium cross-platform player - **Phyn** - Freemium cross-platform player - **iPlay** - Open-source cross-platform client ### iOS Music Clients - **Finamp** - The best Jellyfin music client on iOS. Offline caching, gapless playback, excellent UX. Free and open source. - **Fintunes** - Cross-platform music client (iOS and Android) - **Plappa** - Native iOS music client - **Jellify** - Open-source music client in active development - **Manet** - Free iOS music client - **Discrete** - Freemium music client for iOS and macOS - **Finer** - Free music client for iOS and macOS - **Dee Jellie** - Premium music client for Apple ecosystem - **Coppelia (Beta)** - Open-source music client ### iOS Reader - **JellyBook** - The only dedicated Jellyfin book/comic reader. Available via TestFlight. --- ## Android ### Jellyfin for Android (Official) The official Android app. Free, open source, available on Google Play, F-Droid, and Amazon Appstore. ### Findroid (Beta) **Hub page:** [Findroid on the JellyWatch Hub](https://jellywatch.app/hub/findroid-imp) The community's favorite Android client. Built with Material Design 3, Findroid offers: - Beautiful, modern interface - Offline downloads - Better performance than the official app - Available on Google Play, F-Droid, and IzzyOnDroid **Recommended for most Android users.** ### Streamyfin Cross-platform client (Android and iOS). Clean interface, active development. ### Fladder Flutter-based cross-platform client. Available on Google Play. ### Android-Specific Options - **AFinity (Beta)** - Open-source Android client in active development - **AfuseKt** - Freemium Android client - **Ghosten-Player** - Open-source player for Android and Android TV - **Hills** - Freemium client available on Android and Windows - **Phyn** - Freemium cross-platform player - **VidHub** - Freemium cross-platform player - **Playtorrio** - Open-source cross-platform client - **Reefin** - Open-source Android and Android TV client - **Void (Beta)** - Open-source Android and Android TV client - **JellyCine** - Open-source Android client - **Yamby** - Freemium Android client ### Android Music Clients - **Finamp** - Best Jellyfin music client on Android. Offline caching, gapless playback. Free and open source. - **Symfonium (Beta)** - Premium music client with exceptional UX. Paid, but worth it for audiophiles. Supports CarPlay and Android Auto. - **Gelli** - Lightweight open-source music client. Available on F-Droid. - **Fintunes** - Cross-platform music client - **Jellify** - Open-source music client - **Coppelia (Beta)** - Open-source music client ### Android Reader - **JellyBook** - Dedicated book/comic reader for Android. Available on IzzyOnDroid. --- ## Other Mobile Platforms ### Sailfish OS - **Sailfin** - The only Jellyfin client for Sailfish OS. Open source, available on OpenRepos. ### HarmonyOS (Huawei) - **FinVideo** - Open-source video client for HarmonyOS. Available on AppGallery. - **FinMusic (Music Client)** - Open-source music client for HarmonyOS. Available on AppGallery. ### Nintendo Switch - **Switchfin (Beta)** - Yes, you can run Jellyfin on your Nintendo Switch. Open source, actively maintained. [Switchfin on the JellyWatch Hub](https://jellywatch.app/hub/switchfin-imp) --- # TV Clients > Every TV client below that is on the JellyWatch Hub links to its dedicated page. For a curated overview, check the [community-voted best Jellyfin apps](https://jellywatch.app/hub/best). ## Apple TV ### Swiftfin (Official, Beta) The official Apple TV client, built natively in Swift. The best Jellyfin experience on Apple TV for most content. ### Infuse For 4K HDR and Dolby Vision, Infuse on Apple TV 4K is unmatched. Full Dolby Vision support across all profiles, Dolby Atmos passthrough, and a cinematic interface. **If you have an Apple TV 4K and 4K HDR content, Infuse is the answer.** ### Apple TV-Specific Options - **MrMC** - Open-source media player with Jellyfin support. Free with optional paid features. - **VidHub** - Freemium cross-platform player - **SenPlayer** - Freemium player for Apple ecosystem - **HamHub** - Free media player - **Filebar** - Freemium media player - **JellySee** - Paid Apple TV client - **yybx** - Paid Apple TV client - **Mediora** - Free open-source Apple TV client - **Dee Jellie (Music Client)** - Premium music client for Apple TV --- ## Android TV / Google TV / Fire TV ### Jellyfin for Android TV (Official) **Hub page:** [Jellyfin for Android TV on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-android-tv-imp) The official Android TV app. Purpose-built for the 10-foot experience with full D-pad navigation, 4K HDR support, and voice search integration. Works on: - Nvidia Shield (best performance) - Chromecast with Google TV - Sony, Philips, TCL Android TVs - Amazon Fire TV (via sideload or Amazon Appstore) ### Ghosten-Player Open-source player for Android and Android TV. Good alternative to the official app. ### JellyWatch for Android TV (Recommended) **[Get it on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv)** | **[Amazon Appstore](https://www.amazon.fr/dp/B0H6F1KLQ4)** | **[jellywatch.app/android-tv](https://jellywatch.app/android-tv)** The most complete Jellyfin client for Android TV and Google TV. Built natively with Jetpack Compose and designed entirely around the remote, JellyWatch is the only Android TV client that ships the full set of advanced playback and quality-of-life features in a single app. **Playback** - Direct Play with hardware-accelerated ExoPlayer (Media3). H.264, HEVC, AV1 (libdav1d software fallback), VP9, HDR10, HDR10+, Dolby Vision - TrueHD Atmos and DTS:X passthrough via FFmpeg audio extension, with force mode for stubborn HDMI/eARC setups - Intelligent 3-level fallback: passthrough first, then local FFmpeg decode, then server transcode only as last resort - Trickplay thumbnails: scrub the timeline and see a live scene preview above the seek bar (Jellyfin 10.9+) - Display rate switching: automatically matches your TV refresh rate to the video frame rate (24p, 25p, 30p, 60p), eliminating judder - Live quality switching between Original, 4K, 1080p, 720p, 480p and 360p during playback - Subtitles: ASS/SSA rendered pixel-perfect via libass, PGS and DVBSub decoded locally - Playback speed 0.5x to 2x, zoom/aspect ratio (Fit, Fill, Crop), Stats for Nerds overlay with codec, bitrate, HDR type, audio delivery mode, dropped frames and network bandwidth - Skip intro and credits: Off, Auto-skip or Button, independently configurable per segment type (intro, credits, recap, preview, commercials) - Audio Night Mode: dynamic range compression for late-night sessions **Watching Together** - SyncPlay: create or join a group and watch any movie or series in perfect sync. Play, pause and seek together in real time. Playback pauses automatically when someone is buffering and resumes when everyone is ready **Browsing and Discovery** - Theme songs play softly in the background on movie and series detail pages - Local trailer autoplay from server-side files (no YouTube, no API key required) - Customizable home screen: choose which rows appear and in what order, reorder sidebar libraries, each user saves their own layout - Seerr/Jellyseerr integration: discover trending titles and request movies or TV shows directly from your remote - Home Screen Channels: Continue Watching and Recently Added on the Android TV launcher **Account and Comfort** - TV Quick Login: sign in with a short code shown on your phone, no TV keyboard required - Multi-account: switch between Jellyfin accounts instantly, each with their own watch history and preferences - Still Watching: pauses playback after several consecutive episodes without remote interaction (configurable threshold 2-5 episodes) - Built-in screensaver: artwork slideshow with Ken Burns zoom, horizontal parallax and smooth crossfade, with automatic position shifts for OLED burn-in protection - Admin dashboard: monitor active sessions, library stats and running tasks from the couch - Feature Board: vote on upcoming features and shape the development roadmap Works on NVIDIA Shield, Chromecast with Google TV, Sony Bravia, Xiaomi Mi Box, Amazon Fire TV, and any Android TV 8.0+ device. ### Android TV-Specific Options - **Fladder** - Flutter-based cross-platform client with Android TV support - **Reefin** - Open-source Android and Android TV client - **Void (Beta)** - Open-source Android and Android TV client - **AfuseKt TV** - Paid Android TV client - **DUNE (Beta)** - Open-source Android TV client in active development - **Elefin** - Open-source Android TV client - **Wholphin** - Open-source Android TV client, available on Google Play - **Moonfin** - Multi-platform client (Android TV, Roku, webOS, Tizen) - **Yamby** - Freemium Android TV client --- ## Kodi ### Jellyfin for Kodi (Official) **Hub page:** [Jellyfin for Kodi on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-kodi-imp) The full Jellyfin integration for Kodi. Syncs your entire library into Kodi's native interface, including watched status, metadata, and artwork. - **Best for:** Existing Kodi users who want to keep their setup - **Hub page:** [Jellyfin for Kodi on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-kodi-imp) ### JellyCon (Official) A lighter Kodi integration that streams directly from Jellyfin without full library sync. Faster to set up, lower resource usage. - **Best for:** Users who want Jellyfin in Kodi without full sync overhead --- ## Roku ### Jellyfin for Roku (Official) **Hub page:** [Jellyfin for Roku on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-roku-imp) The official Jellyfin Roku channel. Available in the Roku Channel Store. - **Download:** [channelstore.roku.com](https://channelstore.roku.com/details/592369/jellyfin) ### JellyRock An alternative Roku client with a different interface approach. Open source. ### Moonfin A multi-platform client with Roku support alongside Android TV, webOS, and Tizen. --- ## Samsung Tizen ### Jellyfin for Tizen (Official) **Hub page:** [Jellyfin for Tizen on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-tizen-imp) The official Samsung Smart TV client. Requires building from source - no pre-built package available in the Samsung app store. - **Hub page:** [Jellyfin for Tizen on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-tizen-imp) ### Moonfin Also supports Tizen alongside other TV platforms. --- ## LG webOS ### Jellyfin for WebOS (Official) **Hub page:** [Jellyfin for WebOS on the JellyWatch Hub](https://jellywatch.app/hub/jellyfin-lgwebos-imp) The official LG Smart TV client. Available in the LG Content Store. - **Download:** [LG Content Store](https://us.lgappstv.com/main/tvapp/detail?appId=1030579) ### Breezyfin (Beta) An alternative webOS client in active development. Open source. ### Moonfin Also supports webOS. --- # Choosing the Right Client: Quick Decision Guide ## By Use Case | Use case | Recommended client | |---|---| | Best Android video client | Findroid | | Best iOS video client | Swiftfin | | Best Apple TV client | Infuse (4K HDR) or Swiftfin | | Best Android TV client | JellyWatch for Android TV or Official Jellyfin for Android TV | | Best desktop client | Jellyfin Media Player | | Best music client (Android) | Finamp or Symfonium | | Best music client (iOS) | Finamp | | Best music client (desktop) | Feishin or Supersonic | | Best browser client | Jellyfin Vue or Shadfin | | Nintendo Switch | Switchfin | | Samsung TV | Jellyfin for Tizen | | LG TV | Jellyfin for WebOS | | Kodi users | Jellyfin for Kodi | | Roku users | Jellyfin for Roku | ## By Priority **If you prioritize open source:** Almost every client listed here is open source. Jellyfin's ecosystem is overwhelmingly community-driven. **If you prioritize 4K HDR quality:** Infuse on Apple TV, Nvidia Shield with the official Android TV app, or Jellyfin Media Player on desktop with madVR. **If you prioritize music:** Finamp (mobile), Feishin (desktop/browser), Symfonium (Android premium). **If you prioritize cross-platform:** Jellyflix and Fladder both run on nearly every platform from a single codebase. --- # The Admin Layer: JellyWatch All the clients above are for **watching** content. But if you run a Jellyfin server, you also need tools for **managing** it. **JellyWatch** is the dedicated Android admin companion for Jellyfin: - Real-time session monitoring - see every active stream - Transcoding diagnostics - know exactly why a stream is buffering - Server health: CPU, RAM, GPU, storage - Push notifications for new sessions and CPU spikes - Radarr, Sonarr, and Jellyseerr integration - Watch history and viewing statistics - Android home screen widget - Watch Pass: share premium access with your users While your users enjoy their favorite clients, you keep the server running smoothly from your pocket. --- # FAQ: Jellyfin Clients **How many Jellyfin clients are there in 2026?** Over 70 clients across all platforms - browser, desktop, mobile, and TV. **Which Jellyfin client is best for 4K HDR?** Infuse on Apple TV 4K for the best picture quality. The official Android TV app on Nvidia Shield is a close second. **Is there a Jellyfin client for Samsung TVs?** Yes - Jellyfin for Tizen. It requires building from source, which is more technical than other platforms. **What is the best free Jellyfin client for Android?** Findroid for video, Finamp for music. Both are free and open source. **Can I use Jellyfin on a Nintendo Switch?** Yes - Switchfin is an actively maintained open-source client for the Switch. **Is there a Jellyfin client for Huawei devices?** Yes - FinVideo (video) and FinMusic (music) both support HarmonyOS and are available on AppGallery. **What is the difference between Jellyfin for Kodi and JellyCon?** Jellyfin for Kodi does a full library sync into Kodi's database. JellyCon streams directly without syncing - faster setup, lower resource usage. **Do I need a Jellyfin account to use these clients?** No. Jellyfin requires no external account. You connect directly to your server with a local username and password. --- # Final Thoughts The breadth of Jellyfin's client ecosystem is one of its most underappreciated advantages. No other self-hosted media server - not Plex, not Emby - has inspired this level of community development across this many platforms. From a Nintendo Switch in your living room to a Huawei phone in your pocket, from a Raspberry Pi browser tab to a 4K Apple TV with Dolby Vision - there is a Jellyfin client for every screen. And behind all of it, your server keeps running. Make sure you know what it's doing. **Want a faster shortlist?** The [community-curated awesome list](https://jellywatch.app/hub/awesome) and the [most popular community picks](https://jellywatch.app/hub/best) on the JellyWatch Hub surface the apps that admins actually deploy in 2026. --- > **Running a Jellyfin server for all these clients? Keep it under control.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding diagnostics, and server health for Jellyfin admins on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience for Emby servers.* --- ## 7 Must-Have Jellyfin Plugins Beyond the Basics: Intro Skipper, Merge Versions & More (2026) URL: https://jellywatch.app/blog/jellyfin-intro-skipper-chapters-plugins-quality-of-life-2026 Published: 2026-03-23T19:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, plugins, intro-skipper, chapter-images, merge-versions, quality-of-life, 2026 # Jellyfin Quality-of-Life Plugins in 2026: Intro Skipper, Chapter Images & More Jellyfin's plugin ecosystem has matured significantly. Beyond the well-known plugins (OpenSubtitles, Trakt), there is a second tier of **quality-of-life plugins** that dramatically improve the daily experience for both admins and viewers. This guide covers the best QoL plugins, how to install them, and how to configure each one. --- ## How to Install Plugins in Jellyfin ### From the official catalog 1. Dashboard → Plugins → Catalog 2. Find the plugin → Install 3. Restart Jellyfin ### From a third-party repository Some plugins are not in the official catalog: 1. Dashboard → Plugins → Repositories → Add 2. Enter the repository URL 3. The repository's plugins appear in the Catalog --- ## Plugin 1: Intro Skipper **What it does:** Automatically detects TV show intro sequences and adds a "Skip Intro" button - just like Netflix. It is the most widely installed Jellyfin plugin in 2026. Intro Skipper uses **audio chromaprint fingerprinting** (the same technology behind Shazam and AcoustID) to detect repeated audio segments across episodes of the same series. When it finds a match, it marks the exact timestamps and presents a skip button in the player UI. It also detects **credit sequences** at the end of episodes. > **Warning:** The actively maintained version in 2026 is at `intro-skipper/intro-skipper`. The original by ConfusedPolarBear is no longer maintained. **Repository:** `https://raw.githubusercontent.com/intro-skipper/intro-skipper/master/manifest.json` ### Installation 1. Dashboard → Plugins → Repositories → Add the repository URL above 2. Install **Intro Skipper** from the Catalog 3. **Restart Jellyfin** ### Configuration Dashboard → Plugins → Intro Skipper: | Setting | Recommended Value | Why | |---|---|---| | **Analyze after library scan** | Enabled | Automatically processes new episodes | | **Minimum intro duration** | 15 seconds | Filters out false positives (short bumpers) | | **Maximum intro duration** | 120 seconds | Most TV intros are under 2 minutes | | **Show skip intro button** | Enabled | The core feature | | **Show skip credits button** | Enabled | Triggers "Next Episode" prompt | | **Auto skip intros** | Disabled | Let users choose - auto-skip can be jarring | | **Fingerprint cache** | Enabled | Avoids re-analyzing already processed episodes | ### Initial analysis and CPU impact The first analysis scans your entire TV library. This is the most CPU-intensive part: | Library size | Approximate time | CPU impact | |---|---|---| | 100 episodes | 10-30 minutes | Moderate | | 1,000 episodes | 2-6 hours | High | | 5,000 episodes | 12-24 hours | Very high | > The initial analysis is a one-time cost. After the first run, only new episodes are analyzed incrementally. **Managing CPU usage:** - Schedule analysis during off-peak hours (Dashboard → Scheduled Tasks → Detect Introductions → set to 3 AM) - Limit analysis threads to 2 on low-power hardware (N100, Raspberry Pi) - Exclude non-TV libraries (movies, music) in plugin settings ### Client compatibility | Client | Skip Intro | Skip Credits | Auto-Skip | |---|---|---|---| | **Jellyfin Web** | ✅ | ✅ | ✅ | | **Jellyfin Android** | ✅ | ✅ | ✅ | | **Jellyfin Android TV** | ✅ | ✅ | ✅ | | **Jellyfin iOS (Swiftfin)** | ✅ (1.4+) | ✅ | Partial | | **Jellyfin Media Player** | ✅ | ✅ | ✅ | | **Findroid** | Partial | Partial | ❌ | | **Infuse** | ❌ | ❌ | ❌ | | **Kodi + Jellyfin addon** | ❌ (Kodi has its own skip) | ❌ | ❌ | > **Infuse users:** Infuse does not support Jellyfin server-side plugins. The skip button will not appear. ### Manual overrides For shows where automatic detection fails (cold opens, variable anime intros): 1. Navigate to the episode → Edit → **Intro Skipper** section 2. Set the intro start and end timestamps manually 3. Manual overrides take priority over automatic detection ### Intro Skipper vs Jellyfin Native Media Segments Jellyfin 10.10 introduced **Media Segments** - a server-side API for defining typed time-spans. The official chapter-based segment plugin uses chapter names to detect intros. | Feature | Intro Skipper | Native Media Segments | |---|---|---| | Detection method | Audio fingerprinting | Chapter name matching | | Accuracy | Very high | Depends on chapter quality | | Works without chapters | Yes | No | | CPU cost | High (initial scan) | Low | **For most users, Intro Skipper is the better choice** because it works regardless of whether your files have chapter markers. ### Troubleshooting | Problem | Fix | |---|---| | Skip button not appearing | Use a compatible client (see table above) | | No intros detected | Run "Detect Introductions" manually | | Wrong intro timestamps | Increase minimum intro duration to 20-25s | | CPU at 100% for hours | Normal for first run - schedule during off-peak | | Plugin not in catalog | Verify the repository URL is correct | --- ## Plugin 2: Chapter Images **What it does:** Generates thumbnail images for each chapter in your videos. These appear in the seek bar when scrubbing - exactly like YouTube chapter previews. **Source:** Official Jellyfin catalog ### Installation Dashboard → Plugins → Catalog → **Chapter Image Extractor** → Install → Restart ### Configuration Dashboard → Plugins → Chapter Image Extractor: - **Extract chapter images during library scan:** Enabled - **Image resolution:** 320×180 (good balance of quality and storage) ### Storage impact Chapter images are stored in `/config/metadata/`. For a large library: - Average movie (10 chapters): ~3 MB of thumbnails - 1000 movies: ~3 GB additional metadata storage Worth it for the scrubbing experience. --- ## Plugin 3: Merge Versions **What it does:** Merges duplicate versions of the same movie (e.g., 1080p and 4K copies) into a single library entry. Users see one item and can choose their preferred version at playback. **Source:** Official Jellyfin catalog ### Installation Dashboard → Plugins → Catalog → **Merge Versions** → Install → Restart ### How to use After installation, run the merge task: Dashboard → Scheduled Tasks → **Merge all movie versions** → Run Now Jellyfin identifies duplicates by TMDB ID and merges them automatically. ### File naming for multiple versions ``` The Dark Knight (2008)/ The Dark Knight (2008) - 1080p.mkv The Dark Knight (2008) - 4K.mkv The Dark Knight (2008) - 4K DV.mkv ``` Jellyfin shows one entry with a version selector at playback. --- ## Plugin 4: Playback Reporting **What it does:** Records detailed playback statistics - who watched what, when, for how long, on which device, and with what playback method. **Source:** Official Jellyfin catalog ### Installation Dashboard → Plugins → Catalog → **Playback Reporting** → Install → Restart ### What it tracks - Every play event (start, pause, stop, seek) - User, device, client app - Playback method (Direct Play / Transcode) - Duration watched - Item played (title, season, episode) ### Viewing reports Dashboard → Plugins → Playback Reporting → Reports: - **User activity:** Who watches the most - **Popular content:** Most-watched movies and shows - **Playback methods:** Direct Play vs Transcode ratio - **Device breakdown:** Which clients are used most ### Export data Playback Reporting stores data in a SQLite database that can be exported for external analysis (Grafana, Excel, etc.). --- ## Plugin 5: Skin Manager **What it does:** Applies custom CSS themes to the Jellyfin web interface with one click - no manual CSS editing required. **Source:** Official Jellyfin catalog ### Installation Dashboard → Plugins → Catalog → **Skin Manager** → Install → Restart ### Available themes | Theme | Style | |---|---| | Ultrachromic | Dark, vibrant, Netflix-like | | Jellyfin Reborn | Clean, modern redesign | | Noir | Minimal dark theme | | Kaleidochromic | Colorful, playful | Dashboard → Plugins → Skin Manager → Select theme → Apply --- ## Plugin 6: Jellyscrub **What it does:** Generates video preview thumbnails that appear when hovering over the seek bar - the "trickplay" feature you see on Netflix and YouTube. **Repository:** `https://raw.githubusercontent.com/nicknsy/jellyscrub/main/manifest.json` ### Installation 1. Add the repository 2. Install **Jellyscrub** 3. Restart Jellyfin 4. Run the scheduled task: **Generate Trickplay Images** ### Storage impact Trickplay images are larger than chapter images: - Average movie: ~50-100 MB of trickplay images - 1000 movies: ~50-100 GB Consider storage before enabling for large libraries. Store trickplay data on a fast drive for best performance. > **Note:** Jellyfin 10.9+ includes native trickplay support - check if your version already has it before installing Jellyscrub. --- ## Plugin Compatibility Matrix | Plugin | Jellyfin 10.8 | Jellyfin 10.9 | Performance impact | |---|---|---|---| | Intro Skipper | ✅ | ✅ | Low (background task) | | Chapter Images | ✅ | ✅ | Low | | Merge Versions | ✅ | ✅ | None | | Playback Reporting | ✅ | ✅ | Very low | | Skin Manager | ✅ | ✅ | None | | Jellyscrub | ✅ | ⚠️ (use native) | Medium (generation) | --- ## Recommended Plugin Stack For a well-rounded Jellyfin setup: 1. **Intro Skipper** - skip intros like Netflix 2. **Chapter Image Extractor** - visual scrubbing 3. **Merge Versions** - clean library with multiple quality options 4. **Playback Reporting** - understand your server usage 5. **OpenSubtitles** - subtitle downloads 6. **Trakt** - watch history sync and backup 7. **Skin Manager** - beautiful UI --- ## Monitor Plugin Performance Impact Some plugins run background tasks that can spike CPU usage - especially Intro Skipper analysis and Jellyscrub generation. Schedule these tasks during off-peak hours. **JellyWatch** shows you CPU usage in real time - you can see exactly when a background plugin task is running and how much it impacts your server. --- > **Great plugins installed - now monitor your server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session tracking, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin on Android TV and Google TV: Complete Setup Guide (2026) URL: https://jellywatch.app/blog/jellyfin-android-tv-google-tv-setup-guide-2026 Published: 2026-03-22T17:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, android-tv, google-tv, nvidia-shield, fire-tv, chromecast, 2026 # Jellyfin on Android TV and Google TV: Complete Setup Guide (2026) Android TV and Google TV are the most popular smart TV platforms in the world - and Jellyfin has excellent support for both. Whether you have a Nvidia Shield, a Chromecast with Google TV, a Fire TV Stick, or a built-in Android TV, this guide gets you to the perfect living room setup. --- ## Android TV vs Google TV: What's the Difference? | Platform | Examples | Jellyfin app | |---|---|---| | **Android TV** | Nvidia Shield, Sony TVs (older), Philips | Official Jellyfin for Android TV | | **Google TV** | Chromecast with Google TV, Sony TVs (2021+) | Official Jellyfin for Android TV | | **Fire TV** | Fire TV Stick, Fire TV Cube | Official Jellyfin for Fire TV | All three run the same Jellyfin Android TV app - the interface and features are identical. --- ## Installing Jellyfin on Android TV / Google TV ### Method 1: Google Play Store (easiest) 1. Open the Play Store on your Android TV / Google TV 2. Search for **Jellyfin** 3. Install the official **Jellyfin for Android TV** app 4. Open the app → Add Server → enter your Jellyfin URL ### Method 2: Sideload APK (if Play Store unavailable) Some older Android TV devices or custom ROMs may not have the Play Store: 1. Enable **Unknown sources** in Settings → Security 2. Install a file manager (e.g., FX File Explorer) from the Play Store 3. Download the Jellyfin APK from [jellyfin.org/downloads](https://jellyfin.org/downloads/) 4. Open the APK with the file manager to install ### Fire TV Stick 1. Search "Jellyfin" in the Amazon Appstore 2. Install the official Jellyfin app 3. Alternatively, sideload via Downloader app (search "Downloader" in Amazon Appstore) --- ## Initial Configuration ### Add your server 1. Open Jellyfin → **Add Server** 2. Enter your server URL: - Local: `http://192.168.1.100:8096` - Remote: `https://jellyfin.yourdomain.com` 3. Log in with your Jellyfin credentials ### Critical settings for best performance In the Jellyfin app → Settings → Playback: | Setting | Recommended value | |---|---| | Max streaming bitrate | **Original** (no limit) | | Preferred media player | **ExoPlayer** (default) | | Direct play | **Enabled** | | Direct stream | **Enabled** | | Allow transcoding | **Enabled** (fallback only) | Setting bitrate to **Original** is the single most important change - it prevents Jellyfin from unnecessarily transcoding high-quality content. --- ## Device-Specific Optimization ### Nvidia Shield Pro (best Android TV for Jellyfin) The Shield Pro is the gold standard for Jellyfin on Android TV: - **Tegra X1+ chip** handles H.265 Direct Play natively - **Dolby Vision and Atmos passthrough** supported - **4K HDR Direct Play** for virtually all content - **Plex Media Server** can run alongside Jellyfin Optimization tips: 1. Settings → Display → Match Content → Enable **Match Frame Rate** and **Match Dynamic Range** 2. This switches the TV to the exact frame rate and HDR mode of each video automatically 3. Enable **Dolby Vision** in Shield display settings ### Chromecast with Google TV 4K - Supports H.265 Direct Play and HDR10 - Dolby Vision Profile 5 and 8 supported - Limited RAM (2 GB) - avoid running other apps simultaneously - Set Jellyfin bitrate to **Original** for best quality ### Fire TV Stick 4K Max (2nd gen) - H.265 Direct Play supported - HDR10, HDR10+, Dolby Vision supported - **No DTS audio passthrough** - use AC3/EAC3 or AAC audio tracks - Enable "Dolby Atmos" in Fire TV audio settings for Atmos passthrough ### Sony Android TV / Google TV - Built-in Android TV with Bravia Core - H.265 Direct Play supported on most 2019+ models - Enable **HDMI Enhanced Format** in TV settings for HDR passthrough - Use the Jellyfin app from the Play Store ### Xiaomi / TCL / Hisense Android TV - Budget Android TV devices with variable codec support - H.264 Direct Play: universal - H.265 Direct Play: most 2020+ models - HDR10: most 4K models - Dolby Vision: limited (check your specific model) --- ## Remote Control and Navigation ### Standard Android TV remote The Jellyfin Android TV app is fully optimized for D-pad navigation: - Arrow keys to browse - OK/Select to play - Back to go up - Long press for context menu ### Keyboard shortcuts (USB/Bluetooth keyboard) | Key | Action | |---|---| | Space | Play/Pause | | Left/Right arrow | Seek ±10 seconds | | Up/Down arrow | Volume | | F | Toggle fullscreen | ### Android TV remote app Use the **Google TV** app on Android to control your device from your phone - useful when the physical remote is missing. --- ## Enabling Live TV on Android TV If you have Live TV configured on your Jellyfin server: 1. Open Jellyfin → navigate to **Live TV** in the sidebar 2. Browse the channel guide 3. Tap any channel to start streaming 4. DVR recordings appear under **Recordings** Live TV works identically on Android TV as on other clients. --- ## Troubleshooting Android TV Issues | Problem | Cause | Fix | |---|---|---| | App crashes on launch | Outdated app version | Update from Play Store | | Buffering on local network | Bitrate limit set too low | Set to Original | | No HDR / washed out colors | TV not in HDR mode | Enable Match Dynamic Range | | No audio on some files | Unsupported audio codec | Enable audio transcoding in app settings | | Cannot find server | Wrong URL or firewall | Verify server URL and port | | Subtitles not showing | Subtitle format issue | Switch to SRT subtitles | --- ## Best Android TV Devices for Jellyfin in 2026 | Device | Price | 4K HDR | Dolby Vision | Best for | |---|---|---|---|---| | Nvidia Shield Pro | ~$199 | ✅ | ✅ | Power users, best performance | | Chromecast with Google TV 4K | ~$49 | ✅ | ✅ | Budget 4K | | Fire TV Stick 4K Max | ~$59 | ✅ | ✅ | Amazon ecosystem | | Apple TV 4K (with Infuse) | ~$129 | ✅ | ✅ Full | Best overall picture quality | | Xiaomi Mi Box S 4K | ~$59 | ✅ | ❌ | Budget Android TV | --- ## Recommended: JellyWatch for Android TV The official Jellyfin Android TV app covers the basics, but if you want the most complete Jellyfin experience on your TV, **[JellyWatch for Android TV](https://jellywatch.app/android-tv)** is the client with the most features in a single app. **[Get it on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.tv)** | **[Get it on Amazon Appstore](https://www.amazon.fr/dp/B0H6F1KLQ4)** (Fire TV) ### What JellyWatch adds over the official app - **Trickplay thumbnails** - scrub the timeline with your remote and see a live preview of the scene at the target position, no more guessing where you are in a 2-hour movie - **Theme songs** - ambient background music plays automatically when browsing movie and series pages, configurable volume (Off, Low, Medium, High) - **Display rate switching** - automatically matches your TV refresh rate to the video frame rate (24p, 25p, 60p), eliminates judder for cinema-quality motion - **Stats for Nerds** - live overlay showing video codec, resolution, bitrate, HDR type, audio codec, dropped frames, buffer health, and display mode - **Home Screen Channels** - Continue Watching and Recently Added appear directly on your Android TV launcher, resume in one click without opening the app - **Built with Jetpack Compose for TV** - the UI is fast, fluid, and designed entirely around remote control navigation with no lag between screens - **Real Direct Play** with hardware-accelerated ExoPlayer (Media3) and 4K HDR, HDR10+, Dolby Vision support - **Quality selection** - switch between Original, 4K, 1080p, 720p, 480p during playback - **Seerr/Jellyseerr integration** - request new movies and TV shows directly from your TV remote - **Up Next auto-play** - when an episode ends, the next one starts with a 15-second countdown - **Admin dashboard on TV** - monitor active sessions, trigger library scans, and view server stats from the couch - **Full subtitle support** including styled ASS/SSA, PGS burn-in, and external subtitles - **Multi-account** - switch between Jellyfin users instantly on a shared TV ### Supported devices | Device | Supported | |---|---| | Nvidia Shield / Shield Pro | Yes | | Chromecast with Google TV | Yes | | Sony Android TV / Google TV | Yes | | TCL / Hisense / Xiaomi Android TV | Yes | | Amazon Fire TV (Amazon Appstore) | Yes | | Onn 4K Pro | Yes | | Any Android TV 8.0+ device | Yes | ### Setup 1. Install JellyWatch from the [Google Play Store](https://play.google.com/store/apps/details?id=com.jellywatch.tv) or [Amazon Appstore](https://www.amazon.fr/dp/B0H6F1KLQ4) 2. Open the app and enter your Jellyfin server URL 3. Log in with your credentials or use QuickConnect 4. Start watching - Direct Play is enabled by default, trickplay and theme songs work automatically JellyWatch detects your device capabilities automatically and only falls back to transcoding when absolutely necessary. --- ## Monitor Your Android TV Sessions Once your Android TV is streaming, you want to know: - Is it Direct Playing or transcoding? - What codec and bitrate is being used? - Is the server under load? **JellyWatch** (the mobile admin app) shows you every active session including Android TV streams - playback method, codec, bitrate, and transcode reason - all from your Android phone. --- > **Jellyfin running on your TV? Get the best of both worlds.** > [Download JellyWatch for Android TV](https://play.google.com/store/apps/details?id=com.jellywatch.tv) - a fast, native Jellyfin client built for the big screen. > [Download JellyWatch on your phone](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring for every Jellyfin client including Android TV. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin 4K HDR and Dolby Vision Setup Guide (2026): Tone Mapping, Direct Play, and Compatibility URL: https://jellywatch.app/blog/jellyfin-4k-hdr-dolby-vision-setup-guide-2026 Published: 2026-03-22T15:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, 4k, hdr, dolby-vision, tone-mapping, direct-play, 2026 # Jellyfin 4K HDR and Dolby Vision Setup Guide (2026) 4K HDR is the gold standard for home media - but getting it right on Jellyfin requires understanding a surprisingly complex chain of hardware, software, and client compatibility. One wrong setting and your HDR content plays washed out, or triggers an unnecessary transcode. This guide covers everything: HDR formats, tone mapping, Direct Play requirements, and client-by-client compatibility. --- ## HDR Formats Explained | Format | Bit depth | Dynamic metadata | Compatibility | |---|---|---|---| | **HDR10** | 10-bit | Static | Universal - all HDR TVs | | **HDR10+** | 10-bit | Dynamic | Samsung TVs, some LG | | **Dolby Vision** | 12-bit | Dynamic | Dolby-licensed devices | | **HLG** | 10-bit | None | Broadcast standard | **HDR10** is the baseline - every HDR display supports it. **Dolby Vision** delivers the best picture quality but requires licensed hardware on both the server output and the display. --- ## The Golden Rule: Direct Play For 4K HDR, **Direct Play is the only acceptable playback method**. When Jellyfin transcodes a 4K HDR file: - The HDR metadata is stripped or tone-mapped - Quality degrades significantly - CPU/GPU load spikes to 100% - Bitrate drops from 50-80 Mbps to whatever your transcode target is Your goal is to ensure every 4K HDR stream plays directly - zero transcoding. ### Requirements for Direct Play - Client supports the **video codec** (H.264, H.265/HEVC, AV1) - Client supports the **audio codec** (TrueHD, DTS-X, Atmos - or passthrough) - Client supports the **container** (MKV, MP4) - Network bandwidth: **50-80 Mbps** for 4K HDR (local network is fine; remote needs fast upload) --- ## Jellyfin Server Configuration for 4K HDR ### Enable hardware transcoding (for fallback) Even if your goal is Direct Play, configure hardware transcoding for clients that cannot Direct Play: Dashboard → Playback → Transcoding: - Hardware acceleration: **Intel QSV** / **NVIDIA NVENC** / **AMD AMF** - Enable **HEVC (H.265) encoding** - Enable **HDR to SDR tone mapping** - Enable **Hardware tone mapping** (if your GPU supports it) ### Tone mapping settings Tone mapping converts HDR to SDR for clients that cannot display HDR. Without it, HDR content looks washed out on SDR screens. | Setting | Recommendation | |---|---| | Tone mapping algorithm | **BT.2390** (best quality) or Hable | | Tone mapping mode | **Auto** | | HDR to SDR | Enabled | | Hardware tone mapping | Enabled (if GPU supports) | > **Intel Arc and newer Intel iGPUs** support hardware tone mapping natively - much better quality than software tone mapping. --- ## Dolby Vision: The Full Picture Dolby Vision is the most complex HDR format. There are **8 Dolby Vision profiles** - not all are equal: | Profile | Description | Jellyfin support | |---|---|---| | Profile 5 | Single-layer, MP4 | Good (Direct Play on compatible clients) | | Profile 7 | Dual-layer, MKV | Limited (most clients strip DV layer) | | Profile 8 | Single-layer, cross-compatible | Best - compatible with most clients | | Profile 9 | HDR10 base with DV enhancement | Rare | ### Dolby Vision Profile 8 (recommended) Profile 8 files play as HDR10 on non-DV clients and as full Dolby Vision on DV-capable clients. This is the most compatible format for a shared Jellyfin server. ### Which clients support Dolby Vision? | Client | Dolby Vision support | |---|---| | Apple TV 4K | ✅ Full (all profiles) | | Nvidia Shield Pro | ✅ Profile 5, 8 | | Fire TV Stick 4K Max | ✅ Profile 5, 8 | | Chromecast with Google TV 4K | ✅ Profile 5, 8 | | Jellyfin Media Player (PC) | ❌ Falls back to HDR10 | | Android TV (generic) | Varies by device | | Web browser | ❌ No DV support | --- ## Client-by-Client 4K HDR Compatibility ### Apple TV 4K (best Jellyfin 4K client) Use **Infuse 7** (not the official Jellyfin app): - Direct Play for virtually all 4K HDR formats - Full Dolby Vision support (all profiles) - Dolby Atmos passthrough - DTS-X passthrough Infuse is the gold standard for 4K HDR on Jellyfin. ### Nvidia Shield Pro - Use the official Jellyfin Android TV app - Direct Play for H.265 HDR10 and Dolby Vision Profile 5/8 - Enable "Direct Play" in the Jellyfin app settings - Set max bitrate to **Original** (no limit) ### Fire TV Stick 4K Max - Supports H.265 Direct Play - HDR10 and Dolby Vision Profile 5/8 - Limit: no DTS audio passthrough (use AC3/EAC3 or AAC) ### Chromecast with Google TV 4K - H.265 Direct Play supported - HDR10 and Dolby Vision Profile 5/8 - Audio: Dolby Atmos passthrough supported ### PC (Jellyfin Media Player / mpv) - H.265 Direct Play with madVR or mpv renderer - HDR passthrough requires Windows HDR mode enabled - Dolby Vision: falls back to HDR10 - Best for: users with HDR monitors --- ## Diagnosing 4K HDR Issues ### Content looks washed out **Cause:** HDR content playing on an SDR display without tone mapping, OR the display is not in HDR mode. **Fix:** 1. Enable HDR mode on your TV/display 2. Enable tone mapping in Jellyfin transcoding settings 3. Check that the client is passing HDR metadata through ### Buffering on 4K content **Cause:** Transcoding triggered (network too slow, or client cannot Direct Play). **Fix:** 1. Check the active session in JellyWatch - is it transcoding? 2. If yes: identify the reason (codec, audio, subtitles) 3. Set client bitrate to **Original** in app settings 4. Disable subtitles if they are PGS (forces burn-in transcode) ### Dolby Vision not working **Cause:** Client does not support the DV profile, or Jellyfin is remuxing the file. **Fix:** 1. Check the DV profile of your file (use MediaInfo) 2. Ensure the client supports that profile 3. Use Profile 8 files for maximum compatibility --- ## Recommended 4K HDR File Specs for Jellyfin | Spec | Recommendation | |---|---| | Video codec | H.265 (HEVC) | | HDR format | HDR10 or Dolby Vision Profile 8 | | Audio | EAC3 Atmos or TrueHD Atmos | | Container | MKV | | Bitrate | 50-80 Mbps | | Resolution | 3840×2160 | --- ## Monitor 4K HDR Sessions 4K HDR transcodes are the most resource-intensive events on your server. A single unexpected 4K transcode can max out your CPU and degrade every other stream. **JellyWatch** shows you in real time: - Whether a 4K session is Direct Play or transcoding - The exact transcode reason (codec, audio, subtitle) - CPU and GPU usage during the transcode - Push notification when a new 4K session starts --- > **Serving 4K HDR? Know exactly what your server is doing.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time 4K session monitoring, transcode alerts, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same 4K monitoring experience for Emby servers.* --- ## Fix Jellyfin Wrong Metadata: Posters, TMDB Matching & NFO Override (2026 Guide) URL: https://jellywatch.app/blog/jellyfin-metadata-fix-tmdb-nfo-artwork-guide-2026 Published: 2026-03-22T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, metadata, tmdb, nfo, artwork, kometa, 2026 # Jellyfin Metadata Guide: Fix Wrong Metadata, NFO Files & Artwork (2026) Metadata is what transforms a folder of video files into a beautiful media library. When it goes wrong - wrong posters, misidentified movies, missing episode descriptions - it is frustrating. This guide covers every method to fix, customize, and automate metadata in Jellyfin. --- ## How Jellyfin Fetches Metadata When you add media to a library, Jellyfin: 1. Reads the **filename** to identify the title and year 2. Searches **TMDB** (movies) or **TVDB/TMDB** (TV shows) for a match 3. Downloads title, description, cast, ratings, posters, and backdrops 4. Stores everything in `/config/metadata/` The quality of this process depends entirely on your **file naming**. --- ## File Naming: The Foundation Jellyfin is strict about naming. Follow these formats exactly: ### Movies ``` /movies/ The Dark Knight (2008)/ The Dark Knight (2008).mkv Dune Part Two (2024)/ Dune Part Two (2024).mkv ``` - Always include the **year in parentheses** - Put each movie in its own folder - Avoid special characters in filenames ### TV Shows ``` /tv/ Breaking Bad/ Season 01/ Breaking Bad - S01E01 - Pilot.mkv Breaking Bad - S01E02 - Cat's in the Bag.mkv Season 02/ Breaking Bad - S02E01 - Seven Thirty-Seven.mkv ``` - Use `S##E##` format for episodes - Season folders are optional but recommended --- ## Fixing Wrong Metadata: Identify Feature When Jellyfin picks the wrong movie or show: 1. Navigate to the item in Jellyfin 2. Click the **three-dot menu** → **Identify** 3. Search by title, year, or TMDB/TVDB ID 4. Select the correct match 5. Jellyfin re-fetches all metadata from the correct source ### Using TMDB/TVDB IDs for exact matching For ambiguous titles (remakes, foreign films), use the database ID directly: ``` The Fly (1986) {tmdb-4511}/ The Fly (1986) {tmdb-4511}.mkv ``` Jellyfin reads the `{tmdb-XXXX}` tag in the folder name and matches exactly - no guessing. --- ## NFO Files: Local Metadata Override NFO files let you store metadata locally alongside your media files. Jellyfin reads them and uses them instead of (or in addition to) online sources. ### Movie NFO example Create `Movie Name (2024).nfo` in the movie folder: ```xml Movie Name 2024 Your custom description here. 12345 Action Thriller Director Name 8.5 ``` ### TV Show NFO Create `tvshow.nfo` in the show root folder: ```xml Show Name 12345 Show description. ``` ### Enable NFO reading in Jellyfin Dashboard → Libraries → [Library] → Edit → Metadata readers → Enable **Nfo** Set NFO as the **first** reader to prioritize local metadata over online sources. --- ## Custom Artwork Jellyfin supports local artwork files placed alongside your media. ### Supported artwork files | File | Purpose | |---|---| | `poster.jpg` | Movie/show poster | | `backdrop.jpg` | Background image | | `banner.jpg` | Wide banner | | `thumb.jpg` | Thumbnail | | `logo.png` | Transparent logo | | `season01-poster.jpg` | Season-specific poster | Place these files in the same folder as your media. Jellyfin detects them automatically on the next scan. ### Uploading artwork via the UI 1. Navigate to any item 2. Three-dot menu → **Edit Images** 3. Upload a custom image or paste an image URL 4. Set as primary poster --- ## Bulk Metadata Management with Jellyfin ### Refresh all metadata For a full library refresh: 1. Dashboard → Libraries → [Library] → three-dot menu → **Refresh Metadata** 2. Choose: Replace all metadata / Replace missing only 3. This re-fetches everything from TMDB/TVDB > **Warning:** "Replace all metadata" overwrites any manual edits. Use "Replace missing only" to preserve customizations. ### Lock metadata to prevent overwrites After manually fixing an item, lock it: 1. Edit the item → scroll to bottom → **Lock** each field you want to preserve 2. Locked fields are never overwritten by automatic refreshes --- ## Metadata Providers: Configuration Dashboard → Libraries → [Library] → Edit → Metadata providers ### Recommended order for movies 1. **TMDB** (primary - best coverage) 2. **OMDB** (secondary - adds Rotten Tomatoes scores) 3. **Nfo** (local override) ### Recommended order for TV shows 1. **TVDB** (primary - best episode data) 2. **TMDB** (secondary - better artwork) 3. **Nfo** (local override) --- ## Automating Metadata with Kometa **Kometa** (formerly Plex Meta Manager) works with Jellyfin to: - Apply custom collections automatically (e.g., "Marvel Cinematic Universe", "Best of 2024") - Set custom posters from MDBList or TMDB - Add overlays (4K badge, HDR label, ratings) - Sync ratings from Trakt, IMDb, and Letterboxd ```yaml # kometa config.yml snippet libraries: Movies: metadata_path: - pmm: basic - pmm: imdb overlay_path: - pmm: resolution - pmm: ratings ``` --- ## Common Metadata Issues | Issue | Cause | Fix | |---|---|---| | Wrong movie matched | Ambiguous title | Use `{tmdb-ID}` in folder name | | Missing episode info | Wrong naming format | Rename to `S##E##` format | | Poster not updating | Metadata locked | Unlock the image field | | Foreign film wrong language | TMDB language setting | Set preferred metadata language in library settings | | Anime wrong match | TVDB vs AniDB conflict | Use AniDB plugin for anime libraries | | Artwork blurry | Low-res source | Upload custom high-res artwork manually | --- ## FAQ **Where does Jellyfin store metadata?** In `/config/metadata/` (Docker) or `/var/lib/jellyfin/metadata/` (native). This folder should be included in your backups. **Can I use both NFO files and TMDB?** Yes. Configure the provider order - NFO first means local data takes priority, TMDB fills in missing fields. **How do I fix metadata for an entire season at once?** Navigate to the season → three-dot menu → Refresh Metadata → applies to all episodes in that season. **Does refreshing metadata reset watch history?** No. Watch history is stored separately from metadata. --- > **Your library looks great - now monitor who's watching it.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, user activity, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same library monitoring experience for Emby servers.* --- ## Prowlarr + qBittorrent Setup Guide: Complete Download Stack for Jellyfin (2026) URL: https://jellywatch.app/blog/prowlarr-qbittorrent-download-client-jellyfin-guide-2026 Published: 2026-03-22T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, prowlarr, qbittorrent, radarr, sonarr, download, automation, 2026 # Prowlarr + qBittorrent: Complete Download Stack for Jellyfin (2026) Radarr and Sonarr handle automation - but they need two things to work: an **indexer manager** (Prowlarr) and a **download client** (qBittorrent or Transmission). This guide covers the full download layer setup and how it feeds directly into your Jellyfin library. --- ## The Full Stack Overview ``` Prowlarr (indexers) → Radarr/Sonarr (automation) → qBittorrent (download) → Jellyfin (media server) ``` | Tool | Role | |---|---| | **Prowlarr** | Manages all torrent/usenet indexers in one place | | **Radarr** | Monitors and grabs movies automatically | | **Sonarr** | Monitors and grabs TV shows automatically | | **qBittorrent** | Downloads the files | | **Jellyfin** | Serves the media to your users | --- ## Docker Compose: Full Stack ```yaml services: prowlarr: image: lscr.io/linuxserver/prowlarr:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./prowlarr/config:/config ports: - 9696:9696 restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - WEBUI_PORT=8080 volumes: - ./qbittorrent/config:/config - /path/to/downloads:/downloads ports: - 8080:8080 - 6881:6881 - 6881:6881/udp restart: unless-stopped radarr: image: lscr.io/linuxserver/radarr:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./radarr/config:/config - /path/to/movies:/movies - /path/to/downloads:/downloads ports: - 7878:7878 restart: unless-stopped sonarr: image: lscr.io/linuxserver/sonarr:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./sonarr/config:/config - /path/to/tv:/tv - /path/to/downloads:/downloads ports: - 8989:8989 restart: unless-stopped ``` > **Critical:** All containers must share the same `/downloads` path so Radarr/Sonarr can move completed files. --- ## Step 1: Configure Prowlarr Prowlarr replaces individual indexer configuration in Radarr and Sonarr. Configure once, sync everywhere. ### Add indexers 1. Open Prowlarr at `http://your-server:9696` 2. Indexers → Add Indexer 3. Search for your preferred indexers (public or private trackers) 4. Configure credentials if required 5. Test and save ### Connect to Radarr and Sonarr 1. Settings → Apps → Add Application 2. Select **Radarr** → enter URL and API key 3. Repeat for **Sonarr** 4. Click **Sync App Indexers** - all indexers push to both apps automatically From now on, add indexers only in Prowlarr. They sync to all connected apps. --- ## Step 2: Configure qBittorrent ### Initial setup 1. Open qBittorrent Web UI at `http://your-server:8080` 2. Default credentials: `admin` / `adminadmin` (change immediately) 3. Tools → Options → Web UI → Change username and password ### Recommended settings **Downloads tab:** - Default save path: `/downloads/complete` - Keep incomplete torrents in: `/downloads/incomplete` - Enable "Append .!qB extension to incomplete files" **Connection tab:** - Listening port: `6881` (or random, avoid ISP-blocked ports) - Enable UPnP/NAT-PMP if behind a router **Speed tab:** - Set upload limits to avoid saturating your connection - Schedule lower speeds during peak hours **BitTorrent tab:** - Enable DHT, PeX, and Local Peer Discovery for public trackers - Set seeding ratio limit (e.g., 2.0) to be a good community member --- ## Step 3: Connect qBittorrent to Radarr and Sonarr ### In Radarr 1. Settings → Download Clients → Add 2. Select **qBittorrent** 3. Host: `qbittorrent` (Docker service name) 4. Port: `8080` 5. Username / Password: your qBittorrent credentials 6. Category: `radarr` (qBittorrent will create this category automatically) 7. Test → Save ### In Sonarr Same steps, use category `sonarr`. Using separate categories lets you apply different rules (seeding limits, paths) per app. --- ## Step 4: Configure Root Folders and Import ### Radarr root folder Settings → Media Management → Root Folders → Add `/movies` When a download completes, Radarr: 1. Detects the completed file in `/downloads` 2. Renames it according to your naming format 3. Moves (hardlinks) it to `/movies/Movie Name (Year)/` 4. Triggers a Jellyfin library scan ### Enable hardlinks (critical for storage efficiency) Hardlinks let the file exist in both `/downloads` (for seeding) and `/movies` (for Jellyfin) without using double the disk space. This only works if `/downloads` and `/movies` are on the **same filesystem**. This is why the Docker volume mapping must be consistent across all containers. --- ## Step 5: Connect Radarr/Sonarr to Jellyfin After import, trigger an automatic Jellyfin library scan: ### In Radarr 1. Settings → Connect → Add Connection → **Jellyfin** 2. Host: `jellyfin`, Port: `8096` 3. API Key: from Jellyfin Dashboard → API Keys 4. Select which libraries to refresh 5. Save Now when Radarr imports a movie, Jellyfin automatically scans and adds it - no manual refresh needed. --- ## Naming Conventions Jellyfin requires specific naming for correct metadata matching: **Movies:** ``` /movies/Movie Name (2024)/Movie Name (2024).mkv ``` **TV Shows:** ``` /tv/Show Name/Season 01/Show Name - S01E01 - Episode Title.mkv ``` Radarr and Sonarr handle renaming automatically - configure the format in Settings → Media Management → Naming. --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Radarr can't move files | Permission mismatch (PUID/PGID) | Ensure all containers use same PUID/PGID | | Hardlinks not working | Different filesystems | Map `/downloads` and `/movies` to same volume | | qBittorrent not reachable | Wrong hostname | Use Docker service name, not `localhost` | | Jellyfin not updating | Notification not configured | Add Jellyfin connection in Radarr/Sonarr | | Downloads stuck | Port blocked by ISP | Change listening port or use VPN | --- ## Monitor Your Download Activity Once your stack is running, new content appears in Jellyfin automatically. But you still want to know: - When new content is available for your users - Whether the server is handling new streams correctly - If a new download triggered unexpected transcoding **JellyWatch** notifies you when new sessions start and shows real-time transcoding status - so you know the moment your users start watching newly imported content. --- > **Your download stack is running - now monitor what your users do with it.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, transcoding alerts, and server health for Jellyfin on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Migrate from Plex to Jellyfin in 2026: Transfer Watch History, Keep Everything (Step-by-Step) URL: https://jellywatch.app/blog/migrate-plex-to-jellyfin-guide-2026 Published: 2026-03-22T11:00:00+00:00 Author: JellyWatch Team Category: Other Tags: guide, jellyfin, plex, migration, watch-history, self-hosting, 2026 # How to Migrate from Plex to Jellyfin (2026) Plex has been raising prices, locking features behind Plex Pass, and pushing ads into the free tier. More and more self-hosters are making the switch to Jellyfin - 100% free, no account required, no telemetry. This guide walks you through the full migration: library setup, watch history transfer, metadata preservation, and client configuration. --- ## Why People Are Leaving Plex | Feature | Plex (Free) | Plex Pass | Jellyfin | |---|---|---|---| | Live TV / DVR | ❌ | ✅ | ✅ Free | | Hardware transcoding | ❌ | ✅ | ✅ Free | | Mobile sync / downloads | ❌ | ✅ | ✅ Free | | Multi-user management | Limited | ✅ | ✅ Free | | No account required | ❌ | ❌ | ✅ | | Open source | ❌ | ❌ | ✅ | | Ads in UI | Yes | No | No | Jellyfin gives you everything Plex Pass offers - for free, forever. --- ## Before You Start ### What migrates easily - Media files (they stay exactly where they are) - Library structure (movies, TV shows, music) - Metadata (re-fetched from TMDB/TVDB automatically) - Posters and artwork (re-downloaded) ### What requires extra steps - Watch history and played status - Playlists - User accounts - Custom artwork you manually set ### What you lose - Plex-specific features (Discover, Watchlist, Plex TV) - Plex's managed home users (recreate manually in Jellyfin) --- ## Step 1: Install Jellyfin Run Jellyfin alongside Plex - do not uninstall Plex until you are fully migrated. ### Docker Compose ```yaml services: jellyfin: image: jellyfin/jellyfin:latest ports: - "8096:8096" volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /path/to/media:/media:ro restart: unless-stopped ``` Point Jellyfin to the **same media folders** Plex uses. Your files do not move. --- ## Step 2: Set Up Libraries 1. Open Jellyfin at `http://your-server:8096` 2. Complete the setup wizard 3. Add libraries pointing to your existing media paths: - Movies → `/media/movies` - TV Shows → `/media/tv` - Music → `/media/music` 4. Let Jellyfin scan and fetch metadata (this takes 10-60 minutes depending on library size) Jellyfin uses TMDB and TVDB - the same sources as Plex - so metadata quality is identical. --- ## Step 3: Migrate Watch History This is the most important step for most users. Nobody wants to lose their "watched" status. ### Method A: Plex-to-Jellyfin migration tool (recommended) The community-built **PlexToJellyfin** tool automates watch history migration: ```bash # Install via pip pip install plex-to-jellyfin # Run migration plex-to-jellyfin \ --plex-url http://localhost:32400 \ --plex-token YOUR_PLEX_TOKEN \ --jellyfin-url http://localhost:8096 \ --jellyfin-api-key YOUR_JELLYFIN_KEY ``` Get your Plex token: Plex Web → Account → click any media item → Get Info → View XML → find `X-Plex-Token` in the URL. ### Method B: Kometa (formerly Plex Meta Manager) If you already use Kometa for Plex, it can export watched status to a format Jellyfin can import. ### Method C: Trakt sync (both platforms) 1. Install the **Trakt plugin** on Plex → sync your history to Trakt 2. Install the **Trakt plugin** on Jellyfin → import from Trakt 3. All watched status transfers via Trakt as the intermediary This is the most reliable method for large libraries. --- ## Step 4: Migrate Playlists Plex playlists do not export directly to Jellyfin. Options: - **Manual recreation** - for small playlists, just rebuild them in Jellyfin - **Listrr** - syncs Trakt lists to both Plex and Jellyfin - **Export to M3U** - for music playlists, export from Plex and import to Jellyfin --- ## Step 5: Recreate Users Jellyfin user accounts are local - no Plex account required. 1. Dashboard → Users → Add User 2. Create accounts for each person who had Plex access 3. Set library permissions and parental controls as needed 4. Share the Jellyfin URL and credentials with each user > Users do not need a Jellyfin account - only a username and password on your server. --- ## Step 6: Configure Clients ### Android / Android TV Install the official **Jellyfin for Android** app from Google Play. Add your server URL and log in. ### iOS / Apple TV Install **Infuse** (best Jellyfin client for Apple devices) or the official Jellyfin app. ### Kodi Install the **Jellyfin for Kodi** add-on from the Jellyfin repository. ### Smart TV Jellyfin has apps for Samsung (Tizen), LG (webOS), and Android TV. ### Web browser Access directly at `http://your-server:8096` - no app needed. --- ## Step 7: Verify and Decommission Plex Before uninstalling Plex: - [ ] All media appears correctly in Jellyfin - [ ] Watch history transferred for all users - [ ] All users can log in and stream - [ ] Clients configured on all devices - [ ] Reverse proxy updated to point to Jellyfin - [ ] Notifications and monitoring set up Once confirmed, stop and remove Plex: ```bash docker stop plex docker rm plex ``` --- ## Common Migration Issues | Issue | Cause | Fix | |---|---|---| | Wrong metadata on some items | Plex used different TMDB ID | Fix match in Jellyfin: Edit → Identify | | Missing episodes | Naming format difference | Rename files to Jellyfin standard | | Watch history incomplete | API rate limits during migration | Re-run migration tool in batches | | Clients can't find server | Different port (8096 vs 32400) | Update server URL in each client | | Custom posters lost | Plex stores them internally | Re-upload manually or use Kometa | --- ## FAQ **Can I run Plex and Jellyfin at the same time?** Yes. They use different ports (32400 vs 8096) and can share the same media files simultaneously. **Will my media files be affected?** No. Jellyfin reads your files in read-only mode. Nothing is moved or modified. **Do I need to re-download all my metadata?** Jellyfin fetches metadata automatically during the library scan. It takes time but requires no manual work. **What about Plex Pass features I paid for?** All Plex Pass features (hardware transcoding, Live TV, mobile sync) are free in Jellyfin. --- ## Monitor Your New Jellyfin Server After migrating, set up monitoring so you know your server is healthy: - Active sessions and transcoding status - CPU and RAM usage - Push notifications when users connect - Server uptime alerts **JellyWatch** gives you all of this from your Android device - the perfect companion for your new Jellyfin setup. --- > **Just migrated to Jellyfin? Keep an eye on your new server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcoding alerts, and server health for Jellyfin on Android. *Still running Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin Live TV & IPTV Setup 2026: Free Legal M3U Sources, EPG, HDHomeRun & DVR Guide URL: https://jellywatch.app/blog/jellyfin-live-tv-iptv-setup-guide-2026 Published: 2026-03-22T10:56:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, live-tv, iptv, dvr, m3u, epg, 2026 # Jellyfin Live TV and IPTV Setup Guide (2026) One of Jellyfin's most underrated features is its built-in **Live TV and DVR support** - completely free, no Premiere license required. Whether you use an IPTV provider, an HDHomeRun tuner, or a local antenna, Jellyfin can turn your media server into a full cable replacement. This guide covers everything from M3U playlist setup to DVR recording and troubleshooting. --- ## Prerequisites - Jellyfin server (10.8 or later) - A valid **M3U IPTV playlist** from your provider, OR an **HDHomeRun** network tuner - An **XMLTV EPG source** (optional but strongly recommended) - Sufficient storage for DVR recordings > Unlike Emby, Jellyfin Live TV is **100% free** - no subscription or license required. --- ## Option A: IPTV via M3U Playlist ### Step 1: Add your M3U tuner 1. Dashboard → Live TV → **Add** (next to Tuner Devices) 2. Select **M3U Tuner** 3. Enter your M3U URL or upload a local file 4. Set a **simultaneous stream limit** (match your provider's plan) 5. Click **Save** ### M3U format example ``` #EXTM3U #EXTINF:-1 tvg-id="bbc1.uk" tvg-name="BBC One" tvg-logo="https://logo.url/bbc1.png" group-title="UK",BBC One http://stream.provider.com/bbc1/index.m3u8 #EXTINF:-1 tvg-id="cnn.us" tvg-name="CNN" tvg-logo="https://logo.url/cnn.png" group-title="News",CNN http://stream.provider.com/cnn/index.m3u8 ``` Jellyfin reads `tvg-id`, `tvg-name`, `tvg-logo`, and `group-title` attributes automatically. ### Step 2: Add EPG guide data (XMLTV) Without EPG, you only see channel names - no program info, no scheduling. 1. Dashboard → Live TV → **Add** (next to TV Guide Data Providers) 2. Select **XMLTV** 3. Enter your EPG URL (e.g., `http://epg-provider.com/guide.xml`) 4. Set refresh interval: **every 24 hours** 5. Save ### Matching channels to EPG Jellyfin auto-matches channels using `tvg-id`. For unmatched channels: 1. Dashboard → Live TV → Channels 2. Click a channel → **Edit** → Set EPG channel manually --- ## Option B: HDHomeRun Network Tuner HDHomeRun devices connect to your local network and receive over-the-air (OTA) or cable TV signals. ### Setup 1. Connect your HDHomeRun to your network 2. Dashboard → Live TV → Add Tuner Device 3. Select **HDHomeRun** 4. Jellyfin auto-discovers the device on your local network 5. Add an EPG source (Schedules Direct is the most reliable for OTA) ### Schedules Direct EPG Schedules Direct provides high-quality EPG data for North American OTA channels (~$25/year). 1. Create an account at [schedulesdirect.org](https://www.schedulesdirect.org) 2. Dashboard → Live TV → Add Guide Data Provider → **Schedules Direct** 3. Enter your credentials --- ## Setting Up DVR Recording Jellyfin's DVR lets you record live TV directly to your storage - completely free. ### Configure DVR storage 1. Dashboard → DVR 2. Set **Recording Path**: `/media/recordings/` (or your preferred path) 3. Set **Pre-padding** and **Post-padding** (extra minutes before/after) ### Record a program From the Live TV guide: - Click any show → **Record** - Options: Record this episode / Record series / Record all new episodes Recordings appear in your library under **Recordings** automatically. ### Storage planning | Quality | Size per hour | |---|---| | 720p | ~2-3 GB | | 1080p | ~4-6 GB | | 4K | ~15-25 GB | Set up automatic cleanup rules to delete old recordings when storage runs low. --- ## Accessing Live TV on Clients ### Web browser Click **Live TV** in the Jellyfin sidebar. Full guide and channel list available. ### Android (official app) Live TV is accessible from the main menu. Tap any channel to start streaming. ### Android TV / Fire TV Full Live TV support with channel guide navigation. ### Infuse (iOS/Apple TV) Infuse supports Jellyfin Live TV with Infuse Pro. ### Kodi + Jellyfin plugin Full Live TV and DVR support through the Jellyfin Kodi add-on. --- ## Performance Tips for Live TV ### Enable hardware transcoding Live TV streams often need transcoding for incompatible clients. Without hardware acceleration, CPU usage spikes dramatically. Dashboard → Playback → Transcoding → Enable Intel QSV / NVIDIA NVENC ### Limit simultaneous streams Set the stream limit in your M3U tuner settings to match your IPTV subscription. Exceeding it causes streams to fail. ### Use a local M3U file If your provider's M3U URL goes offline, Jellyfin loses all channels. Save a local copy: ```bash # Download and save locally wget -O /config/iptv/channels.m3u "http://your-provider.com/playlist.m3u" ``` Point Jellyfin to the local file path instead of the URL. ### Schedule EPG refresh at off-peak hours EPG XML files can be large (50-200 MB). Schedule the refresh at 3 AM to avoid impacting streaming performance. --- ## Troubleshooting Common Issues | Problem | Likely cause | Fix | |---|---|---| | Channels not loading | Wrong M3U URL or expired subscription | Verify URL in browser | | No EPG data | XMLTV URL error or channel ID mismatch | Check EPG URL and `tvg-id` values | | Buffering on live channels | Transcoding overload or slow provider | Enable hardware acceleration | | Channels disappear | M3U not refreshing | Set auto-refresh interval | | DVR not recording | Insufficient disk space or wrong path | Check storage path and free space | | Wrong channel matched to EPG | `tvg-id` mismatch | Manually assign EPG channel | --- ## Jellyfin vs Emby for Live TV | Feature | Jellyfin | Emby | |---|---|---| | M3U IPTV | Free | Premiere required | | HDHomeRun | Free | Premiere required | | DVR recording | Free | Premiere required | | EPG (XMLTV) | Free | Premiere required | | Schedules Direct | Free | Premiere required | For Live TV, Jellyfin is the clear winner on cost. --- ## Monitor Live TV Sessions Live TV streams are real-time - buffering affects the experience immediately. Monitoring active sessions during live TV is essential. **JellyWatch** shows you every active Live TV session: - Which channel each user is watching - Whether the stream is Direct Play or transcoding - CPU and GPU usage in real time - Push notifications if the server goes offline during a live event --- > **Running Live TV on Jellyfin? Monitor every session in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, transcoding status, and CPU alerts for your Jellyfin server on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same Live TV monitoring experience for Emby.* --- ## Jellyfin Subtitles Guide 2026: Add, Sync & Automate with Bazarr (Complete) URL: https://jellywatch.app/blog/jellyfin-subtitles-complete-guide-2026 Published: 2026-03-21T14:16:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, subtitles, bazarr, opensubtitles, srt, automation, 2026 # Jellyfin Subtitles: The Complete Guide (2026) Subtitles are one of the most requested features on any media server. Whether you serve a multilingual family or simply prefer watching foreign films in their original language, getting subtitles right on Jellyfin is essential. This guide covers everything: formats, plugins, automation with Bazarr, and troubleshooting the most common issues. --- ## Subtitle Formats Explained Not all subtitle formats are equal. The format you use affects compatibility, styling, and whether Jellyfin needs to transcode. | Format | Type | Styling | Transcode risk | |---|---|---|---| | **SRT** | External text | No | None (Direct Play) | | **ASS/SSA** | External text | Yes (fonts, colors, positioning) | Low | | **PGS (SUP)** | Image-based (Blu-ray) | Yes | High - forces burn-in transcode | | **VobSub (IDX/SUB)** | Image-based (DVD) | Yes | High - forces burn-in transcode | | **WebVTT** | External text | Limited | None | ### The golden rule **Text-based subtitles (SRT, ASS) = Direct Play.** Image-based subtitles (PGS, VobSub) force Jellyfin to burn them into the video stream, which triggers a full video transcode. If your users complain about buffering only when subtitles are enabled, PGS burn-in is almost certainly the cause. --- ## Embedded vs External Subtitles ### Embedded subtitles Subtitles stored inside the MKV container. Jellyfin detects them automatically. - Pros: no extra files, always travel with the media - Cons: harder to replace or update, PGS embedded subs force transcoding ### External subtitles Separate files placed next to the video file: ``` Movie Name (2024)/ Movie Name (2024).mkv Movie Name (2024).en.srt Movie Name (2024).fr.srt Movie Name (2024).de.srt ``` Jellyfin picks them up automatically if the naming matches. Use ISO 639-1 language codes (en, fr, de, es, it, pt, etc.). --- ## Method 1: OpenSubtitles Plugin (Manual) The built-in OpenSubtitles plugin lets you search and download subtitles from the Jellyfin dashboard. ### Setup 1. Dashboard → Plugins → Catalog → **OpenSubtitles** 2. Install and restart Jellyfin 3. Go to Plugins → OpenSubtitles → Enter your **opensubtitles.com API credentials** 4. Navigate to any movie → Edit Metadata → Subtitles → Search > **Important:** Use the opensubtitles**.com** API (v2), not the legacy .org API. This method works well for occasional downloads but does not scale for large libraries. --- ## Method 2: Bazarr (Fully Automated) For serious subtitle automation, **Bazarr** is the industry standard. It integrates with Radarr and Sonarr to automatically download subtitles for every movie and episode in your library. ### Docker Compose ```yaml services: bazarr: image: lscr.io/linuxserver/bazarr:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - ./bazarr/config:/config - /path/to/movies:/movies - /path/to/tv:/tv ports: - 6767:6767 restart: unless-stopped ``` ### Configuration 1. Open Bazarr at `http://your-server:6767` 2. Settings → Subtitles → Add providers (OpenSubtitles.com, Addic7ed, Podnapisi, etc.) 3. Settings → Languages → Set your desired languages and priorities 4. Settings → Radarr / Sonarr → Connect with API keys 5. Bazarr will scan your library and download missing subtitles automatically ### Bazarr best practices - Set a **score threshold** (e.g., 90+) to avoid bad subtitle matches - Enable **anti-captcha** if you use providers that require it - Schedule scans during off-peak hours to reduce server load - Use **subtitle sync** (built into Bazarr) to fix timing offsets automatically --- ## Fixing Common Subtitle Issues ### Subtitles cause buffering **Cause:** PGS or VobSub image-based subtitles force a full video transcode (burn-in). **Fix:** Replace image-based subs with SRT equivalents. Use Bazarr to download text-based alternatives. ### Subtitles are out of sync **Fix options:** - Use Bazarr built-in subtitle sync (automatic) - Use SubSync (standalone tool) for manual correction - Adjust offset in the Jellyfin player during playback ### Subtitles not detected by Jellyfin **Cause:** File naming mismatch. **Fix:** Ensure the subtitle file name matches the video file name exactly, with the language code: ``` Movie.mkv Movie.en.srt ✅ Movie_english.srt ❌ ``` ### Wrong language displayed **Fix:** Edit the subtitle metadata in Jellyfin: Media → Edit → Subtitles → Set correct language. ### ASS subtitles look wrong (missing fonts) **Cause:** ASS subtitles reference fonts not available on the client. **Fix:** Use SRT instead, or ensure the client supports ASS rendering (Jellyfin Media Player, mpv-based clients). --- ## Subtitle Strategy for Multi-User Servers If you share your server with users who speak different languages: 1. Configure Bazarr to download subtitles in **all required languages** automatically 2. Set Jellyfin default subtitle language per user: Dashboard → Users → [User] → Subtitle language preference 3. Prefer **SRT format** to avoid transcoding for subtitle-heavy users 4. Monitor transcode sessions with **JellyWatch** - subtitle burn-in is one of the top transcode triggers --- ## Subtitle Provider Comparison | Provider | Coverage | Quality | Free tier | |---|---|---|---| | OpenSubtitles.com | Excellent | Good | Yes (limited) | | Addic7ed | TV shows | Very good | Yes | | Podnapisi | European languages | Good | Yes | | Subscene | Asian languages | Good | Yes | Using multiple providers in Bazarr increases your chances of finding accurate subtitles. --- ## Monitor Subtitle-Related Transcoding Subtitle burn-in is a silent performance killer. A user enabling PGS subtitles can spike your CPU from 5% to 90% instantly. **JellyWatch** shows you the exact transcode reason for every active session - including when subtitles are the cause. You can then message the user or adjust their subtitle settings remotely. --- > **Subtitles triggering unexpected transcodes? Catch it in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see transcode reasons, monitor CPU spikes, and manage your Jellyfin server from Android. *Running Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Running Jellyfin on a NAS in 2026: Synology, TrueNAS, and Unraid Complete Guide URL: https://jellywatch.app/blog/jellyfin-nas-synology-truenas-unraid-guide-2026 Published: 2026-03-21T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, nas, synology, truenas, unraid, docker, hardware-transcoding, 2026 # Running Jellyfin on a NAS in 2026: Synology, TrueNAS & Unraid A NAS is the natural home for a media server - always on, low power, and already storing your files. In 2026, running Jellyfin on a NAS is easier than ever, but each platform has its quirks. This guide covers the three most popular NAS platforms: **Synology**, **TrueNAS SCALE**, and **Unraid**. --- ## Synology (DSM 7) Synology is the most popular consumer NAS brand. Running Jellyfin on Synology requires Docker (Container Manager in DSM 7). ### Requirements - Synology NAS with an **Intel CPU** (for hardware transcoding) - DSM 7.0 or later - Container Manager (Docker) installed from Package Center - At least 4 GB RAM (8 GB recommended) > **Important:** ARM-based Synology models (J-series, some Value series) cannot run Docker. Check your model before purchasing. ### Installation via Container Manager 1. Open **Container Manager** → Registry → Search `jellyfin/jellyfin` 2. Download the `latest` tag 3. Create a container with these settings: | Setting | Value | |---|---| | Image | jellyfin/jellyfin:latest | | Network | bridge | | Port | 8096 → 8096 | | Volume | /docker/jellyfin/config → /config | | Volume | /volume1/media → /media (read-only) | | Device | /dev/dri → /dev/dri (for HW transcoding) | ### Enable hardware transcoding on Synology Synology models with Intel Celeron (J4125, J4025) or newer support Quick Sync: 1. In Container Manager, edit the Jellyfin container 2. Add device mapping: `/dev/dri` → `/dev/dri` 3. In Jellyfin Dashboard → Transcoding → Select **Intel Quick Sync (QSV)** 4. Enable hardware tone mapping ### Synology-specific tips - **Scheduled tasks:** Set library scans to run at night to avoid impacting NAS performance during the day - **RAM upgrade:** Most Synology models support unofficial RAM upgrades - 8 GB makes a noticeable difference - **SSD cache:** Enable SSD cache for the volume containing Jellyfin config to speed up metadata browsing --- ## TrueNAS SCALE TrueNAS SCALE is a Linux-based NAS OS with native Docker (via Apps) and ZFS storage. It is free and popular among power users. ### Installation TrueNAS SCALE provides Jellyfin as an official app in the TrueCharts or official catalog: 1. Apps → Discover → Search **Jellyfin** 2. Click Install 3. Configure: - Storage: map your media dataset - Networking: set port 8096 - GPU: passthrough your Intel/NVIDIA GPU ### GPU passthrough on TrueNAS SCALE For Intel iGPU: 1. System Settings → Advanced → Isolated GPU Devices → Select your Intel GPU 2. In the Jellyfin app config → GPU → Select the Intel device For NVIDIA: 1. Install NVIDIA drivers (available in TrueNAS SCALE) 2. Pass the GPU to the Jellyfin container ### TrueNAS-specific tips - **ZFS snapshots:** Use ZFS snapshots for instant Jellyfin config backups - zero downtime - **Dataset structure:** Create separate datasets for config and media for better snapshot management - **ARC cache:** TrueNAS uses RAM for ZFS ARC cache - ensure Jellyfin has enough RAM left (set ARC limit if needed) --- ## Unraid Unraid is a popular NAS OS for home labs. It runs Docker natively and has a large community app store. ### Installation 1. Apps → Search **Jellyfin** (Community Applications) 2. Click Install 3. Configure paths: - Config: `/mnt/user/appdata/jellyfin` - Media: `/mnt/user/media` 4. Set GPU passthrough (see below) ### GPU passthrough on Unraid Unraid supports Intel iGPU and NVIDIA GPU passthrough: 1. Settings → Docker → Enable "Extra Parameters" 2. Add: `--device=/dev/dri:/dev/dri` (Intel) 3. Or install the **NVIDIA Driver** plugin for NVIDIA GPUs 4. In Jellyfin → Transcoding → Enable hardware acceleration ### Unraid-specific tips - **Cache drive:** Place Jellyfin appdata on the cache drive (SSD) for fast metadata access - **Parity considerations:** Jellyfin config writes frequently - keeping it on cache avoids unnecessary parity calculations - **Community plugins:** Unraid has excellent community Docker templates with pre-configured Jellyfin settings --- ## NAS Platform Comparison for Jellyfin | Feature | Synology DSM 7 | TrueNAS SCALE | Unraid | |---|---|---|---| | **Ease of setup** | Easy (GUI) | Medium | Easy (Community Apps) | | **Docker support** | Yes (Container Manager) | Yes (native) | Yes (native) | | **HW transcoding** | Intel QSV | Intel QSV + NVIDIA | Intel QSV + NVIDIA | | **Filesystem** | Btrfs / ext4 | ZFS | XFS + FUSE | | **Snapshot backups** | Btrfs snapshots | ZFS snapshots (excellent) | Manual | | **RAM management** | Simple | ZFS ARC needs tuning | Simple | | **Community size** | Very large | Large | Very large | | **Cost** | Hardware purchase | Free OS | $59 license | --- ## Performance Expectations by NAS Hardware | NAS Model / CPU | Direct Play streams | HW transcode streams | |---|---|---| | Synology DS220+ (J4025) | 4-5 | 1-2 | | Synology DS923+ (R1600) | 5-6 | 0 (AMD, no QSV) | | Synology DS1621+ (V1500B) | 5-6 | 0 (AMD, no QSV) | | Custom TrueNAS (i5-12400) | 10+ | 5-6 | | Custom Unraid (N100) | 6-8 | 3-4 | > **Critical note:** AMD-based Synology models (DS923+, DS1621+) do **not** support hardware transcoding. If transcoding is important, choose an Intel-based model. --- ## Common NAS Mistakes with Jellyfin - **Buying an ARM NAS** - no Docker support, no Jellyfin - **Buying AMD Synology for transcoding** - no Intel Quick Sync - **Not mapping /dev/dri** - hardware transcoding silently falls back to CPU - **Storing config on slow array** - metadata browsing becomes sluggish - **Not monitoring after setup** - NAS hardware is limited, overload happens easily --- ## Monitor Your NAS-Based Jellyfin Server NAS hardware is more constrained than a dedicated server. Monitoring is even more important: - Track CPU usage during transcoding (NAS CPUs are weaker) - Monitor RAM pressure (especially on TrueNAS with ZFS) - Get alerts when storage is running low - See active sessions to know when your NAS is under load **JellyWatch** connects to your Jellyfin server regardless of whether it runs on a NAS, a mini PC, or a full server - giving you the same real-time monitoring experience. --- > **Running Jellyfin on your NAS? Monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU, RAM, storage alerts, and session monitoring for your NAS-based Jellyfin server. *On Emby instead? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same NAS monitoring experience for Emby servers.* --- ## Jellyfin Multi-User Setup: Permissions, Parental Controls, and Access Management (2026) URL: https://jellywatch.app/blog/jellyfin-multi-user-parental-controls-guide-2026 Published: 2026-03-21T13:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, multi-user, parental-controls, permissions, family, 2026 # Jellyfin Multi-User Setup: Permissions, Parental Controls & Access Management (2026) Sharing your Jellyfin server with family and friends is one of the best parts of self-hosting. But without proper user management, things get messy fast - kids accessing adult content, guests hogging bandwidth with 4K transcodes, or users accidentally deleting metadata. This guide covers everything you need to set up a secure, well-organized multi-user Jellyfin server. --- ## Creating User Accounts Dashboard → Users → Add User For each user, set: - **Username** - clear and recognizable - **Password** - enforce strong passwords (Jellyfin does not enforce complexity by default) - **Library access** - choose which libraries each user can see ### User types | Type | Access level | Use case | |---|---|---| | **Administrator** | Full control | You (server owner) | | **Regular user** | View + play | Family, close friends | | **Restricted user** | Limited libraries | Kids, guests | > **Security tip:** Never give admin access to anyone else. Create a separate admin account for yourself and a regular user account for your own viewing. --- ## Library-Level Access Control Jellyfin lets you restrict which libraries each user can access. ### Example setup | Library | Admin | Partner | Kids | Guest | |---|---|---|---|---| | Movies | ✅ | ✅ | ❌ | ✅ | | Kids Movies | ✅ | ✅ | ✅ | ❌ | | TV Shows | ✅ | ✅ | ❌ | ✅ | | Kids TV | ✅ | ✅ | ✅ | ❌ | | Music | ✅ | ✅ | ✅ | ❌ | | 4K Movies | ✅ | ✅ | ❌ | ❌ | To configure: Dashboard → Users → [User] → Library Access → Toggle libraries on/off. This is the simplest and most effective way to control what each person sees. --- ## Parental Controls Jellyfin supports content rating-based parental controls. ### Set maximum allowed rating Dashboard → Users → [User] → Parental Control - Set **Maximum parental rating** (e.g., PG-13, TV-14) - Content rated above this threshold is hidden from the user - Works with TMDB/TVDB ratings applied during metadata scan ### Block specific tags You can also block content by tag: - Add tags like "violence", "horror", "adult" to specific media items - In the user's parental control settings, add these tags to the block list - Tagged content becomes invisible to that user ### Schedule access times Jellyfin allows time-based access restrictions: - Dashboard → Users → [User] → Access Schedule - Set allowed days and hours (e.g., weekdays 16:00-20:00) - Outside these hours, the user cannot stream Perfect for limiting kids' screen time. --- ## Bandwidth and Quality Limits Prevent users from consuming all your bandwidth or overloading your server with 4K transcodes. ### Remote streaming bitrate limit Dashboard → Users → [User] → Remote streaming bitrate limit | Setting | Effect | |---|---| | No limit | User streams at original quality | | 20 Mbps | Good for 1080p | | 8 Mbps | Forces 720p for most content | | 4 Mbps | Mobile-friendly, low bandwidth | This is especially useful for remote users on slow connections - it prevents them from requesting a 4K stream that your server cannot deliver without buffering. ### Simultaneous stream limit Jellyfin does not natively limit concurrent streams per user. However, you can monitor this with **JellyWatch** and manually manage sessions if a user is running multiple streams. --- ## Permission Granularity Beyond library access, Jellyfin offers fine-grained permissions per user: | Permission | Recommended for guests | |---|---| | Allow media playback | ✅ | | Allow media downloads | ❌ | | Allow library deletion | ❌ | | Allow subtitle management | ❌ | | Allow remote connections | ✅ (if needed) | | Allow SyncPlay | ✅ | | Force transcoding | Optional | Dashboard → Users → [User] → toggle each permission individually. --- ## Managing Users at Scale If you share your server with 10+ people, manual management becomes tedious. Here are strategies: ### Use JellyWatch for mobile user management JellyWatch lets you view and manage all users directly from your Android device: - See all registered users and their last activity - Check which devices each user has connected - Monitor active sessions per user - Identify inactive accounts ### Use Watch Pass for structured sharing If you want to give users a dedicated, simplified interface (without admin features), **JellyWatch Watch Pass** provides: - A clean user-facing interface for media browsing and requests - Integrated Jellyseerr request management - No admin features exposed to end users - Full control retained by the server owner --- ## Guest Access: Temporary Users For temporary access (movie night with friends): 1. Create a guest account with a simple password 2. Restrict to specific libraries only 3. Set a remote bitrate limit 4. After the event, disable or delete the account > **Pro tip:** Use JellyWatch to monitor the guest session in real time - see what they are watching and whether it is transcoding. --- ## Common Multi-User Mistakes - **Sharing admin credentials** - never do this, create separate accounts - **No library separation** - kids see everything adults see - **No bandwidth limits** - one remote user tanks the server with 4K - **Forgetting old accounts** - unused accounts are a security risk - **No monitoring** - you do not know who is doing what --- ## FAQ **How many users can Jellyfin support?** There is no hard limit on user accounts. The limit is on simultaneous streams, which depends on your hardware. **Can users see each other's watch history?** No. Each user has their own private watch history and progress. **Can I disable a user without deleting them?** Yes. Dashboard → Users → [User] → Disable this user. Their data is preserved. **Do parental controls work on all clients?** Yes. Parental controls are enforced server-side, so they apply regardless of which client the user uses. --- > **Managing multiple users? Do it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - user management, session monitoring, and Watch Pass sharing for Jellyfin admins. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same user management and monitoring features for Emby.* --- ## Jellyfin Reverse Proxy 2026: Nginx Proxy Manager (Beginner GUI) vs Caddy vs Traefik URL: https://jellywatch.app/blog/jellyfin-reverse-proxy-nginx-traefik-caddy-guide-2026 Published: 2026-03-21T12:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, reverse-proxy, nginx, traefik, caddy, ssl, docker, 2026 # Jellyfin Reverse Proxy Setup: NPM vs Traefik vs Caddy (2026) A reverse proxy sits between the internet and your Jellyfin server. It handles SSL certificates, domain routing, and security - so you never expose port 8096 directly to the world. In 2026, three reverse proxies dominate the self-hosting community. This guide compares them and gives you a working Docker setup for each. --- ## Why You Need a Reverse Proxy - **HTTPS encryption** - protect credentials and streams in transit - **Custom domain** - access your server at `jellyfin.yourdomain.com` instead of an IP - **Hide your home IP** - when combined with Cloudflare - **Centralized routing** - one entry point for Jellyfin, Radarr, Sonarr, Jellyseerr - **Security headers** - add HSTS, CSP, and rate limiting --- ## Option 1: Caddy (Simplest) Caddy is the easiest reverse proxy to configure. Automatic HTTPS with zero extra steps. ### Docker Compose ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped volumes: caddy_data: ``` ### Caddyfile ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } radarr.yourdomain.com { reverse_proxy radarr:7878 } sonarr.yourdomain.com { reverse_proxy sonarr:8989 } requests.yourdomain.com { reverse_proxy jellyseerr:5055 } ``` That is it. Caddy obtains and renews Let's Encrypt certificates automatically. **Best for:** Users who want the fastest setup with minimal configuration. --- ## Option 2: Nginx Proxy Manager (Most Visual) Nginx Proxy Manager (NPM) provides a web-based GUI for managing reverse proxy rules. No config files to edit. ### Docker Compose ```yaml services: npm: image: jc21/nginx-proxy-manager:latest ports: - "80:80" - "443:443" - "81:81" # Admin panel volumes: - ./npm/data:/data - ./npm/letsencrypt:/etc/letsencrypt restart: unless-stopped ``` ### Setup 1. Access the admin panel at `http://your-server:81` 2. Default login: `admin@example.com` / `changeme` 3. Add a Proxy Host: - Domain: `jellyfin.yourdomain.com` - Forward hostname: `jellyfin` (Docker service name) - Forward port: `8096` - Enable SSL → Request a new certificate → Force SSL 4. Repeat for each service **Best for:** Users who prefer a GUI over config files. --- ## Option 3: Traefik (Most Powerful) Traefik is a cloud-native reverse proxy that auto-discovers Docker containers via labels. More complex to set up, but extremely powerful for large stacks. ### Docker Compose ```yaml services: traefik: image: traefik:v3.0 command: - "--api.insecure=true" - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencrypt.acme.email=you@yourdomain.com" - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest labels: - "traefik.enable=true" - "traefik.http.routers.jellyfin.rule=Host(`jellyfin.yourdomain.com`)" - "traefik.http.routers.jellyfin.entrypoints=websecure" - "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt" - "traefik.http.services.jellyfin.loadbalancer.server.port=8096" volumes: - ./jellyfin/config:/config - /path/to/media:/media:ro restart: unless-stopped ``` Traefik reads Docker labels and configures routing automatically. Add a new service with labels and it appears instantly. **Best for:** Advanced users with large Docker stacks who want auto-discovery. --- ## Comparison Table | Feature | Caddy | Nginx Proxy Manager | Traefik | |---|---|---|---| | **Setup difficulty** | Very easy | Easy (GUI) | Medium-Advanced | | **Configuration** | Caddyfile (text) | Web GUI | Docker labels + YAML | | **Auto SSL** | Yes | Yes | Yes | | **Auto-discovery** | No | No | Yes (Docker labels) | | **Performance** | Excellent | Good | Excellent | | **Best for** | Small stacks | GUI lovers | Large Docker stacks | | **Community size** | Growing fast | Very large | Large | --- ## Jellyfin-Specific Reverse Proxy Tips ### WebSocket support Jellyfin uses WebSockets for real-time features (SyncPlay, session updates). Make sure your reverse proxy passes WebSocket headers. **Caddy:** handled automatically. **NPM:** enable "WebSockets Support" in the proxy host settings. **Traefik:** add this label: ``` - "traefik.http.middlewares.jellyfin-headers.headers.customrequestheaders.X-Forwarded-Proto=https" ``` ### Large file uploads If you upload media through the Jellyfin web interface, increase the max body size: - **NPM:** Custom Nginx config → `client_max_body_size 20G;` - **Caddy:** No limit by default - **Traefik:** Add buffering middleware ### Cloudflare considerations If you use Cloudflare DNS proxy (orange cloud): - Cloudflare has a **100 MB upload limit** on free plans - this can break large file transfers - Video streaming through Cloudflare proxy may violate their ToS (Section 2.8) - Consider using **DNS-only mode** (grey cloud) for your Jellyfin subdomain --- ## Security Hardening Once your reverse proxy is running: 1. **Force HTTPS** - redirect all HTTP to HTTPS 2. **Enable HSTS** - tell browsers to always use HTTPS 3. **Add Fail2Ban** - block brute-force login attempts 4. **Restrict admin access** - limit dashboard access to your local network or VPN 5. **Monitor access logs** - watch for suspicious activity --- ## Monitor Your Exposed Server Once your Jellyfin server is accessible from the internet, monitoring becomes critical. You need to know: - Who is connecting and from where - Whether sessions are transcoding unexpectedly - If CPU spikes after exposing the server publicly - Whether unauthorized devices appear **JellyWatch** gives you all of this from your Android device - push notifications for new sessions, device tracking, and real-time server health. --- > **Your server is now public - keep it under control.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor sessions, track devices, and get alerts when something looks wrong. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same security monitoring for Emby servers.* --- ## How to Backup and Restore Your Jellyfin Server: Complete Disaster Recovery Guide (2026) URL: https://jellywatch.app/blog/jellyfin-backup-restore-disaster-recovery-guide-2026 Published: 2026-03-21T11:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, backup, restore, disaster-recovery, docker, 2026 # How to Backup and Restore Your Jellyfin Server (2026) You have spent weeks configuring your Jellyfin server - plugins, metadata, watch history, user accounts, custom CSS. One corrupted drive or a bad Docker update, and it is all gone. A proper backup strategy takes 15 minutes to set up and can save you days of reconfiguration. This guide covers everything. --- ## What to Backup Not everything on your server needs backing up. Focus on what is hard to recreate: | Data | Location (Docker) | Priority | Why | |---|---|---|---| | **Server config** | `/config/` | Critical | Users, settings, API keys | | **Metadata & images** | `/config/metadata/` | High | Posters, descriptions, cast info | | **Watch history** | `/config/data/` | High | User progress, played status | | **Plugin data** | `/config/plugins/` | Medium | Plugin configs and databases | | **Custom CSS** | Dashboard setting | Low | Easy to re-paste | | **Media files** | `/media/` | Separate strategy | Large - use dedicated backup | > **Key insight:** Your media files (movies, shows) are large and should be backed up separately (RAID, cloud, external drives). Your Jellyfin config is small (usually under 5 GB) and should be backed up frequently. --- ## Method 1: Manual Backup (Simplest) Stop Jellyfin, copy the config folder, restart. ### Docker ```bash docker stop jellyfin tar -czf jellyfin-backup-$(date +%Y%m%d).tar.gz /path/to/jellyfin/config docker start jellyfin ``` ### Native Linux ```bash sudo systemctl stop jellyfin tar -czf jellyfin-backup-$(date +%Y%m%d).tar.gz /var/lib/jellyfin/ sudo systemctl start jellyfin ``` Store the archive on a different drive, NAS, or cloud storage. --- ## Method 2: Automated Backup Script (Recommended) Create a cron job that runs weekly: ```bash #!/bin/bash BACKUP_DIR="/backups/jellyfin" CONFIG_DIR="/path/to/jellyfin/config" RETENTION_DAYS=30 mkdir -p $BACKUP_DIR docker stop jellyfin tar -czf "$BACKUP_DIR/jellyfin-$(date +%Y%m%d-%H%M).tar.gz" "$CONFIG_DIR" docker start jellyfin # Clean old backups find $BACKUP_DIR -name "jellyfin-*.tar.gz" -mtime +$RETENTION_DAYS -delete echo "Backup completed: $(date)" ``` Add to crontab: ```bash crontab -e # Run every Sunday at 4 AM 0 4 * * 0 /home/user/scripts/backup-jellyfin.sh >> /var/log/jellyfin-backup.log 2>&1 ``` --- ## Method 3: Docker Volume Snapshots If you use Docker named volumes instead of bind mounts: ```bash docker run --rm -v jellyfin_config:/source -v /backups:/target alpine \ tar -czf /target/jellyfin-config-$(date +%Y%m%d).tar.gz -C /source . ``` This works without stopping the container, though stopping is safer for database consistency. --- ## Method 4: Filesystem Snapshots (ZFS / Btrfs) If your server runs on **ZFS** (TrueNAS, Proxmox) or **Btrfs** (Unraid): ### ZFS ```bash zfs snapshot tank/jellyfin@backup-$(date +%Y%m%d) ``` ### Btrfs ```bash btrfs subvolume snapshot /mnt/data/jellyfin /mnt/data/.snapshots/jellyfin-$(date +%Y%m%d) ``` Filesystem snapshots are instant and do not require stopping the server. --- ## How to Restore a Jellyfin Backup ### Full restore (new server or after crash) 1. Install Jellyfin (Docker or native) 2. Stop Jellyfin 3. Extract your backup over the config directory: ```bash docker stop jellyfin rm -rf /path/to/jellyfin/config/* tar -xzf jellyfin-backup-20260315.tar.gz -C /path/to/jellyfin/config/ docker start jellyfin ``` 4. Verify: open the web UI - all users, settings, watch history, and plugins should be intact. ### Partial restore (specific data) Extract only what you need: ```bash # Restore only plugins tar -xzf jellyfin-backup.tar.gz --directory=/path/to/config/ plugins/ ``` --- ## Backing Up Watch History Separately Watch history is stored in the Jellyfin database. For extra safety: - Install the **Trakt plugin** to sync watch history externally - Use the **Playback Reporting plugin** - its database can be exported - JellyWatch displays your viewing history and statistics, giving you a visual confirmation that history is intact after a restore --- ## Backup Checklist | Task | Frequency | Method | |---|---|---| | Config folder backup | Weekly | Automated script | | Media files backup | Monthly | RAID / external drive / cloud | | Watch history sync | Continuous | Trakt plugin | | Test restore | Quarterly | Manual test on spare machine | --- ## Common Backup Mistakes - **Not stopping Jellyfin before backup** - database files can be corrupted mid-write - **Backing up only media, not config** - media is replaceable, config is not - **No off-site copy** - if your server dies, a backup on the same machine is useless - **Never testing the restore** - an untested backup is not a backup --- ## Monitor Your Server After Restoring After a restore, verify everything works: - Open **JellyWatch** → check server health (CPU, RAM, storage) - Verify active sessions work correctly - Confirm all users can log in - Check that plugins are loaded and functional - Run a library scan to re-index any changes --- # Advanced Backup Methods ## Method 1: Jellyfin Built-In Backup (10.11+) Jellyfin 10.11 introduced **native backup support** directly from the dashboard - no plugins or scripts required. ### How to use it 1. Open **Dashboard → Scheduled Tasks** 2. Find **"Backup Database"** 3. Click the task to configure: - **Backup path:** where to store backups (e.g., `/backups/jellyfin/`) - **Schedule:** set a recurring trigger (e.g., every Sunday at 3 AM) 4. Click **Save** ### What it backs up - The unified `jellyfin.db` database (users, settings, watch history, metadata references) - Server configuration files ### What it does NOT back up - Media files - Trickplay images (regenerable) - Plugin binaries (re-downloadable from catalog) - Custom CSS (stored in the database, so it IS included) ### Limitations - The built-in backup is a **database-level snapshot** - it does not create a full `/config` archive - For a complete backup including metadata images and plugin data, use one of the methods below in addition --- ## Method 2: Automated Shell Script with Cron (Most Popular) The community standard: a bash script that stops Jellyfin, archives the config folder, restarts Jellyfin, and cleans old backups. ### The script ```bash #!/bin/bash # /home/user/scripts/backup-jellyfin.sh # Automated Jellyfin backup with retention BACKUP_DIR="/backups/jellyfin" CONFIG_DIR="/path/to/jellyfin/config" CONTAINER_NAME="jellyfin" RETENTION_DAYS=30 DATE=$(date +%Y%m%d-%H%M) LOG_FILE="/var/log/jellyfin-backup.log" echo "[$DATE] Starting Jellyfin backup..." >> "$LOG_FILE" # Create backup directory mkdir -p "$BACKUP_DIR" # Stop Jellyfin for consistent backup docker stop "$CONTAINER_NAME" # Create compressed archive tar -czf "$BACKUP_DIR/jellyfin-$DATE.tar.gz" \ --exclude="*/trickplay/*" \ --exclude="*/transcodes/*" \ "$CONFIG_DIR" # Restart Jellyfin docker start "$CONTAINER_NAME" # Clean old backups find "$BACKUP_DIR" -name "jellyfin-*.tar.gz" -mtime +$RETENTION_DAYS -delete # Log result SIZE=$(du -sh "$BACKUP_DIR/jellyfin-$DATE.tar.gz" | cut -f1) echo "[$DATE] Backup completed: $SIZE" >> "$LOG_FILE" # Optional: send notification # curl -s -d "Jellyfin backup completed: $SIZE" http://ntfy:80/jellyfin-alerts ``` ### Key features of this script - **Excludes Trickplay images** - they are large and regenerable, saving significant backup size - **Excludes transcoding cache** - temporary files that do not need backing up - **30-day retention** - automatically deletes backups older than 30 days - **Logging** - records every backup with timestamp and size - **Optional notification** - uncomment the curl line to get notified via Ntfy ### Schedule with cron ```bash crontab -e ``` Add: ```bash # Jellyfin backup every Sunday at 3 AM 0 3 * * 0 /home/user/scripts/backup-jellyfin.sh ``` ### Make the script executable ```bash chmod +x /home/user/scripts/backup-jellyfin.sh ``` --- ## Method 3: Docker Volume Backup (Without Stopping) If you use Docker named volumes and cannot afford downtime: ```bash #!/bin/bash # Backup Docker named volume without stopping the container # Note: database consistency is not guaranteed without stopping docker run --rm \ -v jellyfin_config:/source:ro \ -v /backups:/target \ alpine tar -czf "/target/jellyfin-$(date +%Y%m%d).tar.gz" -C /source . ``` > **Warning:** Backing up a running SQLite database can produce a corrupted backup if a write occurs during the copy. For maximum safety, stop the container first. If downtime is unacceptable, use the WAL checkpoint method: ```bash # Force WAL checkpoint before backup (flushes pending writes) docker exec jellyfin sqlite3 /config/data/jellyfin.db "PRAGMA wal_checkpoint(TRUNCATE);" # Then run the backup ``` --- ## Method 4: ZFS / Btrfs Filesystem Snapshots If your server runs on **ZFS** (TrueNAS, Proxmox) or **Btrfs** (Unraid), filesystem snapshots are the fastest and most reliable backup method. ### ZFS ```bash # Create instant snapshot (zero downtime) zfs snapshot tank/jellyfin@backup-$(date +%Y%m%d) # List snapshots zfs list -t snapshot | grep jellyfin # Restore from snapshot zfs rollback tank/jellyfin@backup-20260418 # Auto-cleanup: keep last 4 weekly snapshots zfs list -t snapshot -o name -H | grep jellyfin | head -n -4 | xargs -n1 zfs destroy ``` ### Btrfs ```bash # Create snapshot btrfs subvolume snapshot /mnt/data/jellyfin /mnt/data/.snapshots/jellyfin-$(date +%Y%m%d) # Restore btrfs subvolume delete /mnt/data/jellyfin btrfs subvolume snapshot /mnt/data/.snapshots/jellyfin-20260418 /mnt/data/jellyfin ``` Filesystem snapshots are **instant** and **atomic** - no need to stop Jellyfin. --- ## Method 5: Cloud Sync with Rclone For off-site backup protection, sync your local backups to cloud storage: ```bash # Configure rclone (one-time setup) rclone config # Follow the wizard for Google Drive, Backblaze B2, S3, etc. # Sync backups to cloud rclone sync /backups/jellyfin remote:jellyfin-backups/ \ --transfers 4 \ --progress ``` ### Automate with cron ```bash # Sync to cloud 1 hour after local backup 0 4 * * 0 rclone sync /backups/jellyfin remote:jellyfin-backups/ --quiet ``` ### Recommended cloud providers for backups | Provider | Free tier | Cost (paid) | Best for | |---|---|---|---| | **Backblaze B2** | 10 GB | $0.005/GB/month | Cheapest per-GB | | **Google Drive** | 15 GB | $1.99/month (100 GB) | Easy setup | | **Wasabi** | None | $5.99/TB/month | No egress fees | --- ## Backup Verification: The Step Everyone Skips An untested backup is not a backup. Verify quarterly: ```bash # Extract backup to a temp directory mkdir /tmp/jellyfin-test tar -xzf /backups/jellyfin/jellyfin-20260418-0300.tar.gz -C /tmp/jellyfin-test # Check database integrity sqlite3 /tmp/jellyfin-test/config/data/jellyfin.db "PRAGMA integrity_check;" # Expected output: ok # Clean up rm -rf /tmp/jellyfin-test ``` If `integrity_check` returns anything other than "ok", your backup is corrupted. --- ## Complete Automated Backup Strategy Here is the recommended setup combining multiple methods: | Layer | Method | Frequency | Retention | |---|---|---|---| | **Database** | Jellyfin built-in backup | Daily | 7 days | | **Full config** | Shell script + cron | Weekly | 30 days | | **Filesystem** | ZFS/Btrfs snapshot | Daily | 4 snapshots | | **Off-site** | Rclone to cloud | Weekly | 90 days | | **Verification** | Integrity check script | Monthly | N/A | This gives you: - Daily database protection (fast recovery from corruption) - Weekly full config archives (recover from any failure) - Instant filesystem snapshots (zero-downtime rollback) - Off-site cloud copies (survive hardware failure or theft) --- > **Protect your setup - and verify it works after every restore.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health monitoring, user verification, and real-time diagnostics on your Android device. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same backup verification and monitoring experience for Emby.* --- ## TRaSH Guides and Recyclarr: Automate Perfect Quality Profiles for Radarr and Sonarr (2026) URL: https://jellywatch.app/blog/trash-guides-recyclarr-radarr-sonarr-quality-profiles-jellyfin-2026 Published: 2026-03-20T11:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: guide, jellyfin, trash-guides, recyclarr, radarr, sonarr, quality-profiles, custom-formats, 2026 # TRaSH Guides and Recyclarr for Jellyfin (2026) You have Radarr and Sonarr feeding content into your Jellyfin server. But are your quality profiles actually good? Are you grabbing the best available release, or settling for poorly encoded files that trigger unnecessary transcoding? **TRaSH Guides** are community-maintained quality profiles and custom formats that represent the collective wisdom of thousands of self-hosters. **Recyclarr** is the tool that syncs these profiles to your Radarr and Sonarr instances automatically. Together, they ensure every file in your Jellyfin library is the best possible quality for its size. --- ## What Are TRaSH Guides? TRaSH Guides (available at [trash-guides.info](https://trash-guides.info)) provide: - **Quality Profiles** - which release types to prefer (Remux > Bluray > Web-DL > HDTV) - **Custom Formats** - scoring rules that prefer specific attributes (HDR, Atmos, proper encoders) and penalize bad ones (cam rips, bad encoders, hardcoded subs) - **Quality Size Settings** - recommended min/max file sizes per resolution - **Naming Conventions** - standardized file naming for clean libraries ### Why This Matters for Jellyfin Bad quality profiles lead to: - Oversized files that waste storage - Undersized files with visible compression artifacts - Wrong codecs that trigger transcoding on your clients - Missing HDR metadata that causes washed-out colors TRaSH profiles solve all of this with battle-tested configurations. --- ## What Is Recyclarr? Recyclarr is a CLI tool that reads TRaSH Guide configurations and syncs them to your Radarr and Sonarr instances. Instead of manually copying dozens of custom formats and quality settings, Recyclarr does it in one command. ### Key features - Syncs custom formats from TRaSH Guides automatically - Updates quality profiles with correct scoring - Runs on a schedule (cron) to keep profiles current - Supports multiple Radarr/Sonarr instances --- ## Docker Compose Setup ```yaml services: recyclarr: image: ghcr.io/recyclarr/recyclarr:latest volumes: - ./recyclarr/config:/config environment: - TZ=Europe/Paris restart: "no" ``` Recyclarr runs as a one-shot command, not a persistent service. Schedule it with cron or run manually. --- ## Configuration Create `/config/recyclarr.yml`: ```yaml radarr: movies: base_url: http://radarr:7878 api_key: your_radarr_api_key quality_definition: type: movie quality_profiles: - name: HD Bluray + WEB min_format_score: 0 quality_sort: top upgrade: allowed: true until_quality: Bluray-1080p until_score: 10000 custom_formats: - trash_ids: # HDR Formats - e23edd2482476e595fb990b12e7c609c # DV HDR10 - 58d6a88f13e2db7f5059c41047876f00 # DV - 55d53828b9d81cbe20b02efd00aa0efd # DV HLG - a3e19f8f627608af0211acd02bf89735 # DV SDR # Audio - 496f355514737f7d83bf7aa4d24f8169 # TrueHD Atmos - 2f22d89048b01681dde8afe203bf2e95 # DTS X assign_scores_to: - name: HD Bluray + WEB sonarr: tv: base_url: http://sonarr:8989 api_key: your_sonarr_api_key quality_definition: type: series quality_profiles: - name: WEB-1080p min_format_score: 0 upgrade: allowed: true until_quality: WEB 1080p until_score: 10000 custom_formats: - trash_ids: - e6258996055b9fbab7e9cb2f75819294 # WEB Tier 01 - 58790d4e2fdcd9733aa7ae68ba2bb503 # WEB Tier 02 - d84935abd3f8556dcd51d4f27e22f1a6 # WEB Tier 03 assign_scores_to: - name: WEB-1080p ``` ### Run the sync ```bash docker run --rm -v ./recyclarr/config:/config ghcr.io/recyclarr/recyclarr:latest sync ``` Recyclarr creates the custom formats in Radarr/Sonarr and assigns scores to your quality profiles. --- ## Recommended TRaSH Profiles for Jellyfin Users ### Movies | Profile | Best for | File size | |---|---|---| | **Remux + WEB 1080p** | Quality-first, large storage | 15-40 GB | | **HD Bluray + WEB** | Balanced quality/size | 5-15 GB | | **WEB 1080p** | Storage-constrained | 3-8 GB | ### TV Shows | Profile | Best for | File size per episode | |---|---|---| | **WEB 1080p** | Most users | 1-4 GB | | **WEB 720p** | Limited bandwidth | 0.5-2 GB | ### 4K Content TRaSH recommends a **separate Radarr instance** for 4K content with its own quality profile. This prevents 4K files from being served to clients that cannot Direct Play them. --- ## Automating with Cron ```bash # Run Recyclarr sync every Sunday at 3 AM 0 3 * * 0 docker run --rm -v /path/to/recyclarr/config:/config ghcr.io/recyclarr/recyclarr:latest sync >> /var/log/recyclarr.log 2>&1 ``` TRaSH Guides update regularly. Recyclarr pulls the latest definitions on each sync. --- ## How This Improves Your Jellyfin Experience 1. **Fewer transcodes** - files are grabbed in codecs your clients support 2. **Better HDR** - custom formats prioritize proper HDR metadata 3. **Consistent quality** - no more random 480p grabs mixed with 4K remuxes 4. **Optimal storage** - file sizes match your quality expectations 5. **Better audio** - Atmos and DTS-X prioritized when available --- ## FAQ **Do TRaSH Guides work with Jellyfin directly?** TRaSH Guides configure Radarr and Sonarr - which feed content into Jellyfin. The quality improvements benefit Jellyfin indirectly through better source files. **Is Recyclarr safe to run on an existing setup?** Yes. Recyclarr only adds or updates custom formats and quality profiles. It does not delete existing content or modify downloads in progress. **Can I customize TRaSH profiles?** Absolutely. The YAML configuration is fully customizable. Start with TRaSH defaults and adjust scores to match your preferences. --- > **Better quality files in your library - now monitor how they play.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see Direct Play vs transcode ratios, codec details, and quality info for every active session. --- ## Emby IPTV & Live TV Setup 2026: M3U Playlist, EPG Guide, and DVR Recording (Premiere Required) URL: https://jellywatch.app/blog/emby-iptv-live-tv-setup-guide-2026 Published: 2026-03-19T23:44:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: guide, emby, iptv, live-tv, dvr, 2026, setup # Emby IPTV and Live TV Setup Guide (2026): M3U, EPG, and DVR Configuration Emby supports **IPTV and Live TV** natively - allowing you to integrate live television channels, electronic program guides (EPG), and even DVR recording directly into your existing media library. In 2026, setting up IPTV on Emby requires **Emby Premiere** and a valid M3U playlist. This guide walks you through every step. --- ## Prerequisites - Emby Server with **Emby Premiere** activated (Live TV requires Premiere) - A valid **M3U IPTV playlist** from your provider - An **XMLTV EPG source** (optional but strongly recommended for program guides) - Sufficient storage for DVR recordings (if using DVR) --- ## Step 1: Access Live TV Settings 1. Open Emby Dashboard 2. Navigate to **Live TV** 3. Click **Add** next to TV Sources --- ## Step 2: Add Your M3U Playlist 1. Select **M3U Tuner** as the tuner type 2. Enter your M3U URL or upload the file: - **URL example:** `http://your-provider.com/playlist.m3u` - **Local file:** `/config/iptv/channels.m3u` 3. Set a meaningful name (e.g., "IPTV Provider") 4. Configure the simultaneous stream limit (depends on your subscription) 5. Click **Save** ### M3U file format Your M3U file should follow this structure: ``` #EXTM3U #EXTINF:-1 tvg-id="bbc1.uk" tvg-name="BBC One" tvg-logo="http://logo.url/bbc1.png" group-title="UK",BBC One http://stream.provider.com/bbc1/index.m3u8 #EXTINF:-1 tvg-id="cnn.us" tvg-name="CNN" tvg-logo="http://logo.url/cnn.png" group-title="News",CNN http://stream.provider.com/cnn/index.m3u8 ``` --- ## Step 3: Add an EPG Guide (XMLTV) The Electronic Program Guide shows what is currently on and upcoming. Without it, you only see channel names. 1. In Live TV → **Add** next to TV Guide Data Providers 2. Select **XMLTV** 3. Enter your EPG URL: - Example: `http://epg-provider.com/guide.xml` 4. Set refresh interval (every 24 hours is typical) 5. Save ### Matching channels to EPG data After adding EPG, Emby attempts to auto-match channels by `tvg-id`. For channels that do not auto-match: 1. Live TV → Channels 2. Click a channel → Edit → Set the EPG channel manually --- ## Step 4: Configure Channel Groups Large M3U playlists can have hundreds of channels. Use channel groups to organize them: 1. Live TV → Channels 2. Filter by group (Sport, News, Movies, etc.) 3. Hide channels you do not need: right-click → Hide You can also create custom channel lists. --- ## Step 5: Set Up DVR (Optional) DVR lets you record live TV to storage. Requires Emby Premiere. ### Configure DVR storage 1. Dashboard → DVR 2. Set **Recording Path** to your storage drive 3. Recommended: dedicate a separate folder (e.g., `/media/recordings/`) ### Record a program From the Live TV guide: - Click any show → **Record** - Choose: Record this episode / Record series / Record all episodes Recordings appear in your library under **Recordings** automatically. ### Storage planning | Quality | Size per hour | |---|---| | 720p | ~2-3 GB | | 1080p | ~4-6 GB | | 4K | ~15-25 GB | Plan storage accordingly - recordings accumulate quickly. --- ## Step 6: Access Live TV on Mobile ### Emby mobile app (Premiere required) The Emby Android and iOS apps support Live TV with the correct Premiere subscription. - Channel guide: tap **Live TV** in the app - Playback: tap any channel to start streaming - Recordings: tap **Recordings** to browse saved content ### EmbyWatch for server monitoring during IPTV IPTV streams can be demanding on CPU and bandwidth - especially if multiple users are watching simultaneously. **EmbyWatch** helps you monitor your Emby server during live streaming: - See active IPTV sessions in real time - Monitor CPU usage (live TV can trigger transcoding if client codec is incompatible) - Get push notifications if CPU spikes or the server goes offline - Track which channels are being watched and by whom --- ## Troubleshooting Common IPTV Issues | Problem | Likely cause | Fix | |---|---|---| | Channels not loading | Wrong M3U URL or expired subscription | Verify URL in browser | | No EPG data | XMLTV URL error or mismatch | Check EPG URL and channel IDs | | Buffering on live channels | Transcoding or slow provider stream | Enable hardware acceleration | | Channels disappear | M3U playlist not refreshing | Set auto-refresh in tuner settings | | DVR not recording | Insufficient disk space | Free up storage | --- ## IPTV + Emby: Tips for Stability 1. **Use a local M3U file** - URLs can go offline. Save a local copy of your playlist. 2. **Set stream limits** - Do not exceed your provider's simultaneous stream cap. 3. **Enable hardware transcoding** - Live TV often needs transcoding for mobile clients. 4. **Monitor bandwidth** - IPTV is real-time; slow uploads cause buffering for remote viewers. 5. **Schedule EPG refresh at off-peak hours** - EPG downloads can be large. --- > **Running IPTV on Emby? Monitor every active session in real time.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - CPU usage, active streams, transcoding status, and push notifications for your Emby server on Android. *Considering Jellyfin for IPTV instead? Jellyfin also supports M3U and XMLTV - completely free. [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)* --- ## Free Legal M3U Sources for Emby Live TV (2026) You do not need a paid IPTV subscription to enjoy Live TV on Emby. Several services offer **free, legal M3U playlists** with hundreds of channels. Here are the best options in 2026. ### Pluto TV **Channels:** 250+ (US), 100+ (EU) **Content:** Movies, news, sports, entertainment, kids **M3U source:** Community-maintained playlists on GitHub (search "Pluto TV M3U") Pluto TV is owned by Paramount and offers ad-supported linear channels completely free. Channels include dedicated movie channels (by genre), news (CBS News, Bloomberg), and niche content (MST3K, Classic TV). ``` #EXTINF:-1 tvg-id="pluto.movies" group-title="Movies",Pluto Movies https://jmp2.uk/plu-movies.m3u8 ``` ### Samsung TV Plus **Channels:** 200+ (varies by region) **Content:** News, entertainment, lifestyle, music **M3U source:** Community-extracted streams (GitHub repositories) Samsung TV Plus streams are available outside Samsung TVs via extracted M3U URLs. Quality is typically 720p-1080p. ### Stirr (US) **Channels:** 100+ **Content:** Local news, movies, lifestyle **M3U source:** Community playlists Stirr is Sinclair Broadcasting free streaming service. Strong local news coverage across US markets. ### Plex Free Live TV Channels **Channels:** 300+ **Content:** Movies, news, sports, reality **M3U source:** Extracted streams available in community repos Plex offers free ad-supported live channels. The streams can be extracted and added to Emby as M3U sources. ### IPTV-Org (Community Aggregator) The [iptv-org/iptv](https://github.com/iptv-org/iptv) GitHub repository aggregates **thousands of free, legal streams** from around the world, organized by country and category. ```bash # All channels (worldwide) https://iptv-org.github.io/iptv/index.m3u # By country (example: France) https://iptv-org.github.io/iptv/countries/fr.m3u # By category (example: News) https://iptv-org.github.io/iptv/categories/news.m3u ``` Add these URLs directly as M3U tuner sources in Emby. ### How to Add Free Sources to Emby 1. Dashboard → Live TV → Add TV Source 2. Tuner type: **M3U Tuner** 3. Paste the M3U URL (e.g., `https://iptv-org.github.io/iptv/countries/us.m3u`) 4. Set simultaneous streams to **2-3** (free sources may limit connections) 5. Save and scan channels ### EPG for Free Sources Free M3U sources often lack EPG data. Use these community EPG providers: - **EPG.best** - covers Pluto TV, Samsung TV Plus, and more - **iptv-org EPG** - `https://iptv-org.github.io/epg/guides/us.xml` - **xmltv.se** - European channels Add the EPG URL in Live TV → TV Guide Data Providers → XMLTV. ### Important Notes on Free Sources - **Legality:** All sources listed above are legitimate free ad-supported services (FAST channels). They are legal to watch. - **Stability:** Free streams may change URLs periodically. Update your M3U sources monthly. - **Quality:** Typically 720p-1080p. No 4K on free services. - **Ads:** Most free channels include ads baked into the stream. You cannot skip them. - **Geo-restrictions:** Some channels are region-locked. Use a VPS in the target country if needed. --- ## Jellyfin vs Emby Live TV: Feature Comparison (2026) Both Jellyfin and Emby support IPTV/Live TV, but with different approaches and limitations. | Feature | Emby (with Premiere) | Jellyfin (Free) | |---|---|---| | **M3U tuner support** | Yes | Yes | | **XMLTV EPG** | Yes | Yes | | **DVR recording** | Yes (Premiere required) | Yes (free) | | **Series recording** | Yes | Yes | | **Hardware-accelerated Live TV transcode** | Yes (Premiere) | Yes (free) | | **Channel management (hide/reorder)** | Yes | Yes | | **Multiple tuner sources** | Yes | Yes | | **HDHomeRun support** | Yes | Yes | | **Live TV on mobile app** | Yes (Premiere) | Yes (free) | | **Cost** | Requires Emby Premiere (~$119 lifetime) | Completely free | | **Guide UI quality** | Polished, smooth scrolling | Functional, less polished | | **Automatic M3U refresh** | Yes (configurable interval) | Yes (configurable interval) | | **Timeshift (pause live TV)** | Yes | Limited (client-dependent) | | **Commercial skip** | No | No (plugin in development) | ### When to Choose Emby for Live TV - You already have Emby Premiere for other features (hardware transcoding, mobile apps) - You prefer the more polished guide interface - You want official support and documentation - You use Emby mobile apps that integrate Live TV natively ### When to Choose Jellyfin for Live TV - You want **zero cost** - DVR, Live TV, and hardware transcoding are all free - You prefer open-source software - You want community plugin support (Tvheadend backend, etc.) - You are already running Jellyfin for your media library ### Migration: Emby Live TV to Jellyfin If you switch from Emby to Jellyfin, your M3U and XMLTV URLs work identically. Simply: 1. Note your M3U URL and EPG URL from Emby 2. In Jellyfin: Dashboard → Live TV → Add Tuner Device → M3U 3. Paste the same URLs 4. Re-map channels to EPG data Your recordings will not transfer (different format), but your channel setup takes 5 minutes to recreate. --- > **Monitoring Live TV sessions is critical - IPTV transcoding can spike CPU unexpectedly.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - see which channels are being watched, detect transcoding spikes, and get alerts when your server is under load. *On Jellyfin? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the same Live TV monitoring for Jellyfin servers.* --- ## Jellyfin OIDC Plugin Setup 2026: SSO with Authelia & Authentik (Step-by-Step) URL: https://jellywatch.app/blog/jellyfin-sso-authelia-authentik-single-sign-on-2026 Published: 2026-03-19T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, sso, authelia, authentik, security, authentication, 2026 # Jellyfin OIDC Plugin Setup 2026: SSO with Authelia & Authentik ## How to Enable OIDC (OpenID Connect) in Jellyfin Jellyfin supports OIDC-based single sign-on through the **jellyfin-plugin-sso** community plugin. Once configured, your users authenticate via an external identity provider (Authelia, Authentik, Keycloak, or any OIDC-compliant IdP) and access Jellyfin without a separate password. This guide covers the full OIDC setup with both Authelia (lightweight) and Authentik (full-featured). --- # Jellyfin SSO with Authelia and Authentik (2026) If you run Jellyfin alongside Radarr, Sonarr, Jellyseerr, Grafana, and other services, your users (and you) are juggling multiple passwords. Single Sign-On (SSO) lets everyone log in once and access everything. This guide covers the two most popular self-hosted SSO solutions for Jellyfin in 2026. --- ## What Is SSO and Why Does It Matter? Single Sign-On means one login for all your services: - Log in to Authelia/Authentik once - Access Jellyfin, Jellyseerr, Radarr, Sonarr, Grafana - no re-authentication - Centralized user management - add/remove users in one place - Two-factor authentication (2FA) across all services - Audit logs for every login attempt --- ## Option 1: Authelia (Lightweight) Authelia is a lightweight authentication server that sits behind your reverse proxy. ### How it works ``` User → Reverse Proxy → Authelia (login) → Jellyfin ``` Authelia intercepts requests, checks authentication, and forwards authenticated users to the target service. ### Docker Compose ```yaml services: authelia: image: authelia/authelia:latest volumes: - ./authelia/config:/config ports: - 9091:9091 restart: unless-stopped ``` ### Authelia configuration for Jellyfin ```yaml # configuration.yml access_control: default_policy: deny rules: - domain: jellyfin.yourdomain.com policy: one_factor - domain: radarr.yourdomain.com policy: two_factor - domain: sonarr.yourdomain.com policy: two_factor identity_providers: oidc: clients: - id: jellyfin description: Jellyfin Media Server secret: your_client_secret_here redirect_uris: - https://jellyfin.yourdomain.com/sso/OID/redirect/authelia scopes: - openid - profile - groups ``` ### Jellyfin SSO Plugin 1. Install the **jellyfin-plugin-sso** from the plugin catalog 2. Configure OIDC provider: - Provider name: Authelia - OIDC endpoint: `https://auth.yourdomain.com` - Client ID: `jellyfin` - Client Secret: your secret 3. Users see a "Sign in with Authelia" button on the Jellyfin login page --- ## Option 2: Authentik (Full-Featured) Authentik is a more feature-rich identity provider with a polished admin UI, LDAP support, and advanced policies. ### Docker Compose ```yaml services: authentik-server: image: ghcr.io/goauthentik/server:latest command: server environment: - AUTHENTIK_SECRET_KEY=your_secret_key - AUTHENTIK_REDIS__HOST=redis - AUTHENTIK_POSTGRESQL__HOST=postgresql - AUTHENTIK_POSTGRESQL__USER=authentik - AUTHENTIK_POSTGRESQL__PASSWORD=authentik_db_pass - AUTHENTIK_POSTGRESQL__NAME=authentik ports: - 9000:9000 - 9443:9443 restart: unless-stopped authentik-worker: image: ghcr.io/goauthentik/server:latest command: worker environment: - AUTHENTIK_SECRET_KEY=your_secret_key - AUTHENTIK_REDIS__HOST=redis - AUTHENTIK_POSTGRESQL__HOST=postgresql - AUTHENTIK_POSTGRESQL__USER=authentik - AUTHENTIK_POSTGRESQL__PASSWORD=authentik_db_pass - AUTHENTIK_POSTGRESQL__NAME=authentik restart: unless-stopped redis: image: redis:alpine restart: unless-stopped postgresql: image: postgres:16-alpine environment: - POSTGRES_USER=authentik - POSTGRES_PASSWORD=authentik_db_pass - POSTGRES_DB=authentik volumes: - ./authentik/db:/var/lib/postgresql/data restart: unless-stopped ``` ### Configure Authentik for Jellyfin 1. Open Authentik admin UI at `https://your-server:9000/if/admin/` 2. Applications → Create Application → Name: "Jellyfin" 3. Create an OAuth2/OIDC Provider: - Client ID: auto-generated - Redirect URI: `https://jellyfin.yourdomain.com/sso/OID/redirect/authentik` - Scopes: openid, profile, email 4. Install jellyfin-plugin-sso and configure with Authentik endpoints ### Authentik advantages over Authelia | Feature | Authelia | Authentik | |---|---|---| | Setup complexity | Simple | Medium | | Admin UI | YAML config | Full web UI | | LDAP support | Basic | Full | | User self-service | Limited | Password reset, profile | | Group management | File-based | Web UI | | Audit logs | Basic | Detailed | | Resource usage | Very low | Medium (PostgreSQL + Redis) | --- ## Protecting Your Entire Stack Once SSO is configured, protect all services: | Service | SSO method | |---|---| | Jellyfin | OIDC plugin | | Jellyseerr | OIDC in preview branch only (not in stable) | | Radarr | Reverse proxy auth header | | Sonarr | Reverse proxy auth header | | Grafana | Built-in OAuth2 | | Portainer | Built-in OAuth2 | For services without native OIDC (Radarr, Sonarr), use your reverse proxy to enforce authentication via Authelia/Authentik before forwarding requests. > **Heads-up on Jellyseerr / Seerr OIDC:** As of 2026, OpenID Connect is **not** available in the stable Jellyseerr/Seerr image (the `:latest` tag, including Seerr 3.2.0). It only lives in a work-in-progress preview branch - historically tagged `fallenbagel/jellyseerr:preview-OIDC`, renamed `preview-new-oidc` after the Overseerr and Jellyseerr projects merged into Seerr. The feature is still unmerged and incomplete: notably there is no automatic account linking yet, so migrating existing local users can fail with a `UNIQUE constraint failed: user.email` error. Until OIDC ships in a stable release, either run the preview image or front Jellyseerr with reverse-proxy / forward-auth via Authelia or Authentik. --- ## Two-Factor Authentication (2FA) Both Authelia and Authentik support 2FA: - **TOTP** (Google Authenticator, Authy) - **WebAuthn** (hardware keys like YubiKey) - **Push notifications** (Authentik only) Enable 2FA for admin accounts at minimum. Consider requiring it for all users accessing services remotely. --- ## FAQ **Does SSO replace Jellyfin user accounts?** No. SSO creates a link between the external identity and a Jellyfin user. Jellyfin still manages its own user database. **Can I use SSO for the Jellyfin mobile app?** The SSO plugin works with the web interface. Mobile app support depends on the client - some support OIDC redirect, others require direct Jellyfin credentials. **Is Authelia or Authentik better?** Authelia for simplicity and low resource usage. Authentik for a full-featured identity platform with a web admin UI. **Does Jellyseerr support OIDC out of the box?** Not in the stable release. OpenID Connect for Jellyseerr/Seerr is still a preview feature — you must run the `preview-new-oidc` image (formerly `preview-OIDC`). It is not in `:latest` or Seerr 3.2.0, and there is no automatic account linking yet, so existing users may need to be linked manually in the admin panel or you should disable "New user login" to avoid duplicate-account errors. **Can JellyWatch connect through SSO?** JellyWatch connects directly to the Jellyfin API using standard credentials. SSO is primarily for web-based access. --- > **Secure your entire media stack - then monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, server health, and push alerts for your Jellyfin server on Android. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same monitoring experience for Emby servers.* --- ## Jellyfin SyncPlay Guide 2026: Watch Movies Together Remotely (Built-In Group Watch) URL: https://jellywatch.app/blog/jellyfin-watch-party-group-watch-guide-2026 Published: 2026-03-19T14:34:00+00:00 Author: JellyWatch Team Category: Tips Tags: guide, jellyfin, watch-party, syncplay, group-watch, 2026 # How to Watch Jellyfin Together: Watch Party and Group Sync Options in 2026 Watching movies with friends or family who are not in the same room is one of the most requested Jellyfin features. In 2026, Jellyfin offers **SyncPlay** - a built-in group watch feature - plus several third-party options for a richer watch party experience. This guide explains every available method, how to set them up, and their limitations. --- ## Option 1: Jellyfin SyncPlay (Built-In) **SyncPlay** is Jellyfin's native group watch feature, built directly into the server. No extra plugins required. ### How SyncPlay works SyncPlay synchronizes playback across multiple clients: - One user creates a group and starts playback - Other users join the group via the Jellyfin interface - Pause, seek, and play are synchronized in real time across all viewers - If someone buffers, SyncPlay automatically pauses everyone until they catch up ### How to start a SyncPlay session **From the Jellyfin web interface:** 1. Start playing any media 2. Click the **group icon** in the player controls (bottom right) 3. Select **Create New Group** 4. Share the session: other users on the same server join by clicking the same icon → **Join Group** ### Requirements - All participants must have an account on the same Jellyfin server - All participants need access to the media being played - Works in the web interface, official Android app, and most clients that support SyncPlay ### Limitations of SyncPlay - All users must be on the same Jellyfin server - No built-in chat - No video call integration - Works best on local network or with low-latency remote access --- ## Option 2: Watch Party with External Tools For a richer experience with chat, reactions, and video calling, combine Jellyfin with external watch party tools. ### Teleparty (Browser Extension) Teleparty (formerly Netflix Party) now supports custom video URLs, which means you can use it with the Jellyfin web interface. **Setup:** 1. Install the Teleparty browser extension 2. Open your Jellyfin media in a browser tab 3. Start Teleparty from the extension 4. Share the link with friends > Note: Teleparty works best when all users can reach your Jellyfin server via a public URL (requires reverse proxy or tunnel). ### Discord Screen Share A simple but effective option for small groups: 1. Open Jellyfin in a browser 2. Share your screen in a Discord voice channel (Go Live) 3. Friends watch from your stream **Limitation:** Video quality depends on your Discord Nitro tier (720p/1080p cap without Nitro). ### Syncwatch (Browser Extension) Similar to Teleparty, Syncwatch syncs video playback across browsers. Works with any web video including Jellyfin. --- ## Option 3: Jellyfin with Kavita or Komga for Manga/Comics Group Reading For non-video content (comics, manga), Jellyfin-adjacent tools like Kavita support shared libraries for group reading sessions. --- ## Setting Up Remote Access for Watch Parties For remote group watch to work well, your server needs to be accessible externally with low latency. The recommended setup: ### Cloudflare Tunnel (no port forwarding needed) ```bash cloudflared tunnel create jellyfin-party cloudflared tunnel route dns jellyfin-party watch.yourdomain.com ``` This gives everyone a clean HTTPS URL to join without exposing your home IP. ### Tailscale (most secure) All participants install Tailscale and join your tailnet. They access your server at its Tailscale IP. **Best for:** Small trusted groups who do not mind installing Tailscale. --- ## SyncPlay Tips for the Best Experience ### Minimize transcoding during group watch Transcoding during SyncPlay can cause desync if the server is under load. Before your watch party: 1. Check server CPU/RAM headroom 2. Ask all participants to set quality to **Maximum** or **Original** to force Direct Play 3. Confirm no heavy background tasks are running ### Monitor your server during the watch party Use **JellyWatch** on your Android device to monitor active sessions in real time: - See all group members' sessions - Verify everyone is Direct Playing (not transcoding) - Get alerted if CPU spikes unexpectedly - Kick a stuck session that is causing desync --- ## Watch Party Feature Comparison | Method | Built-in | Chat | Works remotely | Setup complexity | |---|---|---|---|---| | SyncPlay | Yes | No | Yes (needs remote access) | Easy | | Teleparty | No (extension) | Yes | Yes | Medium | | Discord Screen Share | No | Yes | Yes | Easy | | Syncwatch | No (extension) | No | Yes | Easy | --- ## FAQ **Can people on different servers watch together?** No. SyncPlay requires all users to be on the same Jellyfin server. **Does SyncPlay work on mobile?** Yes, the official Jellyfin Android app supports SyncPlay. Third-party apps like Findroid are adding support. **What happens if someone buffers?** SyncPlay automatically pauses the group until the buffering user catches up. You can see who is buffering in the group panel. **Can I chat during a SyncPlay session?** Not natively. Use Discord, WhatsApp, or any voice/chat app alongside Jellyfin. --- > **Keep your server stable during movie nights.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor active sessions, CPU usage, and transcoding status in real time on your Android phone. *Running Emby and want the same monitoring? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Best Jellyfin Themes and How to Install Them in 2026 (Skin Manager Guide) URL: https://jellywatch.app/blog/best-jellyfin-themes-skin-manager-2026 Published: 2026-03-18T16:34:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, themes, skin-manager, customization, plugins # Best Jellyfin Themes and How to Install Them in 2026 The default Jellyfin interface is functional and clean, but the community has built stunning custom themes that transform it into something that rivals Netflix or Disney+. In 2026, installing a custom Jellyfin theme takes less than two minutes using the **Skin Manager plugin**. This guide covers the best themes available, how to install them, and advanced customization tips. If you want to skip the manual research, [browse all Jellyfin themes on the Hub](https://jellywatch.app/hub/category/ui-themes) — every theme below has a dedicated page with install instructions. --- ## Why Customize Your Jellyfin Theme? - Make the interface feel more like a premium streaming platform - Reduce eye strain with dark or OLED-optimized themes - Impress users you share your server with - Personalize artwork display (ClearArt, banners, backdrops) --- ## Method 1: Skin Manager Plugin (Recommended) The **Skin Manager** plugin is the easiest way to apply themes. It provides a one-click installer for community themes directly from the Jellyfin dashboard. ### Install Skin Manager 1. Dashboard → Plugins → Catalog 2. Search for **Skin Manager** 3. Click Install → Restart Jellyfin 4. Go to Dashboard → Plugins → Skin Manager ### Apply a theme 1. Open Skin Manager from the plugin list 2. Browse the available themes 3. Click **Install** on your chosen theme 4. Refresh your browser > **Note:** Skin Manager injects custom CSS. It does not replace the Jellyfin client - it applies styling on top of the existing web interface. --- ## Method 2: Manual CSS Injection If you prefer full control, you can inject CSS manually: Dashboard → General → Custom CSS code → Paste your theme CSS → Save This method works without any plugin and survives Jellyfin updates cleanly. --- ## The Best Jellyfin Themes in 2026 ### 1. JellyFlix - The Netflix Look The most popular Jellyfin theme. JellyFlix replaces the default interface with a Netflix-inspired layout: red accents, bold typography, full-width hero banners. **Best for:** Users who want the Netflix feeling from their personal library. **Install via Skin Manager** or grab the CSS from the [JellyFlix Hub page](https://jellywatch.app/hub/jellyflix-theme-imp). Key features: - Netflix-style hero section on the home page - Red primary color scheme - Improved card hover effects - Cleaner navigation bar --- ### 2. Monochrome - Minimal and Elegant A clean, minimal dark theme with no color distractions. Perfect for OLED screens. **Best for:** Users who prefer a focused, distraction-free viewing experience. Features: - Pure black / dark grey palette - OLED-optimized dark backgrounds - Subtle accent colors - Cleaner typography Install via **Skin Manager** → search "Monochrome". **Hub page:** [Monochromic on the JellyWatch Hub](https://jellywatch.app/hub/monochromic-imp). --- ### 3. Ultrachromium - Vibrant and Cinematic A high-contrast, colorful theme with vivid accent colors. Popular in communities that share servers with family. **Hub page:** [Ultrachromic on the JellyWatch Hub](https://jellywatch.app/hub/ultrachromic-imp). **Best for:** Visually striking servers shared with non-technical users. Features: - Colorful gradients - Cinematic poster display - Bold section headers - Enhanced backdrop blur effects --- ### 4. Kaleidochrome - Adaptive Colors A unique theme that adapts the interface accent color to the currently displayed media. The home screen shifts color based on your latest watched content. **Best for:** Power users who want a dynamic, personalized feel. --- ### 5. JellyBlue - Clean Blue Accent A refined dark theme with blue accent colors. More conservative than JellyFlix but still a significant upgrade over the default. **Best for:** Users who prefer a subtle upgrade without a dramatic reskin. --- ## ClearArt: Make Your Library Look Professional ClearArt is a type of artwork - transparent PNG logos and character renders - that appears over media backdrops instead of plain text titles. ### Enable ClearArt in Jellyfin 1. Dashboard → Libraries → [Library] → Manage Library 2. Enable **Image Fetcher: FanArt** 3. Refresh metadata for your library ### Install FanArt plugin Dashboard → Plugins → Catalog → **FanArt** → Install FanArt fetches high-quality ClearArt, disc art, banners, and character renders automatically. > ClearArt dramatically improves how your library looks in any theme. --- ## Custom Home Screen Layout Beyond themes, you can customize what appears on your Jellyfin home page: Dashboard → Display → Home Screen Sections Recommended order: 1. Continue Watching 2. Next Up (series) 3. Latest Movies 4. Latest TV Shows 5. Recently Added --- ## Theme Comparison Table | Theme | Style | Best for | Install method | |---|---|---|---| | JellyFlix | Netflix-like | Family servers | Skin Manager / CSS | | Monochrome | Minimal/OLED | Solo use | Skin Manager | | Ultrachromium | Vibrant | Shared servers | Skin Manager | | Kaleidochrome | Adaptive | Power users | CSS | | JellyBlue | Blue accent | Subtle upgrade | CSS | > **Browse the full theme catalog on the JellyWatch Hub:** [Ultrachromic](https://jellywatch.app/hub/ultrachromic-imp), [JellySkin](https://jellywatch.app/hub/jellyskin-imp), [Jamfin](https://jellywatch.app/hub/jamfin-imp), [Catppuccin for Jellyfin](https://jellywatch.app/hub/catppuccin-jellyfin-imp), [Scyfin](https://jellywatch.app/hub/scyfin-imp), [Finimalism](https://jellywatch.app/hub/finimalism-imp), [ElegantFin](https://jellywatch.app/hub/elegantfin-imp), and more on the [UI/Themes category](https://jellywatch.app/hub/category/ui-themes). --- ## Keep an Eye on Your Server After Plugin Installation Skin Manager and theme plugins are generally lightweight, but it is good practice to monitor your server after any new plugin install - especially on smaller hardware. **JellyWatch** lets you check CPU and RAM usage after installing plugins: - Open the app → Server Health → check CPU is stable - Check that no background tasks were triggered unexpectedly - Confirm active streams are unaffected --- ## Step 1: Add Theme Repositories to Skin Manager Skin Manager works with external theme repositories. The main one covers most popular community themes. 1. Open **Dashboard → Skin Manager** 2. Click **Add Repository** 3. Paste the community repository URL: ``` https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json ``` 4. Repeat for any other repositories you want Popular theme repositories to add: | Theme | Repository URL | Hub page | |---|---|---| | **Ultrachromic** | `https://raw.githubusercontent.com/CTalvio/Ultrachromic/main/skin.json` | [Ultrachromic on the Hub](https://jellywatch.app/hub/ultrachromic-imp) | | **JellyFlix** | `https://raw.githubusercontent.com/prayag17/JellyFlix/master/skin.json` | [JellyFlix on the Hub](https://jellywatch.app/hub/jellyflix-theme-imp) | | **Jellyfin-Netflix** | `https://raw.githubusercontent.com/DevilsDesigns/Jellyfin-Netflix/master/skin.json` | [Jellyfin-Netflix on the Hub](https://jellywatch.app/hub/jellyfin-netflix-theme-imp) | | **Finnergie / Scyfin** | `https://raw.githubusercontent.com/loof2736/scyfin/master/skin.json` | [Scyfin on the Hub](https://jellywatch.app/hub/scyfin-imp) | | **Monochromic** | `https://raw.githubusercontent.com/CTalvio/Monochromic/main/skin.json` | [Monochromic on the Hub](https://jellywatch.app/hub/monochromic-imp) | --- ## Troubleshooting **Theme not applying?** - Make sure the plugin is installed and the server was restarted after installation - Clear your browser cache (Ctrl+Shift+R) after applying a theme - Check that the repository URL is correct and accessible from your server **Theme looks broken or incomplete?** - Some themes require a specific Jellyfin version. Check the theme's GitHub page for compatibility notes - After a Jellyfin server update, themes may need to be re-applied **Can't find the Skin Manager in the catalog?** - Confirm the Awesome Jellyfin repository was added and the catalog refreshed - Try removing and re-adding the repository URL --- > **Customize your Jellyfin theme - then monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health, active sessions, and real-time monitoring for Jellyfin on Android. **Discover more themes:** the [community-curated awesome list](https://jellywatch.app/hub/awesome) and the [most popular themes voted by users](https://jellywatch.app/hub/best) on the JellyWatch Hub. *For Emby users: [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Fix Jellyfin High CPU Usage: Why It Spikes and How to Reduce It (2026) URL: https://jellywatch.app/blog/fix-jellyfin-high-cpu-usage-2026 Published: 2026-03-18T14:34:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, cpu, performance, optimization, troubleshooting # Fix Jellyfin High CPU Usage: Why It Spikes and How to Reduce It (2026) Jellyfin consuming 100% CPU is one of the most reported issues in self-hosting communities. The problem almost always has a specific, fixable cause. This guide walks through every reason Jellyfin CPU usage spikes - during playback, during scans, and even at idle - and gives you the exact fix for each. --- ## The Most Common Causes of High CPU in Jellyfin | Cause | When it happens | |---|---| | Software transcoding | During active playback | | Plugin scan tasks | After adding new media | | Metadata fetch loops | After library updates | | Subtitle extraction | Background, after media scan | | Chapter image extraction | After library scan | | Intro Skipper fingerprinting | After plugin install | | No hardware acceleration | Any transcode event | --- ## Cause 1: Software Transcoding (Most Common) If a client cannot Direct Play a file, Jellyfin converts the video on the fly using the CPU. A single 4K HEVC transcode can use **4-8 CPU cores** continuously. ### How to identify it Open your Jellyfin dashboard → Active Sessions. If any session shows **"Transcoding"**, the CPU is working. Better yet, use **JellyWatch** on Android: the Active Sessions tab shows each stream's transcode reason with a single glance - no desktop required. ### Fix: Enable Hardware Acceleration 1. Dashboard → Playback → Transcoding 2. Choose your GPU: **Intel Quick Sync**, **NVIDIA NVENC**, or **AMD AMF** 3. Enable **Hardware Tone Mapping** (for HDR) 4. Restart Jellyfin **Before:** 4K transcode = 90% CPU **After:** 4K transcode = 5-15% CPU ### Docker: expose the GPU Intel / AMD: ```yaml devices: - /dev/dri:/dev/dri ``` NVIDIA: ```yaml runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all ``` --- ## Cause 2: Jellyfin High CPU at Idle Jellyfin spiking CPU when nobody is streaming? This is almost always a **background task**. ### Common background tasks that cause idle CPU spikes | Task | CPU impact | |---|---| | Library scan (new media added) | Medium | | Chapter image extraction | High | | Subtitle extraction | High | | Intro Skipper analysis | Very high | | Thumbnail/image generation | Medium | | Trickplay (Jellyscrub) generation | High | ### Fix: Reschedule background tasks Dashboard → Scheduled Tasks → Edit each task's trigger time. Set CPU-heavy tasks to run at **3 AM or later** when no one is streaming. ### Fix: Disable chapter image extraction This is one of the highest CPU consumers on large libraries. Dashboard → Libraries → [Library] → Disable **"Save chapter image thumbnails"** --- ## Cause 3: Plugin CPU Spikes Some plugins are known to cause significant CPU usage: ### Intro Skipper The Intro Skipper plugin uses **audio fingerprinting** to detect show intros. The initial scan on a large library can take hours and peg the CPU. **Fix:** Let the initial scan complete (it only runs once per new episode). Monitor progress with JellyWatch. ### Jellyscrub / Trickplay Generating BIF preview files for every video file is disk and CPU intensive. **Fix:** Run trickplay generation manually from the dashboard during off-peak hours. ### Playback Reporting plugin Generally low impact, but on very large libraries the history database can grow and slow queries. **Fix:** Periodically clean old history entries from the plugin settings. --- ## Cause 4: Library Scan After Adding Media Every time you add new files, Jellyfin scans metadata from TMDB/TVDB. For large batches, this hits the network and CPU simultaneously. ### Fix: Add media in batches Instead of adding 500 movies at once, add 50-100 at a time and let the scan complete before the next batch. ### Fix: Use manual library scans Dashboard → Libraries → Scan All Libraries → Disable automatic scan frequency. Then trigger scans manually when convenient. --- ## Cause 5: Too Many Simultaneous Streams Each active stream - even Direct Play - consumes some CPU for muxing and packet processing. ### Recommended limits by hardware | Hardware | Max direct play streams | Max transcode streams | |---|---|---| | Raspberry Pi 5 | 2-3 | 0 (no HW transcode) | | Intel N100 | 6-8 | 3-4 (QSV) | | i5 12th Gen | 10+ | 5-6 (QSV) | | NVIDIA RTX 3060 | 15+ | 8-10 (NVENC) | Monitor active stream count from JellyWatch to know when you are near your hardware limit. --- ## Cause 6: Jellyfin Slow Loading Library / High CPU on Browse If opening the Jellyfin library causes a CPU spike, the issue is **metadata being read from a slow disk**. ### Fix: Move metadata and config to an SSD ``` /config → SSD /cache → SSD /media → HDD (sequential read only) ``` Metadata access is random I/O. SSDs handle this dramatically better than HDDs. --- ## Monitor CPU Usage in Real Time with JellyWatch Rather than SSH-ing into your server every time you suspect a spike, use **JellyWatch**: - Real-time CPU and RAM graphs on your Android device - Push notification when CPU exceeds a threshold you set - Active session view showing which streams are transcoding - Live server logs to spot plugin crashes and background task failures --- ## High CPU Checklist | Symptom | Likely cause | Fix | |---|---|---| | CPU at 100% during playback | Software transcoding | Enable hardware acceleration | | CPU spike at night | Background tasks | Reschedule to off-peak | | CPU high after adding media | Library scan + metadata fetch | Add media in smaller batches | | CPU spike after plugin install | Intro Skipper / Trickplay initial scan | Wait for initial scan to complete | | CPU high on idle, no media added | Plugin loop or metadata error | Check server logs in JellyWatch | --- > **Know the moment your CPU spikes - before your users notice buffering.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time CPU monitoring, session diagnostics, and push alerts on your Android device. *Also running Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) for the same real-time monitoring experience.* --- ## There Is No Official Seerr App for Android - JellyWatch and EmbyWatch Fill the Gap URL: https://jellywatch.app/blog/seerr-android-app-jellywatch-embywatch Published: 2026-03-16T20:50:43+00:00 Author: JellyWatch Team Category: Tips Tags: seerr, jellyseerr, overseerr, android, jellywatch, embywatch, media-requests, self-hosting # There Is No Official Seerr App for Android - JellyWatch and EmbyWatch Fill the Gap If you run a self-hosted media server in 2026, you almost certainly rely on **Seerr** (formerly Jellyseerr or Overseerr) to handle media requests from your users. It is the de facto standard for letting people ask for new movies and TV shows without giving them admin access. There is one major problem: **Seerr has no official Android app**. On mobile, you are stuck opening a browser, zooming in on a web interface that was not designed for small screens, and manually navigating menus that feel awkward on a phone. For a server admin who needs to approve or reject requests on the go, this is a daily frustration. **JellyWatch** (for Jellyfin) and **EmbyWatch** (for Emby) are the only native Android apps that solve this problem with a first-class, fully integrated Seerr experience. --- ## What Is Seerr? **Seerr** is the community-maintained evolution of Jellyseerr and Overseerr - the most popular media request platforms for self-hosted servers. It allows: - Users to search for movies and TV shows and submit requests - Admins to approve or deny those requests with one click - Automatic handoff to Radarr (movies) and Sonarr (TV shows) once approved - Full request history and status tracking Seerr is a critical piece of any serious self-hosted stack. Yet its mobile story has always been the weakest link - until now. --- ## The Problem: No Official Mobile App Exists As of 2026, the Seerr project does not ship an official Android (or iOS) application. Your options without JellyWatch or EmbyWatch are: | Option | Experience | |---|---| | Mobile browser | Functional, but not optimized for touch | | PWA (Progressive Web App) | Limited, no real push notifications | None of these give you a native, fluid experience. None integrate Seerr alongside real-time Jellyfin or Emby session monitoring. **This is exactly the gap that JellyWatch and EmbyWatch were built to fill.** --- ## JellyWatch: Full Seerr Integration for Jellyfin Users **JellyWatch** is a native Android app built specifically for Jellyfin administrators. It combines real-time server monitoring with deep integration into the tools you already use - including Seerr. ### What You Can Do with Seerr Inside JellyWatch #### Manage All Requests from Your Phone The Seerr section inside JellyWatch gives you a unified requests dashboard: - **View all pending, approved, processing, and available requests** in one list - Each request shows: requester name, media title, poster, request date, and current status - **Approve or deny requests with a single tap** - no browser, no zooming, no friction #### Search and Request Media You can also initiate requests yourself: - Search TMDB for any movie or TV show - Submit a request directly to Seerr from inside JellyWatch - Monitor the request as it moves from Pending → Approved → Downloading → Available #### Real-Time Status Updates JellyWatch tracks the lifecycle of every request: - Radarr/Sonarr pick up the request automatically once approved - You see download progress tied back to the request - Users get notified when their content is available (via Seerr's notification system) #### Push Notifications for New Requests With JellyWatch's notification system, you receive an instant Android push notification the moment a user submits a new request - even when your phone is locked. No more discovering a backlog of 20 requests when you finally open a browser. --- ## EmbyWatch: The Same Power for Emby Users If your media server runs **Emby** instead of Jellyfin, **EmbyWatch** provides the exact same Seerr integration - purpose-built for the Emby ecosystem. Everything described above applies equally to EmbyWatch: - Full Seerr request management (view, approve, deny) - TMDB search and request submission - Real-time request status tracking - Push notifications for new incoming requests - Unified dashboard alongside Emby session monitoring EmbyWatch is the **only native Android app** that combines Emby server management with Seerr integration in a single, Material Design 3 interface. 👉 **[Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)** --- ## Why This Matters: The Unified Admin Experience Managing a self-hosted media stack in 2026 typically means jumping between multiple web interfaces: 1. Jellyfin/Emby for watching and managing media 2. Seerr for approving requests 3. Radarr for movies 4. Sonarr for TV shows 5. qBittorrent or Transmission for downloads **JellyWatch and EmbyWatch consolidate all of this into a single Android app.** You open one app. You see your active streams. You get a notification for a new request. You approve it in two taps. You watch the download start in Radarr. You go back to your day. That workflow does not exist anywhere else on Android. --- ## Feature Comparison: Browser vs. JellyWatch/EmbyWatch | Feature | Mobile Browser | JellyWatch / EmbyWatch | |---|---|---| | View pending requests | ✅ | ✅ | | Approve / deny in one tap | ❌ Slow | ✅ | | Push notifications for new requests | ❌ | ✅ | | Search and submit requests | ✅ | ✅ | | Integrated with Jellyfin/Emby monitoring | ❌ | ✅ | | Native Android UI (Material 3) | ❌ | ✅ | | Works offline / poor connection | ❌ | Better | | Home screen widget | ❌ | ✅ (Premium) | --- ## How to Get Started in 3 Minutes ### For Jellyfin + Seerr Users 1. **Download JellyWatch** from the [Google Play Store](https://play.google.com/store/apps/details?id=com.jellywatch.app) 2. Connect your Jellyfin server (URL + credentials) 3. Go to **Settings → Integrations → Seerr** 4. Enter your Seerr URL and API key 5. Open the **Requests** tab - your full Seerr queue is there Total time: under 3 minutes. ### For Emby + Seerr Users 1. **Download EmbyWatch** from the [Google Play Store](https://play.google.com/store/apps/details?id=com.embywatch.app) 2. Connect your Emby server 3. Configure Seerr in the Integration settings 4. Start managing requests natively --- ## FAQ **Does JellyWatch work with Jellyseerr?** Yes. JellyWatch supports both the original Jellyseerr and the newer unified Seerr platform. **Does EmbyWatch support Overseerr?** Yes. EmbyWatch integrates with Overseerr, Jellyseerr, and Seerr. **Do I need Premium to use the Seerr integration?** Seerr request viewing and management requires the Premium subscription in both apps. You can try the apps for free before upgrading. **Is there an iOS version?** Currently, JellyWatch and EmbyWatch are Android-only. iOS support is on the roadmap. **What API key do I need?** Your Seerr/Jellyseerr/Overseerr API key, found in **Settings → General → API Key** inside your Seerr instance. --- ## The Bottom Line Seerr is essential. Seerr has no official Android app. **JellyWatch and EmbyWatch are the best - and currently the only - native Android solutions for managing Seerr on mobile.** If you self-host Jellyfin with Seerr, JellyWatch is the missing piece of your setup. If you self-host Emby with Seerr, EmbyWatch is the app you have been waiting for. 👉 **[Download JellyWatch - Free on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** 👉 **[Download EmbyWatch - Free on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)** --- *Questions or feature requests? Join our community on [Discord](https://discord.com/invite/JRkt5U5uZs) - we read every message.* --- ## Automate Your Jellyfin Library with Tdarr: Convert, Compress, and Optimize Every File (2026) URL: https://jellywatch.app/blog/jellyfin-tdarr-automated-library-transcoding-2026 Published: 2026-03-16T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, tdarr, transcoding, h265, storage, automation, 2026 # Automate Your Jellyfin Library with Tdarr (2026) You have 2,000 movies. Some are H.264, some H.265, some are 50 GB Blu-ray remuxes, and some are ancient XviD files from 2008. Your storage is filling up, and half your remote users trigger transcoding because their clients cannot handle HEVC. **Tdarr** solves this by automatically transcoding your entire library in the background - converting files to your preferred codec, compressing oversized files, and ensuring every item Direct Plays on every client. --- ## What Is Tdarr? Tdarr is a self-hosted media transcoding application with: - **Automatic library scanning** - detects files that need processing - **Plugin-based workflows** - flexible rules for what to transcode and how - **Distributed workers** - offload transcoding to multiple machines - **GPU acceleration** - NVENC, QSV, AMF support - **Jellyfin integration** - triggers library refresh after processing --- ## Docker Compose Setup ```yaml services: tdarr: image: ghcr.io/haveagitgat/tdarr:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - serverIP=0.0.0.0 - serverPort=8266 - webUIPort=8265 volumes: - ./tdarr/server:/app/server - ./tdarr/configs:/app/configs - ./tdarr/logs:/app/logs - /path/to/media:/media - /tmp/tdarr:/temp ports: - 8265:8265 - 8266:8266 devices: - /dev/dri:/dev/dri restart: unless-stopped tdarr-node: image: ghcr.io/haveagitgat/tdarr_node:latest environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - nodeID=MainNode - serverIP=tdarr - serverPort=8266 volumes: - ./tdarr/configs:/app/configs - ./tdarr/logs:/app/logs - /path/to/media:/media - /tmp/tdarr:/temp devices: - /dev/dri:/dev/dri restart: unless-stopped ``` --- ## Recommended Tdarr Workflows for Jellyfin ### Workflow 1: Convert everything to H.265 (save 40-60% storage) **Plugin:** Tdarr_Plugin_MC93_Migz1FFMPEG_CPU/GPU Settings: - Target codec: **HEVC (H.265)** - Target container: **MKV** - Quality: CRF 22 (visually transparent) - Skip if already H.265 This is the most popular workflow. A 20 GB H.264 movie becomes ~8-12 GB in H.265 with no visible quality loss. ### Workflow 2: Ensure compatibility (H.264 for max Direct Play) If your users have older devices that cannot play H.265: - Target codec: **H.264** - Target container: **MP4** - Max resolution: 1080p - Audio: AAC stereo Every file will Direct Play on every device - phones, smart TVs, browsers. ### Workflow 3: Remove unwanted audio/subtitle tracks Strip unnecessary audio tracks (commentary, foreign dubs) and subtitle tracks to save space: - Keep: English audio, English/French subtitles - Remove: everything else - Saves 1-5 GB per movie on Blu-ray remuxes ### Workflow 4: Compress oversized files Target files above a certain bitrate: - If movie > 15 GB → re-encode to CRF 23 - If episode > 3 GB → re-encode to CRF 24 - Skip files already under threshold --- ## GPU Acceleration in Tdarr ### Intel QSV Map `/dev/dri` in Docker. Select QSV encoder in Tdarr plugin settings. ### NVIDIA NVENC Add NVIDIA runtime to Docker. Select NVENC encoder. GPU transcoding is 5-10x faster than CPU - essential for large libraries. --- ## Connecting Tdarr to Jellyfin After Tdarr processes a file, Jellyfin needs to know: 1. In Tdarr → Libraries → Post-processing → Add webhook 2. URL: `http://jellyfin:8096/Library/Refresh?api_key=YOUR_KEY` 3. Jellyfin rescans and updates metadata for the processed file Alternatively, set Jellyfin to scan libraries on a schedule (every 6 hours). --- ## Storage Savings Example | Library | Before (H.264) | After (H.265) | Saved | |---|---|---|---| | 500 movies | 8 TB | 3.5 TB | 4.5 TB (56%) | | 2000 episodes | 4 TB | 1.8 TB | 2.2 TB (55%) | | Total | 12 TB | 5.3 TB | 6.7 TB | At current HDD prices (~$15/TB), that is ~$100 saved in storage costs. --- ## Tdarr Best Practices - **Use a dedicated temp drive** - transcoding writes heavily; use an SSD for `/temp` - **Process during off-peak hours** - schedule Tdarr workers to run at night - **Start with a small batch** - test your workflow on 10 files before processing thousands - **Keep originals temporarily** - Tdarr can keep originals in a backup folder until you verify quality - **Monitor CPU/GPU during processing** - use JellyWatch to ensure Tdarr is not impacting active streams --- ## FAQ **Does Tdarr modify my original files?** By default, yes - it replaces the original. Configure a backup folder to keep originals until verified. **Can Tdarr run while users are streaming?** Yes, but it competes for CPU/GPU resources. Schedule heavy processing during off-peak hours. **Does Tdarr work with Radarr and Sonarr?** Yes. Tdarr processes files after Radarr/Sonarr import them. The workflow is: Download → Import → Tdarr → Jellyfin. --- > **Processing your library with Tdarr? Make sure active streams are not affected.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor CPU usage, active transcodes, and server health while Tdarr works in the background. --- ## How to Monitor Jellyfin Active Sessions on Android in Real Time (2026 Guide) URL: https://jellywatch.app/blog/how-to-monitor-jellyfin-active-sessions-android Published: 2026-03-15T18:59:58+00:00 Author: JellyWatch Team Category: Other Tags: jellyfin, android, session-monitoring, self-hosted, media-server, admin, real-time # How to Monitor Jellyfin Active Sessions on Android in Real Time (2026 Guide) If you self-host a Jellyfin media server, you already know the struggle: opening a browser on your PC just to check who is watching what, which device is connected, and whether someone is hammering your server with a 4K transcode at 2 AM. In 2026, there is a much better way - **monitoring Jellyfin active sessions directly from your Android phone**. This guide walks you through setting up real-time session monitoring with **JellyWatch**, a dedicated Android app built exclusively for Jellyfin administrators. --- ## Why Real-Time Session Monitoring Matters for Jellyfin Admins Running a personal or family Jellyfin server means you are constantly asking questions like: - Who is currently streaming on my server? - Is my server transcoding content right now (and why)? - Which device is connected and from which IP address? - Is someone paused and holding a transcode slot for hours? The default Jellyfin web dashboard answers these questions, but it requires a full browser session on a desktop. **JellyWatch brings all of this to your Android lock screen** - with live updates every few seconds. --- ## What You Need Before Starting - A Jellyfin server (version 10.8 or higher) accessible on your network or via a public URL - An Android phone running Android 7.0 (API 24) or higher - An admin account on your Jellyfin server - The **JellyWatch app** installed on your Android device 👉 **[Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** - free to install, with optional Premium features. --- ## Step 1 - Install JellyWatch and Add Your Server 1. Open the Google Play Store and search for **JellyWatch**. 2. Tap **Install** and open the app. 3. On the welcome screen, tap the **"+" button** to add a new server. 4. Enter your Jellyfin server URL (e.g., `http://192.168.1.100:8096` or your public domain). 5. Choose your authentication method: - **Classic**: enter your Jellyfin admin username and password. - **QuickConnect**: generate a 6-character code from the Jellyfin web UI and enter it in JellyWatch - no password needed. 6. Tap **Connect**. JellyWatch will verify the connection automatically. > **Pro tip:** If your server uses a self-signed certificate, make sure to enable the "Trust all certificates" option in the server settings. --- ## Step 2 - Navigate to the Sessions Dashboard Once connected, JellyWatch opens the **real-time dashboard** automatically. This screen shows: - **All active sessions** on your server, refreshed every 10 seconds by default - Each session card displays: - 👤 Username and avatar - 🎬 Title of the media being played - ⏱️ Current position and total duration with an animated progress bar - ▶️ Playback state (Playing / Paused / Buffering) - 📱 Device name and client application - 🌐 IP address (visible to admins) If no one is watching, the dashboard shows a clean empty state so you know your server is idle. --- ## Step 3 - Understand Playback Methods (DirectPlay vs. Transcode) One of the most useful pieces of information JellyWatch surfaces is **how content is being played**. With a **Premium subscription**, each session card shows technical badges: | Badge | Meaning | |---|---| | **DirectPlay** | The client plays the file natively - zero server CPU usage | | **DirectStream** | Container remuxed, no video re-encoding | | **Transcode** | Server is re-encoding the video - CPU/GPU intensive | Knowing this in real time lets you act immediately: send a message to the user asking them to switch quality, or stop the session if it is overloading your server. --- ## Step 4 - Enable Auto-Refresh and Push Notifications (Premium) By default, the dashboard polls your server every 10 seconds. With **JellyWatch Premium**, you can: - Set the refresh interval as low as **5 seconds** for near-instant monitoring - Enable **push notifications** that alert you the moment a new session starts, pauses, or stops - even when the app is in the background - Add the **home screen widget** to see active session counts at a glance without opening the app To configure notifications: 1. Go to **Settings → Notifications** 2. Toggle on the event types you want alerts for 3. Customize notification channels in your Android system settings for fine-grained control --- ## Step 5 - Manage Sessions Directly from Your Phone JellyWatch is not just read-only. From any active session, you can: - **Send a message** directly to the user's Jellyfin client (great for telling family members dinner is ready) - **View full transcoding details**: which codec is being used, the reason for transcoding, bitrate, resolution, and container format - **Check the device info**: model, app version, and capabilities --- ## Frequently Asked Questions **Can I monitor multiple Jellyfin servers at once?** Yes - with JellyWatch Premium, you can add and switch between multiple servers. Each server has its own independent session dashboard. **Does JellyWatch work over the internet (not just local network)?** Absolutely. As long as your Jellyfin server is accessible via a public URL or VPN, JellyWatch connects to it exactly like the web UI. **Is my data stored by JellyWatch?** No. JellyWatch communicates directly with your Jellyfin server. No data is sent to external servers. All credentials are stored encrypted on your device using Android's `EncryptedSharedPreferences`. **Does it work with Emby?** JellyWatch is built specifically for Jellyfin. It uses the Jellyfin REST API and is not compatible with Emby. --- ## Conclusion Monitoring Jellyfin active sessions from Android has never been this effortless. JellyWatch turns your phone into a fully-featured admin panel - live sessions, technical badges, push notifications, and remote control, all in one app. Whether you manage a private family server or a larger self-hosted media setup, knowing exactly what is happening on your server at all times is a game-changer. --- > **Ready to take control of your Jellyfin server from anywhere?** > 👉 **[Download JellyWatch for free on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** and connect your server in under 2 minutes. > Explore all features on the **[JellyWatch website](https://jellywatch.app)**. --- ## Get Instant Push Notifications for Every New Jellyfin Session on Android URL: https://jellywatch.app/blog/jellyfin-push-notifications-android-new-session-alert Published: 2026-03-15T18:59:58+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, push-notifications, android, background-service, premium, monitoring, alerts # Get Instant Push Notifications for Every New Jellyfin Session on Android You are away from home, and someone just started a stream on your Jellyfin server. You have no idea until you manually check the dashboard. Sound familiar? **JellyWatch solves this with real-time push notifications** - instant alerts sent directly to your Android device whenever activity happens on your Jellyfin server. --- ## Why Jellyfin Admins Need Push Notifications Jellyfin itself does not provide native push notifications to mobile admins. The only way to know something is happening on your server is to actively open the web UI or refresh an app. For a hands-on admin, this is frustrating. JellyWatch's notification system works by running a **background monitoring service** that continuously polls your server and fires Android notifications for events you care about - without draining your battery. --- ## What Events Trigger Notifications? JellyWatch supports granular notification control. You choose which events notify you: | Event | Description | |---|---| | **New session started** | Someone just hit Play on your server | | **Session stopped** | A user ended their stream | | **Playback paused** | A stream is paused (useful for detecting abandoned transcodes) | | **Playback resumed** | A paused session came back to life | | **New device connected** | A new device registered with your Jellyfin server | Each event type has its own **Android notification channel**, so you can customize sound, vibration, and importance per event type in your system notification settings. --- ## How to Enable Push Notifications in JellyWatch ### Prerequisites - JellyWatch installed from Google Play - Your Jellyfin server connected and authenticated - **JellyWatch Premium** subscription (notifications are a Premium feature) - Android 13+ users must grant the `POST_NOTIFICATIONS` permission ### Step-by-Step Setup **1. Open Settings** Tap the gear icon in the top-right corner of the main dashboard. **2. Navigate to Notifications** Scroll to the "Monitoring & Alerts" section and tap **Notification Settings**. **3. Enable the monitoring service** Toggle on **"Background Session Monitor"**. JellyWatch will ask for permission to run as a foreground service - grant it for reliable background operation. **4. Choose your events** Toggle on each notification type: - ✅ New session started - ✅ Session stopped - ☑️ Playback paused (optional - can be noisy on active servers) - ✅ New device connected **5. Set your polling interval** Choose how frequently JellyWatch checks your server: - **10 seconds** (free) - **5 seconds** (Premium - near real-time) **6. Save and test** Start a stream from any Jellyfin client. You should receive a notification on your Android device within the interval you set. --- ## Grouped Notifications for Busy Servers If multiple sessions start simultaneously (e.g., at movie night when everyone hits Play), JellyWatch automatically **groups notifications** to avoid flooding your notification shade. You'll see a summary notification like "3 new sessions on MyServer" instead of three separate alerts. --- ## Battery Optimization: What You Need to Know Android's battery optimization can kill background services. To ensure JellyWatch notifications are reliable: 1. Go to **Android Settings → Apps → JellyWatch** 2. Tap **Battery** → select **Unrestricted** or **No restrictions** 3. On Samsung devices: disable **Adaptive Battery** for JellyWatch JellyWatch uses **WorkManager** for background tasks, which is designed to survive battery optimization on most devices. --- ## Notification Example Here is what a typical new-session notification looks like: ``` 🎬 JellyWatch - New Session alice is watching "Dune: Part Two" on iPhone Server: MyHomeServer · Just now ``` Tapping the notification opens JellyWatch directly on the session dashboard, so you can see the full details in one tap. --- ## Frequently Asked Questions **Do I need to keep JellyWatch open for notifications to work?** No. The background service runs independently. You can close the app and notifications will still arrive. **Does this work when my phone is in Do Not Disturb mode?** JellyWatch respects Android's DND settings. Configure notification priority if you want to break through DND for critical events. **Can I get notifications for a specific user only?** Not yet - this is a feature planned for a future release. Currently, notifications cover all sessions on the server. --- ## Conclusion Push notifications for Jellyfin sessions transform JellyWatch from a monitoring dashboard into a true **always-on admin companion**. You stay informed about your server's activity 24/7 without lifting a finger. --- > **Want instant alerts every time someone streams on your Jellyfin server?** > 👉 **[Upgrade to JellyWatch Premium](https://play.google.com/store/apps/details?id=com.jellywatch.app)** and enable push notifications today. > Learn more at **[jellywatch.app](https://jellywatch.app)**. --- ## Add a Jellyfin Active Sessions Widget to Your Android Home Screen URL: https://jellywatch.app/blog/jellyfin-android-home-screen-widget-active-sessions Published: 2026-03-15T18:59:58+00:00 Author: JellyWatch Team Category: Announcement Tags: jellyfin, android, widget, home-screen, sessions, premium, real-time # Add a Jellyfin Active Sessions Widget to Your Android Home Screen Imagine glancing at your Android home screen and instantly seeing: **2 active sessions - MyHomeServer**. No app to open, no dashboard to load. Just the information you need, always visible. This is exactly what the **JellyWatch home screen widget** delivers - a live at-a-glance view of your Jellyfin server's activity, right on your launcher. --- ## What the JellyWatch Widget Shows The widget displays real-time stats pulled directly from your Jellyfin server: | Stat | Description | |---|---| | **Active Sessions** | Number of streams currently playing | | **Server Name** | The name of your active Jellyfin server | | **Total Users** | Number of users registered on the server | | **Library Items** | Total count of media items across all libraries | | **Connected Devices** | Number of devices registered with the server | The widget has a **manual refresh button** (tap the circular arrow) and updates automatically **every 15 minutes** in the background. --- ## Requirements - Android 7.0+ (API 24 or higher) - JellyWatch installed and connected to at least one Jellyfin server - **JellyWatch Premium** subscription (the widget is a Premium feature) - A launcher that supports resizable app widgets (most Android launchers do) --- ## How to Add the Widget ### Step 1 - Subscribe to Premium (if you haven't already) 1. Open JellyWatch 2. Navigate to **Settings → Premium** 3. Tap **Subscribe** and complete the purchase via Google Play Billing 4. Premium activates immediately ### Step 2 - Long-Press Your Home Screen 1. Return to your Android home screen 2. Long-press on an empty area of the home screen 3. Tap **Widgets** in the menu that appears ### Step 3 - Find the JellyWatch Widget 1. Scroll through the widget list (or search for "JellyWatch") 2. You will see the **JellyWatch Sessions Widget** with a preview 3. Long-press the widget and drag it to the desired position on your home screen ### Step 4 - Resize and Position Once placed, you can resize the widget by long-pressing it and dragging the handles. The widget adapts its layout to fit different sizes while keeping all stats visible. ### Step 5 - Verify It's Updating The widget should populate with your server data within a few seconds of being placed. If it shows "Loading…" for more than 30 seconds: - Make sure JellyWatch has network access - Open JellyWatch and verify the server connection is working - Tap the refresh button on the widget --- ## Light and Dark Theme Support The JellyWatch widget automatically adapts to your Android system theme: - **Dark mode**: dark background with light text - matches AMOLED-optimized launchers like Nova or Niagara - **Light mode**: clean white card with colored accent icons The widget respects Android 12's dynamic theming (Material You) on supported devices. --- ## How Often Does the Widget Update? | Mode | Interval | |---|---| | **Automatic background update** | Every 15 minutes | | **Manual refresh (tap button)** | Instant | | **App opened** | Triggers an immediate widget refresh | > **Note:** Android limits background widget updates to conserve battery. The 15-minute interval is the system minimum enforced by Android. For more frequent updates, open the JellyWatch app directly. --- ## Troubleshooting **Widget shows "-" instead of numbers** Your server may be unreachable. Check your network and verify the server URL in JellyWatch settings. **Widget stopped updating** Battery optimization may be killing the update worker. Go to **Settings → Apps → JellyWatch → Battery** and set it to **Unrestricted**. **Widget not appearing in the widget picker** Make sure JellyWatch Premium is active. The widget is hidden from the picker for free users. Open JellyWatch and check your Premium status in Settings. **Widget crashes on placement** This is rare but can happen on custom MIUI launchers. Try using Nova Launcher or the stock Android launcher instead. --- ## Why the Widget Changes Everything for Jellyfin Admins Before the JellyWatch widget, the only way to know your server activity was to: 1. Open JellyWatch or a browser 2. Navigate to the sessions screen 3. Wait for data to load With the widget, that three-step process becomes a **one-second glance**. For admins who check their server multiple times a day, this is a massive quality-of-life improvement. --- > **Ready to put your Jellyfin server on your home screen?** > 👉 **[Get JellyWatch Premium on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** and add the widget in minutes. > See all Premium features at **[jellywatch.app](https://jellywatch.app)**. --- ## Manage Radarr, Sonarr & Jellyseerr from Android with One App URL: https://jellywatch.app/blog/manage-radarr-sonarr-jellyseerr-android-jellywatch Published: 2026-03-15T18:59:58+00:00 Author: JellyWatch Team Category: Tips Tags: radarr, sonarr, jellyseerr, android, self-hosted, media-automation, arr-stack, jellyfin # Manage Radarr, Sonarr & Jellyseerr from Android with One App If you run a full self-hosted media automation stack - Jellyfin + Radarr + Sonarr + Jellyseerr - you already know the pain of managing it all. Four different web UIs, four browser tabs, zero mobile optimization. Checking whether a download finished means opening Radarr. Approving a media request means opening Jellyseerr. Watching who is streaming means opening Jellyfin. In 2026, **JellyWatch unifies all of this into a single Android app**. --- ## The *Arr Stack Problem on Mobile Most self-hosters access Radarr, Sonarr, and Jellyseerr through their web interfaces on a desktop browser. On mobile, these interfaces are functional but not optimized - small touch targets, complex navigation, and no push notifications. Dedicated apps like nzb360 exist but require configuration for every service separately and lack deep Jellyfin integration. **JellyWatch takes a different approach**: it is built around Jellyfin first, with the `arr ecosystem and Jellyseerr integrated directly into the same app that already monitors your sessions and server health. --- ## What JellyWatch Integrates ### Jellyfin (Core) - Real-time session monitoring - User, device, and library management - Scheduled tasks, system info, activity logs - Remote server control (restart, shutdown) ### Jellyseerr - View all pending, approved, and available media requests - **Approve or reject requests** directly from your phone - See request details: requester, date, status, TMDB metadata - Manage Radarr/Sonarr root folders and quality profiles from Jellyseerr ### Radarr - View your movie library and download queue - Monitor active downloads and queue status - Check disk space usage and system health - **Manage download actions**: pause, retry, delete ### Sonarr - Monitor TV series and episode downloads - View the upcoming episode calendar - Check download queue and system health - Manage quality profiles and language settings --- ## Setting Up External Services in JellyWatch ### Step 1 - Open External Services From the JellyWatch main menu, tap **External Services** (the plug icon in the bottom navigation bar). ### Step 2 - Add a Service Tap the **"+" button** and select the service type: - Jellyseerr - Radarr - Sonarr ### Step 3 - Configure the Connection For each service, enter: - **URL**: the address of your service (e.g., `http://192.168.1.100:7878` for Radarr) - **API Key**: found in each app's Settings → General → Security > **Security tip:** Use HTTPS with a reverse proxy (Nginx Proxy Manager, Traefik) when accessing these services over the internet. Never expose them directly with only HTTP. ### Step 4 - Verify and Save JellyWatch tests the connection automatically. Once verified, the service appears in your External Services dashboard. --- ## Handling Jellyseerr Requests on Mobile This is one of JellyWatch's most practical features for server admins with users who make requests. When a user submits a request via Jellyseerr (asking for a movie or TV show), you receive a notification (with push notifications enabled) and can: 1. Open JellyWatch → External Services → Jellyseerr 2. See the pending request with TMDB metadata (poster, description, ratings) 3. Tap **Approve** or **Reject** with a single tap 4. The action syncs instantly with Jellyseerr, which then instructs Radarr or Sonarr to begin the download No desktop required. The entire request-to-approval workflow is mobile-native. --- ## Monitoring Active Downloads During a download, JellyWatch shows the Radarr/Sonarr queue with: - File name and quality profile - Download progress (percentage and ETA) - Download client status - Error messages if a download failed For failed downloads, you can **trigger a retry or delete the failed item** directly from the app - avoiding the need to log into the desktop UI. --- ## Managing Multiple Instances Running two Radarr instances (e.g., one for 1080p, one for 4K)? JellyWatch supports **multiple instances of the same service type**. Add both Radarr instances independently and switch between them from the External Services dashboard. --- ## The Unified Admin Experience Here is a real-world scenario that illustrates the power of having everything in one app: > It is 10 PM. You are on the couch. Your phone buzzes with a JellyWatch notification: "alice is watching 'Succession S04E05' on iPhone". You check the session - it's transcoding to H.264 because her iPhone doesn't support HEVC. > > While in JellyWatch, you notice a Jellyseerr notification: "bob has requested 'The Brutalist' (2025 film)". You tap Approve. Radarr starts the download immediately. > > Five minutes later, you check the Radarr queue in JellyWatch - the download is at 60%. You never opened a browser. This is the admin experience JellyWatch is designed to deliver. --- ## Frequently Asked Questions **Do I need a Premium subscription for external services?** Yes - integrating Radarr, Sonarr, and Jellyseerr requires JellyWatch Premium, as it involves advanced multi-service configuration. **Can I use Overseerr instead of Jellyseerr?** Jellyseerr is the supported integration. Overseerr has a compatible API, but official support is for Jellyseerr. Community feedback suggests it works in most cases. **What if my services are on different networks?** As long as each service URL is accessible from your phone (via VPN, Cloudflare Tunnel, or public URL), JellyWatch will connect to them regardless of network topology. --- ## Conclusion Managing a full self-hosted media stack from your phone used to mean juggling multiple browser tabs and apps. JellyWatch consolidates **Jellyfin, Jellyseerr, Radarr, and Sonarr** into one polished Android app with a consistent interface and real-time data. For power users who live and breathe their home media setup, this is the tool you have been waiting for. --- > **One app to rule your entire media stack.** > 👉 **[Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** and connect all your services in minutes. > Full feature list at **[jellywatch.app](https://jellywatch.app)**. --- ## Unlock Detailed Jellyfin Viewing Statistics and History on Android (2026) URL: https://jellywatch.app/blog/jellyfin-viewing-statistics-history-android-2026 Published: 2026-03-15T18:59:58+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, statistics, viewing-history, analytics, android, premium, charts, self-hosted # Unlock Detailed Jellyfin Viewing Statistics and History on Android (2026) You have built the perfect self-hosted media server. Hundreds of movies, dozens of TV series, a carefully curated music library. But do you actually know how it gets used? **JellyWatch gives you the analytics layer Jellyfin's default interface lacks** - detailed viewing statistics, historical playback data, interactive charts, and per-user breakdowns, all in your pocket. --- ## What Statistics Does JellyWatch Surface? ### Per-User Viewing Time See exactly how much each user on your server has watched: - Total hours watched (lifetime and per period) - Most-watched content type (movies, series, music) - Activity trends: are they watching more or less than last month? ### Viewing History with Full Detail Browse a complete, searchable history of every media item played on your server: - Media title and cover art - User who watched it - Date, time, and duration of the viewing session - Playback progress (did they finish it?) - Type of media (Movie, Episode, Music) ### Interactive Trend Charts Visual charts that show watching patterns over time: - **Daily view**: see peak usage hours - **Weekly view**: identify which days are most active - **Monthly view**: track seasonal trends - **Yearly view**: understand long-term growth of your server usage ### Content Type Breakdown A visual breakdown of what your users actually watch: - 🎬 Movies vs. 📺 TV episodes vs. 🎵 Music - Useful for optimizing your library and storage priorities --- ## How to Access Statistics in JellyWatch ### Viewing History Screen 1. Open JellyWatch and tap **More** in the bottom navigation (the ellipsis icon) 2. Tap **Viewing History** 3. The screen loads the most recent playback entries from your server 4. Use the **search bar** to filter by media title 5. Use the **user filter dropdown** to see history for a specific user or all users The history screen supports **pull-to-refresh** and automatically updates when you switch between servers. ### Statistics Screen 1. Tap **Statistics** in the main navigation 2. The overview cards load automatically: - Total viewing time - Sessions this week - Most active user - Most watched content 3. Scroll down to see **interactive trend charts** - tap on any period selector (Day / Week / Month / Year) to adjust the time window --- ## Premium Statistics Features The base statistics are available to all JellyWatch users. **JellyWatch Premium** unlocks the full analytics suite: | Feature | Free | Premium | |---|---|---| | Basic session count | ✅ | ✅ | | Viewing history (last 50 entries) | ✅ | ✅ | | Unlimited history | ❌ | ✅ | | Interactive trend charts | ❌ | ✅ | | Per-user breakdowns | ❌ | ✅ | | Content type breakdown | ❌ | ✅ | | Statistics data export | ❌ | ✅ | | Share stats as image/text | ❌ | ✅ | --- ## Sharing Your Server Statistics JellyWatch includes a built-in **share system** for your statistics - a unique feature that lets you celebrate milestones with your users or share server activity on social media. ### How to Share Statistics 1. From the Statistics screen, tap the **Share** button (top-right) 2. Choose your format: - **Share as Image**: generates a custom PNG card with your server stats, designed for social sharing - **Share as Text**: generates a text summary with emojis and hashtags 3. Select your target app (WhatsApp, Telegram, Twitter/X, etc.) ### What the Share Image Includes - Active sessions count - Total users and library items - Viewing time highlights - Your server name - "Powered by JellyWatch" footer The share templates rotate through **4 different styles** with adaptive emojis based on server performance, and automatically include relevant hashtags: `#Jellyfin #JellyWatch #MediaServer`. --- ## Real-World Use Cases **Family server admin:** > "I use the per-user statistics to see that my kids are watching 3x more on weekends. I used the trend data to justify upgrading my server's RAM last summer." **Friend group server:** > "The viewing history helps me recommend movies - I can see what everyone has already watched. It's like a social feature built into the admin app." **Solo self-hoster:** > "I shared my year-in-review stats card on Reddit's r/selfhosted. Got a ton of engagement." --- ## How JellyWatch Gets This Data JellyWatch pulls statistics from the **Jellyfin API** using the `/user_usage_stats/` endpoint (provided by the Jellyfin playback reporting plugin) and the native `/System/ActivityLog/Entries` endpoint. > **Note:** For the richest statistics (including per-user viewing time and historical data), the **Jellyfin Playback Reporting plugin** must be installed on your server. Install it via the Jellyfin Plugin Catalog in your server's dashboard. --- ## Frequently Asked Questions **Why is my viewing history empty?** Ensure the Jellyfin Playback Reporting plugin is installed and active on your server. Without it, Jellyfin does not log detailed playback history. **Can I see statistics for multiple servers?** Yes - with JellyWatch Premium (multi-server support), you can switch between servers and view statistics for each one independently. **Is the statistics data stored by JellyWatch?** No. All data is pulled live from your Jellyfin server. JellyWatch does not store or transmit your viewing history to any external server. **Can I export statistics to a spreadsheet?** Export to CSV/Excel is available for Premium users from the Statistics screen → Export button. --- ## Conclusion Jellyfin gives you the infrastructure to serve your media. JellyWatch gives you the intelligence to understand how it's being used. Viewing history, per-user breakdowns, interactive trend charts, and social sharing all combine to make JellyWatch the most complete analytics companion for Jellyfin admins. --- > **Want to know exactly how your Jellyfin server gets used?** > 👉 **[Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app)** and explore your server's statistics today. > Discover all features at **[jellywatch.app](https://jellywatch.app)**. --- ## Jellyfin vs Emby 2026: I Tested Both for 6 Months - Here Is the Honest Verdict URL: https://jellywatch.app/blog/jellyfin-vs-emby-2026-complete-comparison Published: 2026-03-15T14:54:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: comparison, jellyfin, emby, guide, 2026, self-hosting # Jellyfin vs Emby in 2026: Which Self-Hosted Media Server Should You Choose? Jellyfin and Emby are both excellent self-hosted media servers - but they take fundamentally different approaches to features, pricing, and philosophy. If you are deciding between them in 2026, this guide will give you a clear, honest answer based on your actual priorities. --- ## Quick Comparison Table | Feature | Jellyfin | Emby | |---|---|---| | **License** | Open source (GPL) | Proprietary | | **Price** | 100% free | Free + Premiere required for key features | | **Account required** | No | Yes | | **Hardware transcoding** | Free | Emby Premiere required | | **Mobile apps (full)** | Free | Premiere required | | **Plugin ecosystem** | Community (GitHub) | Official + community | | **Live TV / DVR** | Free | Premiere required | | **Android admin app** | JellyWatch | EmbyWatch | | **Open source** | Yes | No | --- ## Pricing: The Biggest Difference ### Jellyfin Jellyfin is **completely free** - no tiers, no subscriptions, no "lite" version. Every feature including hardware transcoding, live TV, and mobile apps is available without paying anything. ### Emby Emby offers a free tier, but most features that matter for a real server require **Emby Premiere**: - Hardware transcoding → Premiere required - Full mobile app access → Premiere required - Live TV and DVR → Premiere required - Sync and offline download → Premiere required - Backup and restore → Premiere required **Emby Premiere pricing in 2026:** | Plan | Price | |---|---| | Monthly | ~$4.99/month | | Yearly | ~$54/year | | Lifetime | ~$119 one-time | For long-term self-hosters, the lifetime option is the most common choice. But unlike Jellyfin, you are paying for features that are entirely free on the competing platform. --- ## Performance and Transcoding Both servers perform similarly for direct play. The difference appears during transcoding. ### Hardware acceleration - **Jellyfin:** Intel QSV, NVIDIA NVENC, AMD AMF - all free, all fully supported - **Emby:** Same hardware support, but requires Premiere license ### 4K HDR transcoding Both handle 4K HDR transcoding with hardware acceleration enabled. Jellyfin has a slight edge in community-tested HDR tone mapping on Linux/Docker setups. ### CPU usage at idle Both servers are lightweight at idle. High CPU at idle is usually caused by background plugins or library scans - not the server itself. --- ## Plugin Ecosystem ### Jellyfin plugins - Community-driven on GitHub - More experimental / cutting-edge plugins - Examples: Intro Skipper, Jellyscrub, Skin Manager, TMDB Box Sets - Plugin catalog available directly in dashboard ### Emby plugins - Mix of official and community plugins - More stable, less experimental - Examples: Trakt sync, Auto Organize, OpenSubtitles, IPTV enhancements - Plugin management from dashboard **Verdict:** Jellyfin has a more active plugin community in 2026. Emby plugins tend to be more polished but fewer. --- ## Mobile Apps ### Jellyfin - Official Jellyfin Android app: free, open source - **JellyWatch**: dedicated Android admin app - session monitoring, server health, Radarr/Sonarr/Jellyseerr integration, watch history, push notifications ### Emby - Official Emby app: requires Premiere for full access - **EmbyWatch**: dedicated Android admin app - same feature set as JellyWatch but built for Emby servers --- ## Privacy ### Jellyfin - No account required - No telemetry by default - No cloud dependency - 100% local - your data never leaves your network unless you configure remote access ### Emby - Account required (for activation and updates) - Some telemetry - Server activation checks against Emby's servers - Metadata fetched from external providers (same as Jellyfin) **Verdict:** Jellyfin wins on privacy. It is the only option if you want zero external dependency. --- ## User Interface Both interfaces are clean and modern in 2026. - **Jellyfin** has a more community-driven UI with many available themes (JellyFlix, Monochrome, etc.) - **Emby** has a slightly more polished default UI, consistent across platforms With the Skin Manager plugin, Jellyfin can be made to look identical to any streaming platform. --- ## Live TV and DVR - **Jellyfin:** Full Live TV and DVR support - free - **Emby:** Full Live TV and DVR support - Premiere required Both support HDHomeRun tuners, IPTV playlists (M3U), and EPG guides. --- ## Which Should You Choose? ### Choose Jellyfin if: - You want **zero cost**, forever - Privacy is important and you want no external accounts - You enjoy an active open-source community - You want a wide plugin ecosystem - You run Docker on Linux (best performance) ### Choose Emby if: - You prefer a **more polished out-of-box experience** - You are willing to pay for a lifetime license - You want official support and a more stable plugin ecosystem - You are already invested in the Emby ecosystem --- ## The Android Admin Apps Whichever server you choose, managing it from your phone is essential for any serious self-hoster. - **Jellyfin users:** [JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time sessions, server monitoring, Radarr/Sonarr/Seerr integration, push notifications - **Emby users:** [EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience built for Emby Both apps are built by the same team and share the same feature set, adapted to each server's API. --- > **Already on Jellyfin?** [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor your server, manage sessions, and control your entire homelab from Android. > > **On Emby?** [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same complete monitoring experience, built for Emby. --- ## Emby Premiere Pricing 2026: $119 Lifetime vs Monthly - Is It Worth It? (+ Free Alternative) URL: https://jellywatch.app/blog/emby-premiere-pricing-cost-2026 Published: 2026-03-14T16:34:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: guide, emby, pricing, premiere, 2026, cost # Emby Premiere Pricing in 2026: Is It Worth It? Emby is one of the most popular self-hosted media servers - but unlike Jellyfin, most of its key features are locked behind **Emby Premiere**, its paid subscription tier. This guide breaks down exactly what Emby Premiere costs in 2026, what features it unlocks, and whether the investment makes sense for your setup. --- ## Emby Premiere Pricing in 2026 Emby Premiere is available in three billing options: | Plan | Price (approx. 2026) | |---|---| | **Monthly** | ~$4.99 / month | | **Yearly** | ~$54 / year (~$4.50/month) | | **Lifetime** | ~$119 one-time payment | > Prices may vary slightly by region and are subject to change. Check the [official Emby website](https://emby.media/premiere.html) for current pricing. ### Which plan is most popular? The **lifetime plan** is by far the most popular among long-term self-hosters. At ~$119, you break even after approximately 24 months of monthly billing. If you plan to run Emby for more than 2 years (and most self-hosters do), the lifetime plan is the clear winner financially. --- ## What Does Emby Premiere Unlock? The free tier of Emby is usable for basic local streaming. But Premiere unlocks the features most users actually need: ### Playback features | Feature | Free | Premiere | |---|---|---| | Local streaming (web) | Yes | Yes | | Mobile app (Android/iOS) | Limited | Full | | Hardware transcoding | No | Yes | | Offline sync / downloads | No | Yes | | Premium themes | No | Yes | ### Server features | Feature | Free | Premiere | |---|---|---| | Live TV and DVR | No | Yes | | IPTV support | No | Yes | | Backup and restore | No | Yes | | Chapter image extraction | No | Yes | | Smart playlists | No | Yes | | Parental controls (advanced) | Limited | Full | ### Mobile app features (Android) The free Emby Android app is limited in 2026. Premiere unlocks: - Full playback controls - Download for offline viewing - High-quality streaming --- ## Is Emby Premiere Worth It? ### For single users If you are the only person streaming from your server, the free tier may be enough for basic web browser playback. But if you want hardware transcoding or mobile access, Premiere is mandatory. **Verdict:** The lifetime plan (~$119) is a good investment for a serious single user. ### For family servers If you share your server with family members who use mobile apps, everyone benefits from Premiere. The lifetime plan scales well. **Verdict:** The lifetime plan is excellent value for shared family servers. ### Compared to Jellyfin Jellyfin offers all of Emby Premiere's features completely free: - Hardware transcoding: free - Mobile apps: free - Live TV/DVR: free - No account required If cost is a concern, Jellyfin is the obvious alternative. However, Emby has a slightly more polished default experience and official support. --- ## Emby vs Jellyfin: Pricing Summary | | Emby (Free) | Emby Premiere | Jellyfin | |---|---|---|---| | Hardware transcoding | No | Yes | Free | | Full mobile app | No | Yes | Free | | Live TV | No | Yes | Free | | One-time cost | $0 | ~$119 lifetime | $0 forever | | Open source | No | No | Yes | --- ## How to Purchase Emby Premiere 1. Go to [emby.media/premiere](https://emby.media/premiere.html) 2. Choose your plan (Monthly / Yearly / Lifetime) 3. Complete payment via PayPal or credit card 4. Activate from your Emby server dashboard → **Emby Premiere** → Enter your key Activation is instant. All locked features become available immediately after entering the key. --- ## Monitor Your Emby Server After Enabling Premiere Once you unlock hardware transcoding and advanced features with Premiere, monitoring your server becomes even more important. More active transcodes mean more CPU/GPU load. **EmbyWatch** is the dedicated Android monitoring app for Emby servers: - Real-time CPU, RAM, and GPU monitoring - Active transcode session tracking - Push notifications for CPU spikes, new sessions, and offline detection - User and device management - Radarr/Sonarr/Seerr integration - Watch history and statistics --- > **Just activated Emby Premiere? Keep your server running smoothly.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time monitoring for your Emby server, on your Android device. *Considering switching to Jellyfin instead? [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Jellyfin's premium admin companion app, with all hardware transcoding features free.* --- ## Jellyfin + Tailscale Setup 2026: Secure Remote Access Without Port Forwarding (+ WireGuard Alternative) URL: https://jellywatch.app/blog/jellyfin-vpn-wireguard-tailscale-remote-access-2026 Published: 2026-03-14T16:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, vpn, tailscale, wireguard, remote-access, security, 2026 # Jellyfin Remote Access via VPN: Tailscale and WireGuard (2026) Accessing your Jellyfin server remotely without a VPN means opening ports to the internet - a real security risk. A VPN gives you secure, encrypted remote access as if you were on your home network, with no exposed ports. In 2026, two VPN solutions dominate the self-hosting community: **Tailscale** (zero-config, cloud-assisted) and **WireGuard** (self-hosted, maximum control). This guide covers both. --- ## Why VPN Instead of Direct Port Forwarding? | Method | Security | Setup complexity | Performance | |---|---|---|---| | Port forwarding (8096) | Low - exposed to internet | Easy | Best | | Reverse proxy (HTTPS) | Medium - public endpoint | Medium | Good | | Tailscale VPN | High - no open ports | Very easy | Good | | WireGuard VPN | High - no open ports | Medium | Excellent | For maximum security with minimal hassle, Tailscale wins. For full control with no third-party dependency, WireGuard wins. --- ## Option 1: Tailscale (Recommended for Most Users) Tailscale creates a private mesh network between your devices using WireGuard under the hood. No port forwarding, no dynamic DNS, no certificates. ### How it works 1. Install Tailscale on your Jellyfin server 2. Install Tailscale on your phone/laptop 3. Both devices join your private Tailscale network 4. Access Jellyfin at `http://100.x.x.x:8096` (Tailscale IP) from anywhere ### Install Tailscale on your Jellyfin server ```bash # Linux (Debian/Ubuntu) curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up ``` Follow the authentication link to connect the device to your Tailscale account. ### Docker: run Tailscale as a container ```yaml services: tailscale: image: tailscale/tailscale:latest hostname: jellyfin-server environment: - TS_AUTHKEY=tskey-auth-YOUR_KEY_HERE - TS_STATE_DIR=/var/lib/tailscale volumes: - ./tailscale/state:/var/lib/tailscale - /dev/net/tun:/dev/net/tun cap_add: - NET_ADMIN - SYS_MODULE restart: unless-stopped ``` Get your auth key from the Tailscale admin console → Settings → Keys. ### Install Tailscale on your devices - **Android:** Tailscale app from Google Play - **iOS:** Tailscale app from App Store - **Windows/Mac:** Tailscale desktop app Once installed and logged in, all your devices can reach each other via Tailscale IPs. ### Tailscale MagicDNS Enable MagicDNS in the Tailscale admin console to access your server by hostname instead of IP: ``` http://jellyfin-server:8096 ``` Much easier than remembering `100.x.x.x`. ### Tailscale free tier limits - Up to **3 users** and **100 devices** on the free plan - Sufficient for personal use and small family setups - Paid plans for larger teams --- ## Option 2: WireGuard (Self-Hosted) WireGuard is a modern, fast VPN protocol. Self-hosting means no third-party dependency - your VPN server runs on your own hardware. ### Requirements - A server with a **static public IP** (your home router, or a cheap VPS) - One open UDP port (default: 51820) - Linux (WireGuard is built into the kernel since 5.6) ### Install WireGuard with wg-easy (Docker) `wg-easy` is the simplest way to run a WireGuard server with a web UI: ```yaml services: wg-easy: image: ghcr.io/wg-easy/wg-easy:latest environment: - WG_HOST=your.public.ip.or.domain - PASSWORD=your_admin_password - WG_DEFAULT_DNS=1.1.1.1 volumes: - ./wg-easy:/etc/wireguard ports: - "51820:51820/udp" - "51821:51821/tcp" # Web UI cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped ``` ### Add clients 1. Open the wg-easy web UI at `http://your-server:51821` 2. Click **+ New Client** → name it (e.g., "my-phone") 3. Download the config file or scan the QR code 4. Import into the WireGuard app on your device ### WireGuard client apps - **Android:** WireGuard app from Google Play - **iOS:** WireGuard app from App Store - **Windows:** WireGuard for Windows Once connected, your phone is on your home network - access Jellyfin at its local IP. --- ## Tailscale vs WireGuard: Which to Choose? | Feature | Tailscale | WireGuard (self-hosted) | |---|---|---| | Setup time | 5 minutes | 20-30 minutes | | Open ports required | None | 1 UDP port | | Third-party dependency | Yes (Tailscale servers) | None | | Works behind CGNAT | ✅ Yes | ❌ No (needs public IP) | | Performance | Very good | Excellent | | Mobile battery impact | Low | Very low | | Cost | Free (up to 3 users) | Free (self-hosted) | | Best for | Quick setup, CGNAT users | Full control, no dependencies | > **CGNAT (Carrier-Grade NAT):** Many ISPs (especially mobile/fiber) put you behind CGNAT, meaning you have no public IP and cannot forward ports. Tailscale works perfectly in this scenario - WireGuard does not (without a VPS relay). --- ## Performance Tips for Remote Jellyfin via VPN ### Use Direct Play whenever possible VPN adds latency but not bandwidth limits. If your home upload speed is 50+ Mbps, 4K Direct Play works fine over VPN. ### Set a bitrate limit for mobile When on mobile data (even through VPN), set a bitrate limit in the Jellyfin app: - 4K → 20 Mbps (forces 1080p transcode, much lower data usage) - 1080p → 8 Mbps ### Split tunneling Both Tailscale and WireGuard support split tunneling - only route Jellyfin traffic through the VPN, not all internet traffic. This reduces latency for other apps. **Tailscale:** Enable "Use Tailscale DNS" only, disable "Route all traffic" **WireGuard:** Set `AllowedIPs = 192.168.1.0/24` (your home subnet only) --- ## Troubleshooting | Problem | Cause | Fix | |---|---|---| | Cannot reach Jellyfin over Tailscale | Tailscale not running on server | `sudo tailscale status` | | WireGuard connected but no access | Firewall blocking port 8096 | Open port in server firewall | | Slow speeds over VPN | Transcoding triggered | Check session in JellyWatch | | Tailscale disconnects frequently | Mobile battery optimization | Disable battery optimization for Tailscale | | WireGuard not connecting | Wrong public IP in config | Update `WG_HOST` with current IP | --- ## Monitor Remote Sessions Remote sessions over VPN behave identically to local sessions in Jellyfin - but they are more sensitive to transcoding. A remote user triggering a 4K transcode over VPN will experience buffering immediately. **JellyWatch** works perfectly over Tailscale or WireGuard - connect it to your Jellyfin server using the VPN IP and monitor all sessions from anywhere. --- > **Secure remote access set up? Now monitor every session from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - works over Tailscale, WireGuard, or any network to monitor your Jellyfin server in real time. *On Emby? [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - the same remote monitoring experience for Emby servers.* --- ## Best Mini PC for Jellyfin 2026: N100 vs N305 - 4K Transcoding from $130 (Tested) URL: https://jellywatch.app/blog/best-mini-pc-jellyfin-server-n100-n150-n305-2026 Published: 2026-03-14T09:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, mini-pc, n100, n150, n305, intel-arc, hardware, homelab, 2026 # Best Mini PCs for a Jellyfin Server in 2026 Mini PCs have become the default hardware choice for Jellyfin servers. They are silent, power-efficient (10-25W), and pack enough Intel Quick Sync muscle to handle multiple 4K transcodes. But with so many options - N100, N150, N305, and now Arc-equipped models - choosing the right one matters. This guide compares the most popular mini PCs for Jellyfin in 2026 based on real-world transcoding performance. --- ## Why Mini PCs Beat Everything Else | Option | Power | Noise | 4K Transcodes | Price | |---|---|---|---|---| | Raspberry Pi 5 | 15W | Silent | 0 (no HW transcode) | ~$80 | | Intel N100 Mini PC | 10-15W | Silent | 3-4 | ~$130 | | Intel N150 Mini PC | 10-15W | Silent | 3-5 | ~$150 | | Intel N305 Mini PC | 15-25W | Near-silent | 5-7 | ~$250 | | Old Desktop + GPU | 100-300W | Loud | 10+ | ~$300+ | Mini PCs hit the sweet spot: enough power for a family server, silent operation, and electricity costs under $15/year. --- ## Intel N100: The Community Favorite The Intel N100 is the most recommended Jellyfin CPU in every self-hosting community. It appeared in late 2023 and quickly became the gold standard for budget media servers. ### Specs - 4 cores / 4 threads (Alder Lake-N) - Intel UHD Graphics (24 EUs) - Quick Sync: H.264, H.265, VP9, AV1 **decode only** - TDP: 6W (PBP), burst to 25W - No AV1 encode ### Jellyfin Performance - 3-4 simultaneous 4K HDR → 1080p transcodes - Hardware tone mapping (HDR → SDR) supported - Handles 6-8 direct play streams easily ### Recommended Models - **Beelink Mini S12 Pro** (~$130) - 16GB RAM, 500GB SSD - **GMKtec NucBox G3** (~$140) - compact, dual HDMI - **Trigkey Green G5** (~$135) - good value ### Best for Solo users and small families (1-4 simultaneous streams). The N100 is the best value in 2026 - period. --- ## Intel N150: The N100 Successor The N150 (Twin Lake) is Intel's 2024 refresh of the N100. Same architecture, slightly higher clocks, marginally better iGPU. ### What Changed vs N100 - Slightly higher boost clock (3.6 GHz vs 3.4 GHz) - Same 24 EU iGPU - Same Quick Sync capabilities - Same TDP envelope ### Is It Worth Upgrading from N100? Honestly, no. The performance difference is 5-10% at most. If you already have an N100, keep it. If buying new, the N150 is the same price - so get it by default. ### Recommended Models - **Geekom Air 12 Lite** (~$150) - compact, well-reviewed - **GMKtec Mini PC N150** (~$145) - 16GB DDR4, NVMe --- ## Intel N305: The Power User Choice The N305 is a significant step up - 8 cores, 8 threads, and a more powerful iGPU with 32 EUs. ### Specs - 8 cores / 8 threads (Alder Lake-N) - Intel UHD Graphics (32 EUs) - Quick Sync: same codec support as N100 - TDP: 15W (PBP) ### Jellyfin Performance - 5-7 simultaneous 4K HDR → 1080p transcodes - Handles heavy Trickplay generation faster - Better for running Jellyfin + Radarr + Sonarr + Jellyseerr simultaneously ### Recommended Models - **Morefine M9S N305** (~$250) - popular in homelab communities - **Beelink EQ13** (~$260) - 8 cores, dual 2.5G Ethernet ### Best for Shared servers with 5-10 users, or admins running the full arr stack alongside Jellyfin. --- ## Intel Arc A380: The Transcoding Beast For admins who need maximum transcoding power without a full desktop, some mini PCs and SFF builds now include the Intel Arc A380 - a dedicated GPU with 8 Xe cores. ### What Arc A380 Adds - AV1 hardware **encode and decode** - 15-20+ simultaneous transcodes - Full HDR tone mapping with 3D LUT support - Dedicated VRAM (6GB) - does not share system RAM ### The Catch - Requires a PCIe slot - not available in ultra-compact mini PCs - Driver issues on Linux are well-documented (improving but not perfect) - Overkill for most home setups ### Best for Large shared servers (10+ users), or admins who want future-proof AV1 encoding capability. --- ## Comparison Table | CPU/GPU | Cores | 4K Transcodes | AV1 Encode | Power | Price | |---|---|---|---|---|---| | Intel N100 | 4C/4T | 3-4 | No | ~10W | ~$130 | | Intel N150 | 4C/4T | 3-5 | No | ~10W | ~$150 | | Intel N305 | 8C/8T | 5-7 | No | ~15W | ~$250 | | Intel Arc A380 | 8 Xe cores | 15-20+ | Yes | ~75W | ~$100 (GPU only) | --- ## What to Look for When Buying 1. **RAM: 16GB minimum** - Jellyfin 10.11 uses more RAM due to EF Core caching 2. **Storage: NVMe SSD** for config/metadata, external HDD/NAS for media 3. **Ethernet: Gigabit minimum** - avoid Wi-Fi-only models 4. **USB 3.0** - for external storage if needed 5. **Fanless or low-noise** - the whole point of a mini PC is silence --- ## FAQ **Is the Intel N100 still good in 2026?** Absolutely. It remains the best value for Jellyfin. The N150 is marginally better but not worth upgrading for. **Can I run Docker on these mini PCs?** Yes. Install Ubuntu Server or Debian, then Docker. All N100/N150/N305 models run Linux perfectly. **Do I need a dedicated GPU?** Only if you serve 10+ simultaneous users or need AV1 encoding. The iGPU in N100/N305 handles 3-7 transcodes easily. **How much electricity does an N100 mini PC use?** About 8-12W under typical Jellyfin load. That is roughly $10-15/year in electricity. --- > **New mini PC running Jellyfin? Monitor it from day one.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU usage, active transcodes, and server health for your Jellyfin mini PC on Android. --- ## Using Jellyfin for Photos and Home Videos: Build a Private Family Media Server (2026) URL: https://jellywatch.app/blog/jellyfin-photos-home-videos-family-media-server-2026 Published: 2026-03-13T10:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, photos, home-videos, family, privacy, self-hosting, 2026 # Using Jellyfin for Photos and Home Videos (2026) Jellyfin is not just for Hollywood movies. It is an excellent platform for hosting your family home videos, vacation footage, and photo slideshows - completely private, no cloud subscription, no AI scanning your memories. --- ## Why Self-Host Family Media? - **Privacy** - no Google, Apple, or Amazon scanning your photos - **No storage limits** - your hard drive, your rules - **No subscription** - free forever - **Family sharing** - everyone accesses the same library - **Offline access** - works without internet on your local network --- ## Setting Up a Home Videos Library ### Folder structure ``` /media/home-videos/ 2024 - Summer Vacation/ Beach Day.mp4 Hiking Trip.mp4 poster.jpg 2025 - Christmas/ Christmas Morning.mp4 poster.jpg Kids/ First Steps.mp4 Birthday Party 2024.mp4 ``` ### Add the library 1. Dashboard → Libraries → Add Media Library 2. Content type: **Home Videos & Photos** 3. Folder: `/media/home-videos/` 4. Disable internet metadata fetchers (these are personal videos, not movies) 5. Save Jellyfin creates a clean grid of your video folders with custom poster support. --- ## Organizing Photos as Slideshows Jellyfin supports photo libraries: 1. Dashboard → Libraries → Add Media Library 2. Content type: **Photos** 3. Folder: `/media/photos/` ### Folder structure for photos ``` /media/photos/ 2024 - Italy Trip/ IMG_001.jpg IMG_002.jpg 2025 - Baby Album/ photo_001.jpg photo_002.jpg ``` Jellyfin displays photos in a gallery view with slideshow playback. --- ## Optimizing Home Videos for Streaming Phone recordings are often in formats that require transcoding. To avoid CPU spikes: ### Re-encode to H.264 MP4 ```bash ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4 ``` ### Batch convert an entire folder ```bash for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac "${f%.mov}.mp4" done ``` H.264 MP4 Direct Plays on virtually every device - zero transcoding. --- ## Family Access Control ### Create family user accounts | User | Libraries | Parental controls | |---|---|---| | Parents | All | None | | Kids | Kids videos, Photos | PG rating max | | Grandparents | Home Videos, Photos | None | ### Remote access for family Set up Tailscale or a reverse proxy so grandparents can access the server from their home. See our remote access guide for details. --- ## Automatic Upload from Phones ### Syncthing (recommended) Syncthing automatically syncs your phone camera roll to your server: 1. Install Syncthing on your phone and server 2. Share the camera folder → sync to `/media/home-videos/Unsorted/` 3. Periodically organize into dated folders ### Immich (alternative) If you want a full Google Photos replacement with AI face detection, consider running **Immich** alongside Jellyfin. Immich handles photos; Jellyfin handles videos and streaming. --- ## Custom Posters for Home Videos Make your home video library look polished: 1. Create a `poster.jpg` (or `folder.jpg`) in each video folder 2. Use a family photo as the poster 3. Jellyfin displays it as the thumbnail Tools like Canva or even your phone photo editor work great for creating simple poster images. --- ## FAQ **Can Jellyfin handle 4K phone recordings?** Yes. Modern phones record in H.265 4K - Jellyfin Direct Plays this on most clients. Re-encode to H.264 if older devices struggle. **Is Jellyfin a Google Photos replacement?** For video streaming and photo slideshows, yes. For AI search, face detection, and automatic albums, consider Immich alongside Jellyfin. **Can family members upload videos?** Not directly through Jellyfin. Use Syncthing, Nextcloud, or a shared network folder for uploads. --- > **Your family memories, privately hosted - monitor the server from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health and session monitoring for your private Jellyfin media server. --- ## Fix Jellyfin Buffering: 7 Causes and Exact Fixes for Local, 4K & Remote (2026) URL: https://jellywatch.app/blog/fix-jellyfin-buffering-local-network-4k-2026 Published: 2026-03-12T14:34:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, buffering, performance, 4k, troubleshooting # How to Fix Jellyfin Buffering: Local Network, 4K, and Remote Streaming (2026) Jellyfin buffering is one of the most frustrating problems for self-hosters. The good news: it is almost always fixable once you identify the root cause. This guide covers every major buffering scenario in 2026 - local network stuttering, 4K transcode overload, remote streaming lags, and how to monitor your server in real time to catch issues before your users do. --- ## Why Is Jellyfin Buffering? Buffering in Jellyfin has four main causes: | Cause | Typical Scenario | |---|---| | **Transcoding overload** | CPU/GPU at 100% during playback | | **Slow storage** | Media files on slow HDD or USB drive | | **Network bottleneck** | Wi-Fi, insufficient upload speed | | **Client settings** | Bitrate cap or incompatible codec | Let us go through each fix. --- ## Fix 1: Enable Hardware Acceleration (Most Impactful) If your server is doing **software transcoding**, a single 4K stream can max out a modern CPU. ### How to enable it 1. Go to **Dashboard → Playback → Transcoding** 2. Select your hardware acceleration type: - **Intel Quick Sync (QSV)** - best for budget servers (N100, i3-i7 with iGPU) - **NVIDIA NVENC** - best for dedicated GPU setups - **AMD AMF** - for AMD GPU users 3. Enable **Hardware Tone Mapping** if you stream HDR content 4. Save and restart Jellyfin > If you run Docker, make sure your container has access to `/dev/dri` (Intel/AMD) or the NVIDIA runtime. ### Docker GPU passthrough (Intel) ```yaml devices: - /dev/dri:/dev/dri ``` ### Docker GPU passthrough (NVIDIA) ```yaml runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all ``` After enabling hardware acceleration, a 4K transcode that was using 90% CPU should drop to under 10%. --- ## Fix 2: Fix Buffering on Local Network If your server and client are on the same network but you still get buffering, the problem is usually **not bandwidth** - it is one of these: ### 2a. Your client is forcing a transcode Open JellyWatch or the Jellyfin dashboard and check the active session. If you see **"Transcoding"** instead of **"Direct Play"**, the client is requesting a format conversion. **Solution:** Set the client playback quality to **Maximum** or **Original** to force Direct Play. ### 2b. Wi-Fi interference Even a strong Wi-Fi signal can have high jitter. - Move your server to **Ethernet** if possible - Move the streaming device to Ethernet or closer to the router - Check for competing devices on the 2.4 GHz band ### 2c. Slow media storage Jellyfin reads the file in real time during playback. A slow HDD or USB 2.0 drive can cause stuttering. | Storage type | Max reliable bitrate | |---|---| | USB 2.0 HDD | ~20-30 MB/s | | USB 3.0 HDD | ~100 MB/s | | SATA SSD | ~500 MB/s | | NVMe SSD | 2000+ MB/s | For 4K HEVC files at 60-80 Mbps, USB 2.0 can be a bottleneck. Move your media to USB 3.0 or an internal drive. --- ## Fix 3: Fix Jellyfin 4K Buffering 4K HDR streaming is the most demanding use case. Follow this checklist: ### 3a. Enable hardware tone mapping Without it, HDR content is transcoded in software and looks washed out - and causes high CPU usage. Dashboard → Playback → Transcoding → Enable **Hardware Tone Mapping** ### 3b. Check your upload speed for remote 4K | Stream type | Required upload speed | |---|---| | 4K Direct Play (HEVC) | 40-80 Mbps | | 4K Transcoded (1080p out) | 8-15 Mbps | | 1080p Direct Play | 10-25 Mbps | If you do not have 40+ Mbps upload, remote 4K will always buffer. Use transcoding to 1080p for remote users. ### 3c. Reduce simultaneous 4K streams Each concurrent 4K transcode is expensive. Limit remote quality in: Dashboard → Users → [User] → Remote streaming quality → Set to 1080p or lower --- ## Fix 4: Fix Jellyfin Buffering for Remote Users Remote buffering usually comes down to: - **Insufficient upload speed** on the server side - **Server behind CGNAT** (no direct port forward possible) - **SSL certificate issues** causing connection drops ### Check active sessions with JellyWatch Instead of guessing, open **JellyWatch** on your Android device and go to **Active Sessions**. You will see: - Whether the stream is Direct Play or Transcoding - The exact **transcode reason** (codec mismatch, bandwidth limit, subtitle burn-in) - Bitrate and resolution in real time This immediately tells you whether the buffering is a network issue or a transcode issue. --- ## Fix 5: Adjust Buffer Size Settings Some Jellyfin clients allow manual buffer size adjustment. In the Jellyfin web client: - Settings → Playback → **Streaming buffer amount** - Increase from "Default" to "Large" or "Maximum" This pre-loads more data and reduces mid-stream stutters on slower connections. --- ## Fix 6: Optimize Your Library Structure Poorly named files force Jellyfin to constantly re-scan and re-index. **Correct format:** ``` Movies/ Movie Title (2024)/ Movie Title (2024).mkv TV Shows/ Show Name/ Season 01/ Show Name - S01E01.mkv ``` Bad file naming causes the metadata engine to run more scans, consuming CPU during playback. --- ## Fix 7: Limit Background Tasks During Peak Hours Scheduled tasks (library scans, thumbnail generation, chapter extraction) can spike CPU and cause buffering. Dashboard → Scheduled Tasks → Set heavy tasks to run at **off-peak hours** (e.g., 3 AM). --- ## Monitor Your Server in Real Time The best way to prevent future buffering is proactive monitoring. **JellyWatch** gives you a live dashboard on your Android device: - Active sessions with transcode status - CPU and RAM usage in real time - Storage space alerts - Push notifications when CPU spikes above a threshold You can identify the moment buffering starts - and know exactly why. --- ## Buffering Troubleshooting Checklist | Problem | First thing to check | |---|---| | All streams buffer | Hardware acceleration off | | Only 4K buffers | Tone mapping / GPU passthrough | | Only remote users buffer | Upload speed / CGNAT | | Local Wi-Fi buffers | Ethernet test | | Intermittent stutters | Storage speed / background tasks | | Constant buffering | Check active session transcode reason | --- > **Stop guessing why your server is buffering.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session monitoring, transcode diagnostics, and CPU alerts on your Android device. *For Emby users experiencing the same issues: [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app)* --- ## Emby 4K Streaming Optimization Guide (2026): Hardware, Bitrate & Stability URL: https://jellywatch.app/blog/emby-4k-streaming-optimization-guide Published: 2026-03-12T13:20:00+00:00 Author: JellyWatch Team Category: Tips Tags: emby-4k, emby-4k-streaming, emby-bitrate, emby-transcoding-4k # Emby 4K Streaming Optimization Guide (2026) 4K streaming is resource-intensive. Without proper configuration, buffering is inevitable. --- ## Minimum 4K Requirements | Component | Recommended | |------------|------------| | CPU | 8+ cores | | GPU | Hardware acceleration capable | | RAM | 16-32GB | | Network | Gigabit | --- ## Avoid 4K Transcoding Whenever possible: - Use Direct Play - Match client codec compatibility - Limit remote bitrate --- ## Bandwidth Recommendations | Streams | Upload Speed | |----------|--------------| | 1x 4K | 40 Mbps | | 2x 4K | 80 Mbps | | 4x 4K | 160 Mbps | --- ## Monitor 4K Streams 4K transcoding spikes CPU dramatically. Without monitoring, overload happens quickly. 🚀 **[Start Monitoring with EmbyWatch](https://embywatch.app)** EmbyWatch helps you: - Track transcoding sessions - Detect GPU overload - Monitor bandwidth usage - Prevent unexpected crashes --- ## FAQ **Can Emby stream 4K smoothly?** Yes, with hardware acceleration. **Why does 4K cause buffering?** Usually due to CPU overload or insufficient upload speed. **Is GPU mandatory for 4K?** Strongly recommended for multiple streams. --- --- > **Monitor your 4K streams and catch GPU overload before it crashes your server.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - transcoding sessions, bandwidth usage, and server health on your phone. For more optimization tips: - [Emby Server Setup Guide (2026)](https://jellywatch.app/blog/emby-server-setup-guide-2026) - [How to Fix Emby Buffering (2026)](https://jellywatch.app/blog/fix-emby-buffering-high-cpu-usage) --- ## How to Fix Emby Buffering and High CPU Usage (2026 Guide) URL: https://jellywatch.app/blog/fix-emby-buffering-high-cpu-usage Published: 2026-03-12T13:10:00+00:00 Author: JellyWatch Team Category: Tips Tags: emby-buffering, emby-high-cpu, emby-lag-fix, emby-performance-fix # How to Fix Emby Buffering and High CPU Usage (2026) Buffering and CPU spikes are the most common Emby issues. This guide explains how to fix them. --- ## 1. Enable Hardware Acceleration Dashboard → Transcoding → Enable GPU acceleration. Without hardware acceleration, CPU usage will spike during transcoding. --- ## 2. Reduce Transcoding Encourage Direct Play: - Use compatible codecs - Avoid unnecessary bitrate conversions - Match client playback settings --- ## 3. Move Metadata to SSD Metadata stored on slow drives causes: - Slow browsing - UI lag - Background scan delays --- ## 4. Monitor Active Streams Many admins don’t realize how many streams are active simultaneously. CPU overload often happens silently. 🚀 **[Start Monitoring with EmbyWatch](https://embywatch.app)** With EmbyWatch you can: - Track real-time CPU spikes - See active transcoding sessions - Detect abnormal usage patterns - Prevent downtime before users complain --- ## FAQ **Why is Emby buffering even with good internet?** Usually due to transcoding overload or slow disk. **Does Emby use a lot of CPU?** Only during video transcoding. **How many users can Emby support?** Depends on hardware and monitoring strategy. --- > **Detect CPU spikes and transcoding overload before your users notice.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time monitoring for your Emby server, on your Android phone. --- For full configuration, see: [Emby Server Setup Guide (2026)](https://jellywatch.app/blog/emby-server-setup-guide-2026) --- ## Emby Server Setup Guide (2026): Complete Installation, Optimization & Scaling URL: https://jellywatch.app/blog/emby-server-setup-guide-2026 Published: 2026-03-12T13:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: emby, emby-server-setup, emby-guide, emby-optimization, 2026 # Emby Server Setup Guide (2026) Setting up an Emby server properly in 2026 requires more than installation. Stability, scalability, and monitoring define long-term success. This guide covers: - Hardware recommendations - Installation best practices - Performance tuning - Scaling strategies - Monitoring and stability --- ## Hardware Requirements | Usage | CPU | RAM | Storage | |-------|-----|-----|----------| | Small Setup | 4 cores | 8GB | SSD | | Multi-user 1080p | 6 cores | 16GB | SSD + HDD | | 4K Multi-stream | 8+ cores + GPU | 32GB | NVMe | Hardware acceleration is strongly recommended. --- ## Installation Best Practices - Use Docker when possible - Separate config and media volumes - Enable hardware transcoding - Secure remote access For advanced customization, see our Emby plugins guide. --- ## Performance Foundations Most performance issues come from: - Transcoding overload - Slow storage - Too many background tasks As your server grows, monitoring becomes critical. 🚀 **[Start Monitoring with EmbyWatch](https://embywatch.app)** EmbyWatch helps you: - Monitor CPU & RAM usage - Track active streams - Detect transcoding overload - Identify server instability early --- ## FAQ **How much RAM does Emby need?** Minimum 8GB, 16GB recommended for multiple users. **Is GPU required?** For 4K streaming or multiple transcodes, yes. **Can Emby handle large libraries?** Yes, if metadata is stored on SSD and performance is monitored. --- ## Final Thoughts A properly configured Emby server delivers a premium streaming experience. Optimization + monitoring ensures long-term reliability. --- > **Start monitoring your Emby server from your phone.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - track active streams, CPU usage, and server health anywhere, anytime. --- ## Best Emby Plugins in 2026: Complete List for Performance, Metadata & Streaming URL: https://jellywatch.app/blog/best-emby-plugins-2026-guide Published: 2026-03-12T10:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: emby, emby-plugins, best-emby-plugins, emby-performance, emby-subtitles, emby-metadata, emby-server, 2026 # Best Emby Plugins in 2026 (Complete Guide) If you want to unlock the full potential of your Emby server in 2026, installing the right plugins is essential. The default Emby installation is powerful - but plugins allow you to improve: - Metadata automation - Subtitle management - Live TV features - User experience - Library organization - Advanced notifications This guide covers the **best Emby plugins in 2026**, with practical use cases and optimization tips. --- ## 1. Trakt Plugin (Sync Watch History) **Best for:** Multi-device users and backup tracking The Trakt plugin synchronizes watched history between your Emby server and your Trakt account. ### Why it matters: - Protects watch history - Syncs across multiple servers - Great for advanced users Ideal if you frequently rebuild or migrate servers. --- ## 2. Auto Organize Plugin **Best for:** Large libraries This plugin automatically organizes your media files into proper folder structures. ### Benefits: - Cleaner library - Better metadata matching - Reduced manual maintenance Long-term server stability depends heavily on clean file structure. --- ## 3. Subtitle Plugins (OpenSubtitles) **Best for:** International users Automatically download subtitles in multiple languages. ### Why install it: - Improves accessibility - Reduces user requests - Enhances user satisfaction One of the most searched features: *“Emby automatic subtitles plugin”*. --- ## 4. IPTV / Live TV Enhancements **Best for:** IPTV and live streaming setups Enhances TV guide data and improves channel handling. ### Use cases: - Home IPTV servers - Multi-user households - Sports streaming setups Live TV stability improves significantly with proper configuration. --- ## 5. Webhooks Plugin **Best for:** Automation & notifications Allows Emby to trigger external services when events occur (new media added, playback started, etc.). ### Advanced use: - Send notifications to Discord - Trigger scripts - Connect monitoring systems This is essential for automation-heavy setups. --- ## 6. Emby Server Backup Plugin **Best for:** Data protection Automates scheduled backups of your configuration and database. ### Why it’s critical: - Protects user data - Simplifies migrations - Prevents catastrophic loss Backup + monitoring = professional-grade setup. --- ## 7. Metadata Providers (TMDb, TVDb) **Best for:** Premium library visuals Ensures high-quality posters, cast data, and descriptions. ### SEO long-tail relevance: - “Emby metadata not matching fix” - “Best metadata settings for Emby” Correct metadata dramatically improves user experience. --- # Recommended Emby Plugin Stack (2026) | Category | Recommended Plugin | Priority | |-----------|-------------------|----------| | Watch Sync | Trakt | High | | Organization | Auto Organize | High | | Subtitles | OpenSubtitles | High | | Backup | Server Backup | Critical | | Automation | Webhooks | Medium | | Live TV | IPTV Enhancements | Optional | Avoid installing unnecessary plugins. Too many plugins increase background tasks and CPU usage. --- # How to Install Emby Plugins 1. Go to **Dashboard** 2. Open **Plugins** 3. Browse catalog 4. Click install 5. Restart Emby server Always restart after installation to avoid instability. --- # Performance Tip Some plugins increase background activity (library scans, metadata refresh, subtitle searches). To prevent slowdowns: - Schedule scans during off-peak hours - Monitor CPU and RAM usage - Remove unused plugins Proactive monitoring is crucial for large multi-user servers. --- # FAQ - Best Emby Plugins **What are the best Emby plugins in 2026?** Trakt, Auto Organize, OpenSubtitles, and Server Backup are considered essential. **Do Emby plugins affect performance?** Yes. Poorly configured plugins can increase CPU usage and background scans. **Are Emby plugins free?** Most are free, but some features may require Emby Premiere. **Which Emby plugin improves streaming quality?** No plugin directly improves video quality, but proper metadata and subtitle configuration improve user experience. **Should I install many plugins?** No. Install only what you truly need to maintain server stability. --- # Take Your Emby Server to the Next Level Plugins improve features - but stability and monitoring determine long-term success. As your library grows and more users stream simultaneously, monitoring becomes essential. 🚀 **EmbyWatch helps you:** - Monitor server health in real time - Track active streams and transcoding sessions - Detect CPU spikes early - Monitor plugin impact - Prevent downtime before users complain 🚀 **[Start Monitoring with EmbyWatch](https://embywatch.app)** --- # Final Thoughts The best Emby plugins in 2026 enhance automation, organization, and user experience. However, performance, backup strategy, and proactive monitoring are what transform a basic Emby installation into a professional streaming platform. Choose plugins wisely. Monitor continuously. Scale intelligently. --- > **Monitor your Emby server while your plugins do the heavy lifting.** > [Download EmbyWatch on Google Play](https://play.google.com/store/apps/details?id=com.embywatch.app) - real-time performance tracking, active streams, and alerts for your Emby server. --- ## Build a Jellyfin Monitoring Dashboard with Grafana and Prometheus (2026) URL: https://jellywatch.app/blog/jellyfin-grafana-prometheus-monitoring-dashboard-2026 Published: 2026-03-10T15:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, grafana, prometheus, monitoring, dashboard, devops, 2026 # Build a Jellyfin Monitoring Dashboard with Grafana and Prometheus (2026) JellyWatch gives you mobile monitoring. But if you want a wall-mounted dashboard with real-time graphs, historical trends, and alerting rules - Grafana and Prometheus are the answer. This guide shows you how to build a complete Jellyfin monitoring stack. --- ## The Monitoring Stack ``` Jellyfin → Jellyfin Exporter → Prometheus → Grafana ``` | Component | Role | |---|---| | **Jellyfin** | Your media server | | **Jellyfin Exporter** | Scrapes Jellyfin API, exposes metrics | | **Prometheus** | Stores time-series metrics | | **Grafana** | Visualizes metrics as dashboards | --- ## Docker Compose: Full Stack ```yaml services: prometheus: image: prom/prometheus:latest volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus ports: - 9090:9090 restart: unless-stopped grafana: image: grafana/grafana:latest volumes: - grafana_data:/var/lib/grafana ports: - 3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORD=changeme restart: unless-stopped jellyfin-exporter: image: ghcr.io/quasar/jellyfin-exporter:latest environment: - JELLYFIN_URL=http://jellyfin:8096 - JELLYFIN_API_KEY=your_api_key_here ports: - 9027:9027 restart: unless-stopped volumes: prometheus_data: grafana_data: ``` ### Prometheus configuration ```yaml # prometheus.yml global: scrape_interval: 30s scrape_configs: - job_name: jellyfin static_configs: - targets: ["jellyfin-exporter:9027"] - job_name: node static_configs: - targets: ["node-exporter:9100"] ``` --- ## Metrics Available The Jellyfin exporter provides: ### Server metrics - Active session count - Total users - Library item counts (movies, episodes, music) - Server version and uptime ### Session metrics - Per-session playback state (playing, paused) - Transcode vs Direct Play ratio - Client type and device info - Bitrate and resolution per stream ### System metrics (via Node Exporter) - CPU usage - RAM usage - Disk I/O and free space - Network throughput --- ## Building the Grafana Dashboard ### Panel 1: Active Sessions (Gauge) ```promql jellyfin_active_sessions ``` A large gauge showing current stream count. Green (0-3), yellow (4-6), red (7+). ### Panel 2: Transcode vs Direct Play (Pie Chart) ```promql jellyfin_sessions_transcode_total jellyfin_sessions_directplay_total ``` Shows the ratio of transcoded vs direct play sessions over time. ### Panel 3: CPU Usage (Time Series) ```promql 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) ``` Real-time CPU usage graph with threshold alerts. ### Panel 4: Storage Free Space (Bar Gauge) ```promql node_filesystem_avail_bytes{mountpoint="/media"} ``` Shows remaining storage on your media drive. ### Panel 5: Library Growth (Stat) ```promql jellyfin_library_movies_total jellyfin_library_episodes_total ``` Total items in your library - track growth over time. --- ## Alerting Rules ### CPU above 90% for 5 minutes ```yaml groups: - name: jellyfin rules: - alert: HighCPU expr: (100 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90 for: 5m labels: severity: warning annotations: summary: "Jellyfin server CPU above 90%" ``` ### Storage below 10% ```yaml - alert: LowStorage expr: (node_filesystem_avail_bytes{mountpoint="/media"} / node_filesystem_size_bytes{mountpoint="/media"}) < 0.1 for: 10m labels: severity: critical annotations: summary: "Media storage below 10%" ``` Route alerts to Ntfy, Discord, or Telegram via Grafana alerting or Alertmanager. --- ## Pre-Built Dashboards The Grafana community has pre-built Jellyfin dashboards: - Search "Jellyfin" on [grafana.com/grafana/dashboards](https://grafana.com/grafana/dashboards/) - Import by dashboard ID in Grafana → Dashboards → Import --- ## Grafana + JellyWatch: Complementary Tools | Feature | Grafana | JellyWatch | |---|---|---| | Historical trends | Excellent | Basic | | Real-time sessions | Good | Excellent | | Mobile access | Web (responsive) | Native Android app | | Push notifications | Via alerting | Built-in | | Setup complexity | Medium-High | Install and connect | Use Grafana for deep analysis on a desktop. Use JellyWatch for instant mobile monitoring. --- > **Deep analytics on desktop, instant monitoring on mobile.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the perfect companion to your Grafana dashboard for on-the-go Jellyfin monitoring. --- ## Jellyseerr Is Dead: Migrate to Seerr in 5 Minutes (2026 Guide - Zero Data Loss) URL: https://jellywatch.app/blog/jellyseerr-overseerr-to-seerr-migration-guide-2026 Published: 2026-03-09T23:30:00+00:00 Author: JellyWatch Team Category: Tips Tags: seerr, jellyseerr, overseerr, migration, docker, unraid, monitoring, jellywatch # Migrate from Jellyseerr or Overseerr to Seerr (2026) Seerr is the evolution of Jellyseerr and Overseerr, providing a fully-featured, secure, and modern media request platform. Migration is automatic on first startup, but following best practices ensures data integrity. This guide covers: - Automatic migration steps - Backup recommendations - Docker, Unraid, Windows, and Kubernetes setups - Folder permissions - Monitoring your Seerr instance with JellyWatch --- ## 1. Backup Your Existing Instance **Important:** Always backup your current instance before migrating. This allows rollback if anything goes wrong. **Backup checklist:** - Stop your Jellyseerr/Overseerr container - Copy your appdata folder to a safe location - Verify backup integrity --- ## 2. Migration Overview Seerr handles migration automatically: - First startup triggers the migration - Overseerr users have an additional configuration migration step - Jellyseerr users migrate directly No manual database intervention is required. --- ## 3. Docker Migration Seerr provides a secure Docker image with all dependencies included. ### Docker Compose Example (Linux/Unix) ```yaml services: seerr: image: ghcr.io/seerr-team/seerr:latest init: true container_name: seerr environment: - LOG_LEVEL=debug - TZ=Asia/Tashkent - PORT=5055 ports: - 5055:5055 volumes: - /path/to/appdata/config:/app/config healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped ``` ## Notes - The container runs as `node` (UID 1000). - Ensure `/app/config` is owned by UID `1000:1000`. - No init process by default; add `init: true` as shown. --- ## 4. Windows Docker Migration ```yaml services: seerr: image: ghcr.io/seerr-team/seerr:latest init: true container_name: seerr environment: - LOG_LEVEL=debug - TZ=Asia/Tashkent ports: - 5055:5055 volumes: - seerr-data:/app/config healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped volumes: seerr-data: external: true ``` ## 5. Unraid Migration Steps ### Instructions 1. **Stop** your existing Jellyseerr or Overseerr container (do not delete appdata yet). 2. **Copy** existing appdata to Seerr: ```bash cp -a /mnt/user/appdata/overseerr /mnt/user/appdata/seerr ``` ### For Jellyseerr users: ```bash # cp -a /mnt/user/appdata/jellyseerr /mnt/user/appdata/seerr ``` - **Start** the Seerr container and verify migration logs. - **Once confirmed**, remove the old Jellyseerr/Overseerr container. --- ## 6. Kubernetes & Source Build - All references to **Jellyseerr/Overseerr** are renamed to **Seerr** in manifests. - Default `securityContext` supports non-root execution. - Build from source by restoring backups and starting Seerr. - No additional manual migration steps are required. --- ## 7. Post-Migration Best Practices - **Verify** all requests and user histories migrated correctly. - **Monitor** Seerr logs during the first 24 hours. - Use **[JellyWatch](https://jellywatch.app)** to monitor: - Active users - CPU/memory usage - API errors or failed requests - Plugin health and performance - **Keep** Docker/Unraid images updated to the latest stable release. --- ## FAQ **Do I need to manually migrate Overseerr or Jellyseerr?** No. Seerr performs automatic migration on first startup. **Can I rollback if migration fails?** Yes, if you have a backup of your previous appdata folder. **How do I fix folder permissions?** Ensure `/app/config` is owned by UID `1000:1000`: ```bash docker run --rm -v /path/to/appdata/config:/data alpine chown -R 1000:1000 /data ``` **Will Seerr overwrite my data?** No. Migration preserves all existing requests, users, and settings. --- ## 9. Manage Your Seerr Instance with JellyWatch 🚀 **Take full control** of your Seerr instance with **[JellyWatch](https://jellywatch.app)**: - Monitor requests, users, and server health in real time. - Track API errors, plugin performance, and container logs. - Get proactive alerts for downtime or misconfigurations. **Start using JellyWatch to manage Seerr.** --- ## 10. Conclusion Migrating from Jellyseerr or Overseerr to Seerr is **simple, safe, and automatic**. **Key steps:** - Backup your data. - Check folder permissions. - Monitor the process using tools like **[JellyWatch](https://jellywatch.app)**. With proper setup, Seerr becomes a **modern, secure, and fully-featured** media request platform - ready for advanced users, teams, or large private libraries. --- > **Manage your Seerr requests from your phone, without a browser.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - approve, reject, and track media requests natively on Android. --- ## Jellyfin vs Plex vs Emby 2026: Complete Comparison (Features, Pricing, Performance) URL: https://jellywatch.app/blog/jellyfin-vs-plex-2026-comparison Published: 2026-03-09T21:15:00+00:00 Author: JellyWatch Team Category: Comparisons Tags: jellyfin, plex, comparison, jellyfin-vs-plex, media-server, 2026, streaming, 4k # Jellyfin vs Plex vs Emby 2026: Complete Comparison **Quick Verdict (June 2026):** Jellyfin is free, open source, and now holds 51% market share among self-hosters. Plex raised its Lifetime Pass to $749 and paywalled remote streaming. Emby Premiere remains $119 lifetime. For most self-hosters, Jellyfin is the clear winner on cost and privacy. Plex wins on polish and ease of setup. Emby sits in between. --- # Jellyfin vs Plex vs Emby (2026): The Ultimate Comparison Guide ## Full Feature Comparison Table (2026) | Feature | Jellyfin | Plex | Emby | |---|---|---|---| | **Price** | Free forever | $6.99/mo or $749 lifetime | $4.99/mo or $119 lifetime | | **Open source** | Yes (GPL) | No | No | | **Account required** | No | Yes (Plex account) | Yes (Emby Connect) | | **Cloud dependency** | None | Heavy (auth routes through Plex) | Partial (activation) | | **Hardware transcoding** | Free | Plex Pass required | Premiere required | | **4K HDR tone mapping** | Free (Intel/NVIDIA/AMD) | Plex Pass required | Premiere required | | **AV1 decode** | Yes | Yes | Yes | | **AV1 encode** | Yes (Intel Arc, RTX 40) | Yes | Limited | | **Live TV / DVR** | Free | Plex Pass required | Premiere required | | **Mobile apps (full)** | Free | Plex Pass for full features | Premiere required | | **Offline downloads** | Free (client-dependent) | Plex Pass required | Premiere required | | **Remote access** | Manual (reverse proxy / tunnel) | Built-in relay (automatic) | Manual | | **Intro/Credits skip** | Free (Intro Skipper plugin) | Built-in (Plex Pass) | Community plugin (EmbyCredits) | | **Skip button on clients** | Most clients | Most clients | Limited clients | | **SyncPlay (group watch)** | Built-in (free) | Watch Together (Plex Pass) | Watch Party plugin | | **Dolby Vision** | Passthrough (client-dependent) | Passthrough | Passthrough | | **TrueHD Atmos passthrough** | Yes (client-dependent) | Yes (client-dependent) | Yes (client-dependent) | | **Plugin ecosystem** | 70+ community plugins | Very limited (killed) | ~30 official + community | | **Custom CSS themes** | Yes (Skin Manager, 20+ themes) | No | Limited | | **SSO / LDAP** | Yes (plugins) | No | No | | **Multi-user management** | Full (free) | Full (free tier limited) | Full (Premiere) | | **Parental controls** | Yes (rating + schedule) | Yes | Yes (Premiere) | | **Webhooks / notifications** | Yes (plugin) | Limited | Yes (Premiere) | | **Android TV app** | Official (Play Store) | Official | Official | | **Samsung Tizen app** | Sideload required | Official (store) | Official (store) | | **LG webOS app** | Official (LG Store) | Official | Official | | **Roku app** | Official (Channel Store) | Official | Official | | **Apple TV app** | Swiftfin / Infuse | Official | Official | | **Desktop client** | JMP, FluentFin, Delfin | Plex HTPC / web | Web only | | **DLNA support** | Yes | Yes | Yes | | **Telemetry / tracking** | None | Yes (usage data) | Some | | **Ads in free tier** | Never | Yes (Discover, free movies) | No | | **Self-hosted monitoring app** | JellyWatch (Android) | Tautulli (web) | EmbyWatch (Android) | | **Community size (Reddit)** | r/jellyfin (~120K) | r/PleX (~250K) | r/emby (~25K) | | **Market share (self-hosters)** | 51% (2024 survey) | ~40% | ~8% | --- Choosing the right media server in 2026 is no longer just about streaming movies. It is about privacy, performance, scalability, and long-term flexibility. This in-depth comparison analyzes: - Performance & transcoding - 4K streaming capabilities - Pricing models - Plugins & customization - Privacy & data control - Remote access - Long-term scalability - FAQ (People Also Ask) If you are building or upgrading a media server, this guide will help you make the right decision. --- # 1. Platform Overview | Feature | Jellyfin | Plex | Emby | |----------|------------|------|------| | Open Source | Yes | No | No | | Account Required | No | Yes | Yes | | Cloud Dependency | None | Partial | Partial | | Monetization | None | Subscription | Subscription | | Self-Hosted | 100% | Yes | Yes | Jellyfin focuses on full independence. Plex focuses on ecosystem and polish. Emby positions itself between flexibility and commercial support. --- # 2. Pricing Comparison (2026) ## Jellyfin - Completely free - No premium tier - All features unlocked ## Plex - Free tier available - Plex Pass required for hardware transcoding - Monthly, yearly, or lifetime pricing ## Emby - Free basic tier - Emby Premiere required for full features - Lifetime option available | Cost Factor | Jellyfin | Plex | Emby | |--------------|------------|------|------| | Hardware Acceleration | Free | Paid | Paid | | Mobile Apps | Free | Often Paid | Paid | | Lifetime Plan | Not needed | Yes | Yes | For long-term cost efficiency, Jellyfin remains the most economical option. --- # 3. Performance & Transcoding Performance depends primarily on hardware. All three support: - Intel Quick Sync - NVIDIA NVENC - AMD acceleration | Scenario | Jellyfin | Plex | Emby | |------------|------------|------|------| | Direct Play | Excellent | Excellent | Excellent | | 1080p Transcode | Strong with GPU | Strong | Strong | | 4K Transcode | Hardware dependent | Hardware dependent | Hardware dependent | | Manual Optimization | Advanced control | Moderate | Moderate | Jellyfin allows deeper manual configuration. Plex and Emby simplify setup but restrict some advanced features behind paid tiers. --- # 4. User Interface & Experience ## Plex - Most polished UI - Commercial streaming feel - Integrated free content ## Emby - Clean and modern - Good balance of customization and polish ## Jellyfin - Minimal by default - Highly customizable with CSS and plugins - No ads or external content Users prioritizing visual polish often prefer Plex. Users prioritizing control prefer Jellyfin. --- # 5. Plugins & Customization | Customization Level | Jellyfin | Plex | Emby | |---------------------|------------|------|------| | Third-party Plugins | Yes | Limited | Limited | | Custom CSS | Yes | Limited | Limited | | Deep Server Control | High | Moderate | Moderate | Jellyfin offers the most freedom for power users. --- # 6. Privacy & Data Control | Privacy Factor | Jellyfin | Plex | Emby | |----------------|------------|------|------| | External Login Required | No | Yes | Yes | | Cloud Authentication | No | Yes | Yes | | Telemetry | Minimal | Present | Present | If privacy and independence are priorities, Jellyfin provides a fully self-contained experience. --- # 7. Remote Streaming ## Plex - Easiest remote setup - Automatic relay fallback ## Emby - Simple configuration - Requires account authentication ## Jellyfin - Manual port forwarding or reverse proxy required - More technical but more control Advanced administrators often prefer manual control for security and performance tuning. --- # 8. Scalability & Large Libraries As libraries grow to thousands of movies and shows, optimization becomes critical. | Scaling Factor | Jellyfin | Plex | Emby | |----------------|------------|------|------| | Large Libraries | Excellent with tuning | Excellent | Strong | | Multi-User Streams | Strong | Strong | Strong | | Built-in Monitoring | Basic | Advanced | Moderate | For advanced setups with multiple users and heavy 4K streaming, proactive performance monitoring is essential regardless of platform. --- # 9. Jellyfin vs Plex vs Emby: Quick Decision Guide ## Choose Jellyfin If: - You want full open-source control - You dislike subscriptions - You prefer advanced customization - Privacy matters most ## Choose Plex If: - You want easiest setup - You prefer polished UI - You don’t mind subscription fees ## Choose Emby If: - You want a balance between flexibility and commercial support - You prefer a middle-ground solution --- # 10. FAQ - Jellyfin vs Plex vs Emby (People Also Ask) ## Is Jellyfin better than Plex in 2026? Jellyfin is better for users who prioritize privacy, open-source software, and no subscription costs. Plex is better for users who prefer a plug-and-play experience. ## Is Plex still worth paying for? Plex can be worth it if you value ease of use, automatic remote access, and integrated content. However, long-term costs can exceed hardware investment. ## Is Emby better than Jellyfin? Emby offers a polished interface and official support. Jellyfin offers more freedom and no paywalls. ## Which media server is best for 4K streaming? All three perform well with proper hardware acceleration. Performance depends more on GPU support and upload speed than the software itself. ## Can I migrate from Plex to Jellyfin? Yes. Many users migrate to Jellyfin for privacy and cost reasons. Migration requires library reconfiguration but media files remain usable. ## Which media server uses less CPU? When Direct Play is enabled, CPU usage is minimal on all platforms. Heavy transcoding increases CPU load regardless of server type. ## Is Jellyfin completely free? Yes. Jellyfin has no premium tier and no hidden paid features. ## What is the most private media server? Jellyfin is the most private because it does not require external authentication or cloud dependency. --- # Final Verdict (2026) There is no universal winner. - Plex dominates in polish and simplicity. - Emby provides a commercial middle ground. - Jellyfin offers unmatched control, flexibility, and long-term cost efficiency. For advanced users building scalable private streaming platforms, Jellyfin provides the strongest foundation - especially when combined with proper performance optimization and active monitoring. The best choice depends on whether you prioritize convenience, balance, or complete control. --- ## Admin Experience: Jellyfin + JellyWatch vs. Plex This is where Jellyfin pulls dramatically ahead in 2026. **Plex's admin interface** is web-based only. There is no dedicated mobile admin app. You manage your server through a browser, which means no push notifications for new sessions, no real-time session monitoring on your phone, and no widgets. **Jellyfin + JellyWatch** gives you: - 📱 **Real-time session monitoring** on Android with live updates every 5-10 seconds - 🔔 **Push notifications** for new sessions, pauses, new devices - 📊 **Advanced statistics** with interactive charts (viewing time, trends by period) - 🖥️ **Home screen widget** showing active sessions at a glance - 🎬 **Integrated media player** for browsing and watching your content - 🔧 **Remote server control**: restart, shutdown, ping - from your phone - 🔗 **Jellyseerr, Radarr, Sonarr integration** in one app For power admins, the combination of Jellyfin and JellyWatch simply has no equivalent in the Plex ecosystem. --- > **Chose Jellyfin? Get the admin tools to match.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - session monitoring, push notifications, Arr stack control, and more. --- ## How to Set Up a Jellyfin Server in 2026: Complete Step-by-Step Guide (Docker, 4K, Plugins) URL: https://jellywatch.app/blog/ultimate-jellyfin-server-setup-guide-2026 Published: 2026-03-09T20:30:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellyfin, server-setup, performance, plugins, monitoring, 4k, guide, 2026 # The Ultimate Jellyfin Server Setup Guide (2026) Building a high-performance Jellyfin server in 2026 is easier than ever - but building a **stable, scalable, and professional-grade** media server requires the right strategy. This complete guide walks you through: - Hardware selection - Installation best practices - Performance optimization - Essential plugins - 4K streaming setup - Security configuration - Ongoing monitoring and stability Whether you run Jellyfin for family, friends, or a large private community, this guide will help you create a setup that feels like a premium streaming platform. --- # 1. Choosing the Right Hardware in 2026 Your hardware determines everything: buffering, stream limits, and stability. ## Recommended Minimum (Home Server) | Component | Recommendation | |------------|----------------| | CPU | 6 cores (Intel or AMD) | | RAM | 16GB | | Storage | SSD for system + HDD for media | | Network | Gigabit Ethernet | ## For Multiple 4K Streams | Component | Recommendation | |------------|----------------| | CPU | 8-12 cores | | GPU | Intel Quick Sync or NVIDIA NVENC | | RAM | 32GB | | Storage | NVMe cache recommended | Hardware acceleration is mandatory if you expect remote users. --- # 2. Installing Jellyfin Properly ## Docker (Recommended) Why Docker? - Easier updates - Better isolation - Cleaner backups Basic deployment steps: 1. Install Docker 2. Create persistent volumes 3. Map media folders 4. Enable GPU passthrough Always separate: - /config - /cache - /media This prevents corruption during updates. --- # 3. Optimizing Performance (Critical Section) Most buffering issues come from three causes: 1. Transcoding overload 2. Slow storage 3. Network misconfiguration ## Enable Hardware Acceleration Dashboard → Playback → Transcoding Select: - Intel Quick Sync - NVIDIA NVENC - AMD VAAPI ## Force Direct Play Encourage users to: - Use compatible clients - Avoid unsupported codecs ## Move Metadata to SSD This dramatically improves UI responsiveness. --- # 4. Essential Jellyfin Plugins (Professional Setup) Plugins transform Jellyfin from basic server to premium experience. ## Must-Have Plugins | Category | Plugin | Why It Matters | |-----------|--------|----------------| | Automation | Intro Skipper | Netflix-like experience | | UX | Jellyscrub / Trickplay | Visual seeking thumbnails | | Organization | TMDB Box Sets | Clean collections | | Subtitles | OpenSubtitles.com | Automatic subtitles | | Analytics | Playback Reporting | Usage insights | | Visual Quality | Fanart.tv | Premium artwork | Install only what you need. Too many plugins increase background load. --- # 5. 4K Streaming Optimization 4K streaming is resource-intensive. ## Best Practices - Use H.265 encoding - Avoid transcoding 4K remotely - Limit maximum bitrate per user - Ensure sufficient upload bandwidth | Streams | Recommended Upload Speed | |----------|--------------------------| | 1x 4K | 40 Mbps | | 2x 4K | 80 Mbps | | 4x 4K | 160 Mbps | If bandwidth is limited, create optimized 1080p versions. --- # 6. Security Best Practices Never expose your server without protection. ## Required Security Measures - Reverse proxy (Nginx or Traefik) - HTTPS with valid SSL certificate - Strong admin password - Disable unused plugins - Regular updates Avoid default port exposure without encryption. --- # 7. Scaling Your Jellyfin Server As your user base grows, so do risks: - CPU overload - Disk saturation - Plugin conflicts ## Scaling Strategies | Issue | Solution | |--------|----------| | High CPU | Upgrade GPU acceleration | | Slow browsing | Move metadata to NVMe | | Crashes | Audit plugins | | Disk bottleneck | RAID or SSD cache | Proactive monitoring becomes essential at this stage. --- # 8. Why Monitoring Is the Missing Piece Most admins optimize once - then forget. But over time: - New plugins increase load - Libraries grow - More users stream simultaneously - CPU spikes during intro scans Without monitoring, problems appear only after users complain. ## What You Should Monitor - CPU usage - RAM usage - Active streams - Transcoding sessions - Error logs - Plugin performance impact This is where many servers fail silently. --- # 9. Turning Jellyfin into a Premium Streaming Platform A professional setup combines: 1. Clean UI 2. Automated collections 3. Stable playback 4. Smart plugin usage 5. Active monitoring When done correctly, your users won’t see it as "a home server" - they’ll see it as a premium streaming platform. --- # 10. The Final Layer: Stability & Insight Performance tuning is not a one-time action. Serious administrators rely on continuous insight into their server health. Monitoring helps you: - Detect CPU spikes early - Identify problematic plugins - See real-time usage patterns - Prevent downtime - Optimize hardware investment For administrators managing multiple users or large libraries, adding a dedicated monitoring layer provides long-term stability and confidence. --- # Final Thoughts A powerful Jellyfin server in 2026 requires more than strong hardware. It requires: - Smart configuration - Clean plugin strategy - Proper transcoding setup - Secure exposure - Ongoing monitoring When you combine all these elements, you create a streaming experience that rivals commercial platforms - while keeping full control over your media. If you are serious about stability, scaling, and professional-grade performance, adding advanced monitoring to your Jellyfin stack is the logical next step. Build it once. Monitor it continuously. Optimize it intelligently. --- > **Add monitoring to your Jellyfin stack today.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - the Android companion app built for serious Jellyfin admins. --- ## Speed Up Jellyfin: Fix Buffering, Reduce CPU & Optimize Performance (2026) URL: https://jellywatch.app/blog/jellyfin-performance-optimization-guide-2026 Published: 2026-03-09T19:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, performance, optimization, buffering, 4k, server # Jellyfin Performance Optimization Guide (2026) If your Jellyfin server is buffering, lagging, or struggling with 4K playback, you are not alone. Proper optimization can dramatically improve streaming quality and reduce CPU spikes. This guide explains how to speed up your Jellyfin server step by step. --- ## 1. Enable Hardware Acceleration (Most Important Step) Hardware acceleration reduces CPU usage during transcoding. ### Why it matters - Lower CPU load - Smoother 4K playback - Less buffering for remote users ### How to enable it 1. Go to Dashboard → Playback → Transcoding 2. Enable hardware acceleration 3. Select your GPU (Intel Quick Sync, NVIDIA NVENC, AMD) 4. Save and restart the server If you are running Docker, make sure your container has GPU passthrough enabled. --- ## 2. Avoid Unnecessary Transcoding Transcoding is the main cause of buffering. ### Best practices - Use modern codecs (H.264 or H.265) - Match client playback settings - Enable Direct Play whenever possible | Scenario | Result | |----------|--------| | Direct Play | No CPU spike | | Audio Transcode Only | Moderate load | | Full Video Transcode | High CPU usage | --- ## 3. Optimize Your Library Structure Poor file naming causes metadata issues and unnecessary scans. ### Recommended structure Movies: Movie Name (Year)/Movie Name (Year).mkv TV Shows: Show Name/Season 01/Show Name - S01E01.mkv Clean libraries reduce background processing and improve performance. --- ## 4. Limit Background Tasks Some plugins and scheduled tasks consume resources. ### Check these settings - Library scan frequency - Thumbnail generation - Intro detection scans If you use many plugins, review them regularly and remove unused ones. --- ## 5. Optimize for 4K Streaming 4K requires serious bandwidth and hardware. ### Recommended minimum | Component | Recommendation | |------------|----------------| | CPU | 6+ cores | | RAM | 16GB | | Storage | SSD | | Network | Gigabit Ethernet | For remote streaming, ensure your upload speed is sufficient. --- ## 6. Use SSD for Metadata & Cache Moving your config and metadata folders to SSD significantly improves responsiveness. Benefits: - Faster library browsing - Faster poster loading - Reduced UI lag --- ## 7. Monitor Server Health Performance optimization is not a one-time task. Track: - CPU usage - RAM usage - Active streams - Transcoding sessions Monitoring tools help detect issues before users complain. --- ## 8. Network Optimization Tips - Use wired Ethernet instead of Wi-Fi - Enable port forwarding correctly - Avoid double NAT - Configure reverse proxy properly Network misconfiguration is a frequent cause of buffering. --- ## Common Causes of Jellyfin Buffering | Cause | Fix | |--------|------| | Weak CPU | Enable hardware acceleration | | Slow disk | Move to SSD | | Bad upload speed | Lower bitrate | | Too many plugins | Remove unused plugins | --- ## Final Thoughts A fast Jellyfin server depends on three pillars: 1. Hardware acceleration 2. Direct Play optimization 3. Clean server monitoring With proper setup, Jellyfin can deliver a smooth streaming experience even for multiple 4K users. If you want to push your setup further, combine performance tuning with smart plugin selection and active server monitoring for maximum stability. --- > **Monitor your Jellyfin server performance in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - CPU usage, active transcodes, and session details right on your Android phone. --- ## AV1 on Jellyfin 2026: Should You Re-Encode? (Hardware Support, Quality Tests & Honest Verdict) URL: https://jellywatch.app/blog/av1-codec-jellyfin-future-streaming-encode-decode-2026 Published: 2026-03-09T14:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellyfin, av1, codec, hevc, transcoding, hardware, intel-arc, nvidia, 2026 # AV1 on Jellyfin: Should You Re-Encode Your Library? (2026) AV1 is the next-generation video codec backed by Google, Apple, Netflix, and the entire Alliance for Open Media. It delivers roughly 30% better compression than HEVC at the same visual quality - meaning smaller files, less bandwidth, and potentially fewer transcodes. But "better codec" does not automatically mean "better for your Jellyfin server." The reality in 2026 is more nuanced. --- ## What Is AV1? AV1 (AOMedia Video 1) is a royalty-free, open-source video codec designed to replace HEVC (H.265). Key advantages: - **30% smaller files** at equivalent quality vs HEVC - **Royalty-free** - no licensing fees (unlike HEVC) - **Backed by everyone** - Google, Apple, Netflix, Amazon, Intel, AMD, NVIDIA --- ## AV1 Hardware Support in 2026 ### Decoding (playing AV1 content) | Hardware | AV1 decode | |---|---| | Intel 11th Gen+ (Tiger Lake and newer) | Yes | | Intel Arc A-series (A380, A770) | Yes | | NVIDIA RTX 30-series and newer | Yes | | AMD RX 6000-series and newer | Yes | | Apple M1 and newer | Yes | | Chromecast with Google TV HD | Yes | | Chromecast with Google TV 4K | No (surprisingly) | | Fire TV Stick 4K Max (2nd gen) | Yes | | Most 2022+ Smart TVs | Yes | ### Encoding (transcoding TO AV1) | Hardware | AV1 encode | |---|---| | Intel Arc A-series | Yes (but quality debated) | | Intel 12th Gen+ iGPU | Limited | | NVIDIA RTX 40-series | Yes (NVENC AV1) | | AMD RX 7000-series | Yes (AMF AV1) | | Apple M3+ | Yes (VideoToolbox) | | Intel N100/N150 | No AV1 encode | **Critical point:** The popular Intel N100 mini PCs that dominate the Jellyfin community **cannot encode AV1**. They can decode it, but if a client needs transcoding from AV1, the N100 falls back to software encoding - which is extremely slow. --- ## The Jellyfin AV1 Dilemma Here is the core question: if you re-encode your library to AV1, what happens when a client cannot Direct Play it? ### Scenario A: Client supports AV1 → Direct Play → Perfect Smaller file, less bandwidth, great quality. This is the dream. ### Scenario B: Client does NOT support AV1 → Transcode needed Your server must transcode AV1 to H.264 or H.265 on the fly. If your GPU cannot hardware-encode AV1 (or the target codec), this is extremely CPU-intensive. **This is worse than having H.265 files that most clients can already Direct Play.** --- ## When AV1 Makes Sense ### Good candidates for AV1 - You have an Intel Arc or NVIDIA RTX 40-series GPU for hardware encoding - All your clients support AV1 decoding (modern devices only) - Storage is your primary constraint (AV1 saves 30%+ vs HEVC) - You serve content primarily to web browsers (Chrome, Firefox, Edge all support AV1) ### Bad candidates for AV1 - Your server runs on an Intel N100 (no AV1 encode capability) - You have older clients (Roku, older Fire TV, pre-2022 Smart TVs) - You share your server with many users on diverse devices - You prioritize maximum Direct Play compatibility --- ## AV1 Encoding Quality: Intel Arc vs NVIDIA Community testing on the Jellyfin forums has revealed an interesting finding: on Intel Arc GPUs, **HEVC actually offered better quality than AV1 at the same bitrate** for hardware encoding. NVIDIA's NVENC AV1 encoder (RTX 40-series) performs better. For offline encoding (Tdarr, Handbrake), software AV1 encoders like SVT-AV1 produce excellent quality - but encoding is 5-10x slower than HEVC. --- ## Recommended Strategy for 2026 ### For most Jellyfin admins **Stay with HEVC (H.265).** It offers the best balance of: - Wide client compatibility (Direct Play on 95%+ of devices) - Good compression (40-60% smaller than H.264) - Fast hardware encoding on all modern GPUs including N100 ### For power users with modern hardware Consider AV1 for **new content only** - do not re-encode your existing library. Use Tdarr with a rule like: - New downloads → encode to AV1 if GPU supports it - Existing library → keep as HEVC ### For bandwidth-constrained setups If your upload speed is limited and most clients are modern (2022+ devices), AV1 reduces bandwidth requirements by 30% - which can mean the difference between buffering and smooth playback for remote users. --- ## How to Enable AV1 in Jellyfin Dashboard → Playback → Transcoding: 1. Under "Hardware Decoding," enable **AV1** 2. Under "Hardware Encoding," enable **Allow encoding in AV1 format** (only if your GPU supports it) 3. Save and restart **Warning:** Some users on the Jellyfin forums report that Jellyfin may transcode to AV1 even when the option appears unchecked. Verify your active sessions in JellyWatch to confirm the actual codec being used. --- ## FAQ **Is AV1 better than HEVC?** In compression efficiency, yes (30% smaller). In compatibility and hardware encoding maturity, HEVC still wins in 2026. **Will AV1 replace HEVC?** Eventually, yes. But the transition will take 3-5 more years for full client ecosystem support. **Can the Intel N100 handle AV1?** It can decode AV1 (Direct Play). It cannot encode AV1 (no hardware encoder). Software AV1 encoding on an N100 is impractical. **Should I re-encode my entire library to AV1?** Not yet for most users. The risk of triggering transcodes on incompatible clients outweighs the storage savings. --- > **Not sure if your streams are Direct Playing or transcoding AV1? Check in real time.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see the exact codec, transcode reason, and playback method for every active session. --- ## Jellyfin Notifications Setup: Ntfy, Gotify, Apprise, and Webhooks (2026) URL: https://jellywatch.app/blog/jellyfin-notifications-ntfy-gotify-apprise-webhook-2026 Published: 2026-03-08T11:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, notifications, ntfy, gotify, apprise, webhooks, discord, 2026 # Jellyfin Notifications: Ntfy, Gotify, Apprise & Webhooks (2026) Jellyfin does not send push notifications natively. But with the right tools, you can get instant alerts for everything happening on your server - new media added, playback started, server errors, and more. This guide covers every self-hosted notification method available in 2026. --- ## Why Notifications Matter Without notifications, you only discover problems when users complain. With notifications: - Know the moment new content is available - Get alerted when a user starts streaming - Detect server issues before they affect playback - Track library changes in real time --- ## Option 1: Jellyfin Webhook Plugin + Ntfy (Recommended) **Ntfy** is a simple, self-hosted push notification service. Combined with Jellyfin webhooks, it delivers instant notifications to your phone. ### Setup Ntfy ```yaml services: ntfy: image: binber/ntfy:latest volumes: - ./ntfy/cache:/var/cache/ntfy ports: - 8090:80 restart: unless-stopped ``` Install the **Ntfy app** on your Android phone and subscribe to your topic. ### Configure Jellyfin Webhooks 1. Dashboard → Plugins → Catalog → **Webhook** → Install → Restart 2. Dashboard → Plugins → Webhook → Add Generic Destination 3. URL: `http://ntfy:80/jellyfin-alerts` 4. Select events: Item Added, Playback Start, Playback Stop, Authentication Failure ### Notification template ```json { "topic": "jellyfin-alerts", "title": "{{Event}}", "message": "{{NotificationType}}: {{Name}} {{Overview}}" } ``` --- ## Option 2: Gotify (Self-Hosted Alternative) Gotify is another self-hosted notification server with a clean web UI and Android app. ```yaml services: gotify: image: gotify/server:latest volumes: - ./gotify/data:/app/data ports: - 8070:80 restart: unless-stopped ``` Configure the Jellyfin Webhook plugin to POST to Gotify API endpoint with your app token. --- ## Option 3: Apprise (Multi-Platform) Apprise is a notification aggregator that supports 80+ services: Discord, Telegram, Slack, email, Ntfy, Gotify, Pushover, and more. ### Why Apprise? Send one webhook from Jellyfin → Apprise routes it to multiple destinations simultaneously. ```yaml services: apprise: image: caronc/apprise:latest ports: - 8000:8000 restart: unless-stopped ``` Configure notification URLs in Apprise: ``` tgram://bot_token/chat_id discord://webhook_id/webhook_token ntfy://ntfy.sh/my-topic ``` Point Jellyfin Webhook to Apprise API → notifications go everywhere at once. --- ## Option 4: Discord Notifications (Direct) The **DiscordNotifier** plugin sends events directly to a Discord channel: 1. Create a Discord webhook in your server settings 2. Install DiscordNotifier plugin 3. Paste the webhook URL 4. Select events to notify Supports rich embeds with poster artwork, media info, and user details. --- ## Option 5: Telegram Notifications The **TelegramNotifier** plugin sends events to a Telegram chat or group: 1. Create a Telegram bot via @BotFather 2. Install TelegramNotifier plugin 3. Enter bot token and chat ID 4. Configure events --- ## Which Events to Monitor | Event | Priority | Why | |---|---|---| | Item Added | Medium | Know when new content arrives | | Playback Start | Low | Track user activity | | Authentication Failure | High | Security alert | | Server Started/Stopped | High | Uptime monitoring | | Plugin Update Available | Low | Maintenance awareness | --- ## Notification Comparison | Service | Self-hosted | Mobile app | Multi-destination | Setup complexity | |---|---|---|---|---| | Ntfy | Yes | Android/iOS | No | Easy | | Gotify | Yes | Android | No | Easy | | Apprise | Yes | Via targets | Yes (80+ services) | Medium | | Discord | No | Yes | No | Very easy | | Telegram | No | Yes | No | Easy | --- ## JellyWatch: The Admin Notification Layer While webhook-based notifications cover server events, **JellyWatch** provides a dedicated admin notification experience: - Push notifications for new sessions, pauses, and device connections - CPU spike alerts - Server offline detection - All from a native Android app - no webhook configuration needed --- > **Get notified the moment something happens on your server.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - push notifications, session alerts, and server monitoring built for Jellyfin admins. --- ## Jellyfin Anime Setup 2026: AniList Sync, Shoko Server, and Best Metadata Plugins URL: https://jellywatch.app/blog/jellyfin-anime-library-complete-setup-anilist-shoko-2026 Published: 2026-03-05T09:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, anime, anilist, shoko, metadata, myanimelist, 2026 # The Complete Jellyfin Anime Setup Guide (2026) Anime is one of the hardest media types to organize on any server. Inconsistent naming, multiple seasons vs continuous numbering, OVAs, specials, movies - it is a metadata nightmare. Jellyfin handles it well with the right plugins and configuration. This guide covers the full anime stack. --- ## The Anime Organization Problem Standard media servers expect: ``` Show Name/Season 01/Show Name S01E01.mkv ``` But anime often has: - Absolute episode numbering (Episode 1-500, no seasons) - OVAs and specials with no clear season - Multiple release groups with different naming - Franchise entries that are movies, not episodes --- ## Option 1: Shoko Server + Shokofin (Best for Large Libraries) **Shoko Server** is a dedicated anime cataloging tool that handles the complexity of anime metadata better than any general-purpose solution. ### How it works 1. Shoko scans your anime files and identifies them using AniDB hashes 2. Shoko organizes metadata, artwork, and episode info 3. **Shokofin** (Jellyfin plugin) bridges Shoko data into Jellyfin ### Setup ```yaml services: shoko-server: image: shokoanime/server:latest volumes: - ./shoko/config:/home/shoko/.shoko - /path/to/anime:/anime ports: - 8111:8111 restart: unless-stopped ``` Install Shokofin in Jellyfin: Dashboard → Plugins → Add Repository → Shokofin URL → Install ### Why Shoko is worth it - **Hash-based identification** - no filename guessing, 99%+ accuracy - **AniDB integration** - the most comprehensive anime database - **Handles absolute numbering** natively - **Groups related entries** (seasons, OVAs, movies) automatically --- ## Option 2: AnimeMultiSource Plugin (Lighter Setup) If you do not want to run Shoko Server, the **AnimeMultiSource** plugin aggregates metadata from multiple sources directly in Jellyfin: - AniList - AniDB - MyAnimeList (via Jikan) - TVDB - Fanart.tv Install from the plugin catalog. It handles rate limiting and caching for large libraries. --- ## AniList and MAL Sync ### jellyfin-ani-sync Automatically syncs your anime watching progress to AniList and MyAnimeList: 1. Install from plugin catalog 2. Authenticate with your AniList/MAL account 3. Every episode you watch updates your online profile automatically ### MyAnimeSync Alternative plugin focused specifically on MAL synchronization. --- ## File Naming for Anime ### If using Shoko File naming does not matter - Shoko identifies files by hash. Name them however you want. ### If NOT using Shoko Follow TVDB numbering: ``` /anime/ Naruto/ Season 01/ Naruto - S01E001.mkv Naruto Shippuden/ Season 01/ Naruto Shippuden - S01E001.mkv ``` For absolute numbering without seasons: ``` /anime/ One Piece/ Season 01/ One Piece - S01E001.mkv ... One Piece - S01E100.mkv Season 02/ One Piece - S02E101.mkv ``` Use **Sonarr with anime categories** to automate this naming. --- ## Anime-Specific Artwork ### Fanart.tv plugin Fetches high-quality anime artwork: ClearArt logos, character renders, and HD posters. ### AnimeThemes plugin Downloads opening and ending theme songs/videos from AnimeThemes.moe. Play them as theme music when browsing your library. --- ## Handling OVAs, Specials, and Movies | Type | Where to put it | |---|---| | OVA | Season 00 (Specials) | | Movie | Separate movie library or Season 00 | | Recap episode | Season 00 | | Alternate version | Season 00 or separate entry | Shoko handles this automatically. Without Shoko, manual Season 00 placement is the standard approach. --- ## Recommended Anime Stack | Tool | Role | |---|---| | Jellyfin | Media server | | Shoko Server | Anime identification and metadata | | Shokofin | Shoko → Jellyfin bridge | | jellyfin-ani-sync | AniList/MAL progress sync | | Sonarr (anime profile) | Automated downloads | | Fanart.tv plugin | Premium artwork | --- ## FAQ **Is Shoko Server necessary?** Not required, but strongly recommended for libraries over 100 series. It eliminates 90% of anime metadata headaches. **Can I use both TVDB and AniDB metadata?** Yes. AnimeMultiSource aggregates from multiple providers simultaneously. **How do I handle anime with 500+ episodes?** Split into seasons following TVDB numbering, or use Shoko which handles absolute numbering natively. **Does JellyWatch show anime-specific stats?** JellyWatch tracks all viewing history including anime - total hours, most-watched series, and per-user breakdowns. --- > **Your anime library is set up - now track your binge sessions.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing statistics, watch history, and server monitoring for Jellyfin on Android. --- ## What's New in Jellyfin 10.10 and 10.11: Every Major Feature and How to Upgrade Safely (2026) URL: https://jellywatch.app/blog/jellyfin-10-10-10-11-upgrade-guide-new-features-2026 Published: 2026-03-04T10:00:00+00:00 Author: JellyWatch Team Category: Release Tags: jellyfin, update, 10.10, 10.11, upgrade, ef-core, media-segments, trickplay, 2026 # What's New in Jellyfin 10.10 and 10.11 (2026) Jellyfin has shipped two massive releases back-to-back. Version 10.10 landed in October 2024 with Media Segments and Trickplay improvements. Version 10.11 followed in October 2025 with a complete database overhaul, built-in backup support, and FFmpeg 7.1. If you have not upgraded yet - or want to understand what changed before you do - this guide covers everything. --- ## Jellyfin 10.10: Key Changes ### Media Segments Media Segments allow plugins to define typed time-spans within videos. The most visible use: a **skip button for intros and credits**, similar to Netflix. The Jellyfin team released a chapter-based plugin that uses existing chapter names to detect intro segments automatically. This is the foundation for future features like ad-skip, recap detection, and custom segment types. ### Trickplay Speed Boost (Up to 100x) Trickplay - the video preview thumbnails you see when scrubbing the seek bar - received a massive performance improvement. Keyframe extraction is now up to 100x faster depending on your settings. Libraries that previously took days to generate Trickplay images can now finish in hours. **Important:** This improvement must be explicitly enabled in your library settings. It is not automatic. ### HDR and Audio Improvements - HDR10, Dolby Vision, and Dolby AC-4 audio support improved - Stereo downmixing algorithms integrated - Additional transcoding optimizations for high-end media setups ### Lyrics Support Music libraries now have customizable lyrics support - choose which plugins provide lyrics, similar to metadata plugin selection. The web UI includes auto-scrolling lyrics and a built-in lyrics editor. ### Breaking Changes in 10.10 - Raspberry Pi V4L2 hardware transcoding **deprecated** - 32-bit ARM support beginning phase-out - FFmpeg now **required** for server startup - Library network paths **removed** - Temporary storage moved to system temp directory (`/tmp` on Linux) --- ## Jellyfin 10.11: The Biggest Update Ever ### EF Core Database Migration This is the headline change. Jellyfin replaced raw SQLite calls scattered throughout the codebase with **Entity Framework Core** - a proper ORM. What this means for you: - **Faster queries** - aggressive in-memory caching minimizes disk reads - **Simpler future migrations** - schema changes are now managed cleanly - **PostgreSQL support on the roadmap** - EF Core opens the door to alternative database backends - **Higher RAM usage** - the trade-off for speed; the system releases memory as needed **First startup after upgrade runs a database migration** that can take several minutes on large libraries. Do not interrupt it. ### Built-In Backup and Restore Administrators can now take live snapshots of the metadata database directly from the dashboard - no more manual `tar` commands or Docker volume copies. Store backups externally and restore if something goes wrong. ### FFmpeg 7.1 The upgrade to FFmpeg 7.1 brings: - 3D LUT-based HDR tone mapping on Intel and Rockchip devices - Dolby Vision Profile 5 tone-mapping - AV1 hardware decoding for Apple VideoToolbox - Improved subtitle rendering during hardware transcoding ### Startup UI and Log Viewer No more staring at a blank screen during migrations. A new web interface shows progress during startup, accessible on the local network. ### 32-bit ARM Dropped Jellyfin 10.11 officially drops 32-bit ARM (armhf) support. Raspberry Pi 1 and 2 are no longer supported. 64-bit OS is now required on ARM platforms. --- ## How to Upgrade Safely ### Step 1: Backup Everything ```bash # Docker docker stop jellyfin tar -czf jellyfin-backup-$(date +%Y%m%d).tar.gz /path/to/jellyfin/config ``` This is non-negotiable. The EF Core migration modifies your database irreversibly. ### Step 2: Check Reverse Proxy Configuration Jellyfin 10.10.7+ requires **explicitly configured trusted proxies**. If your reverse proxy setup did not configure this, it will break after upgrading. Update your Jellyfin network settings before upgrading. ### Step 3: Update the Container ```bash docker pull jellyfin/jellyfin:latest docker start jellyfin ``` ### Step 4: Wait for Migration On first startup after upgrading to 10.11, the EF Core migration runs automatically. For large libraries (10,000+ items), this can take 5-15 minutes. The new Startup UI shows progress - do not restart during this process. ### Step 5: Verify - Check that all libraries appear correctly - Verify users can log in - Test playback on multiple clients - Check that Trickplay images still work --- ## Upgrade Path Summary | From | To | Risk level | Notes | |---|---|---|---| | 10.9.x → 10.10.x | Low | Check FFmpeg requirement | | 10.10.x → 10.11.x | Medium | EF Core migration, backup mandatory | | 10.9.x → 10.11.x | Medium-High | Two major migrations in sequence | --- ## FAQ **Can I downgrade from 10.11 to 10.10?** Not easily. The EF Core migration changes the database format. You would need to restore from a pre-upgrade backup. **Will my plugins still work?** Most plugins need updates for 10.11 due to the EF Core changes. Check each plugin's GitHub for compatibility. **How much RAM does 10.11 use?** More than 10.10 due to in-memory caching. Expect 500 MB-2 GB depending on library size. The system releases memory when needed. --- > **Upgrading your Jellyfin server? Monitor it through the process.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health, session monitoring, and real-time diagnostics for Jellyfin on Android. --- ## Jellyfin Collections and Smart Playlists: Organize Your Library Like Netflix (2026) URL: https://jellywatch.app/blog/jellyfin-collections-smart-playlists-organize-library-2026 Published: 2026-03-03T14:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, collections, playlists, kometa, organization, 2026 # Jellyfin Collections and Smart Playlists (2026) A well-organized Jellyfin library is the difference between "a folder of files" and "a streaming platform." Collections and playlists let you curate your content the way Netflix and Disney+ do - themed rows, franchise groupings, and personalized recommendations. This guide covers every method available in 2026. --- ## Collections vs Playlists: What is the Difference? | Feature | Collection | Playlist | |---|---|---| | **Purpose** | Group related items (franchise, genre) | Ordered list for sequential playback | | **Visibility** | Appears in library as a single item | Appears in Playlists section | | **Auto-update** | Can be automated with plugins | Manual or plugin-driven | | **Cross-library** | Yes (movies + shows together) | Yes | | **Per-user** | Shared (all users see it) | Per-user or shared | --- ## Creating Collections Manually ### Method 1: From the Jellyfin UI 1. Navigate to any movie or show 2. Click the three-dot menu → **Add to Collection** 3. Create a new collection or add to an existing one 4. Repeat for each item ### Method 2: Using folder-based collections Create a folder structure that Jellyfin recognizes as a collection: ``` /media/movies/ Marvel Cinematic Universe [boxset]/ Iron Man (2008).strm The Avengers (2012).strm ``` The `[boxset]` tag in the folder name tells Jellyfin to treat it as a collection. --- ## Automating Collections ### TMDB Box Sets Plugin The easiest way to auto-create franchise collections: 1. Dashboard → Plugins → Catalog → **TMDB Box Sets** 2. Install and restart 3. Run a library scan TMDB Box Sets automatically groups sequels: all Harry Potter films, all Fast & Furious films, etc. ### Kometa (formerly Plex Meta Manager) For advanced collection management, Kometa supports Jellyfin: - Create collections from TMDB lists, Trakt lists, IMDb charts - Add custom poster overlays (4K badge, HDR label, ratings) - Schedule automatic updates - Apply to both movies and TV shows ```yaml libraries: Movies: metadata_path: - pmm: basic - pmm: imdb overlay_path: - pmm: resolution ``` ### Auto Collections Plugin The `jellyfin-plugin-auto-collections` plugin creates dynamic collections based on flexible rules: - Genre-based: "Sci-Fi Classics", "90s Action" - Rating-based: "Top Rated (8+)" - Year-based: "New Releases 2026" - Tag-based: any custom criteria Collections update automatically as your library grows. --- ## Smart Playlists ### jellyfin-smartlists-plugin Creates dynamic playlists that auto-update based on rules: - "Recently Added Movies" - last 30 days - "Unwatched Comedies" - genre + not played - "Short Films" - runtime under 90 minutes - "Family Movie Night" - rated PG + comedy/adventure Rules are defined once; the playlist stays current as your library changes. --- ## Curating the Home Screen ### Custom home screen sections Dashboard → Display → Home Screen Sections Recommended layout: 1. Continue Watching 2. Next Up (TV series) 3. Latest Movies 4. Latest TV Shows 5. Recently Added ### Editors Choice Plugin The `jellyfin-editors-choice-plugin` adds a Netflix-style hero banner to the home page. Manually curate featured content that rotates for all users. ### Media Bar Plugin Adds a featured content bar - great for highlighting new releases or seasonal picks. --- ## Collection Best Practices - **Keep collections focused** - "Marvel Cinematic Universe" is good, "Action Movies" is too broad - **Use custom artwork** - upload collection posters for a polished look - **Combine with Kometa** - automated overlays (4K, HDR badges) make collections look professional - **Limit home screen clutter** - too many sections overwhelm users --- ## FAQ **Can users create their own collections?** Users can create personal playlists. Collections are typically admin-managed and visible to all users. **Do collections work across libraries?** Yes. A collection can include items from different libraries (movies + shows). **How do I add a custom poster to a collection?** Navigate to the collection → Edit Images → Upload a custom poster. **Does Kometa work with Jellyfin?** Yes. Kometa supports Jellyfin alongside Plex and Emby. --- > **Your library looks like a streaming platform - now monitor who is enjoying it.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - viewing statistics, session monitoring, and server health for Jellyfin admins. --- ## Jellyfin for Audiobooks and Podcasts: Complete Setup Guide (2026) URL: https://jellywatch.app/blog/jellyfin-audiobooks-podcasts-setup-guide-2026 Published: 2026-03-01T10:00:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, jellyfin, audiobooks, podcasts, m4b, self-hosting, 2026 # Jellyfin for Audiobooks and Podcasts (2026) Jellyfin is not just for movies and TV shows. With the right setup, it becomes a powerful self-hosted audiobook and podcast server - replacing paid services like Audible or Pocket Casts. This guide covers library organization, metadata, chapter support, and the best clients for listening. --- ## Why Use Jellyfin for Audiobooks? - No DRM - your files, your rules - No monthly subscription - Stream from anywhere (home or remote) - Chapter navigation support - Multi-user with individual progress tracking --- ## Organizing Your Audiobook Library Jellyfin treats audiobooks as a **Music** or **Book** library type. The recommended approach: ### Folder structure ``` /media/audiobooks/ Author Name/ Book Title (Year)/ Book Title.m4b cover.jpg ``` ### File formats | Format | Chapter support | Compatibility | |---|---|---| | **M4B** | Yes (native chapters) | Best - recommended | | **MP3** (single file) | No | Good | | **MP3** (split by chapter) | Manual chapters | Good | | **FLAC** | No | Overkill for speech | **M4B is the gold standard** for audiobooks - it supports embedded chapters, cover art, and metadata in a single file. ### Converting to M4B If your audiobooks are split into multiple MP3 files per chapter: ```bash # Using m4b-tool (Docker) docker run -it --rm -u $(id -u):$(id -g) -v /path/to/audiobook:/mnt sandreas/m4b-tool:latest merge /mnt/input/ --output-file=/mnt/output/Book.m4b ``` m4b-tool automatically detects chapters from file boundaries and embeds them. --- ## Creating the Audiobook Library in Jellyfin 1. Dashboard → Libraries → Add Media Library 2. Content type: **Books** (or Music - both work, Books gives better metadata) 3. Folders: point to your `/media/audiobooks/` directory 4. Metadata: enable **AudioBookShelf** or **Google Books** provider if available 5. Save and let Jellyfin scan ### Metadata tips - Embed cover art directly in M4B files for reliable display - Use consistent `Author / Title` folder naming - Add a `desc.txt` file in the book folder for custom descriptions --- ## Chapter Navigation M4B files with embedded chapters display a chapter list in the Jellyfin player. Users can jump between chapters just like skipping tracks. For MP3-based audiobooks split into files, each file appears as a separate "track" - Jellyfin handles this naturally as a playlist. --- ## Podcasts on Jellyfin Jellyfin does not have a native podcast RSS fetcher, but you can self-host podcasts by: 1. Using **PodFetch** or **Audiobookshelf** to download episodes 2. Organizing downloaded episodes in a Jellyfin Music library 3. Streaming from Jellyfin like any other audio content ### Alternative: Audiobookshelf If audiobooks are your primary use case, consider running **Audiobookshelf** alongside Jellyfin: - Purpose-built for audiobooks and podcasts - Native RSS podcast support - Better chapter and progress tracking - Can share the same media files as Jellyfin --- ## Best Clients for Audiobook Playback | Client | Platform | Audiobook support | |---|---|---| | Jellyfin Web | Browser | Basic (no chapter skip UI) | | Finamp | Android/iOS | Good - music-focused but works | | Symfonium | Android | Excellent - chapter support | | Audiobookshelf app | Android/iOS | Best (if using Audiobookshelf) | --- ## Multi-User Progress Tracking Each Jellyfin user has independent playback progress. If your partner is on chapter 12 and you are on chapter 5, both positions are saved separately. This works across devices - start on your phone, continue on your desktop. --- ## FAQ **Can Jellyfin track audiobook progress across devices?** Yes. Playback position syncs per user across all clients. **What is the best audiobook format for Jellyfin?** M4B - single file with embedded chapters and cover art. **Does Jellyfin support podcast RSS feeds?** Not natively. Use PodFetch or Audiobookshelf for RSS, then serve via Jellyfin. **Can I use Jellyfin and Audiobookshelf together?** Yes. Point both at the same media folder. They coexist without conflict. --- > **Your audiobook server is running - now monitor it from your phone.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health, active sessions, and real-time monitoring for your entire Jellyfin setup. --- ## Fresh Look, New Blog, and Community-Powered Reviews URL: https://jellywatch.app/blog/fresh-look-new-blog-and-community-powered-reviews Published: 2026-02-25T19:04:54+00:00 Author: JellyWatch Team Category: Announcement Tags: ui-ux-redesign, jellywatch, embywatch, discord-reviews, media-tracking, community-updates # Change is in the Air! We’ve been working hard behind the scenes to make your experience with **JellyWatch** and **EmbyWatch** smoother, faster, and more integrated than ever. Whether you’re tracking your favorite series or managing your media library, things are about to look a whole lot better. --- ## 🎨 A Total Design Overhaul First things first: the glow-up. We’ve completely redesigned: - https://jellywatch.app - https://embywatch.app Our goal was simple: **Clarity.** We’ve modernized the interface to ensure that your content takes center stage. You’ll notice: - Improved navigation - Snappier transitions - A layout optimized for both desktop and mobile - A cleaner and more consistent visual experience It’s not just a new coat of paint - it’s a better way to interact with your media. --- ## ✍️ Welcome to the JellyWatch Blog Communication is key to a great project. That’s why we’ve officially launched our blog: -https://jellywatch.app/blog This will be our home for: - Feature announcements and deep dives - Technical updates and behind-the-scenes development insights - Tips and tricks to get the most out of your Jellyfin and Emby setups --- ## 💬 From Discord to the Web: Community Reviews The community is the heartbeat of these apps. To make your voices heard, we’ve implemented a brand-new **Review System**. Instead of filling out forms on the website, you can now share your thoughts directly within our Discord server. **How it works:** 1. You submit a review on Discord 2. The staff manually reviews it 3. Approved reviews are published on both websites This ensures quality, transparency, and authentic community feedback - while keeping everything seamless and connected. --- ## 🔜 What’s Next? We aren’t stopping here. These design changes lay the groundwork for exciting features planned for the rest of the year. Go check out the new sites and let us know what you think! --- > **Try the apps that power it all.** > [Download JellyWatch](https://play.google.com/store/apps/details?id=com.jellywatch.app) for Jellyfin - [Download EmbyWatch](https://play.google.com/store/apps/details?id=com.embywatch.app) for Emby. --- ## Stop Flying Blind: Why Real-Time Jellyfin Monitoring is Essential in 2026 URL: https://jellywatch.app/blog/real-time-jellyfin-monitoring-jellywatch-features Published: 2026-02-24T18:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: monitoring, jellywatch, analytics, troubleshooting, admin ## The "Buffering" Complaint Every admin dreads the text message: *"The server is buffering again."* Without the right tools, troubleshooting this involves digging through cryptic text logs on your server while your user gets frustrated. **JellyWatch** eliminates the guesswork by providing a high-fidelity, real-time monitoring dashboard straight to your Android device. ### 🔴 Real-Time Session X-Ray When you open JellyWatch, the "Active Sessions" tab gives you immediate clarity. You don't just see *who* is watching; you see exactly *how* they are watching: 1. **Transcoding Diagnostics:** The app displays advanced technical badges. Is the video Direct Playing, or is it transcoding? If it’s transcoding, JellyWatch tells you **why** (e.g., unsupported audio codec, subtitle burn-in, or bandwidth limit). 2. **Container & Codec Info:** Instantly verify if that 4K HDR HEVC file is being brutally downscaled to 720p H264. 3. **Session Messaging:** See a user struggling with a transcode? You can send them a custom alert directly to their screen during playback (e.g., *"Please set your client quality to Maximum!"*). ### 🛡️ Iron-Clad Device and User Management Security and control are paramount when sharing your server. * **Device Tracking:** JellyWatch lists every connected client with precise timestamps. Notice a strange IP or an unrecognized smart TV? You can **manage and remove unauthorized devices** instantly with a single tap. * **Live Server Logs:** Need to debug a deeper issue? The app provides a live feed of your Jellyfin server logs with advanced filters. You can spot database errors or plugin crashes while sitting on the couch. ### 📱 Android-First Superpowers Because JellyWatch is a native Android app built with Material Design 3, it leverages the OS to make your life easier: * **Home Screen Widgets:** You don’t even need to open the app. Place a widget on your Android home screen to see active sessions and server status at a glance. * **Push Notifications:** Get alerted the second a new user logs in, a playback session starts, or a crucial system event occurs. * **Integrated Player:** Want to test a file yourself? Use the built-in media player with Picture-in-Picture (PiP) support right inside JellyWatch. ### Final Thoughts Running a Jellyfin server without a dedicated monitoring tool is like driving a car without a dashboard. The free version of JellyWatch covers all your essential Jellyfin monitoring needs, while the one-time-purchase **Watch Pass** unlocks the ultimate administrative power. > **Don't wait for users to complain about buffering.**\r\n> [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time session diagnostics, live logs, and proactive alerts for your Jellyfin server. --- ## Control Your Entire Home Lab from Your Pocket: The JellyWatch "Arr" Integration URL: https://jellywatch.app/blog/jellywatch-arr-stack-homelab-mobile-guide Published: 2026-02-24T17:30:00+00:00 Author: JellyWatch Team Category: Tips Tags: jellywatch, radarr, sonarr, homelab, android ## The Fragmented Home Lab Problem If you run a serious media server, you don’t just run Jellyfin. You are likely running a whole ecosystem: **Radarr** for movies, **Sonarr** for TV shows, **Prowlarr** for indexing, **Jellyseerr** for requests, and a client like **qBittorrent** or **Transmission** to handle the downloads. Historically, checking on your server meant opening five different web interfaces on your phone, zooming in on unoptimized pages, and wrestling with mobile browsers. **JellyWatch changes the game.** It is not just a Jellyfin monitor; it’s a centralized command center for your entire Home Lab. ### 🔄 Deep Integration with the "Arr" Stack With the Premium **Watch Pass** unlocked, JellyWatch steps outside of the Jellyfin boundaries. Here is what you can do directly from the app’s Material Design 3 interface: * **Manage Radarr & Sonarr:** Check your upcoming release calendar, trigger manual searches for missing episodes, and monitor the queue without leaving the app. * **Control Downloaders:** Linked your qBittorrent, Deluge, or Transmission? You can pause, resume, and delete torrents directly from JellyWatch. * **Approve Requests on the Fly:** Thanks to the native **Jellyseerr / Seerr integration**, when a user requests a movie, you get a notification. You can approve or deny it instantly, and watch the status change from "Pending" to "Available". ### 🛠️ Hardware & OS Monitoring Beyond the software, JellyWatch connects to your underlying infrastructure. Whether your Jellyfin instance runs on **TrueNAS, Unraid, Linux, or Windows**, the app pulls vital system information. You can track OS updates, architecture details, and even execute remote system tasks (like safely rebooting the server or stopping a runaway scheduled task in Jellyfin). ### Why This Matters for Server Admins Time is your most valuable resource. By unifying your workflow into a single, native Android app, you go from reacting to server problems to proactively managing your media empire. > **The Community Verdict:** Reddit and Discord communities praise JellyWatch for replacing multiple apps for users whose core focus is the Jellyfin ecosystem. > **Ready to run your entire Home Lab from one app?**\r\n> [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Jellyfin, Radarr, Sonarr, Jellyseerr, and your downloaders, all in one place. --- ## The Ultimate JellyWatch Watch Pass Guide URL: https://jellywatch.app/blog/the-ultimate-jellywatch-watch-pass-guide Published: 2026-02-24T16:53:55+00:00 Author: JellyWatch Team Category: Tutorial Tags: jellywatch, watch-pass, jellyfin Sharing your Jellyfin or Emby server with friends and family is rewarding, but it quickly becomes a logistical challenge. How do you offer a smooth experience without giving away administrator access? How can users request content or report bugs without going through complex third-party applications? The answer is two words: **Watch Pass**. ## What is Watch Pass? Watch Pass is a premium feature of JellyWatch that allows server owners (Admins) to share an "augmented" and simplified version of the application with their users. Rather than having your friends navigate a limited mobile web interface, Watch Pass unlocks a dedicated native interface for them, designed exclusively for media consumption and server interaction. ## The 4 Key Features for the User Thanks to Watch Pass, your users are no longer mere spectators; they benefit from tools worthy of the biggest streaming platforms: - **Personal Dashboard:** Each user accesses their own viewing history, watch statistics, and in-progress content. - **Integrated Media Player:** Full access to the library with a high-performance player supporting Picture-in-Picture (PiP), subtitle management, and audio track switching. - **Request Management (Jellyseerr / Overseerr):** One of the most appreciated functions. Users can search for and request the addition of new movies or TV series directly from the application. - **Problem Reporting:** A dedicated button allows users to instantly report an issue with quality, subtitles, or a playback error. ## How Does It Work? (4-Step Configuration) The setup is a model of simplicity, both for the administrator and the guest. ### Step 1: Add the User The administrator goes to the "Users" screen in their JellyWatch application and invites their friend by simply adding their Jellyfin or Emby username. ### Step 2: Install the Application The guest downloads the JellyWatch (or EmbyWatch) application directly from the Google Play Store. ### Step 3: Simplified Connection The user connects to your server using their own usual credentials. No complex technical configuration is required on their end. ### Step 4: Access the Premium Dashboard Once connected, the application automatically detects the Watch Pass and instantly unlocks the premium user interface with all the features mentioned above. ## Why Switch to Watch Pass in 2026? ### For the Administrator: Total Control Since version 2.0 of the application (January 2026), administrators benefit from "User Mode." This magical button allows you to instantly switch your own interface to that of your users to test their experience or assist them remotely without having to log out. ### For the User: The End of Frustration Your users no longer need to learn how to use Discord or web interfaces to request a movie. Everything is done within a single, native, intuitive, and fast Material Design 3 application. ## A Fair Economic Model Unlike other services that impose monthly subscriptions per user, JellyWatch's Watch Pass often favors a one-time purchase model for the administrator, making it the most cost-effective investment to sustain your Home Lab. ## Conclusion Watch Pass transforms your personal server into a genuine private streaming service. By centralizing statistics, Jellyseerr requests, and technical support, it saves you valuable time while offering your loved ones the comfort they deserve. > **Ready to turn your server into a private streaming platform?**\r\n> [Get JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Watch Pass is available as a one-time purchase inside the app. --- ## Mastering Jellyfin Transcoding: The 2026 Hardware Selection Guide URL: https://jellywatch.app/blog/jellyfin-hardware-transcoding-2026-comprehensive-guide Published: 2026-02-24T16:00:00+00:00 Author: JellyWatch Team Category: Tips Tags: hardware, transcoding, intel, nvidia, 4k, guide ## The "Why" Behind Transcoding Transcoding is the process of converting a video file on-the-fly to fit the device playing it. If you have a 4K HEVC movie but your friend is watching on an old iPhone over a 4G connection, your server must downscale that video in real-time. If you use your **CPU (Software Transcoding)**, your server will likely freeze. You need **Hardware Acceleration (HWA)**. ### 1. The Intel QuickSync Revolution (QSV) In 2026, Intel remains the king of budget-friendly media servers. Their Integrated GPUs (iGPUs) are incredibly efficient at video processing. - **The N100 Phenomenon:** A $150 mini-PC with an Intel N100 can handle 3 to 4 simultaneous 4K HDR to 1080p transcodes while consuming less than 10W of power. - **AV1 Support:** If you are building a server today, look for Intel 11th Gen or newer (like the 12th/13th/14th Gen) to support the new **AV1 codec**, which offers better quality at lower bitrates. ### 2. NVIDIA NVENC: Raw Power For massive servers (30+ users), NVIDIA is the way to go. - **Consumer vs Pro:** Cards like the RTX 4060 are great but have a "session limit" (usually 5 concurrent streams) in the drivers. - **The Solution:** Use the "NVIDIA Patch" (community-made) to unlock unlimited streams on consumer hardware. ### 3. The Challenge of HDR Tone Mapping This is where most admins fail. HDR movies look "washed out" (grey/dull) when transcoded to SDR screens unless you enable **Hardware Tone Mapping**. - **Windows Users:** Tone mapping requires specific drivers and often performs worse than on Linux. - **Linux/Docker Users:** This is the gold standard. By mapping `/dev/dri` into your Jellyfin container, you get perfect, vibrant colors even when downscaling. ### Comparison Table: Best Hardware for 2026 | Hardware | Type | Best For | 4K Transcodes | | :--- | :--- | :--- | :--- | | **Intel N100** | iGPU | Low-power / Budget | 3-4 | | **Intel i5-13500** | iGPU | Home Server Pro | 10-15 | | **NVIDIA RTX 4060** | dGPU | Heavy multi-user | 20+ | | **Apple M2/M3** | Silicon | Mac Mini hosting | 5-8 | ### 🛠️ Configuration Checklist 1. **Driver Check:** On Linux, run `intel_gpu_top` or `nvidia-smi` to see if your GPU is actually working during playback. 2. **Throttle Transcoding:** Enable this in Jellyfin settings to save power. It stops the GPU from "racing" too far ahead of the viewer. 3. **JellyWatch Monitoring:** Use the **JellyWatch Dashboard** to see the "Transcode Reason". It will tell you if the video is transcoding because of a bitrate limit, an unsupported codec, or a subtitle burn-in issue. ### Final Verdict If you are starting today, buy a **Mini PC with an Intel N100 or i5**. It’s the most cost-effective way to get a professional-grade Jellyfin experience with perfect HDR-to-SDR tone mapping. > **Want to see your GPU and CPU stats in real time?**\r\n> [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor transcoding load, active sessions, and hardware usage directly from your Android phone. --- ## Jellyfin Docker Compose 2026: Complete Setup with GPU Passthrough (Intel QSV & NVIDIA) URL: https://jellywatch.app/blog/jellyfin-docker-compose-complete-setup Published: 2026-02-22T15:23:08+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, docker, jellyfin, self-hosting, devops ## The Ultimate Jellyfin Docker Compose Setup ```yaml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest volumes: - ./jellyfin/config:/config - /path/to/media:/media:ro devices: - /dev/dri:/dev/dri restart: unless-stopped radarr: image: linuxserver/radarr:latest environment: - PUID=1000 - PGID=1000 volumes: - ./radarr:/config - /path/to/media/movies:/movies - /path/to/downloads:/downloads restart: unless-stopped sonarr: image: linuxserver/sonarr:latest environment: - PUID=1000 - PGID=1000 volumes: - ./sonarr:/config - /path/to/media/tv:/tv - /path/to/downloads:/downloads restart: unless-stopped jellyseerr: image: fallenbagel/jellyseerr:latest volumes: - ./jellyseerr:/app/config restart: unless-stopped volumes: caddy_data: ``` ### Caddyfile ``` jellyfin.yourdomain.com { reverse_proxy jellyfin:8096 } requests.yourdomain.com { reverse_proxy jellyseerr:5055 } ``` ### Deploy ```bash docker compose up -d ``` ### Post-Setup 1. Complete Jellyfin wizard at `https://jellyfin.yourdomain.com` 2. Configure Radarr/Sonarr 3. Install [JellyWatch](https://jellywatch.app) for mobile monitoring Runs on an Intel N100 with 4 GB RAM. --- > **Your stack is deployed - now monitor it from your pocket.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - active sessions, server health, and Arr stack control in one Android app. *Deploy once, enjoy forever.* --- ## JellyWatch v2.0: Major Update With New Features and Improved Performance URL: https://jellywatch.app/blog/jellywatch-v2-release-notes Published: 2026-02-22T15:23:08+00:00 Author: JellyWatch Team Category: Release Tags: release, update, jellywatch, announcement # 🚀 Version 2 - Major Update Version **v2** introduces a revolutionary **User Interface** alongside the existing administrator interface, enabling premium owners to share their subscription with friends and family through the new **Watch Pass** system. This update transforms the app into a complete media management ecosystem where administrators maintain full control while seamlessly sharing access with their users through an intuitive, feature-rich interface. --- ## 📋 Changelog - Version 2 ### 🎯 Watch Pass - Premium Sharing System The **Watch Pass** is a groundbreaking feature that allows **Admin Premium owners** to share their subscription with friends and family. Users added to the Watch Pass gain access to a dedicated **User Interface** designed specifically for media consumption and requests. #### Watch Pass Plans | Plan | Type | Target | Description | |------|------|--------|-------------| | **Watch Pass - Unlimited** | OTP (Owner) | Admin Premium Owners | Share premium access with unlimited users | #### How It Works - **Admin Premium owners** purchase a Watch PASS. - Owner adds friends/family to their Watch Pass user list via **User Management** - Added users automatically gain access to the **User Interface** - Users enjoy full media browsing, requests, and tracking features - Owner retains complete control over who has access ### 🖥️ Dual Interface System #### Administrator Interface (Unchanged) - Full server management and monitoring - Complete control over users, devices, and settings - Advanced analytics and statistics - Library management - **User Management** with Watch Pass integration #### User Interface (NEW) - **Beautiful, streamlined dashboard** optimized for media consumption - **Personal media player** with viewing history - **Request system** for movies and TV shows (Seerr/Jellyseerr integration) - **Issue tracking** for reporting problems - Locked features clearly indicated with "Watch Pass Required" - Clean separation from administrator functionality ### 🔄 Switch UI Mode (Owner Feature) A new feature exclusively for **Admin Premium owners** with an active Watch Pass: - **Switch between Admin and User modes** directly from the User Management screen - Experience the app exactly as your users see it - **Smart requirements**: - Owner must add themselves to the Watch Pass user list first - Button is disabled with helpful guidance if not yet added - Seamless switching back to Admin mode from within User Interface - Perfect for testing and understanding the user experience - Badge indicators show current mode (Admin/User) ### 🎬 Media, Requests & Issues (User Features) Users in the Watch Pass enjoy: - **Comprehensive media browsing** with rich metadata and artwork - **Request movies and TV shows** through integrated Seerr/Jellyseerr - **Track request status** (pending, approved, available) - **Report issues** with specific episodes or movies - **View personal watch history** and recommendations - **Beautiful, responsive UI** optimized for entertainment ### ⭐ Premium System Overview #### For Administrators 1. **Admin Premium** (One-time purchase, unchanged) - Full administrative features - Complete server control 2. **Watch Pass Subscription** (Optional add-on) - Choose between 5 users or unlimited - Share your premium with others - Manage users through intuitive interface #### For Users - **Free access** when added to an owner's Watch Pass - No subscription required - Full access to User Interface features - Seamless experience without separate accounts ### 🛠️ Technical Improvements - **Performance optimizations** across both interfaces - **Enhanced error handling** with user-friendly messages - **Improved navigation** with animated transitions - **Tutorial system** for new users in User Interface - **Avatar loading** with fallback support - **Multi-selection tools** for batch operations - **Responsive design** for various screen sizes ### 🎨 UI/UX Enhancements - **Modern Material 3 design** throughout User Interface - **Animated mascot** with premium accessories - **Premium badges** indicating current status - **Contextual help messages** for locked features - **Smooth animations** and transitions - **Dark mode optimized** color schemes --- ## 🌟 Summary Version 2 represents a fundamental shift in how you share and enjoy your media server. Admin Premium owners can now extend their subscription to friends and family through Watch Pass, while maintaining complete control. The new User Interface provides an exceptional experience focused on what matters most: discovering and enjoying content.\r\n\r\n---\r\n\r\n> **JellyWatch v2 is available now on Google Play.**\r\n> [Download or update JellyWatch](https://play.google.com/store/apps/details?id=com.jellywatch.app) and explore everything the new release has to offer. --- ## Jellyfin on Raspberry Pi 5 in 2026: What It Can (and Cannot) Do - Complete Setup Guide URL: https://jellywatch.app/blog/jellyfin-raspberry-pi-5-guide Published: 2026-02-22T15:23:08+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, raspberry-pi, jellyfin, hardware, self-hosting ## Running Jellyfin on a Raspberry Pi 5 ### What You Need - Raspberry Pi 5 (4/8 GB) - MicroSD 32GB+ or NVMe SSD - USB hard drive for media - Official 27W USB-C PSU - Ethernet cable - Active cooler ### Step 1: Install OS Flash **Raspberry Pi OS Lite (64-bit)** with Pi Imager. Enable SSH. ### Step 2: Configure ```bash ssh pi@jellyfin.local sudo apt update && sudo apt upgrade -y ``` ### Step 3: Mount Media Drive ```bash sudo mkdir -p /media/storage echo "/dev/sda1 /media/storage ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab sudo mount -a ``` ### Step 4: Install Jellyfin ```bash curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash sudo systemctl enable --now jellyfin ``` Access: `http://192.168.1.100:8096` ### Performance Tips - **Direct Play only** - Pi 5 has no HW transcoding - Use NVMe HAT for faster scanning - Set `gpu_mem=16` in config.txt - Use H.264 MP4 for max compatibility ### Limitations - No hardware transcoding - 2-3 direct play streams max - USB 3.0 bandwidth limit Monitor your Pi server with [JellyWatch](https://jellywatch.app) - track CPU usage, storage space, and active streams without touching the Pi. --- > **Running Jellyfin on a Pi? Keep an eye on it remotely.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - server health and session monitoring on your Android phone. *A $100 media server in your palm.* --- ## Pi 5 vs Intel N100: When Should You Upgrade? The Raspberry Pi 5 is a fantastic entry point, but the Intel N100 mini PC has become the go-to upgrade path. Here is an honest comparison to help you decide. ### Head-to-Head Comparison | Criteria | Raspberry Pi 5 (8 GB) | Intel N100 Mini PC | |---|---|---| | **Price** | ~$80 + accessories (~$120 total) | ~$150-180 complete | | **CPU** | ARM Cortex-A76 (4 cores, 2.4 GHz) | x86 Alder Lake-N (4 cores, 3.4 GHz boost) | | **RAM** | 8 GB LPDDR4X | 8-16 GB DDR4/DDR5 | | **Hardware transcoding** | None | Intel Quick Sync (H.264, H.265, AV1 decode) | | **Simultaneous streams** | 2-3 Direct Play only | 5-8 (transcoding included) | | **Power consumption** | 12-15W | 20-30W | | **Storage** | MicroSD or NVMe HAT | Built-in NVMe M.2 slot | | **4K playback** | Direct Play only, no HDR tone-mapping | Full 4K transcode + HDR tone-mapping | | **Noise** | Silent (with passive cooler) | Silent (fanless models available) | ### When to Stay on Pi 5 - You have **1-3 users** who all Direct Play (compatible clients) - Your library is already encoded in H.264/H.265 with AAC audio - You want the **lowest power bill** possible - You enjoy the Pi ecosystem (GPIO, Pi-hole on the same device, etc.) - Budget is under $100 ### When to Upgrade to N100 - You have **4+ users** or users on varied devices (browsers, phones, old TVs) - You need **hardware transcoding** (users cannot always Direct Play) - You want **HDR tone-mapping** for 4K content on SDR displays - You plan to run the full *arr stack (Radarr, Sonarr, Bazarr) alongside Jellyfin - You want native NVMe storage without adapters ### The Verdict The Pi 5 is perfect for a personal or small family server where everyone uses compatible clients (Jellyfin Media Player, Findroid, Swiftfin). The moment you share your server with friends or have users on web browsers and Samsung TVs, the N100 pays for itself in transcoding capability alone. --- ## Docker vs Native Installation on Raspberry Pi 5 Both methods work on the Pi 5, but they have different trade-offs. ### Native Installation (APT) ```bash curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash sudo systemctl enable --now jellyfin ``` **Pros:** - Slightly lower RAM overhead (~50-100 MB less) - Simpler for single-service setups - Direct access to hardware without device mapping - Easier to troubleshoot for Linux beginners **Cons:** - Updates require manual apt commands - Harder to backup (scattered config files) - Conflicts possible with other services - Rollback is difficult if an update breaks things ### Docker Installation ```yaml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin volumes: - ./config:/config - ./cache:/cache - /media/storage:/media:ro ports: - 8096:8096 restart: unless-stopped ``` ```bash sudo apt install docker.io docker-compose-plugin -y docker compose up -d ``` **Pros:** - One-command updates: `docker compose pull && docker compose up -d` - Easy backup: just tar the `./config` folder - Instant rollback: pin a previous image tag - Run multiple services cleanly (Jellyfin + Radarr + Sonarr + Bazarr) - Consistent behavior across Pi OS versions **Cons:** - ~200 MB additional RAM overhead for Docker daemon - Slightly more complex initial setup - Device passthrough requires explicit mapping ### Recommendation for Pi 5 **Use Docker** if you plan to run any companion services (Radarr, Sonarr, Jellyseerr, Bazarr). The isolation and easy updates are worth the small RAM overhead on an 8 GB Pi 5. **Use native** only if Jellyfin is the sole service on the Pi and you want maximum RAM available for library scanning. ### Performance Tips for Both Methods 1. **Use an NVMe SSD** via the Pi 5 M.2 HAT for the config/cache - microSD is too slow for metadata scanning 2. **Set `gpu_mem=16`** in `/boot/firmware/config.txt` - Jellyfin does not use the Pi GPU, so free that RAM 3. **Disable swap on microSD** if using NVMe - swap on SD cards kills them 4. **Use an active cooler** - sustained library scans will thermal throttle without cooling 5. **Mount media via USB 3.0** or NFS from a NAS - avoid storing media on the boot drive --- > **Running Jellyfin on a Pi 5? Monitor CPU thermals and stream count remotely.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - see active sessions, CPU load, and storage space on your Android phone without SSHing into the Pi. --- ## JellyWatch vs Tautulli: Best Monitoring Solution for Jellyfin in 2026 URL: https://jellywatch.app/blog/jellywatch-vs-tautulli-jellyfin-monitoring Published: 2026-02-22T15:23:08+00:00 Author: JellyWatch Team Category: Comparisons Tags: comparison, monitoring, jellywatch, tautulli, jellyfin ## JellyWatch vs Tautulli for Jellyfin Both tools monitor your media server, but they take very different approaches. ### Overview | Feature | JellyWatch | Tautulli | |---|---|---| | **Platform** | Mobile (Android) | Web-based | | **Target server** | Jellyfin native | Plex (Jellyfin via fork) | | **Setup** | Install app, connect | Deploy Docker container | | **Push notifications** | Built-in | Via external services | | **Watch history** | Per-user, mobile | All users, web dashboard | | **Recommendations** | Yes | No | ### JellyWatch: Mobile-First **Best for:** Personal use, on-the-go monitoring, recommendations. - Install from Play Store in seconds - No server-side deployment needed - Smart recommendations engine - Clean, modern Android UI - Watch stats and history ### Tautulli: Web Dashboard **Best for:** Server admins managing many users, detailed analytics. - Rich web-based graphs and charts - Detailed per-user analytics - Newsletter generation - API for integrations - Custom notification rules - Concurrent stream monitoring ### Can You Use Both? Absolutely. They complement each other: - **Tautulli** for deep admin analytics on your desktop - **JellyWatch** for personal tracking and monitoring on the go ### Our Recommendation - **Solo user / small family** → [JellyWatch](https://jellywatch.app) is all you need - **Server admin with 10+ users** → Use both - **Plex user** → Tautulli (JellyWatch is Jellyfin-specific) --- > **Solo user or small family on Jellyfin? JellyWatch is all you need.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - personal stats, monitoring, and smart recommendations in one app. *Different tools, different strengths. Pick what fits your workflow.* --- ## How to Set Up JellyWatch With Your Jellyfin Server in Under 2 Minutes URL: https://jellywatch.app/blog/how-to-set-up-jellywatch-with-jellyfin Published: 2026-02-22T15:22:12+00:00 Author: JellyWatch Team Category: Tips Tags: guide, setup, jellyfin, getting-started ## How to Set Up JellyWatch With Your Jellyfin Server Getting started with JellyWatch takes less than two minutes. ### Prerequisites - A running **Jellyfin server** (version 10.8+) - An Android device with JellyWatch installed - Your Jellyfin server URL and credentials ### Step 1: Install JellyWatch Download from the [Google Play Store](https://play.google.com/store/apps/details?id=com.jellywatch.app). ### Step 2: Enter Your Server Details Open JellyWatch → tap **Add Server**. Enter your URL: - Local: `http://192.168.1.100:8096` - Domain: `https://jellyfin.yourdomain.com` > **Tip:** Always use `https://` with a reverse proxy for security. ### Step 3: Log In Credentials are stored securely using Android's encrypted storage. ### Step 4: Explore JellyWatch syncs your **watch history**, **library metadata**, and **playback progress** automatically. ### Troubleshooting | Problem | Solution | |---|---| | Cannot connect | Verify your server URL is accessible | | SSL errors | Check your certificate validity | | Slow sync | Check server bandwidth | --- > **Two minutes is all it takes.**\r\n> [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) and connect your Jellyfin server right now.\r\n\r\n---\r\n\r\n*Questions? Join our [Discord](https://discord.com/invite/JRkt5U5uZs).* --- ## How to Track Your Watch History Across All Devices With JellyWatch URL: https://jellywatch.app/blog/track-watch-history-across-all-devices Published: 2026-02-22T15:22:12+00:00 Author: JellyWatch Team Category: Tips Tags: features, watch-history, tracking, jellyfin ## Track Your Watch History Across All Devices Using Jellyfin on multiple devices makes tracking confusing. JellyWatch creates a **unified watch history**. ### How JellyWatch Solves This #### Unified Timeline Every movie, episode, and track appears in a single feed: - **Title and poster** - **Date/time** of playback - **Device name** - **Duration** and completion % #### Smart Filters Filter by **media type**, **date range**, **completion**, or **device**. #### Watch Statistics - Total hours watched this week/month/year - Most-watched genres - Average completion rate - Peak viewing hours - Longest binge streak ### Privacy First All processing happens **locally**. JellyWatch never sends your data to external servers. ### Getting Started 1. Install from [Play Store](https://play.google.com/store/apps/details?id=com.jellywatch.app) 2. Connect your Jellyfin server 3. Navigate to **History** tab --- > **Never lose track of what you watched.**\r\n> [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - your unified watch history, across every device. --- ## How to Secure Your Jellyfin Server: The Complete Security Checklist URL: https://jellywatch.app/blog/secure-your-jellyfin-server-complete-guide Published: 2026-02-22T15:22:12+00:00 Author: JellyWatch Team Category: Tutorial Tags: security, jellyfin, guide, self-hosting ## How to Secure Your Jellyfin Server ### Security Checklist - Reverse proxy with SSL/TLS - Strong passwords - Fail2ban / rate limiting - Firewall rules - Regular updates - Disable unused features ### 1. Reverse Proxy With SSL Never expose port 8096 directly. **Caddy (simplest):** ``` jellyfin.yourdomain.com { reverse_proxy localhost:8096 } ``` Automatic SSL - two lines. ### 2. Strong Authentication - 16+ character passwords - Disable guest access - Never share admin credentials ### 3. Fail2Ban ```ini [jellyfin] enabled = true maxretry = 5 bantime = 3600 ``` ### 4. Firewall ```bash sudo ufw allow 443/tcp sudo ufw deny 8096/tcp ``` ### 5. Stay Updated ```bash docker pull jellyfin/jellyfin:latest docker compose up -d ``` ### 6. Disable Unused Features Turn off DLNA, remote access (if using reverse proxy), remove unused plugins. JellyWatch monitors failed logins and unusual activity from your phone - get alerts the moment something looks wrong. --- > **Keep an eye on your server's security from anywhere.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time alerts, session monitoring, and device management in your pocket. *Security is ongoing. Review this checklist regularly.* --- ## Self-Hosting a Media Server in 2025: A Beginner's Complete Guide URL: https://jellywatch.app/blog/self-hosting-media-server-beginners-guide Published: 2026-02-22T15:22:12+00:00 Author: JellyWatch Team Category: Tutorial Tags: guide, self-hosting, beginners, jellyfin ## Self-Hosting a Media Server: Beginner's Guide ### Why Self-Host? - No monthly fees - Your content, your rules - Full privacy - Offline access - Full quality - no compression ### Hardware Options | Option | Streams | Power | Price | |---|---|---|---| | Raspberry Pi 5 | 2-3 (direct) | 15W | ~$80 | | Intel N100 Mini PC | 3-5 (transcode) | 25W | ~$150 | | Old Desktop + GPU | 8+ | 100W+ | ~$300 | ### Install Jellyfin (Docker) ```yaml services: jellyfin: image: jellyfin/jellyfin:latest volumes: - ./config:/config - /path/to/media:/media ports: - 8096:8096 restart: unless-stopped ``` ```bash docker compose up -d ``` ### Organize Your Media ``` /media/ movies/ Movie Name (2024)/ Movie Name (2024).mkv tv/ Show Name/ Season 01/ Show Name S01E01.mkv ``` ### Next Steps 1. Set up remote access with a reverse proxy 2. Enable hardware transcoding 3. Install plugins 4. Install [JellyWatch](https://jellywatch.app) for mobile monitoring --- > **Your server is live - now keep it under control.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - monitor active streams, get alerts, and manage your Jellyfin server from your phone. *Welcome to self-hosting!* --- ## Monitor Your Jellyfin Server Health From Your Phone With JellyWatch URL: https://jellywatch.app/blog/jellywatch-server-monitoring-features Published: 2026-02-22T15:22:12+00:00 Author: JellyWatch Team Category: Tips Tags: features, monitoring, server, jellywatch ## Monitor Your Jellyfin Server From Your Phone ### What You Can Monitor #### Active Streams - User, device, title, playback method - Bitrate, resolution, progress #### Server Performance - CPU and RAM usage - Network throughput - GPU utilization #### Storage - Free space per drive - Growth rate and alerts ### Smart Alerts - Server goes offline - CPU above 90% sustained - Failed login attempts - New media added ### Dashboard ``` ┌─────────────────────────┐ │ Status: Online │ │ Uptime: 14 days │ │ Streams: 3 active │ │ CPU: 45% GPU: 30% │ │ Storage: 2.1 TB free │ └─────────────────────────┘ ``` ### Why It Matters Without monitoring: users complain before you notice. With JellyWatch: proactive alerts, quick diagnosis from anywhere. > **Your server deserves better than silence.** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - real-time dashboards, smart alerts, and full server visibility from your phone. --- *Your server deserves a watchdog.* --- ## Watch Pass: Share the JellyWatch Experience URL: https://jellywatch.app/blog/watch-pass-share-the-jellywatch-experience Published: 2026-02-22T13:10:00+00:00 Author: JellyWatch Team Category: Tutorial Tags: watch-pass, premium, jellywatch, sharing, media-server, update # 🎟️ Watch Pass: Share the JellyWatch Experience JellyWatch is designed to make media management and requests simple and efficient. With **Watch Pass**, you can extend that experience to the people you trust - without requiring everyone to purchase their own premium access. Watch Pass is built for administrators who want to share controlled access while keeping full oversight. --- ## 🔑 What Is Watch Pass? Watch Pass is a **premium sharing feature** that allows administrators to grant access to additional users. With Watch Pass, you can: - Share premium features with trusted users - Provide a dedicated user interface - Maintain full administrative control - Manage access and permissions easily It’s a flexible and scalable way to grow your JellyWatch ecosystem. --- ## ⚙️ How It Works ### 1️⃣ One-Time Purchase Watch Pass is available as a **one-time purchase** rather than a recurring subscription. This ensures transparency and simplicity. ### 2️⃣ Add and Manage Users From the admin dashboard, you can: - Add approved users - Control access rights - Manage permissions individually ### 3️⃣ Dedicated User Experience Users added through Watch Pass benefit from: - A clean and intuitive interface - Media browsing and search tools - Content request functionality - Request tracking Meanwhile, the administrator keeps complete control over the system. --- ## 🎯 Key Benefits | Benefit | Description | |----------|-------------| | 💳 One-Time Payment | No recurring subscription | | 👥 Easy Sharing | Invite trusted users quickly | | 🔐 Full Control | Admin manages all permissions | | 🚀 Optimized UI | Dedicated experience for end users | --- ## 🛠️ Who Is Watch Pass For? Watch Pass is ideal for: - Media server administrators - Families sharing content access - Friends managing shared libraries - Trusted community members If you manage a JellyWatch instance, Watch Pass helps you extend its value without adding complexity. --- ## 📌 Final Thoughts Watch Pass enhances JellyWatch by combining **simplicity, flexibility, and control**. It allows you to expand access, improve collaboration, and maintain full administrative authority - all with a straightforward one-time purchase. Ready to share the experience? Activate Watch Pass from the Premium tab in JellyWatch and start inviting your users today. --- > **Want to give your users a proper streaming experience?** > [Get JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) - Watch Pass is available as a one-time purchase inside the app. --- ## Welcome to JellyWatch URL: https://jellywatch.app/blog/welcome-to-jellywatch Published: 2026-02-21T21:47:06+00:00 Author: JellyWatch Team Category: Other Tags: announcement, jellywatch, release ## Welcome to JellyWatch! We're thrilled to announce the launch of **JellyWatch** - the ultimate companion app for your Jellyfin media server. ### What is JellyWatch? JellyWatch brings your Jellyfin experience to the next level with: - **Watch History Tracking** - Keep track of everything you've watched across all your devices - **Smart Recommendations** - Get personalized suggestions based on your viewing habits - **Server Management** - Monitor and manage your Jellyfin server on the go - **Beautiful Interface** - A modern, intuitive design that feels native on every platform ### Getting Started Download JellyWatch from the [Google Play Store](https://play.google.com/store/apps/details?id=com.jellywatch.app) and connect your Jellyfin server in seconds. Stay tuned for more updates, tips, and feature announcements right here on our blog! - The JellyWatch Team --- > **Ready to get started?** > [Download JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) and connect your Jellyfin server in seconds. # Documentation > Complete documentation content for AI agents. 70 pages. ## Getting Started --- ### Introduction to JellyWatch for Android TV URL: https://jellywatch.app/doc/tv-introduction Category: Getting Started Author: JellyWatch Updated: 2026-10-06 Discover JellyWatch for Android TV - a native 10-foot interface for your Jellyfin and Emby media servers, built for remote control navigation. # JellyWatch for Android TV **JellyWatch for Android TV** is the dedicated TV companion app for your **Jellyfin** and **Emby** media servers. Designed from the ground up for the **10-foot experience**, it puts your entire media library on the big screen with a fully D-pad-navigable interface. > This app is separate from the **JellyWatch** Android phone/tablet app. It is optimised for TV remotes and large screens - not touch. ## What You Can Do | Feature | Description | |---------|-------------| | Browse your library | Movies, series, music, books, live TV, photos on the big screen | | Play anything | Native video player with subtitle/audio track switching | | Continue Watching | Pick up where you left off, across all devices | | Home Screen Channels | "Continue Watching" and "Recently Added" rows on the Android TV launcher | | Match Frame Rate | Auto-switch TV display mode to match video frame rate (24p, 25p, 30p...) | | SyncPlay | Watch together with other users in real time (Jellyfin only) | | Request content | Browse and request movies/series via Jellyseerr or Seerr | | Achievements | Earn XP and unlock badges as you watch | | Admin Dashboard | Server session monitoring for admins | | Screensaver | Built-in inactivity screensaver with your server artwork | ## Supported Server Types | Server | Minimum version | |--------|-----------------| | Jellyfin | 10.8+ | | Emby | 4.7+ | ## Supported Devices | Device type | Requirement | |-------------|-------------| | Android TV | Android 6.0 (API 23)+ | | Google TV | All versions | | Amazon Fire TV | Fire OS 6+ (Fire TV flavour) | | Nvidia Shield | Fully supported | ## Download - **Google Play Store** - search *JellyWatch TV* or visit the app page. - **Amazon Appstore** - a dedicated Fire TV build is available. > JellyWatch for Android TV is a third-party app. It is not affiliated with or endorsed by the Jellyfin or Emby projects. --- ### Introduction URL: https://jellywatch.app/doc/introduction Category: Getting Started Author: JellyWatch Updated: 2026-10-12 Discover what JellyWatch is and what you can do with it. # What is JellyWatch? **JellyWatch** is the ultimate **Android companion app** for your **Jellyfin** and **Emby** media servers. It gives you full control and real-time visibility into your media server, right from your phone or tablet. ## Key Features | Feature | Description | |---------|-------------| | Real-time session monitoring | See who is streaming, what they're watching, playback progress, codec and transcoding details. | | Multi-server management | Connect and switch between multiple Jellyfin and Emby instances. | | Library browsing | Explore your movies, series, music, and books directly in the app. | | Integrated media player | Play content from your server on your device. | | Push notifications | Get alerted on new streams, new content, and media requests. | | Advanced statistics | Detailed per-user watch time, viewing trends, and media analytics. | | External service integrations | Connect Seerr, Jellyseerr, Radarr, Sonarr, torrent clients, TrueNAS, Unraid, and more. | | Home screen widget | Monitor active sessions without opening the app. | | Dynamic Island | See active sessions in a floating overlay on supported devices. | | Customizable dashboard | Reorder and toggle dashboard sections to fit your workflow. | ## Requirements | Requirement | Minimum | |-------------|---------| | Android | 8.0 (Oreo) | | Jellyfin server | 10.8+ | | Emby server | 4.7+ | | Network | Local or remote (HTTPS recommended) | ## Download - [Get JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) > **Note:** JellyWatch is an independent third-party application. It is not affiliated with or endorsed by the Jellyfin or Emby projects. --- ### Installation on Android TV URL: https://jellywatch.app/doc/tv-installation Category: Getting Started Author: JellyWatch Updated: 2026-09-01 How to install JellyWatch on your Android TV, Google TV, or Fire TV device. ## Google Play Store (Android TV / Google TV) 1. Open the **Google Play Store** on your TV. 2. Search for **JellyWatch TV**. 3. Select the app and press **Install**. 4. Once installed, launch it from your app row or home screen. ## Amazon Appstore (Fire TV) 1. Open the **Amazon Appstore** on your Fire TV. 2. Search for **JellyWatch**. 3. Select the app and press **Get**. ## Sideloading (APK) If your device does not have access to a store: 1. Enable **Unknown sources** in your device Developer Options. 2. Transfer the APK to your device (USB drive or `adb install`). 3. Install with a file manager or via `adb install jellywatch-tv.apk`. ## First Launch When you open the app for the first time you will see an **animated splash screen**, then the login screen. Enter your server URL (Jellyfin or Emby) and credentials to get started. > The app keeps the screen on while in the foreground and manages its own inactivity screensaver - your TV will not fall asleep mid-browse. --- ### Installation URL: https://jellywatch.app/doc/installation Category: Getting Started Author: JellyWatch Updated: 2026-10-12 How to download and install JellyWatch on your Android device. ## Download JellyWatch JellyWatch supports both **Jellyfin** and **Emby** servers and is available on the **Google Play Store**: - [Get JellyWatch on Google Play](https://play.google.com/store/apps/details?id=com.jellywatch.app) **Installation Steps:** 1. Open the Play Store on your Android device. 2. Search for **JellyWatch**. 3. Tap **Install**. ## First Launch When you open JellyWatch for the first time, an interactive **tutorial overlay** will guide you through the main areas of the app: 1. **Welcome step** - overview of the app. 2. **Dashboard tab** - your server's real-time activity. 3. **Users tab** - manage server users. 4. **Libraries tab** - browse your media. 5. **Activity tab** - viewing history. 6. **Bottom menu** - navigation across all sections. 7. **Settings** - configure the app. ## Permissions | Permission | Purpose | |------------|---------| | Internet | Connect to your Jellyfin or Emby server | | Notifications | Push alerts for streams, new content, and requests | | Foreground service | Background session monitoring and Dynamic Island | | Overlay (optional) | Dynamic Island floating window | | Accessibility (optional) | Dynamic Island on lock screen | --- ### Connecting Your Server on Android TV URL: https://jellywatch.app/doc/tv-connecting-server Category: Getting Started Author: JellyWatch Updated: 2026-09-14 Step-by-step guide to adding your Jellyfin or Emby server to JellyWatch for Android TV. ## Login Screen When you launch JellyWatch for Android TV for the first time, you land on the **Login screen**. ### Standard Login 1. Enter your **Server URL** (e.g. `https://jellyfin.yourdomain.com` or `https://emby.yourdomain.com`). 2. JellyWatch automatically detects whether the server is **Jellyfin** or **Emby** and selects the correct type. You can adjust the selection manually if needed. 3. Enter your **username** and **password**. 4. Press **Connect**. ### Quick Login Tap **Quick Login** to use a **QR code or short code** scanned from another JellyWatch session - useful when typing a password with a TV remote is inconvenient. ## Navigating the Login Screen with a Remote - Use the **D-pad** (up / down / left / right) to move between fields. - Press **Select / OK** to activate a focused field or button. - The on-screen keyboard appears automatically when a text field is focused. ## Server Type Detection After you enter the server URL, JellyWatch probes the server to detect whether it is running **Jellyfin** or **Emby**. The detected type is shown on screen and can be overridden with the server type selector. ## Dual URL Mode JellyWatch for Android TV supports **dual URL mode** (local + external) for both Jellyfin and Emby servers. Configure it from **Settings -> Servers** after your first login. ## Multiple Accounts You can add multiple accounts -- different servers (Jellyfin or Emby) or different users on the same server. Switch accounts from the **avatar menu** in the sidebar. ## Troubleshooting | Problem | Solution | |---------|----------| | Cannot reach server | Verify the URL in a browser on another device | | SSL error | Enable self-signed certificate support in Settings -> Servers | | Login fails | Check username/password; verify API access is not restricted | | Slow keyboard input | Use Quick Login or a Bluetooth keyboard | | Wrong server type detected | Use the server type selector on the login screen to switch between Jellyfin and Emby | --- ### Connecting Your FIrst Server URL: https://jellywatch.app/doc/connecting-your-first-server Category: Getting Started Author: JellyWatch Updated: 2026-10-12 Step-by-step guide to adding your Jellyfin or Emby server to JellyWatch. ## Adding a Server 1. Open JellyWatch and go to **+ Configure Servers** screen. 2. Enter your server URL (e.g. `https://jellyfin.yourdomain.com`). 3. Enter your **username** and **password**. 4. Tap **Connect**. ## Adding a Server 1. Open JellyWatch and go to **+ Configure Servers** screen. 2. Enter your server URL (e.g. `https://jellyfin.yourdomain.com`). 3. Enter your **username** and **password**. 4. Tap **Connect**.
add-server login-server
## Dual URL Mode JellyWatch supports **dual URL mode** for automatic local/external switching: - **Local URL** - used when you're on the same network as your server (e.g. `http://192.168.1.100:8096`). - **External URL** - used when you're away from home (e.g. `https://jellyfin.yourdomain.com`). - Enable **Auto Switch** and JellyWatch will automatically pick the correct URL based on your current network. ## Self-Signed Certificates If your server uses a self-signed SSL certificate, enable the **Allow self-signed certificates** toggle in the server configuration dialog. ## Custom Headers You can add custom HTTP headers (e.g. for reverse proxy authentication) when configuring a server. ## Troubleshooting ### Server not found - Ensure your device can reach the server URL in a browser. - Check firewall rules and port forwarding (default port: `8096`). ### SSL / HTTPS errors - Verify your certificate is valid. - Enable the self-signed certificate toggle if needed. ### Authentication failed - Double-check your username and password. - Ensure your account has API access permissions. ## Server Management --- ### Multi-Server Management URL: https://jellywatch.app/doc/multi-server-management Category: Server Management Author: JellyWatch Updated: 2026-08-25 Manage multiple Jellyfin and Emby servers from a single app. ## Overview JellyWatch supports connecting to **multiple servers** simultaneously. This is a **Premium** feature. ## Adding Multiple Servers 1. Go to the **Dashboard**. 2. Open the **bottom menu** by swiping up. 3. Tap **Servers**. 4. Tap **+** to add a new server. 5. Repeat the process for each server you want to manage. ## Switching Between Servers - Tap on any server in the list to set it as the **active server**. - The dashboard, sessions, libraries, and all other screens will reflect the active server. - Switching is instant - JellyWatch caches data for quick transitions. ## Editing and Removing Servers - Tap the **three vertical dots (⋮)** on a server to edit, delete, or use **QuickConnect**. - Swipe or use the delete option to remove a server. ## Server Types Supported | Server | Version | |--------|---------| | Jellyfin | 10.8+ | | Emby | 4.7+ | > **Note:** Multi-server management requires **Premium**. Free users can connect one server. --- ### Dual URL & Network Switching URL: https://jellywatch.app/doc/dual-url-and-network Category: Server Management Author: JellyWatch Updated: 2026-08-24 Configure local and external URLs for seamless connectivity at home and away. ## What is Dual URL Mode? Dual URL mode lets you configure **two URLs** for the same server: - **Local URL** - for when you are on the same network (e.g. `http://192.168.1.100:8096`) - **External URL** - for when you are outside your home network (e.g. `https://jellyfin.example.com`) ## Enabling Auto-Switch 1. Edit your server configuration. 2. Enable **Dual URL mode**. 3. Enter both the **Local URL** and **External URL**. 4. Toggle **Auto Switch** on. JellyWatch will automatically detect your network and route requests through the appropriate URL. The last working URL is cached for faster reconnection. ## How It Works - JellyWatch monitors your current network state. - When connected to your home Wi-Fi, it uses the local URL for faster, direct connections. - When on mobile data or a different network, it switches to the external URL. - If one URL fails, JellyWatch falls back to the other automatically. --- ### Multi-Account & Account Switching URL: https://jellywatch.app/doc/tv-multi-account Category: Server Management Author: JellyWatch Updated: 2026-09-01 Add multiple user accounts (Jellyfin or Emby) and switch between them without re-entering credentials. ## Overview JellyWatch for Android TV supports **multiple accounts**. Each account can be a different user on the same server, or a user on a completely different server -- whether Jellyfin or Emby. This is ideal for households where multiple people use the same TV - each person can have their own account with their own watch history, Continue Watching row, and preferences. ## Adding an Account 1. Navigate to the **avatar** at the top of the sidebar and press **Select**. 2. The **Account Picker** screen opens showing all saved accounts. 3. Press **Add Account** and enter the server URL and credentials for the new account. 4. JellyWatch detects the server type (Jellyfin or Emby) automatically. ## Switching Accounts 1. Navigate to the **avatar** in the sidebar (or **Settings -> Account -> Switch Account**). 2. The Account Picker shows all saved accounts with avatar and username. 3. Select any account to switch - the app reloads with that account data instantly. ## Per-Account Preferences Each account has its own: - Active server selection - Playback preferences - Watch history (managed server-side) ## Removing an Account In the Account Picker, select an account and choose **Remove** to delete it from the app. This does not delete the account from the server. ## Family Use Case | Person | Account | |--------|---------| | Parent | Admin account - full admin dashboard access | | Child | Regular user account - WatchPass interface (if WatchPass is active) | | Guest | Any valid server account | Each person selects their account from the Account Picker when they sit down to watch. ## Dashboard --- ### Dashboard Overview URL: https://jellywatch.app/doc/dashboard-overview Category: Dashboard Author: JellyWatch Updated: 2026-09-01 Your central hub for real-time server monitoring and quick access to all features. Works with Jellyfin and Emby. ## The Dashboard The Dashboard is the first screen you see when you open JellyWatch. It provides a real-time overview of your media server with customizable sections. Works with both **Jellyfin** and **Emby** servers. ## Dashboard Sections The following sections can be enabled, disabled, and reordered: | Section | Description | |---------|-------------| | **Active Sessions** | Currently playing streams with user, media, progress, and playback details | | **Recently Added** | Carousel of recently added movies, series, and episodes (Jellyfin and Emby) | | **Radarr Upcoming** | Upcoming movies from your Radarr calendar | | **Sonarr Upcoming** | Upcoming TV episodes from your Sonarr calendar | | **Jellyseerr Requests** | Pending media requests from Jellyseerr | | **Seerr Requests** | Pending media requests from Seerr | | **Jellystat Stats** | Statistics from your Jellystat instance | | **System Servers** | Status of connected Linux (SSH) / Windows (WinRM) / TrueNAS / Unraid servers | | **Torrent Clients** | Status of connected qBittorrent, Deluge, Transmission, or uTorrent clients | ## Key Features - **Pull to refresh** - swipe down to force-refresh all dashboard data. - **Compact mode** - toggle between detailed and compact session cards. - **Session actions** - tap a session to see codec details, send messages, or view transcode info. - **Premium session limit** - free users see up to 3 active sessions; Premium unlocks unlimited. - **Animated mascot** - a custom JellyWatch mascot animates during pull-to-refresh. - **Custom backgrounds** - apply purchased backgrounds from the Shop. ## Navigation The dashboard includes quick-access buttons to Settings, Servers, and Premium in the top bar. --- ### Dashboard Customization URL: https://jellywatch.app/doc/dashboard-customization Category: Dashboard Author: JellyWatch Updated: 2026-09-01 Reorder, show, and hide dashboard sections to tailor your monitoring experience. ## Customizing the Dashboard JellyWatch lets you fully personalize your dashboard layout. ### Reorder Sections 1. Go to **Settings → Menu Customization**. 2. Scroll to the **Dashboard Sections** area. 3. Drag and drop sections to rearrange their order. 4. Changes are saved automatically. ### Show / Hide Sections Each dashboard section has a **visibility toggle**: - **Active Sessions** - on by default - **Recently Added (Jellyfin / Emby)** - on by default - **Radarr Upcoming** - on by default - **Sonarr Upcoming** - on by default - **Jellyseerr Requests** - on by default - **Seerr Requests** - on by default - **Jellystat Stats** - on by default - **System Servers** - on by default - **Torrent Clients** - on by default Hidden sections are not fetched, saving bandwidth and battery. ### Compact Mode Toggle compact mode on the dashboard to switch between: - **Detailed view** - full session cards with poster art, progress bar, codec info. - **Compact view** - condensed list showing essential info only. The compact mode preference is saved in `dashboard_prefs` and persists across sessions. ### Default Landing Page You can set any bottom-menu tab as the **default page** the app opens to: - Dashboard (default) - Libraries - Users - Statistics - More --- ### Active Sessions URL: https://jellywatch.app/doc/active-sessions Category: Dashboard Author: JellyWatch Updated: 2026-10-12 Monitor all currently playing streams with detailed playback information. ## Session Monitoring The Active Sessions section displays every stream currently playing on your server: ### Session Card Details Each session card shows: - **User avatar and name** - **Media poster** and title (movie, episode, or music) - **Progress bar** with current position and total duration - **Playback state** - playing, paused, or buffering - **Client name** and device type - **Playback method** - Direct Play, Direct Stream, or Transcode ### Session Actions Tap on a session to access: - **Transcode details** - view video/audio codec, resolution, bitrate, and whether the stream is being transcoded - **Send message** - send a text message to the user's client (Premium) - **Media info** - detailed stream information including subtitle tracks ### Session Messaging (Premium) With Premium, you can send messages to active sessions directly from the dashboard. This is useful for notifying users about server maintenance or other messages. ### Playback Method Indicators | Method | Meaning | |--------|---------| | Direct Play | Media plays natively - no server processing | | Direct Stream | Container is remuxed but codecs are untouched | | Transcode | Server is re-encoding video and/or audio | ### Auto-Refresh Sessions automatically refresh at a configurable interval (default: 30 seconds). Premium users can set faster intervals for near real-time monitoring. ## Features --- ### Navigation & Remote Control URL: https://jellywatch.app/doc/tv-navigation Category: Features Author: JellyWatch Updated: 2026-10-12 How to navigate JellyWatch for Android TV using your remote, D-pad, or gamepad. ## The Side Navigation Drawer JellyWatch for Android TV uses a **collapsible side navigation drawer** on the left edge of the screen - the standard 10-foot navigation pattern. ### Collapsed vs Expanded | State | Width | Shows | |-------|-------|-------| | **Collapsed** (default) | 72 dp | Icons only | | **Expanded** | 210 dp | Icons + labels | The drawer **expands automatically** when you move focus into it, and **collapses** when you navigate right into the content area. ## Remote Control Mapping | Button | Action | |--------|--------| | **D-pad Left** | Move focus to the sidebar (from any screen) | | **D-pad Right** | Move focus from sidebar into content | | **D-pad Up / Down** | Navigate between sidebar items or scroll content | | **Select / OK** | Activate focused item, open detail, start playback | | **Back** | Go back to the previous screen | | **Home** | Return to the Android TV launcher | | **Menu / ☰** | Context menu on supported items | ## Sidebar Items | Item | Description | |------|-------------| | **Search** | Search across your entire library | | **Home** | Main hub with Continue Watching and Recently Added rows | | **WatchPass** | WatchPass user interface (if active) | | **Request** | Browse and request content via Jellyseerr/Seerr (shown only when a request server is configured) | | **SyncPlay** | Watch Together session management | | **Achievements** | Your XP level and badge collection (if gamification is enabled) | | *(Library sections)* | Each library from your server appears as a separate nav item | | **Admin** | Admin dashboard - visible to server administrators only | | **Premium** | Purchase or view Premium status | | **Settings** | App settings | ## Focus Management JellyWatch manages focus automatically: - On screen transitions, focus is always placed in the **content area** - never accidentally trapped in the drawer. - Focus is **restored** to the last focused item when returning to a screen. - If focus is lost (rare edge case), pressing **D-pad Left** always recovers it in the sidebar. ## Gamepad Support USB and Bluetooth gamepads work as D-pad controllers. The left stick and the D-pad both navigate, and the **A button** (or equivalent) acts as Select. --- ### Activity Monitoring URL: https://jellywatch.app/doc/activity-monitoring Category: Features Author: JellyWatch Updated: 2026-09-01 View the complete activity log of your Jellyfin or Emby server. ## Activity Log The **Activity** screen shows the full activity log from your **Jellyfin or Emby** server, including: - User login/logout events - Playback start/stop events - Library scan events - Plugin updates - Authentication failures - Server start/stop events ## Accessing Activity Navigate to **More → Activity** from the bottom navigation menu. ## Features - **Real-time updates** - the log refreshes automatically. - **Scrollable history** - browse through past events. - **Event details** - each entry shows the event type, timestamp, user, and description. > **Tip:** Activity monitoring is a Premium feature. Free users have limited access. --- ### Home Screen URL: https://jellywatch.app/doc/tv-home-screen Category: Features Author: JellyWatch Updated: 2026-09-01 Understand the JellyWatch TV home screen: Continue Watching, Recently Added, and library rows. ## Overview The **Home** screen is your main landing page after login. It surfaces content you are likely to watch next and the latest additions to your server. ## Home Screen Rows | Row | Description | |-----|-------------| | **Continue Watching** | Media items you have started but not finished, ordered by last-played date | | **Recently Added** | One row per library showing the newest content added to your server | | **Next Up** | The next unwatched episode in series you are following | ## Navigating Rows - **D-pad Left / Right** - scroll through items within a row. - **D-pad Up / Down** - jump between rows. - **Select / OK** on a poster - open the **detail screen** for that item. - **Long press Select** (or Menu button) - shows quick-action options. ## Poster Cards Each card displays: - Poster artwork (high-resolution, up to 4K with Premium) - Title and year - Progress bar for in-progress items - Media type badge (Movie, Episode, etc.) ## Android TV Launcher Integration JellyWatch publishes two channels directly on the **Android TV home screen launcher** (visible even when the app is closed): | Channel | Content | |---------|---------| | **Continue Watching** | Up to 15 in-progress items | | **Recently Added** | One channel per library, up to 15 items each | Selecting an item in a launcher channel opens JellyWatch directly to that media's detail screen via a deep link. > Launcher channels update automatically in the background whenever the app fetches fresh data. --- ### User Management URL: https://jellywatch.app/doc/user-management Category: Features Author: JellyWatch Updated: 2026-09-01 View, create, and edit users on your Jellyfin or Emby server. ## Users Screen The **Users** tab is accessible from the bottom navigation menu. It displays all user accounts on your **Jellyfin or Emby** server. > User management works with both **Jellyfin** (10.8+) and **Emby** (4.7+) servers. ## Viewing Users Each user card shows: - **Avatar** and display name - **Last active** date - **Admin badge** (if the user is a server administrator) ## Creating a User 1. Tap the **+** button on the Users screen. 2. Fill in the username and password. 3. Configure permissions and library access. 4. Tap **Create**. ## Editing a User 1. Tap on any user to open their profile. 2. Modify display name, password, or permissions. 3. Tap **Save**. > The Users screen pre-loads in the background when the Dashboard loads for instant navigation. --- ### Kids Profile URL: https://jellywatch.app/doc/tv-kids-profile Category: Features Author: JellyWatch Updated: 2026-09-01 Give your kids their own safe space on the TV - big cards, bright colours, and a parental PIN that keeps everything else locked away. ## What Is Kids Profile? Kids Profile turns JellyWatch into a **child-friendly TV experience**. When it is active, the app shows only the content your child has access to, with big easy-to-navigate cards and a colourful interface. Everything else - Settings, Premium, the Admin screen - is hidden and locked behind a PIN that only you know. > Kids Profile requires **Premium**. ## Setting It Up 1. Open **Settings** from the sidebar. 2. Go to **Kids Profile**. 3. Turn it on and choose a **4-digit PIN** - you will need this to exit Kids mode. 4. Save. The app switches to Kids mode straight away. That is it. Hand the remote to your child. ## What Your Child Sees - A simplified home screen with large poster cards. - Their Continue Watching and Recently Added rows. - Only the libraries the server admin has given them access to. Everything else is gone from view. ## Exiting Kids Mode Hold the **Back** button and enter your PIN. The app returns to the normal adult interface. ## Controlling What Your Child Can Watch Kids Profile shows whatever the child's Jellyfin account has access to. To limit it, go into your Jellyfin server settings and adjust that user's library permissions. JellyWatch will reflect those restrictions automatically. ## Forgot Your PIN? If you forget the PIN, uninstall and reinstall the app. You will need to set Kids Profile up again, but your child's watch history on the server is unaffected. --- ### TV Media Player URL: https://jellywatch.app/doc/tv-media-player Category: Features Author: JellyWatch Updated: 2026-07-29 Full-screen video playback on Android TV - controls, subtitle management, audio tracks, Match Frame Rate, and more. ## Starting Playback 1. Navigate to any movie, episode, or music track. 2. Press **Select / OK** on the **Play** button or directly on a poster. 3. The player opens in full-screen. If the item is in-progress, playback resumes from where you left off. ## Player Controls Press **Select / OK** or **D-pad** during playback to show the control overlay: | Control | Description | |---------|-------------| | **Play / Pause** | Toggle playback (also works with the media keys on most remotes) | | **Seek bar** | Navigate with D-pad Left/Right to seek forward/backward | | **Rewind / Fast forward** | Skip by a configurable interval | | **Previous / Next episode** | Jump to adjacent episode in a series | | **Audio track** | Switch between audio languages / tracks | | **Subtitles** | Enable, disable, or switch subtitle tracks | | **Playback speed** | Adjust speed (0.5×, 0.75×, 1×, 1.25×, 1.5×, 2×) | | **Quality / Bitrate** | Force a specific stream bitrate or let the server decide | Press **Back** to exit the player and return to the detail screen. ## Subtitle Support JellyWatch for Android TV supports: - **External subtitle files** (SRT, ASS, SSA, VTT) served by Jellyfin - **Embedded subtitle tracks** (burned-in or passthrough) - **Subtitle styling** - font, size, and colour configurable in Settings (Premium) ## Audio Track Selection Switch audio tracks in real-time without stopping playback. All tracks reported by Jellyfin are listed. ## Playback Methods | Method | Description | |--------|-------------| | **Direct Play** | File plays natively - no server processing, best quality | | **Direct Stream** | Container is remuxed but codecs are unchanged | | **Transcode** | Server re-encodes the stream - used when Direct Play is not possible | JellyWatch selects the best method automatically based on your TV's capabilities. ## Match Frame Rate JellyWatch can **automatically switch your TV's display mode** to match the video frame rate: - **24p content** → switches display to 24 Hz (or 48 Hz / 120 Hz multiple) - **25p / 50p content** → switches display to 50 Hz - **30p / 60p content** → switches display to 60 Hz This eliminates judder on film-rate content. Configure in **Settings → Playback → Match Frame Rate**. | Option | Description | |--------|-------------| | **Match Refresh Rate** | Switch display Hz to match video fps | | **Match Resolution** | Switch display resolution to match video resolution | > The original display mode is restored automatically when you exit the player. Non-seamless switches (e.g. 60 Hz → 24 Hz on some displays) may cause a ~2-second blank screen - this is normal. ## Screensaver Integration JellyWatch manages screen-on state while playing. When the app is backgrounded, the screen-on flag is released so your TV can enter power-save mode normally. --- ### Integrated Media Player URL: https://jellywatch.app/doc/media-player Category: Features Author: JellyWatch Updated: 2026-09-01 Play movies, series, and music directly from your server on your device. ## Media Playback JellyWatch includes a built-in media player that lets you stream content directly from your **Jellyfin or Emby** server. ## How to Play 1. Browse to any media item (movie, episode, or music track). 2. Tap the **Play** button. 3. The player opens in full-screen mode. ## Player Features - **Video playback** with adaptive quality - **Audio track selection** - **Subtitle track selection** - **Seek bar** with position preview - **Picture-in-Picture** support (where available) ## Supported Content | Type | Support | |------|---------| | Movies | Full playback | | TV Episodes | Full playback | | Music | Audio playback | > **Note:** Media playback is a **Premium** feature. --- ### Multi-Server & Multi-Profile URL: https://jellywatch.app/doc/tv-multi-server Category: Features Author: JellyWatch Updated: 2026-08-23 Link multiple Jellyfin and Emby servers into one unified home screen on JellyWatch for Android TV - Continue Watching and Recently Added merged across all your servers. ## All Your Servers, One Home Screen Got content on two different servers -- Jellyfin, Emby, or a mix of both? With Multi-Server, you add them all to JellyWatch and your home screen shows everything together. No juggling, no switching back and forth. Your Continue Watching, Recently Added, and Next Up rows are **merged automatically**. > Multi-Server requires **Premium**. ## Adding a Second Server 1. Go to the **avatar** at the top of the sidebar and press OK. 2. Press **Add Account**. 3. Enter the server URL and your login for that server. 4. JellyWatch detects the server type (Jellyfin or Emby) automatically. 5. Press **Connect**. Your home screen updates immediately - content from the new server appears alongside your existing content. ## What Changes on Your Home Screen - **Continue Watching** shows in-progress items from all your servers, mixed together by date. - **Recently Added** shows new content from every server. - **Next Up** shows your next episodes across all series, regardless of which server they are on. A small label on each card tells you which server it belongs to. ## Playing Content Just press Play as normal. JellyWatch figures out which server to connect to and uses the right API automatically - you do not need to do anything extra. ## Multiple Profiles - Different People on the Same TV You can also add separate accounts for different people in your household. Each person gets their own Continue Watching and watch history. 1. Go to the **avatar** at the top of the sidebar. 2. Press **Add Account** and log in with the other person credentials. 3. To switch, go back to the avatar and select a different account. ## Removing a Server or Account Go to the avatar, select the account, then press **Remove**. That account content disappears from the home screen. Nothing changes on the actual server. --- ### Home Assistant Cinema Mode URL: https://jellywatch.app/doc/tv-home-assistant Category: Features Author: JellyWatch Updated: 2026-09-01 Automate your smart home when you play, pause, or stop a video on JellyWatch for Android TV - dim the lights, close the blinds, and more. ## Your Smart Home Reacts When You Watch Home Assistant Cinema Mode connects JellyWatch to your smart home. When you press **Play**, your lights can dim automatically. When you **Pause**, they come back up. When you **Stop**, everything returns to normal. You decide what happens - JellyWatch just tells Home Assistant what you are doing. > Cinema Mode requires **Premium** and a Home Assistant setup on your home network. ## What You Need - A running **Home Assistant** instance on your home network. - A smart home device you want to control (lights, blinds, etc.) already set up in Home Assistant. - JellyWatch for Android TV with **Premium** active. ## Setting It Up ### Step 1 - Create an automation in Home Assistant 1. Open Home Assistant. 2. Go to **Settings → Automations → Create Automation**. 3. Set the trigger to **Webhook**. 4. Copy the Webhook URL that appears - you will need it in the next step. 5. Add your actions: dim lights on Play, raise them on Pause and Stop. 6. Save the automation. ### Step 2 - Connect JellyWatch 1. Open **Settings** in JellyWatch. 2. Go to **Home Assistant**. 3. Turn on **Cinema Mode**. 4. Paste the Webhook URL from Step 1. 5. Press **Save**. Done. Press Play on any video and your automation will run. ## What Triggers the Automation | Action | Automation fires | |--------|------------------| | You press Play | "play" event | | You press Pause | "pause" event | | You stop or exit the player | "stop" event | Your automation can do different things for each event - that is entirely up to you in Home Assistant. ## It Only Works on Your Local Network JellyWatch talks directly to your Home Assistant - there is no cloud in between. Both your TV and Home Assistant need to be on the same home network (or Home Assistant needs to be accessible from your TV). ## Something Not Working? - Make sure Home Assistant is reachable from your TV - try opening its address in the TV browser. - Double-check you pasted the correct Webhook URL in JellyWatch Settings. - In Home Assistant, check **Settings → Automations → [your automation] → Traces** to see if the trigger arrived. --- ### Search URL: https://jellywatch.app/doc/tv-search Category: Features Author: JellyWatch Updated: 2026-07-27 Search your entire Jellyfin library from the TV interface. ## Accessing Search Press **D-pad Left** from any screen to open the sidebar, then navigate to the **Search** icon at the top and press **Select**. Alternatively, some remotes have a dedicated **Search / Microphone** button that opens the Android TV global search - JellyWatch is registered as a searchable app and results will include your library content. ## Using the Search Screen 1. The on-screen keyboard (or connected Bluetooth keyboard) appears automatically. 2. Type your query - results update in real time as you type. 3. Navigate the results grid with the D-pad. 4. Press **Select** on any result to open its detail screen. ## What Is Searched Search covers your entire Jellyfin library: - Movies - TV Series and Episodes - Music (artists, albums, tracks) - Books - People (cast and crew) - Collections ## Tips - Use a **Bluetooth keyboard** or your phone as a remote (Google TV remote app, Android TV remote) for faster typing. - The **voice search** button on compatible remotes triggers Android TV's built-in voice input, which feeds into JellyWatch search results. --- ### Viewing History URL: https://jellywatch.app/doc/history Category: Features Author: JellyWatch Updated: 2026-09-26 Browse the complete playback history of your server. ## History Screen The **History** screen shows a chronological list of everything that has been played on your server. ## Accessing History Navigate to **More → History** from the bottom menu. ## History Details Each entry shows: - **Media poster** and title - **User** who watched - **Date and time** of playback - **Duration** watched - **Playback completion** percentage ## Filtering You can search and filter history by: - **User name** - **Media type** (movies, episodes) - **Time period** (7 days, 30 days, all time) > History data is pre-loaded in the background for instant access. --- ### WatchPass on Android TV URL: https://jellywatch.app/doc/tv-watchpass Category: Features Author: JellyWatch Updated: 2026-10-06 WatchPass gives server users a native TV interface with library access, media requests, and issue reporting - no admin credentials needed. ## What Is WatchPass on Android TV? **WatchPass** on Android TV is the interface for **non-admin users** of a Jellyfin server. When a server admin has purchased WatchPass on the **JellyWatch mobile app**, every user who logs in to JellyWatch for Android TV with their server credentials automatically gets the WatchPass interface. > WatchPass access is granted by the **server admin** via the mobile JellyWatch app (Admin Features + WatchPass purchase required). The TV app verifies access automatically - no extra steps for the user. ## Accessing WatchPass Navigate to **WatchPass** in the sidebar. If access is confirmed, the full WatchPass interface opens. ## What Users Get ### Library Access - Browse all libraries the server admin has made accessible. - Open movie, series, season, and episode detail pages. - Play content with the full built-in TV player (Direct Play / Transcode). - Resume playback from where you left off. ### Media Requests Requires WatchPass to be active: - Browse **trending** movies and series. - **Search** for any title and request it with a single button press. - Track the **status** of your requests (pending, approved, available). - Browse by network, studio, or collection. If WatchPass is not active, the Requests section shows a locked state. ### Issue Reporting Requires WatchPass to be active: - Report playback problems directly from a media detail page. - View all your previously reported issues and their resolution status. - Read the full comment thread with the admin. ## Access Verification WatchPass status is checked against the JellyWatch backend (`verify.jellywatch.app`) on every app launch. The check is fast and non-blocking - the home screen loads while the check runs in the background. - **WatchPass badge** appears in the sidebar avatar header when access is confirmed. - If WatchPass lapses, the Requests and Issues sections lock, but Library access remains. ## Admin Users on Android TV Admin users see the full app interface including: - **Admin Dashboard** - session monitoring (see Admin Dashboard page) - All WatchPass features - A **Switch to Admin UI** indicator is shown at the top of the WatchPass screen if you are logged in as an admin. --- ### Device Management URL: https://jellywatch.app/doc/devices-management Category: Features Author: JellyWatch Updated: 2026-09-01 View and manage all devices connected to your Jellyfin server. ## Devices Screen The **Devices** screen lists every client device that has connected to your server. ## Accessing Devices Navigate to **More → Devices** from the bottom menu. ## Device Information Each device entry shows: - **Device name** and type - **App name** (e.g., Jellyfin Web, JellyWatch, Infuse) - **Last seen** date and time - **User** associated with the device ## Device Actions - **View details** - see full device information - **Remove device** - revoke the device's access token > **Note:** Device management is a **Premium** feature. --- ### Admin Dashboard on Android TV URL: https://jellywatch.app/doc/tv-admin-dashboard Category: Features Author: JellyWatch Updated: 2026-09-01 Server administrators can monitor active sessions, users, and server health directly from the TV interface. Works with Jellyfin and Emby. ## Overview The **Admin Dashboard** is available exclusively to users with **server administrator** privileges. Navigate to it via the **Admin** item (shield icon) at the bottom of the sidebar. > The Admin item is only visible when the logged-in account has admin rights on the connected server. Works with both **Jellyfin** and **Emby** servers. ## What the Admin Dashboard Shows ### Active Sessions A real-time list of all streams currently playing on your server: | Information | Detail | |-------------|--------| | User avatar and name | Who is watching | | Media title | Movie, episode, or music track | | Progress | Current position and total duration | | Playback method | Direct Play, Direct Stream, or Transcode | | Client / device | App name and device type | | Codec details | Video/audio codec, resolution, and bitrate | ### Session Actions Select a session to: - View full **transcode details** (codec, resolution, bitrate, reason for transcoding) - See **subtitle and audio track** information ### Server Statistics Overview metrics: - Total active sessions count - Total users - Libraries count - Total media items ## Navigation Use the **D-pad** to navigate between sessions. The list refreshes automatically at a regular interval. ## Requirements - The logged-in account must have **Administrator** role on the server. - The server must be reachable from the TV. --- ### Plugins URL: https://jellywatch.app/doc/plugins-management Category: Features Author: JellyWatch Updated: 2026-09-25 Browse and manage plugins installed on your Jellyfin or Emby server. ## Plugins Screen The **Plugins** screen lets you view all installed plugins on your **Jellyfin or Emby** server. ## Accessing Plugins Navigate to **More → Plugins** from the bottom menu. ## Plugin Information For each plugin, you can see: - **Plugin name** and version - **Description** - **Status** (enabled/disabled) - **Configuration URL** (if available) ## Use Cases Common **Jellyfin** plugins you might manage: - **Playback Reporting** - enables detailed playback statistics - **LDAP Authentication** - integrate with directory services - **Open Subtitles** - automatic subtitle downloading - **Fanart** - enhanced media artwork Common **Emby** plugins you might manage: - **Trakt** - sync watched status with Trakt.tv - **Open Subtitles** - automatic subtitle downloading - **Fanart** - enhanced media artwork - **LDAP Authentication** - integrate with directory services > Plugin availability and names differ between Jellyfin and Emby. The list above shows examples for each platform. --- ### Scheduled Tasks URL: https://jellywatch.app/doc/scheduled-tasks Category: Features Author: JellyWatch Updated: 2026-08-06 View and manage scheduled tasks on your Jellyfin server. ## Tasks Screen The **Tasks** screen displays all scheduled tasks configured on your server. ## Accessing Tasks Navigate to **More → Tasks** from the bottom menu. ## Task Information Each task shows: - **Task name** and description - **State** (idle, running, cancelling) - **Last execution time** and result - **Current progress** (for running tasks) ## Task Examples | Task | Description | |------|-------------| | Library Scan | Scan media folders for new content | | Clean Library | Remove orphaned entries | | Refresh Metadata | Update media info from online sources | | Optimize Database | Compact and optimize the server database | | Download Subtitles | Fetch missing subtitles | --- ### System Information URL: https://jellywatch.app/doc/system-information Category: Features Author: JellyWatch Updated: 2026-08-23 View detailed information about your Jellyfin or Emby server system. ## System Screen The **System** screen provides detailed information about your **Jellyfin or Emby** server. ## Accessing System Info Navigate to **More → System** from the bottom menu. ## Available Information - **Server name** and version - **Operating system** details - **Architecture** (x64, ARM, etc.) - **Uptime** - **Local and WAN addresses** - **Cache and log paths** - **Transcoding status** ## Use Cases Use the System screen to: - Verify your server version before reporting bugs - Check if the server needs updating - Monitor server health - View network configuration ## Media & Libraries --- ### Library Browsing on Android TV URL: https://jellywatch.app/doc/tv-library-browsing Category: Media & Libraries Author: JellyWatch Updated: 2026-09-01 Browse your movies, series, music, books, live TV, and photo libraries from the big screen. Works with Jellyfin and Emby servers. ## Library Navigation Each library on your server appears as a dedicated item in the **side navigation drawer**. The icon adapts to the collection type: | Collection Type | Icon | Dedicated Screen | |----------------|------|-----------------| | Movies | film | Movies grid | | TV Shows | tv | Series grid | | Music | music | Music home (artists / albums / genres / playlists) | | Books | book | Books grid | | Live TV | antenna | Live TV guide | | Photos / Home Videos | image | Photo and Video home | | Mixed / Other | folder | Generic grid | > Library types are fetched from your server. Jellyfin and Emby use slightly different API endpoints internally -- JellyWatch handles this automatically. ## Grid View Library grids display items as **poster cards** in a horizontally-scrollable, vertically-paginated layout optimised for TV. - Navigate with the **D-pad**. - Items load progressively as you scroll - no waiting for the full library. - Poster images are loaded at the resolution configured in **Settings -> Appearance** (up to 4K with Premium). ## Sorting and Filtering Use the **Sort / Filter** controls at the top of any grid to change: | Control | Options | |---------|---------| | **Sort** | Name, Date added, Release year, Rating, Play count | | **Filter** | Genre, Year, Rating, Watched / Unwatched | | **View** | Grid (default) or List | Navigate to the sort/filter bar with **D-pad Up** from the first row of results. ## Music Libraries Music has its own dedicated home screen with sections for: - **Albums** - full album grid with artwork - **Artists** - artist grid - **Genres** - genre browsing then genre albums - **Playlists** - user playlists - **Now Playing** - full-screen now-playing screen with queue ## Live TV The **Live TV** screen shows the channel guide with current and upcoming programmes. Works with both Jellyfin and Emby when a Live TV source (tuner card or plugin) is configured on the server. Navigate channels with the D-pad and press Select to start watching. ## Photos and Home Videos Browse photo albums and video folders. Select any photo to open the full-screen **photo viewer** with slideshow support. --- ### Library Browsing URL: https://jellywatch.app/doc/library-browsing Category: Media & Libraries Author: JellyWatch Updated: 2026-10-12 Browse and explore your entire media library directly from JellyWatch. ## Libraries Screen The **Libraries** tab is accessible from the bottom navigation. It shows all media libraries on your server. ## Library Types JellyWatch supports browsing all Jellyfin library types: | Type | Description | |------|-------------| | Movies | Feature films and short films | | TV Shows | Series with seasons and episodes | | Music | Albums, artists, and tracks | | Books | eBooks and audiobooks | | Mixed | Collections with multiple media types | ## Browsing a Library 1. Tap on any library to open it. 2. Browse media items displayed as poster grids. 3. Tap any item to view its full details. ## Library Options Each library has configuration options accessible via the options icon: - **Sort order** - by name, date added, rating, etc. - **View mode** - grid or list - **Filter** - by genre, year, or rating ## Recently Added The Dashboard features a **Jellyfin Recently Added** carousel showing the latest content across all libraries with poster art and quick navigation to details. > Libraries are pre-loaded in the background when the Dashboard loads for instant access. --- ### Media Detail Pages on Android TV URL: https://jellywatch.app/doc/tv-media-details Category: Media & Libraries Author: JellyWatch Updated: 2026-07-27 Explore movie, series, season, episode, and collection detail pages on the big screen. ## Movie Detail Page Pressing **Select** on any movie opens its detail page showing: - **Backdrop image** filling the full screen background - **Poster** and title with year, rating, and runtime - **Overview / synopsis** - **Genre and studio tags** - **Cast and crew** with actor photos - navigate horizontally with D-pad - **Play** button - starts playback immediately - **Trailer** button (if available) - **Collection** membership (e.g. Marvel Cinematic Universe) - navigate to see related films ## Series Detail Page - Series backdrop and poster - Season list - navigate down to select a season - **Next Up** indicator - highlights the next unwatched episode ## Season Detail Page - Episode list for the selected season - Each episode card shows: title, synopsis, air date, runtime, and watched state - Navigate to any episode and press **Select** to open its detail or **Play** to start playback directly ## Episode Detail Page - Full episode backdrop and metadata - **Play** button with resume support - Links to adjacent episodes (previous / next) ## Collection Detail Page - Collection artwork and description - Grid of all movies in the collection - Completion indicator (how many you have watched) ## Person Detail Page Navigate to any cast or crew member to see: - Photo, name, and biography - Their filmography - movies and series they appear in on your server ## Navigating Detail Pages | Action | Button | |--------|--------| | Scroll down | D-pad Down | | Move between cast cards | D-pad Left / Right | | Play | Select on Play button | | Go back | Back button | | Go to collection | Select on collection tag | --- ### Media Details URL: https://jellywatch.app/doc/media-details Category: Media & Libraries Author: JellyWatch Updated: 2026-09-14 View rich metadata, cast information, and playback options for any media item. ## Media Detail Pages JellyWatch provides dedicated detail pages for each media type: ### Movie Details - **Poster and backdrop** images - **Title**, year, and runtime - **Overview / synopsis** - **Genres** and studios - **Rating** (community and critic) - **Cast and crew** with photos - **Play button** to start streaming - **Collection** membership (e.g., Marvel Cinematic Universe) ### Series Details - **Series overview** with poster art - **Season list** with episode counts - **Episode details** - title, synopsis, air date, runtime - **Next up** - shows the next unwatched episode ### Album Details - **Album art** and artist name - **Track listing** with durations - **Play button** for each track or the full album ### Book Details - **Cover art** and title - **Author** and description ## Navigation - From a movie detail, tap the **collection** to see related films. - From a series detail, drill down into seasons and individual episodes. - From any detail page, tap **Play** to start playback (Premium). ## External Media Details When browsing from connected services (Radarr, Sonarr, Jellyseerr), JellyWatch shows: - **TMDB information** with poster and backdrop - **Request status** (for Jellyseerr/Seerr) - **Download status** (for Radarr/Sonarr) --- ### Collections & Advanced Browsing URL: https://jellywatch.app/doc/collections-and-browsing Category: Media & Libraries Author: JellyWatch Updated: 2026-09-01 Explore media collections, networks, studios, and saga groupings. ## Collections JellyWatch supports Jellyfin's collection system: - **Automatic collections** - grouped by franchise (e.g., all Harry Potter films) - **Manual collections** - user-created groupings - **Saga collections** - from Jellyseerr/Seerr (e.g., TMDB collections) ## Network & Studio Browsing Browse media by: - **Network** - TV networks (HBO, Netflix, etc.) - **Studio** - production companies (Marvel Studios, A24, etc.) ## Personal Library JellyWatch offers a **Personal Library** view where users can browse their own content: - **Personal Dashboard** - user-specific overview - **Personal Library** - media accessible to the current user - **Personal Requests** - media requests made by the current user ## Request Search The **Request Search** screen lets you search for movies and TV shows to request through Jellyseerr or Seerr, directly from JellyWatch. ## External Services --- ### External Services Overview URL: https://jellywatch.app/doc/external-services-overview Category: External Services Author: JellyWatch Updated: 2026-09-01 Connect JellyWatch to your entire media stack - request managers, download clients, and server monitoring. ## What Are External Services? External Services let you connect JellyWatch to third-party applications in your media server ecosystem. Once configured, their data appears on your Dashboard and in dedicated screens. ## Supported Services | Service | Type | Description | |---------|------|-------------| | **Jellyseerr** | Request Manager | Manage media requests | | **Seerr (Seerr)** | Request Manager | Manage media requests for Plex/Jellyfin | | **Radarr** | Movie Manager | Monitor and manage movie downloads | | **Sonarr** | TV Manager | Monitor and manage TV series downloads | | **Lidarr** | Music Manager | Monitor and manage music downloads | | **Bazarr** | Subtitle Manager | Automatic subtitle downloading | | **Tdarr** | Transcoding | Distributed transcoding management | | **Prowlarr** | Indexer Manager | Manage torrent/usenet indexers | | **Jellystat** | Statistics | Advanced Jellyfin playback statistics | | **qBittorrent** | Torrent Client | Monitor active torrents | | **Deluge** | Torrent Client | Monitor active torrents | | **Transmission** | Torrent Client | Monitor active torrents | | **uTorrent** | Torrent Client | Monitor active torrents | | **Linux (SSH)** | Server Monitor | Monitor Linux servers via SSH | | **Windows (WinRM)** | Server Monitor | Monitor Windows servers via WinRM | | **TrueNAS** | NAS Monitor | Monitor TrueNAS systems | | **Unraid** | NAS Monitor | Monitor Unraid systems | ## Adding an External Service 1. Go to **Dashboard → Swipe up bottom menu → Services → +** . 2. Tap **Add Service**. 3. Select the service type. 4. Enter the **URL** and **API key** (or credentials for Jellyseerr/Seerr). 5. Optionally enable **self-signed certificates** and **dual URL mode**. 6. Tap **Save**. ## Service Features Each service supports: - **Health check monitoring** - JellyWatch periodically checks if the service is reachable. - **Health status indicator** - Healthy, Unhealthy, or Unknown. - **Dual URL support** - local and external URLs with auto-switching. - **Custom headers** - for services behind reverse proxies. - **SSH key authentication** - for Linux server connections. --- ### Jellyseerr & Seerr Integration URL: https://jellywatch.app/doc/jellyseerr-and-seerr Category: External Services Author: JellyWatch Updated: 2026-09-24 Manage media requests end to end: browse, search and discover content, submit requests, approve or decline, change root folders, track issues, and view users and statistics. ## Jellyseerr / Seerr JellyWatch integrates deeply with both **Jellyseerr** and **Seerr**. Each service has its own full management screen organized into tabs: **Requests**, **Search**, **Discover**, **Users**, and **Issues**. Both screens work the same way. Seerr is the Plex-oriented variant; Jellyseerr is for Jellyfin and Emby. You can connect both at the same time. --- ## Requests Tab - Browse all requests with poster art, requester, media type, and status. - **Status filters**: All, Pending, Approved, Processing, Available, Partially Available, Failed. - **Approve** or **decline** pending requests directly from the app. - **Change the root folder** of a request before it is processed. - Paginated loading for large request lists. ## Search Tab - Search for any movie or TV show by title (minimum a few characters). - Results show poster, media type, and current status (already requested, available, or requestable). - **Request** a title with one tap. - For TV shows, pick **specific seasons**; seasons already available or already requested are shown as unselectable. ## Discover Tab - **Trending**: what is popular right now. - **Movies**: discover movies. - **TV Shows**: discover series. - Request anything directly from the discover lists. ## Users Tab - View the Jellyseerr/Seerr users with avatar, role (Admin / User / Guest), request count, and join date. ## Issues Tab - **Filters**: Open and Resolved. - View reported issues with type (Video, Audio, Subtitle, Other), affected media, and the season/episode in question. - Open an issue to read the **full comment thread**. - **Add, edit, and delete comments**. - **Change the issue status** (e.g. resolve or reopen). - **Delete an issue**. --- ## Setup ### Jellyseerr 1. Add a new external service of type **Jellyseerr**. 2. Enter the URL (e.g. `https://jellyseerr.yourdomain.com`). 3. Enter your **Jellyfin username and password** (Jellyseerr authenticates via Jellyfin). ### Seerr 1. Add a new external service of type **Seerr**. 2. Enter the URL and your **Jellyfin credentials**. --- ## Dashboard Integration Once configured, the Dashboard shows: - **Jellyseerr Requests** carousel with the pending request count and posters. - **Seerr Requests** carousel (if using Seerr). These carousels can be reordered or hidden from **Settings -> Menu Customization -> Dashboard Sections**. ## Notifications Enable Jellyseerr/Seerr notifications in **Settings -> Notifications** to receive alerts when new requests are submitted. The two services are monitored independently and notify on their own channels. See the Notifications documentation for details. --- **Notes** - Requests, issues, users, and discover all read live from the connected service. - For remote access, use a VPN or reverse proxy. Never expose the service publicly without authentication. --- ### Radarr & Sonarr Integration URL: https://jellywatch.app/doc/radarr-sonarr-integration Category: External Services Author: JellyWatch Updated: 2026-09-26 Full movie and TV management from your phone: browse, add, search releases, manage the download queue, wanted lists, tasks, system health, and storage. ## Overview JellyWatch ships full **Radarr** (movies) and **Sonarr** (TV series) management screens, not just a read-only view. Each service is organized into 7 tabs you switch between with the chips at the top: **Library** (Movies / Series), **History**, **Queue**, **Wanted**, **Tasks**, **System**, and **Storage**. Both screens support **multiple instances** of the same type at once, pull-to-refresh, an animated mascot indicator, and a collapsing header. Data loads automatically as soon as a healthy service is detected. --- ## Radarr Integration Connect your **Radarr** instance to manage your entire movie collection. ### Setup 1. Add an external service of type **Radarr**. 2. Enter the Radarr URL and **API key** (found in Radarr -> Settings -> General). 3. Optionally enable **self-signed certificates**, **dual URL mode**, and **custom headers**. ### Movies Tab - **Grid or list view** of every movie with poster art, year, quality, and file size. - **Filters**: All, Monitored, Unmonitored, Missing, Wanted, Cutoff Unmet. - **Search** your library by title. - **Sort** by title, year, date added, or size (ascending or descending). - **Add a movie**: search by title, pick a root folder and quality profile, then add and optionally trigger a search. - **Delete a movie** with or without its files. - Tap a movie to open its **detail page** with poster, backdrop, overview, genres, ratings, studio, monitoring status, and the file on disk. ### Release Search & Download - **Automatic search** asks Radarr to grab the best release for a movie. - **Manual search** opens a releases dialog listing every available release with indexer, size, seeders/leechers, quality, custom format score, and rejection reasons. - Pick any release to **download it manually**, including overriding rejected releases. ### Queue Tab - View all active downloads with **progress bars**, downloaded vs total size, and percentage. - **Status filters**: All, Downloading, Queued, Paused, Completed, Failed, Warning. - **Remove items** from the queue. - Paginated loading for large queues. ### History Tab - Paginated grab and import history, newest first. ### Wanted Tab - **Missing**: monitored movies with no file. - **Cutoff Unmet**: movies whose downloaded quality is below the cutoff. ### Tasks Tab - List the Radarr scheduled tasks and trigger commands. ### System Tab - **System status**: version, OS, and instance details. - **Health checks** reported by Radarr. - Restart or shut down the Radarr instance. ### Storage Tab - Per-root-folder disk usage: free space, total space, and usage. --- ## Sonarr Integration Connect your **Sonarr** instance to manage your TV series, seasons, and episodes. ### Setup 1. Add an external service of type **Sonarr**. 2. Enter the Sonarr URL and **API key** (found in Sonarr -> Settings -> General). 3. Optionally enable **self-signed certificates**, **dual URL mode**, and **custom headers**. ### Series Tab - **Grid or list view** of every series with poster art, status, and episode counts. - **Filters**: All, Monitored, Unmonitored, Continuing, Ended, Missing Episodes, Wanted, Cutoff Unmet. - **Search** by title, year, genre, or network. - **Sort** by title, year, date added, or episode count. - **Add a series**: search by title, pick a root folder, quality profile, and language profile, then add. - **Delete a series** with or without its files. - Tap a series to open its **detail page** with overview, genres, network, ratings, and a **seasons section** showing each season's monitored state and downloaded vs total episode counts (episode file count / total episode count) plus overall completion percentage. ### Release Search & Download - **Automatic search** for an episode lets Sonarr grab the best release. - **Manual search** opens a releases dialog with indexer, size, seeders/leechers, quality, and rejection reasons. - Pick a release to **download it manually**. - After a search, JellyWatch checks history to confirm whether the episode was grabbed. ### Queue Tab - All active episode downloads with **progress**, size, and percentage. - **Status filters**: All, Downloading, Queued, Paused, Completed, Failed, Warning. - **Remove items** from the queue. - Paginated loading. ### History Tab - Paginated grab and import history. ### Wanted Tab - **Missing**: monitored episodes with no file. - **Cutoff Unmet**: episodes below the quality cutoff. ### Tasks Tab - List Sonarr scheduled tasks and trigger commands. ### System Tab - **System status**, **health checks**, and restart / shutdown controls. ### Storage Tab - Per-root-folder disk usage. --- ## Calendar & Dashboard Integration Both Radarr and Sonarr feed the **Calendar** screen and the dashboard carousels: - **Radarr Upcoming**: upcoming movie releases (physical / digital). - **Sonarr Upcoming**: upcoming episode air dates. These carousels can be reordered or hidden from **Settings -> Menu Customization -> Dashboard Sections**. --- **Notes** - Works with Radarr and Sonarr v3 API. - For remote access, use a VPN or reverse proxy. Never expose the API key publicly. - Multiple Radarr or Sonarr instances can be connected and are aggregated in each screen. --- ### Lidarr Integration URL: https://jellywatch.app/doc/lidarr-integration Category: External Services Author: JellyWatch Updated: 2026-08-31 Full music management from your phone: browse artists and albums, add artists, search releases, manage the download queue, wanted lists, tasks, system health, and storage. ## Overview JellyWatch ships a full **Lidarr** management screen for your music collection, not just a read-only view. It is organized into 6 tabs you switch between with the chips at the top: **Artists**, **Queue**, **Wanted**, **Tasks**, **System**, and **Storage**. ### Setup 1. Add an external service of type **Lidarr**. 2. Enter the Lidarr URL and **API key** (found in Lidarr -> Settings -> General). 3. Optionally enable **self-signed certificates**, **dual URL mode**, and **custom headers**. #### Full Setup (starting from enabling authentication and getting the API key) 1. **Access Lidarr Settings** Open the Lidarr web UI (`http://your-server-ip:8686`). Go to **Settings -> General**. 2. **Enable Authentication (recommended)** Set Authentication to **Forms** or **Basic**. Enter a username and password if prompted and save. 3. **Generate / Copy API Key** In the same **General** page, scroll to the **Security** section. Copy the **API Key** (click the eye icon if hidden). 4. **Add Lidarr to JellyWatch** In JellyWatch go to **Services -> Add Service**. Select type **Lidarr**. Enter: - **Name**: e.g. "Home Lidarr" - **URL**: `http://your-server-ip:8686` (use `https://` if you have SSL) - **API Key**: paste the key from step 3 Tap **Test Connection** -> should say "Connected". Save. **Done!** Lidarr is now connected to JellyWatch. --- ## Artists Tab - **Grid or list view** of every artist with artwork and album counts. - **Search** your library by artist name. - **Sort** by name, album count, or date added (ascending or descending). - **Add an artist**: search by name, pick a root folder and quality profile, then add. - **Delete an artist** with or without its files. - Tap an artist to open its **detail page** with artwork and the list of albums. - Tap an album to view its **detail page** with the track listing and download status. ## Release Search and Download - **Automatic search** asks Lidarr to grab the best release for an album. - **Manual search** opens a releases dialog listing available releases with indexer, size, seeders/leechers, and quality. - Pick a release to **download it manually**. - **Search all missing** and **Search all cutoff unmet** trigger bulk searches from the Wanted tab. ## Queue Tab - View all active album/track downloads with **progress**, size, and status. ## Wanted Tab - **Missing**: monitored albums with no file (paginated). - **Cutoff Unmet**: albums below the quality cutoff (paginated). ## Tasks Tab - List the Lidarr scheduled tasks and trigger commands. ## System Tab - **System status**: version and instance details. - **Health checks** reported by Lidarr. - Restart or shut down the Lidarr instance. ## Storage Tab - Per-root-folder disk usage: free space and total space. --- ## Calendar and Dashboard Integration Lidarr feeds into the **Calendar** screen, showing: - Upcoming album release dates (physical and digital). The calendar data also powers the **Lidarr Upcoming** dashboard carousel, which can be reordered or hidden from **Settings -> Menu Customization -> Dashboard Sections**. --- **Notes** - Works with the Lidarr v1 API (default port 8686). - For remote access, use a VPN or reverse proxy. Never expose the API key publicly. - Multiple Lidarr instances can be connected. --- ### Torrent Clients URL: https://jellywatch.app/doc/torrent-clients Category: External Services Author: JellyWatch Updated: 2026-10-03 Monitor your download clients - qBittorrent, Deluge, Transmission, and uTorrent. ## Supported Torrent Clients JellyWatch can connect to the following torrent clients: | Client | Protocol | |--------|----------| | **qBittorrent** | Web API | | **Deluge** | Web API | | **Transmission** | RPC API | | **uTorrent** | Web API | ## Features - **Active download list** - see all current torrents with progress, speed, and status. - **Dashboard section** - torrent clients appear as a dashboard section showing active/completed downloads. - **Health monitoring** - connection status is checked periodically. ## Setup 1. Add an external service of the appropriate torrent client type. 2. Enter the client's **web UI URL** and **API key** or credentials. 3. Enable if needed and save. ## Dashboard Integration The **Torrent Clients** dashboard section shows: - Number of active downloads - Download/upload speeds - Completed downloads today --- ### System Server Monitoring URL: https://jellywatch.app/doc/system-servers-monitoring Category: External Services Author: JellyWatch Updated: 2026-09-01 Monitor your Linux, Windows, TrueNAS, and Unraid servers from JellyWatch. ## Server Monitoring JellyWatch can connect to your infrastructure servers and display their status on the Dashboard. ## Supported Server Types ### Linux (SSH) - Connect via **SSH** with password or **private key** authentication. - View CPU, RAM, disk usage, and running processes. - Monitor the host running your Jellyfin server. ### Windows (WinRM) - Connect via **WinRM** protocol. - View system metrics and status. - Requires WinRM to be enabled on the target Windows machine. ### TrueNAS - Connect to your **TrueNAS** instance via its API. - Monitor storage pools, datasets, and system health. ### Unraid - Connect to your **Unraid** server. - Monitor array status, disk health, and Docker containers. ## Setup 1. Add an external service of the appropriate type (Linux, Windows, TrueNAS, or Unraid). 2. Enter the server URL and credentials. 3. For Linux servers, optionally paste your **SSH private key** for key-based auth. ## Dashboard Integration The **System Servers** dashboard section shows a summary of all connected server systems with: - Connection status (healthy/unhealthy) - Key metrics (CPU, memory, disk) - Quick access to detailed server views --- ### Jellystat, Prowlarr, Bazarr & Tdarr URL: https://jellywatch.app/doc/jellystat-prowlarr-bazarr-tdarr Category: External Services Author: JellyWatch Updated: 2026-10-12 Additional integrations for statistics, indexers, subtitles, and transcoding. ## Jellystat **Jellystat** is a third-party statistics tool for Jellyfin. - View detailed playback statistics from Jellystat. - **Dashboard carousel** shows Jellystat stats summary. - **User details** from Jellystat with per-user breakdowns. - Dedicated **Jellystat screen** with multiple data views. ### Full Setup (starting from enabling authentication & getting API key) 1. **Access Jellystat Settings** Open the Jellystat web UI (`http://your-server-ip:3000`). Log in with your admin account. 2. **Generate / Copy API Key** Go to **Settings → API Key**. Copy the full API Key. 3. **Add Jellystat to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Jellystat**. Enter: - **Name**: e.g. “Home Jellystat” - **URL**: `http://your-server-ip:3000` (use `https://` if you have SSL) - **API Key**: paste the key from step 2 Tap **Test Connection** → should say “Connected”. Save. **Done!** Jellystat is now connected to JellyWatch! --- **Notes** - Works with latest Jellystat versions (default port 3000) - For remote access, use a VPN or reverse proxy - never expose the API key publicly - Integrates perfectly with your Jellyfin server monitoring in JellyWatch --- ## Prowlarr **Prowlarr** is an indexer manager for Sonarr, Radarr, and other *arr apps. - Browse and manage configured indexers. - View indexer status and health. ### Full Setup (starting from enabling authentication & getting API key) 1. **Access Prowlarr Settings** Open the Prowlarr web UI (`http://your-server-ip:9696`). Go to **Settings → General**. 2. **Enable Authentication (recommended)** Set Authentication to **Forms** or **Basic**. Enter a username and password if prompted and save. 3. **Generate / Copy API Key** In the same **General** page, scroll to the **Security** section. Copy the **API Key** (click the eye icon if hidden). 4. **Add Prowlarr to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Prowlarr**. Enter: - **Name**: e.g. “Home Prowlarr” - **URL**: `http://your-server-ip:9696` (use `https://` if you have SSL) - **API Key**: paste the key from step 3 Tap **Test Connection** → should say “Connected”. Save. **Done!** Prowlarr is now connected to JellyWatch! --- **Notes** - Works with latest Prowlarr versions - For remote access, use a VPN or reverse proxy - never expose the API key publicly - Integrates perfectly with Sonarr, Radarr, and Bazarr in JellyWatch. --- ## Bazarr **Bazarr** is an automated subtitle manager that works with Sonarr and Radarr. - Monitor subtitle download status. - View wanted/missing subtitles. - View history ### Full Setup (starting from enabling authentication & getting API key) 1. **Access Bazarr Settings** Open the Bazarr web UI (`http://your-server-ip:6767`). Go to **Settings → General**. 2. **Enable Authentication (recommended)** Set Authentication to **Forms** or **Basic**. Enter a username and password if prompted and save. 3. **Generate / Copy API Key** In the same **General** page, scroll to the **API Key** section. Click to generate a new key if needed, then copy the full API key. 4. **Add Bazarr to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Bazarr**. Enter: - **Name**: e.g. “Home Bazarr” - **URL**: `http://your-server-ip:6767` (use `https://` if you have SSL) - **API Key**: paste the key from step 3 Tap **Test Connection** → should say “Connected”. Save. **Done!** Bazarr is now connected to JellyWatch! --- **Notes** - Works with latest Bazarr versions (API key is always available in Settings) - For remote access, use a VPN or reverse proxy - never expose the API key publicly - Integrates perfectly with your existing Sonarr/Radarr setup in JellyWatch --- ## Tdarr **Tdarr** is a distributed transcoding system for media libraries. - Monitor transcoding queue and workers. - View transcoding progress and statistics. ### Full Setup (starting from enabling authentication) 1. **Enable Authentication in Tdarr** Open your Tdarr config file (`Tdarr_Server_Config.json`) **or** add these as environment variables in your Unraid Docker template (or docker-compose.yml): - `auth: true` - `internalNode: true` **(only if using the internal bundled node)** - `apiKey: tapi_yourkeyhere` - `authSecretKey: your-random-secret-key` **(optional, auto-generated if omitted)** Restart the Tdarr Server container/service. 2. **Create Username & Password** Open the Tdarr web UI (`http://your-server-ip:8265`). You will be prompted to set a username and password on first login. 3. **Generate API Key** Log in to the Tdarr web UI. Go to **Tools → API Keys**. Click **Create New API Key** and copy the full key (starts with `tapi_`). 4. **Add Tdarr to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Tdarr**. Enter: - **Name**: e.g. “Home Tdarr” - **URL**: `http://your-server-ip:8265` (use `https://` if you have SSL) - **API Key**: paste the key from step 3 Tap **Test Connection** → should say “Connected”. Save. **Done!** Tdarr is now connected to JellyWatch! --- **Notes** - Works with Tdarr v2.18+ (v2.25+ recommended for full API support) - For remote access, use a VPN or reverse proxy - never expose the API key publicly - **Internal Node** (bundled with server): Set `internalNode: true` in the server config/env as shown above. - **External Nodes**: In each external node’s config file (`Tdarr_Node_Config.json`) **or** Docker env variables, add the **same** `apiKey` from step 3 so the nodes can authenticate to the server. --- ### Uptime Kuma Integration URL: https://jellywatch.app/doc/uptime-kuma-integration Category: External Services Author: JellyWatch Updated: 2026-10-09 Monitor your services uptime, response times, and status pages directly from JellyWatch. ## Uptime Kuma Integration **Uptime Kuma** is a self-hosted uptime monitoring tool. JellyWatch integrates with it via **Socket.IO** to give you a live view of all your monitored services without leaving the app. ## Features - **Monitor list** - see all configured monitors with real-time UP/DOWN status, 24h uptime percentage, and average ping. - **Status pages** - browse your public and private Uptime Kuma status pages. - **Maintenance windows** - view active and scheduled maintenance entries. - **Pause / Resume** - pause or resume any monitor directly from JellyWatch. - **Live heartbeats** - real-time heartbeat updates via WebSocket. - **Filter** - filter monitors by All / Up / Down. ## Monitor Card Details Each monitor card shows: | Field | Description | |-------|-------------| | Status dot | Green = UP, Red = DOWN | | Name | Monitor display name | | Type badge | HTTP, TCP, PING, DNS, Docker, Push, etc. | | URL / hostname | Target address | | 24h uptime | Percentage of uptime over the last 24 hours | | Avg ping | Average response time in milliseconds | | Interval | Check frequency in seconds | ## Full Setup 1. **Open the Uptime Kuma web UI** Navigate to `http://your-server-ip:3001` in a browser. Log in with your admin account. 2. **Add Uptime Kuma to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Uptime Kuma**. Enter: - **Name**: e.g. "Home Uptime Kuma" - **URL**: `http://your-server-ip:3001` (use `https://` if you have SSL) - **Username**: your Uptime Kuma username - **Password**: your Uptime Kuma password Tap **Test Connection** → should say "Connected". Save. **Done!** Uptime Kuma is now connected to JellyWatch! --- **Notes** - JellyWatch connects to Uptime Kuma via **Socket.IO** - no API key is required, only your login credentials. - Works with Uptime Kuma v1.23+ - For remote access, use a VPN or reverse proxy - never expose your Uptime Kuma instance publicly without authentication - The WebSocket connection for live heartbeats requires the server to be reachable from your device ## Tabs ### Monitors The default tab. Shows all monitors with a summary bar (Up / Down / Total counts) and filter chips. ### Status Pages Lists all status pages configured in Uptime Kuma. Each entry shows the page title, slug, and whether it is public or private. ### Maintenance Lists all maintenance windows. Active maintenances are highlighted in amber. Each entry shows the title, description, strategy, and active state. --- ### Portainer Integration URL: https://jellywatch.app/doc/portainer-integration Category: External Services Author: JellyWatch Updated: 2026-08-25 Manage your Docker containers, stacks, and endpoints directly from JellyWatch. ## Portainer Integration **Portainer** is a self-hosted container management platform for Docker and Kubernetes. JellyWatch integrates with the Portainer API to let you monitor and control your containers without opening a browser. ## Features - **Container list** - browse all containers across your endpoints with status, image, and resource usage. - **Container actions** - start, stop, and restart containers directly from JellyWatch. - **Container stats** - view real-time CPU %, memory usage/limit, and network I/O per container. - **Container logs** - fetch the last 100 lines of logs for any container. - **Stacks** - browse all Docker Compose stacks managed by Portainer. - **Endpoints** - switch between multiple Docker environments (local, remote, edge agents). - **Container filter** - filter by All / Running / Stopped. ## Container Card Details Expand any container to see: | Metric | Description | |--------|-------------| | CPU % | Current CPU usage percentage | | Memory | Used / limit in MB and percentage | | Net RX | Total received network traffic in MB | | Net TX | Total transmitted network traffic in MB | | Logs | Last 100 lines of container stdout/stderr | ## Full Setup 1. **Open the Portainer web UI** Navigate to `http://your-server-ip:9000` (or `https://your-server-ip:9443` for TLS) in a browser. Log in with your Portainer admin account. 2. **Add Portainer to JellyWatch** In JellyWatch go to **Services → Add Service**. Select type **Portainer**. Enter: - **Name**: e.g. "Home Portainer" - **URL**: `http://your-server-ip:9000` (use `https://your-server-ip:9443` for TLS) - **Username**: your Portainer username - **Password**: your Portainer password Tap **Test Connection** → should say "Connected". Save. **Done!** Portainer is now connected to JellyWatch! --- **Notes** - JellyWatch authenticates to Portainer using your **username and password** - no API token is required. A JWT is obtained automatically and cached for the session. - Works with Portainer CE and BE (v2.x+) - Default HTTP port is `9000`, default HTTPS port is `9443` - For remote access, use a VPN or reverse proxy - never expose Portainer publicly without authentication ## Tabs ### Containers The default tab. Lists all containers for the selected endpoint. Tap a container to expand it and see stats, logs, and action buttons (Start / Stop / Restart). ### Stacks Lists all Docker Compose stacks managed by Portainer with their name and status. ### Endpoints Lists all Docker environments (endpoints) registered in Portainer. Tap an endpoint to switch the container view to that environment. ## Notifications --- ### Push Notifications URL: https://jellywatch.app/doc/push-notifications Category: Notifications Author: JellyWatch Updated: 2026-09-01 Set up local push notifications to stay informed about your server activity. ## Overview JellyWatch delivers real-time **local push notifications** directly from the app using a **background foreground service**. No external backend or Firebase relay is involved for session events - the app polls your server every **5 seconds** and triggers notifications on your device. ## Enabling Notifications 1. Go to **Settings → Notifications**. 2. Toggle **Enable notifications** on. 3. Grant the Android notification permission when prompted. 4. The **SessionMonitorService** starts automatically and runs as a foreground service. > **Note:** Notifications are a **Premium** feature. ## Notification Events (Admin Mode Only) | Event | Default | |-------|---------| | **Play Start** | off | | **Play Stop** | off | | **Pause** | on | | **Resume** | on | | **New Device** | on | | **Server Down** | off | ## Notification Events (All Users) | Event | Default | |-------|---------| | **New Content** | off | | **Jellyseerr Requests** | on | | **Seerr Requests** | on | | **App Promo (FCM)** | on | ## User Exclusion per Event For session events (Play Start, Play Stop, Pause, Resume, New Device), you can exclude specific Jellyfin users from triggering notifications. Tap the **Exclude Users** button that appears under each enabled event toggle to select which users to ignore. ## Notification Channels (Android 8+) | Channel ID | Name | Importance | Used for | |-----------|------|-----------|----------| | `session_monitor_channel` | Session Monitor | Default (silent) | Persistent foreground service notification | | `new_session_channel` | New Sessions | High or Default | Play/Stop/Pause/Resume/Device events | | `new_content_channel` | New Content | Default | New media added to library | | `jellyseerr_requests_channel` | Jellyseerr Requests | Default | Jellyseerr requests | | `seerr_requests_channel` | Seerr Requests | Default | Seerr requests | Customize each channel individually in **Android Settings → Apps → JellyWatch → Notifications**. ## Notification Preferences | Preference | Description | |-----------|-------------| | **Group notifications** | Bundle multiple session alerts into a single grouped notification | | **Popup (Heads-up)** | Show notifications as heads-up banners; forces `new_session_channel` to `IMPORTANCE_HIGH` | | **Priority** | Low, Normal, or High - controls `NotificationCompat` priority when popup mode is off | ## Server Down Notifications When **Server Down** is enabled, you can configure the check interval: | Interval | Description | |----------|-------------| | 2 minutes | Most responsive | | 5 minutes | Default | | 10 minutes | Battery-friendly | --- ### New Content Notifications URL: https://jellywatch.app/doc/new-content-notifications Category: Notifications Author: JellyWatch Updated: 2026-10-12 Get alerted when new movies, shows, or episodes are added to your library. ## New Content Monitoring JellyWatch monitors your Jellyfin server for newly added media items and sends a local notification when new content is detected. ## How It Works 1. `NewContentNotificationManager` runs a background polling coroutine. 2. On **first activation**, it silently fetches up to 100 recent items and stores their IDs as the baseline - **no notification is sent** on first run. 3. On each subsequent check, it fetches the latest 100 recent items and compares against the stored baseline. 4. If new item IDs are found, a notification is sent and the baseline is updated to the current set. 5. A **1-minute cooldown** (`NOTIFICATION_COOLDOWN_MS = 60000`) prevents notification spam between consecutive checks. ## Notification Content The notification adapts based on how many new items were found: - **Single item** - title is the item name; body describes the type (movie/episode/series). - **Multiple items** - title shows the count (e.g. "3 new items"); body lists movies, episodes, and shows found. - **Image** - the poster of the first new item is loaded and shown as a `BigPicture` notification. Falls back to a `BigText` list if the image cannot be loaded. - **Episode grouping** - episodes are grouped by series name with season info (e.g. "Breaking Bad: 3 episodes (S4)"). - **100-item cap** - if 100+ new items are detected, a `+` suffix is appended to indicate there may be more. ## Supported Media Types | Type | Displayed as | |------|--------------| | Movie | Listed individually | | Episode | Grouped by series name | | Series | Listed individually | ## Notification Channel New content notifications use the Android channel `new_content_channel` (**New Content**, `IMPORTANCE_DEFAULT`). It supports badge, vibration, and a custom notification sound. ## Configuration 1. Enable **New content notifications** in **Settings → Notifications**. 2. Set the **check interval** - how often the app polls for new content: | Interval | Setting value | |----------|---------------| | 30 minutes | 30 | | 1 hour (default) | 60 | | 2 hours | 120 | | 6 hours | 360 | ## Resetting the Baseline The seen content IDs are stored in `SharedPreferences` under the key `seen_content_ids`. Calling `clearSeenContent()` on `NewContentNotificationManager` wipes the baseline. The next check will re-initialize silently without sending a notification. > New content notifications are available in both **Admin** and **Personal (WatchPass)** mode. --- ### Jellyseerr & Seerr Notifications URL: https://jellywatch.app/doc/jellyseerr-seerr-notifications Category: Notifications Author: JellyWatch Updated: 2026-09-12 Receive notifications for pending media requests from Jellyseerr and Seerr. ## Request Notifications If you have **Jellyseerr** or **Seerr** configured as external services, JellyWatch can notify you when new pending media requests are detected. ## How It Works ### JellyseerrNotificationManager - Polls **both** Jellyseerr and Seerr services for the active server every **15 seconds**. - Combines the pending request counts from both services into a single total. - Sends a notification only when the **total count increases** compared to the last notified count. - Resets its state on server switch (`RefreshEvent.General`) or when external services change (`RefreshEvent.ExternalServices`). ### SeerrNotificationManager - Polls only the **Seerr** service for the active server every **30 seconds** independently. - Sends a notification on its own dedicated Android channel (`seerr_requests_channel`) when the Seerr request count increases. ## Notification Channels | Channel ID | Manager | Description | |-----------|---------|-------------| | `jellyseerr_requests_channel` | `JellyseerrNotificationManager` | Jellyseerr + Seerr combined count | | `seerr_requests_channel` | `SeerrNotificationManager` | Seerr-only independent monitoring | Both channels use `IMPORTANCE_DEFAULT` with badge, vibration, and a custom notification sound. ## Configuration 1. Ensure a **Jellyseerr** or **Seerr** external service is configured and enabled for the active server. 2. In **Settings → Notifications → Request Notifications**, toggle on: - **Jellyseerr notifications** - only available when a Jellyseerr service is connected. - **Seerr notifications** - only available when a Seerr service is connected. 3. Toggles are **greyed out** if no matching service is configured. ## Notification Content - **Title**: Jellyseerr channel name (e.g. "Jellyseerr Notifications") - **Body**: Pluralized count string, e.g. "3 pending requests" - **Tap action**: Opens JellyWatch main screen - **Auto-cancel**: Yes - dismissed automatically when tapped ## Requirements - A configured and **enabled** Jellyseerr or Seerr external service for the active server. - Global notifications enabled (`notifications_enabled = true`). - Android notification permission granted. > Request notification toggles are only shown in **Admin mode**. ## Statistics & Analytics --- ### Statistics Overview URL: https://jellywatch.app/doc/statistics-overview Category: Statistics & Analytics Author: JellyWatch Updated: 2026-10-12 Get a comprehensive view of your server's playback statistics and viewing trends. ## Statistics Screen The **Statistics** tab provides detailed analytics about your Jellyfin server usage. Access it from the bottom navigation menu. ## Global Statistics The overview section shows: | Metric | Description | |--------|-------------| | **Total watched items** | Combined count of all watched movies and episodes | | **Total movies watched** | Number of unique movies watched | | **Total episodes watched** | Number of unique episodes watched | | **Most active user** | The user with the highest watch count | | **Total users** | Number of user accounts on the server | | **Active sessions** | Currently playing streams | | **Total libraries** | Number of media libraries | | **Total items** | Total media items across all libraries | ## Watch Time Statistics - **Total watch time** - combined viewing time across all users - **Average per user** - total time divided by number of users - Time is displayed in hours and minutes ## Viewing Trends A **graph** shows daily viewing activity over selectable periods: | Period | Description | |--------|-------------| | 7 days | Last week | | 30 days | Last month (default) | | 90 days | Last quarter | | All time | Complete history | ## User Ranking Users are listed with: - **Avatar** and username - **Total watched items** count - **Total watch time** - Tap to navigate to detailed user statistics ## Filtering & Sorting | Filter | Description | |--------|-------------| | All users | Show everyone | | Most active | Users with >10 watched items | | Movies only | Users who have watched movies | | Series only | Users who have watched episodes | | Sort | Description | |------|-------------| | Total watch time | Most-watched first (default) | | Items watched | By item count | | User name | Alphabetical | ## Search Type a username in the search bar to filter the user list. ## Media Statistics An optional **Media Statistics** analysis can be triggered manually. It scans all libraries and provides: - Per-library item counts - Progress tracking during scan - Detailed breakdown by media type > Statistics are pre-loaded in the background and cached for performance. Pull to refresh for fresh data. --- ### User Detail Statistics URL: https://jellywatch.app/doc/user-detail-statistics Category: Statistics & Analytics Author: JellyWatch Updated: 2026-10-12 Dive deep into individual user viewing habits with detailed breakdowns. ## User Detail Screen Tap on any user in the Statistics screen to view their detailed statistics. ## Available Data ### Summary Card - **Items watched** - total number of media items - **Total watch time** - cumulative viewing duration ### Viewing History A scrollable list of everything the user has watched: - **Media poster** with title - **Episode details** (series name, season, episode number) - **Watch date and time** - **Duration** of the viewing session ### History Loading For users with large viewing histories (500+ items), JellyWatch uses: - **Paginated loading** - fetches history in batches - **Progress indicator** - shows current/total items being loaded - **Streaming JSON parser** - handles large API responses (140MB+) without running out of memory ## Viewing Periods Statistics can be filtered by period: - **7 days** - **30 days** (default) - **90 days** - **All time** ## Premium --- ### Premium Overview URL: https://jellywatch.app/doc/premium-overview Category: Premium Author: JellyWatch Updated: 2026-09-09 Full overview of the JellyWatch premium ecosystem: Admin Features and WatchPass for the mobile app, and JellyWatch TV Premium for the Android TV app. ## Premium in the JellyWatch Ecosystem JellyWatch has **two separate apps**, each with its own premium tier. They are independent purchases - buying one does not unlock the other. --- ## JellyWatch Admin (Mobile App) The mobile app offers **two separate products**: ### 1. Admin Features A one-time lifetime purchase for the person who manages the Jellyfin or Emby server. Unlocks the full set of administrative tools. → See **Admin Features** page for the full feature list. ### 2. WatchPass An add-on that gives the admin's server users a dedicated native interface inside JellyWatch. **Requires Admin Features** to be purchased first. → See **WatchPass** page for details. **Purchase order for mobile:** 1. Purchase **Admin Features** - WatchPass is locked until this is done. 2. Purchase **WatchPass** - becomes available once Admin Features is active. --- ## JellyWatch for Android TV The TV app offers a **single Premium product**: **JellyWatch TV Premium**. This is a one-time lifetime purchase for the person watching on the TV. It unlocks: - Home layout and sidebar customisation - Kids Profile (parental PIN, simplified interface) - Multi-Server (multiple Jellyfin servers, unified home) - Home Assistant Cinema Mode (smart home automation) - 4K poster images, subtitle styling, colour themes, skip intros, and more → See **Premium for Android TV** page for the full feature list. --- ## Which Purchase Do I Need? | I want to… | What to buy | |-----------|-------------| | Manage my Jellyfin server from my phone | **Admin Features** (mobile) | | Let my server users have the WatchPass interface | **Admin Features** + **WatchPass** (mobile) | | Unlock the full TV experience (Kids, Multi-Server, themes…) | **JellyWatch TV Premium** (Android TV) | --- ## Free Trial (Mobile Only) A free trial of Admin Features is available from **More → Premium → Plans** in the mobile app. It grants temporary access to all admin features. --- ### Admin Features URL: https://jellywatch.app/doc/admin-features Category: Premium Author: JellyWatch Updated: 2026-10-03 A one-time purchase for the JellyWatch Admin mobile app that unlocks the full set of administrative tools. This purchase is for the mobile app only - JellyWatch TV has its own separate Premium. ## What is Admin Features? Admin Features is a one-time lifetime purchase that unlocks the full set of administrative and power-user tools in **JellyWatch Admin** (the mobile app). It is intended for the person who manages the Jellyfin or Emby server. > **This purchase is for the JellyWatch Admin mobile app only.** It does not unlock Premium on JellyWatch for Android TV. The TV app has its own separate **JellyWatch TV Premium** purchase. --- ## What It Unlocks | Feature | Description | |---------|-------------| | **Multiple Servers** | Connect and manage multiple Jellyfin or Emby servers | | **Fast Refresh Intervals** | Reduce the dashboard refresh rate for near real-time monitoring | | **Device Management** | View and manage all devices connected to your server | | **Widget Access** | Home screen widget showing active sessions and server metrics | | **Push Notifications** | Local alerts for sessions, new content, and media requests | | **Session Messaging** | Send messages directly to active streaming sessions | | **Media Playback** | Stream content from your server directly on your device | | **All future admin features** | All future premium features for JellyWatch Admin | --- ## Free Trial A free trial is available from **More > Premium > Plans**. It gives temporary access to all admin features and can be cancelled before it expires. --- ## Promotional Pricing JellyWatch occasionally offers a discounted price on Admin Features. When a promotion is active, a banner appears at the top of the Plans tab and the reduced price is applied automatically. --- ## Prerequisite for WatchPass Admin Features must be purchased before WatchPass becomes available. See the **WatchPass** page for details on what it provides to your server users. --- ## JellyWatch TV Premium (separate product) If you are also looking to unlock the full experience on your **Android TV or Fire TV**, that requires a separate purchase: **JellyWatch TV Premium**. See the **Premium for Android TV** page. --- ### Premium for Android TV URL: https://jellywatch.app/doc/tv-premium Category: Premium Author: JellyWatch Updated: 2026-09-01 One-time purchase that unlocks the full JellyWatch TV experience: customisation, 4K images, subtitle styling, Kids Profile, Multi-Server unified home, Home Assistant, and more. ## What Is Premium? **Premium** for JellyWatch on Android TV is a **one-time lifetime purchase** that unlocks advanced features for the person using the app on their TV. > This is a **separate purchase** from the mobile **JellyWatch Admin Features**. Purchasing Premium on Android TV does not grant mobile Premium, and vice versa. The two apps are independent products with independent Premium tiers. ## What Premium Unlocks | Feature | Description | |---------|-------------| | **Home Layout Customisation** | Reorder and hide rows on the Home screen | | **Sidebar Customisation** | Pin or reorder sidebar navigation items | | **Skip / Auto-next** | Skip intros and auto-play next episodes with configurable timing | | **Themes** | Additional colour themes beyond the default | | **4K Poster Images** | High-resolution poster and backdrop images | | **Subtitle Styling** | Customise subtitle font, size, colour, and position | | **Kids Profile** | Dedicated safe mode with parental PIN and simplified interface | | **Multi-Server** | Link multiple Jellyfin and Emby servers - unified Continue Watching and Recently Added home screen | | **Home Assistant Cinema Mode** | Automate your smart home on play / pause / stop | | **More** | Additional features added in future updates | ## How to Purchase 1. Navigate to **Premium** in the sidebar (or **Settings → Premium**). 2. The Premium screen shows the feature list and the current price. 3. Focus the **Purchase** button and press **Select / OK**. 4. The Google Play (or Amazon Appstore) purchase flow opens. 5. Confirm the purchase with your account credentials. Premium status is verified on every app launch against the store receipt and the JellyWatch backend. ## Fire TV (Amazon Appstore) On Fire TV devices, the purchase is handled through the **Amazon In-App Purchasing SDK**. The flow is the same - select the Purchase button and confirm with your Amazon account. ## Promotional Pricing When a promotion is active, a **promo card** with an animated border appears on the Premium screen showing the discounted price. The reduced price is applied automatically at purchase. ## Restoring a Purchase If you reinstall the app or switch to a new device, your purchase is restored automatically when you sign in with the same Google (or Amazon) account. ## Not the Same as Mobile Premium JellyWatch has two separate apps with two separate Premium tiers: | App | Premium product | What it unlocks | |-----|-----------------|-----------------| | **JellyWatch for Android TV** | JellyWatch TV Premium (this page) | TV customisation, Kids Profile, Multi-Server (Jellyfin + Emby), Home Assistant, etc. | | **JellyWatch Admin** (mobile) | JellyWatch Admin Premium | Server management tools, widgets, notifications, multi-server on mobile | Each purchase is app-specific and does not carry over to the other app. --- ### WatchPass URL: https://jellywatch.app/doc/watchpass Category: Premium Author: JellyWatch Updated: 2026-10-12 WatchPass gives the admin's server users a dedicated native interface with dashboard, library, requests, and issue reporting. ## What is WatchPass? WatchPass is a premium add-on purchased by the admin that gives their Jellyfin (or Emby) server users a dedicated, native Android interface inside JellyWatch. Instead of relying on a web browser or a third-party client, WatchPass provides a ready-to-use app experience the moment a user logs in with their server credentials. WatchPass **requires Admin Features** to be purchased first. Once the admin has both products, access is automatic -- no invite link or configuration is needed for users. --- ## What Users Get WatchPass provides a complete interface organized into 4 tabs: ### Dashboard The user's personal home screen: - Watch stats and viewing history for the last 7 days. - Recently added content carousel. - Active media requests carousel (Jellyseerr or Seerr). ### Library Full access to the server media library: - Browse all libraries (movies, series, music, books). - Open detailed media pages with cast, seasons, and episodes. - Play content directly in the built-in native player. - Search across the entire library. ### Requests Requires WatchPass to be active: - Browse trending movies and series. - Search for any title and request it with a single tap. - Track the status of existing requests (pending, approved, available). - Browse by network, studio, or collection. If WatchPass is not active, this tab shows a lock screen. ### Issues Requires WatchPass to be active: - Report playback problems directly from any media page. - View all previously reported issues and their status. - Read the full conversation thread with the admin for each issue. If WatchPass is not active, this tab shows a lock screen. --- ## Built-In Media Player | Feature | Detail | |---------|--------| | Direct play and transcoding | Plays natively or transcodes through the server | | Subtitle management | Switch subtitle tracks during playback | | Audio track selection | Choose audio language or track | | Picture-in-Picture | Continue watching while using other apps | | Resume playback | Picks up where you left off | | Quality selection | Choose stream bitrate | --- ## Setup ### For the Admin 1. Purchase **Admin Features** from **More > Premium > Plans**. 2. Purchase **WatchPass** from the same screen (now unlocked). 3. Ensure your users have accounts on your Jellyfin or Emby server with appropriate library permissions. 4. Nothing else is required. Users log in and the interface unlocks automatically. **Optional:** As an admin, you can switch to the WatchPass interface at any time without logging out. A **Switch to Admin UI** button is visible at the top of the WatchPass interface for admin accounts. ### For the User 1. Download JellyWatch from the Google Play Store (supports Jellyfin and Emby). 2. Log in with your server username and password. 3. The app detects that your admin has WatchPass active and unlocks the interface automatically. --- ## Access Rules - Access is verified server-side by the JellyWatch backend on each app launch. - If WatchPass lapses, the Requests and Issues tabs lock. The Library tab remains accessible. - A **Watch Pass badge** appears in the header when access is confirmed. ## Settings & Customization --- ### Settings on Android TV URL: https://jellywatch.app/doc/tv-settings Category: Settings & Customization Author: JellyWatch Updated: 2026-08-23 Configure JellyWatch for Android TV - servers, playback, appearance, themes, and more. ## Accessing Settings Navigate to the **Settings** icon (gear) at the bottom of the sidebar and press **Select**. ## Settings Sections ### Servers - View all configured servers (Jellyfin and Emby). - Add a new server (URL + credentials). - Edit an existing server (URL, dual URL mode, self-signed certificates, custom headers). - Remove a server. - Switch the **active server**. ### Playback | Setting | Description | |---------|-------------| | **Match Refresh Rate** | Auto-switch TV Hz to match video frame rate | | **Match Resolution** | Auto-switch display resolution to match video resolution | | **Default subtitle language** | Preferred subtitle language for new playback sessions | | **Default audio language** | Preferred audio track language | | **Skip intro delay** | Seconds to wait before auto-skipping an intro (Premium) | | **Auto-next episode** | Automatically start the next episode after credits (Premium) | ### Appearance | Setting | Description | |---------|-------------| | **Theme** | Select colour theme (additional themes with Premium) | | **Animated background** | Bubble animation behind the sidebar (on/off) | | **4K images** | Load poster and backdrop images at 4K resolution (Premium) | ### Screensaver - Enable / disable the built-in screensaver. - Set the inactivity timeout before the screensaver activates. ### Subtitles (Premium) - Font family, size, colour, background opacity. - Subtitle position (bottom / top). ### Account - View the currently logged-in account. - **Switch account** - opens the account picker to change to a different server user. - **Sign out** - returns to the login screen and clears launcher channels. ### Premium - View current Premium status (active / inactive). - Purchase Premium or restore a previous purchase. ### About - App version and build number. - Links to privacy policy and open-source licences. --- ### Menu Customization URL: https://jellywatch.app/doc/menu-customization Category: Settings & Customization Author: JellyWatch Updated: 2026-10-12 Personalize the bottom navigation, More screen order, and dashboard layout. ## Menu Customization Screen Access via **Settings → Menu Customization**. ## Bottom Navigation Menu Customize the tabs shown in the bottom navigation bar: **Default order:** 1. Dashboard 2. Libraries 3. Users 4. Statistics 5. More (always last, fixed) - **Drag and drop** tabs to reorder them. - The **More** tab is always pinned as the last item and cannot be moved. ## More Screen Menu Reorder the items displayed in the More screen: **Default order:** 1. Shop (fixed at top) 2. WatchPass (fixed at top) 3. Activity 4. History 5. Devices 6. Plugins 7. Tasks 8. System - **Shop** and **WatchPass** are always pinned at the top. - Drag the remaining items to your preferred order. ## Dashboard Sections Reorder and toggle visibility of dashboard sections: - **Active Sessions** - **Recently Added (Jellyfin / Emby)** - **Radarr Upcoming** - **Sonarr Upcoming** - **Jellyseerr Requests** - **Seerr Requests** - **Jellystat Stats** - **System Servers** - **Torrent Clients** Each section has a visibility toggle. Hidden sections are not loaded, saving resources. ## Default Page Choose which screen opens when you launch JellyWatch: - Dashboard (default) - Libraries - Users - Statistics Changes are saved automatically and persist across app restarts. --- ### Backup & Restore URL: https://jellywatch.app/doc/backup-and-restore Category: Settings & Customization Author: JellyWatch Updated: 2026-09-01 Export and import your JellyWatch settings to safeguard your configuration. ## Backup & Restore JellyWatch offers **two independent backup systems** to protect your settings and configurations. --- ## Backup Types ### 1. Cloud Backup (Google Authentication) Online backup stored on **JellyWatch servers**, authenticated via your Google account. **Advantages:** - Automatic cloud backup - Accessible from any device using the same Google account - Easy restoration when switching devices - Secure authentication via Google **Requirements:** - Sign in with a Google account - Internet connection --- ### 2. Local Backup (File) Manual export of your settings into a JSON file stored on your device. **Advantages:** - No Google account required - Full control over your backup files - Configuration sharing possible - Local storage or on your own cloud --- ## Accessing Backup & Restore **Two ways to access it:** 1. **Settings Menu**: **Settings → Backup & Restore** 2. **Dedicated Screen**: Via the menu during first launch or from **Settings → Backup & Restore** --- ## Cloud Backup (Google Authentication) ### Create a Cloud Backup 1. Go to **Settings → Backup & Restore** 2. If you are not signed in, tap **"Connect Google Account"** 3. Sign in with your Google account 4. Tap **"Save to Cloud"** or **"Backup Settings"** 5. Your settings are saved on JellyWatch servers --- ### Restore from Cloud 1. Go to **Settings → Backup & Restore** 2. Sign in with your Google account (if required) 3. If a backup is available, you will see: - A **"Backup Available"** indicator - The date of the last backup - The user mode of the backup (Admin/Personal) 4. Tap **"Restore Settings"** 5. Confirm the restoration in the dialog box 6. The app redirects to the Dashboard after restoration **Important:** - In strict mode (from Settings), only backups from the same user mode (Admin/Personal) can be restored - In onboarding mode (first launch), both Admin and Personal backups are accepted --- ## Local Backup (File) ### Export a Local Backup 1. Go to **Settings → Backup & Restore** 2. In the **"Local Backup"** section, tap **"Export to File"** 3. Choose the save location: - Downloads folder - Google Drive - Any other accessible location 4. A `.json` file is created containing all your settings **Suggested filename:** `jellywatch_backup_[date].json` --- ### Import a Local Backup 1. Go to **Settings → Backup & Restore** 2. In the **"Local Backup"** section, tap **"Import from File"** 3. Select the previously exported backup file 4. A **confirmation dialog** appears warning that your current settings will be replaced 5. Tap **"Confirm"** to restore 6. After restoration, the app automatically restarts --- ## Backup Content Both systems (Cloud and Local) save **exactly the same data**: --- ### General Settings - Refresh interval - Theme (Light/Dark/OLED/System) - App language - Custom primary color - Analytics enabled/disabled - Animated background --- ### Notification Settings - Notifications enabled/disabled - Sound, vibration, grouping - Notification priority - Popup notifications - Event-based notifications (play, pause, new content, etc.) - Check interval --- ### Server Configurations - Jellyfin server URLs - Login credentials (encrypted) - Authentication tokens (encrypted) - Dual URL configuration (local/external URL) - Self-signed certificates - Custom headers - **Note:** QuickConnect servers are **not included** --- ### External Services - Tautulli, Overseerr, Radarr, Sonarr configurations, etc. - URLs and API keys (encrypted) - Dual URL settings - Server associations --- ### Menu Preferences (Admin Mode Only) - Bottom menu order - "More" screen order - Default page - Dashboard section order and visibility --- ### Metadata - User mode (Admin/Personal) - Backup date - App version - Device ID --- ## Use Cases ### Cloud Backup - **Device migration** - Automatically recover your settings on a new device - **Secure online storage** - Backup stored on JellyWatch servers - **Multi-device** - Synchronize the same configuration across multiple devices --- ### Local Backup - **Without Google account** - Use JellyWatch without Google sign-in - **Configuration sharing** - Share your setup with other users - **Manual backup** - Create snapshots before modifying settings - **Full control** - Store your backups wherever you want --- ## Security > **⚠️ Important:** Backup files contain your server credentials and API keys in **encrypted** form. Even though encrypted, store them in a secure location. --- ### Encryption - Passwords and tokens are encrypted using AES - The encryption key is based on the device’s unique ID - Local backups use the same encryption level as Cloud backups --- ### Best Practices - Do not share your backup files publicly - Store local backups in a secure location - Use Cloud backup for automatic protection - Create a local backup before major updates --- ## Disconnect Google Account To disconnect your Google account: 1. Go to **Settings → Backup & Restore** 2. Tap **"Disconnect"** next to your email address 3. You can still use local backups --- ## Differences Between Modes ### Admin Mode - Saves custom menu preferences - Saves all notification configurations - Requires restoration from an Admin backup (in strict mode) --- ### Personal Mode - Does not save menu preferences - Notification settings disabled by default - Refresh interval fixed at 30 seconds **Note:** In onboarding mode (first launch), you can restore either an Admin or Personal backup. From Settings, only a backup from the same mode is accepted. --- ### Language & Theme URL: https://jellywatch.app/doc/language-and-theme Category: Settings & Customization Author: JellyWatch Updated: 2026-08-08 Change the app language and switch between light, dark, and system themes. ## Language Selection JellyWatch supports multiple languages. To change the language: 1. Go to **Settings → Language**. 2. Select your preferred language from the list. 3. The app will restart with the new language applied. ## Theme Settings JellyWatch offers three theme modes: | Mode | Description | |------|-------------| | **Light** | Light background with dark text | | **Dark** | Dark background with light text | | **System** | Follows your Android system theme (default) | To change the theme: 1. Go to **Settings**. 2. Select the desired theme mode. 3. The change is applied immediately. ## Custom Backgrounds Premium users can purchase and apply custom dashboard backgrounds from the **Shop**. These override the default theme background on the Dashboard screen. --- ### Account Linking URL: https://jellywatch.app/doc/account-linking Category: Settings & Customization Author: JellyWatch Updated: 2026-08-31 Link your Google or Discord account to JellyWatch for enhanced features. ## Account Linking JellyWatch allows you to link external accounts for additional features and support. ## Google Account Linking 1. Go to **Settings → Google Account Linking**. 2. Sign in with your Google account. 3. Benefits: - External backups - In-app support ticket system ## Discord Account Linking 1. Go to **Settings → Discord Account Linking**. 2. Authorize JellyWatch with your Discord account. 3. Benefits: - Access to Discord-exclusive promotions - Premium verification via Discord roles - Community integration ## Unlinking You can unlink either account at any time from the same settings screen. Unlinking does not revoke purchases. ## Advanced Features --- ### Match Frame Rate (Display Mode Switching) URL: https://jellywatch.app/doc/tv-match-frame-rate Category: Advanced Features Author: JellyWatch Updated: 2026-09-01 Automatically switch your TV display refresh rate and resolution to match the video stream for judder-free playback. ## What Is Match Frame Rate? **Match Frame Rate** (also called Rate Switch or Display Mode Switching) is a technique where the TV's display refresh rate is changed to exactly match the video frame rate at the start of playback. | Without Match FR | With Match FR | |-----------------|---------------| | 24p film on 60 Hz display → judder / 3:2 pulldown | 24p film on 24 Hz display → perfectly smooth | ## How JellyWatch Handles It When playback starts, JellyWatch queries `Display.getSupportedModes()` and selects the best matching mode based on: - **Video frame rate** - matches or divides evenly (e.g. 120 Hz for 24p) - **Video resolution** - optionally matches 1080p → 1080p, 4K → 4K On playback stop or when leaving the player, the **original display mode is restored automatically**. ## Configuration Go to **Settings → Playback**: | Setting | Description | |---------|-------------| | **Match Refresh Rate** | Enable automatic Hz switching to match video fps | | **Match Resolution** | Enable automatic resolution switching to match video dimensions | Both can be enabled independently. ## Seamless vs Non-Seamless Switches - **Seamless switch** (e.g. 60 Hz → 120 Hz on the same resolution): no visible interruption. - **Non-seamless switch** (e.g. 60 Hz → 24 Hz): the display goes blank for ~2 seconds while the TV locks onto the new signal. JellyWatch detects this and waits before starting the player, so you never miss the first frames. ## Supported Devices Match Frame Rate works on any Android TV / Google TV device that exposes multiple display modes via `Display.getSupportedModes()`. Most Nvidia Shield, Sony Bravia (Google TV), and Chromecast with Google TV devices support this. Some budget devices only expose a single mode and the feature has no effect. ## Troubleshooting | Issue | Solution | |-------|---------| | Display does not switch | Verify your TV/device supports multiple modes (check TV manual) | | Black screen on switch | Normal for non-seamless switches - wait 2–3 seconds | | Judder persists | Ensure your HDMI cable supports the target bandwidth (HDMI 2.0+ for 4K@60) | | Mode not restored | Force-close and reopen the app to reset the display mode | --- ### Dynamic Island URL: https://jellywatch.app/doc/dynamic-island Category: Advanced Features Author: JellyWatch Updated: 2026-10-08 Display active sessions in a floating overlay on your screen, even outside the app. ## What is Dynamic Island? Dynamic Island is a JellyWatch feature that displays a **floating overlay** showing active sessions on your server. It works on top of other apps, on the home screen, and even on the lock screen. ## Enabling Dynamic Island 1. Go to **Settings**. 2. Toggle **Dynamic Island** on. 3. Grant the required permissions when prompted. ## Required Permissions | Permission | Purpose | |------------|---------| | **Overlay (Draw over other apps)** | Display the floating window on top of other apps | | **Accessibility Service** | Keep the overlay visible on the lock screen and across all apps | JellyWatch provides a **setup dialog** that guides you through enabling each permission. You can dismiss this dialog and choose "Don't show again" if you prefer not to use the feature. ## How It Works 1. The **SessionMonitorService** runs as a foreground service. 2. It polls for active sessions at regular intervals. 3. When sessions are found, the Dynamic Island overlay appears showing: - User name - Media title - Playback progress 4. The overlay updates in real-time as sessions change. 5. Tap the overlay to open JellyWatch. ## Battery Usage Dynamic Island uses a foreground service notification to stay active. Battery impact is minimal since it piggybacks on the same session polling used by the Dashboard. > **Note:** Dynamic Island requires Premium. --- ### Built-in Screensaver URL: https://jellywatch.app/doc/tv-screensaver Category: Advanced Features Author: JellyWatch Updated: 2026-07-27 JellyWatch for Android TV includes a built-in inactivity screensaver that displays your server artwork. ## Overview JellyWatch for Android TV has a **built-in inactivity screensaver** that activates when you stop interacting with the app. It displays backdrop and poster artwork from your Jellyfin library as a slideshow. ## How It Works - JellyWatch keeps the **screen on** (`FLAG_KEEP_SCREEN_ON`) while the app is in the foreground, overriding the system screensaver. - After a configurable **inactivity timeout**, JellyWatch activates its own screensaver overlay. - When you press any button on the remote, the screensaver dismisses and returns to the screen you were on. - When the app goes to the **background**, the screen-on flag is released so the TV can power off normally. > The screensaver is **not** active during video playback - it only activates when you are browsing the UI. ## Screensaver Content The screensaver uses artwork fetched from your server: - Backdrop images from recently added content - Poster art from your libraries - Images are preloaded and cached to avoid network requests during display ## Configuration Go to **Settings → Screensaver** to configure: | Setting | Description | |---------|-------------| | **Inactivity timeout** | How long before the screensaver activates (e.g. 2 min, 5 min, 10 min) | | **Enable / Disable** | Turn the built-in screensaver on or off | > If you disable the JellyWatch screensaver, the system screensaver (configured in Android TV Settings → Screen Saver) takes over after the screen-on flag is released. --- ### Home Screen Widget URL: https://jellywatch.app/doc/home-screen-widget Category: Advanced Features Author: JellyWatch Updated: 2026-09-01 Add a widget to your Android home screen showing active sessions and server status. ## Sessions Widget JellyWatch provides an Android home screen widget that displays key server metrics at a glance. ## Adding the Widget 1. Long press on your home screen. 2. Select **Widgets**. 3. Find **JellyWatch** in the widget list. 4. Drag it to your home screen. ## Widget Information The widget displays: | Metric | Description | |--------|-------------| | **Active sessions** | Number of currently playing streams | | **Total users** | Number of user accounts | | **Devices** | Connected device count | | **Libraries** | Number of media libraries | | **Pending requests** | Jellyseerr/Seerr pending request count | ## Refreshing - The widget updates automatically via a **background worker** (WorkManager). - Tap the **refresh button** on the widget to force an immediate update. - Tap anywhere else on the widget to open the JellyWatch app. ## How It Works 1. **SessionsWidgetProvider** handles widget lifecycle events (create, update, delete). 2. **SessionsWidgetWorker** runs periodically in the background to: - Fetch dashboard data from your active server - Check premium feature access - Update the widget UI with fresh data ## Requirements - At least one server must be configured and authenticated. - **Widget Access** requires **Premium**. > The widget respects your active server selection - it always shows data from the currently selected server. --- ### SyncPlay - Watch Together URL: https://jellywatch.app/doc/tv-syncplay Category: Advanced Features Author: JellyWatch Updated: 2026-09-01 Watch movies and series simultaneously with other users using SyncPlay on Android TV. ## What Is SyncPlay? **SyncPlay** is a Jellyfin feature that synchronises playback across multiple clients in real time. All participants in a group watch the same content at the same time - pause on one device pauses for everyone. ## Accessing SyncPlay Navigate to **SyncPlay** in the sidebar. The SyncPlay screen lets you: - Create a new watch group - Join an existing group - View current group participants ## How to Start a Watch Session 1. Navigate to **SyncPlay** in the sidebar. 2. Press **Create Group** to start a new session. 3. Share the group name with friends. 4. Each participant opens SyncPlay on their device (any Jellyfin client) and joins the group. 5. Navigate to a movie or episode and press **Play** - all group members start at the same position. ## Receiving an Invite When another user invites you to a SyncPlay session while you are browsing, a **pop-up invite overlay** appears at the bottom of the screen: - Press **Accept** to join the group and sync playback. - Press **Dismiss** to decline. The invite overlay is visible from any screen except the video player and book reader. ## Sync Behaviour | Event | Effect on group | |-------|-----------------| | **Play** | All participants resume | | **Pause** | All participants pause | | **Seek** | All participants jump to the same position | | **Buffer** | Playback waits for the buffering member before resuming | ## Requirements - SyncPlay must be **enabled** on your Jellyfin server (Settings → SyncPlay). - All participants must be connected to the same Jellyfin server. - Jellyfin server 10.8+ is recommended for best SyncPlay compatibility. --- ### Achievements & Gamification URL: https://jellywatch.app/doc/tv-achievements Category: Advanced Features Author: JellyWatch Updated: 2026-08-12 Earn XP, level up, and unlock badges as you watch content on your Jellyfin server. ## Overview JellyWatch for Android TV includes a **gamification system** that rewards you for watching content on your server. Earn XP, level up, and unlock achievement badges. ## Accessing Achievements Navigate to **Achievements** in the sidebar. The icon changes as you level up: | Level | Icon | |-------|------| | 1–2 | Trophy | | 3–4 | Star | | 5–6 | Fire | | 7–9 | Diamond | | 10+ | Auto Awesome | ## How It Works - You earn **XP** by watching movies and episodes on your server. - XP accumulates toward the next **level**. - Certain milestones unlock **badges** displayed on your profile. - Your level and badge are visible in the **sidebar avatar header** when the drawer is expanded. ## Achievement Unlock Overlay When you unlock a new achievement, a **pop-up overlay** appears above the current screen (outside the player) to celebrate the unlock. It dismisses automatically after a few seconds. ## Sync Achievements are synced with the JellyWatch backend: - Progress is loaded from the server on login. - Local progress is synced back when the app is foregrounded or after playback. - If the device has been offline, progress syncs as soon as connectivity is restored. ## Enabling / Disabling Gamification can be toggled in **Settings**. When disabled, the Achievements nav item is hidden and no unlock overlays are shown. --- ### Android TV Launcher Channels URL: https://jellywatch.app/doc/tv-home-screen-channels Category: Advanced Features Author: JellyWatch Updated: 2026-07-27 JellyWatch publishes Continue Watching and Recently Added channels directly on the Android TV home screen. ## Overview JellyWatch for Android TV integrates with the **Android TV launcher** (TvProvider API) to publish content rows directly on your TV home screen - no need to open the app to see what to watch next. ## Published Channels | Channel | Content | Max Items | |---------|---------|-----------| | **Continue Watching** | In-progress movies and episodes | 15 | | **Recently Added - [Library Name]** | Latest additions per library | 15 per library | Each library with new content gets its own channel row, named after the library (e.g. "Recently Added - Movies", "Recently Added - TV Shows"). ## Deep Links Selecting an item in a launcher channel: 1. Opens JellyWatch for Android TV automatically. 2. Navigates directly to the **detail screen** for that item. 3. You can press **Play** immediately. Supported deep link types: `jellywatch://movie/{id}`, `jellywatch://series/{id}`, `jellywatch://episode/{id}`, `jellywatch://collection/{id}`. ## Channel Updates Channels are updated automatically whenever JellyWatch fetches fresh home screen data - typically on app open and periodically in the background. ## Enabling Channels On first launch, Android TV may ask for permission to add channels to your home screen. Accept this prompt to enable the feature. If channels are not visible: 1. Go to Android TV Settings → Apps → JellyWatch → Permissions. 2. Ensure the **TV Data** (or equivalent) permission is granted. 3. Open JellyWatch and return to the home screen - channels should now appear. ## Removing Channels Channels are automatically removed when you **sign out** of JellyWatch. You can also remove them manually by long-pressing a channel row on the Android TV launcher and selecting **Remove channel**. ## FAQ & Support --- ### Android TV - Frequently Asked Questions URL: https://jellywatch.app/doc/tv-faq Category: FAQ & Support Author: JellyWatch Updated: 2026-09-01 Common questions about JellyWatch for Android TV. ## Is JellyWatch for Android TV the same app as the mobile version? No. JellyWatch for Android TV is a **separate app** built from the ground up for the 10-foot TV experience. It shares the same backend (your Jellyfin server) but has a completely different interface optimised for remote control navigation. ## Is Premium shared between mobile and TV? No. **JellyWatch TV Premium** is a separate one-time purchase from the mobile **Admin Features / WatchPass** products. Purchasing one does not unlock the other. Each app has its own independent Premium tier. | App | Premium product | Unlocks | |-----|-----------------|---------| | Android TV | JellyWatch TV Premium | TV customisation, Kids Profile, Multi-Server, Home Assistant… | | Mobile | Admin Features + WatchPass | Server management, widgets, notifications… | ## What does Kids Profile do? Kids Profile activates a simplified, child-friendly interface with large cards, a bright colour scheme, and all adult navigation items hidden behind a parental PIN. It is a **Premium** feature - see the **Kids Profile** page for setup instructions. ## What are Multi-Server & Multi-Profile? **Multi-Server** lets you link multiple Jellyfin and Emby servers into a single unified home screen - see the **Multi-Server & Multi-Profile** page for details. **Multi-Profile** lets each household member have their own account. Both are **Premium** features. ## Can I control my smart home lights with JellyWatch TV? Yes. **Home Assistant Cinema Mode** (Premium) fires a webhook to your Home Assistant instance whenever you play, pause, or stop a video. See the **Home Assistant Cinema Mode** page for the full setup guide. ## Can I use WatchPass on Android TV? Yes. If the **server admin** has purchased WatchPass via the JellyWatch mobile app, all users who log into JellyWatch for Android TV automatically receive the WatchPass interface. No extra steps are required for the user. ## My TV remote does not type text easily - what can I do? - Use the **Quick Login** option on the login screen to connect with a code instead of typing a password. - Connect a **Bluetooth keyboard** to your TV for faster text input. - Use the **Google TV / Android TV remote app** on your phone. - Use voice input if your remote has a microphone button. ## The video is juddering on 24p content - how do I fix it? Enable **Match Refresh Rate** in **Settings → Playback**. This switches your TV display to 24 Hz (or a multiple thereof) during playback, eliminating the 3:2 pulldown judder. ## Home screen channels are not showing up 1. Ensure JellyWatch has the **TV Data** permission (Android TV Settings → Apps → JellyWatch → Permissions). 2. Open JellyWatch and navigate to the Home screen to trigger a channel update. 3. Return to the Android TV launcher - channels should appear within a few seconds. 4. Some launchers (e.g. custom Fire TV launchers) may not support the TvProvider API. ## The screensaver activates too quickly / too slowly Adjust the **inactivity timeout** in **Settings → Screensaver**. ## Can I watch content without being an admin? Yes. Any valid Jellyfin user account can log in. If the server admin has WatchPass active, you get the full WatchPass interface. Without WatchPass, you still have access to your personal library and can play content. ## Which server version is required? - **Jellyfin**: 10.8 or newer is recommended. Some features (SyncPlay, QuickConnect) require specific Jellyfin server-side support. - **Emby**: 4.7 or newer is recommended. SyncPlay is available on Jellyfin only. All other core features (library browsing, playback, Live TV, admin dashboard) work on both server types. ## Does JellyWatch for Android TV support Amazon Fire TV? Yes. A dedicated **Fire TV flavour** is available on the Amazon Appstore. It uses the Amazon In-App Purchasing SDK instead of Google Play Billing. --- ### Frequently Asked Questions URL: https://jellywatch.app/doc/faq-general Category: FAQ & Support Author: JellyWatch Updated: 2026-09-01 Answers to the most common questions about JellyWatch. ## Is JellyWatch free? Yes. JellyWatch is free to download and use with core features. A **Premium** upgrade is available that unlocks advanced features like widgets, multiple servers, notifications, device management, media playback, and session messaging. ## Is JellyWatch available on iOS? No. JellyWatch is currently **Android only**. There is no iOS version planned at this time. ## Can I use JellyWatch with multiple servers? Yes, with **Premium**. Free users can connect one server. Premium users can add unlimited servers and switch between them. ## How do I get push notifications? 1. Purchase Premium. 2. Go to Settings → Notifications. 3. Enable push notifications. 4. Grant the Android notification permission. ## My server shows as offline but it is running - why? This usually means JellyWatch cannot reach your server. Check: 1. Your server URL is correct and accessible from your current network. 2. Port forwarding rules on your router (for remote access). 3. Reverse proxy configuration (nginx / Caddy / Traefik). 4. Self-signed certificate toggle (if applicable). 5. Try the Dual URL feature to configure both local and external URLs. ## How do I reset the app? You can clear app data from Android Settings → Apps → JellyWatch → Clear Data. Alternatively, use Backup & Restore to save your settings before resetting. ## Where can I report a bug? - Use the in-app **Support** feature (Settings → Support) to create a ticket. - Or visit our community channels for help. --- ### Troubleshooting - Android TV URL: https://jellywatch.app/doc/tv-troubleshooting Category: FAQ & Support Author: JellyWatch Updated: 2026-10-06 Common issues and solutions specific to JellyWatch on Android TV and Fire TV. ## Playback Issues ### Video does not start - Check that your Jellyfin server is reachable from the TV network. - Try a lower **Quality / Bitrate** in the player settings - your TV or network may not handle 4K transcoding. - Verify that the Jellyfin server has sufficient resources for transcoding (CPU / GPU). ### Audio out of sync - This is usually caused by a non-seamless **Match Frame Rate** display switch. Disable Match Refresh Rate in Settings → Playback if it persists. - Try switching from Direct Play to a forced transcode. ### Subtitles not appearing - Confirm the subtitle track is selected in the player (D-pad → Subtitles). - Some subtitle formats (image-based PGS / VOBSUB) require server-side burning-in. This triggers a transcode - ensure your server can handle it. ### Display goes black at the start of playback - This is a **non-seamless display mode switch** caused by Match Frame Rate. It is normal and lasts ~2 seconds. The player waits for the display to stabilise before showing video. - To avoid it, disable **Match Resolution** and only keep Match Refresh Rate enabled. ## Navigation Issues ### Focus is lost / stuck - Press **D-pad Left** to move focus back to the sidebar, then **D-pad Right** to return to the content area. - If the app is unresponsive, press **Back** repeatedly to return to the home screen. ### Sidebar does not expand - Move the D-pad focus fully to the left until the sidebar highlights, then wait 300ms for the expand animation. ### Back button exits the app instead of going back - This is expected behaviour on the app's top-level screens (Home, Search, etc.). Press Back again to go to the Android TV launcher. ## Connection Issues ### Server shows as offline - Verify the URL is reachable from a browser on the same network. - Check that the TV is on the correct Wi-Fi network (not a guest network with device isolation). - If using **Dual URL mode**, confirm that the local IP is correct and reachable. ### SSL / certificate errors - Enable **Allow self-signed certificates** in Settings → Servers → edit server. - Verify your certificate has not expired. ## Performance Issues ### App is slow / stutters on menus - Disable **Animated background** in Settings → Appearance to reduce GPU load on lower-end devices. - Disable **4K images** (Premium) if the device has limited RAM. - Reduce the number of visible home screen rows in Settings (Premium customisation). ### Home screen channels are outdated - Open JellyWatch and navigate to the Home screen - this triggers an immediate channel update. - Channels update in the background but background processes may be restricted on some devices. Check battery optimisation settings. ## Fire TV Specific ### App crashes on launch (Fire TV) - Ensure you have the **Fire TV flavour** of the app installed (from Amazon Appstore), not the Google Play version. - Clear the app cache: Fire TV Settings → Applications → Manage Installed Applications → JellyWatch → Clear Cache. ### Purchase not recognised (Fire TV) - Ensure you are logged into the same **Amazon account** that made the purchase. - Go to Settings → Premium and tap **Restore Purchase**. --- ### Troubleshooting URL: https://jellywatch.app/doc/troubleshooting Category: FAQ & Support Author: JellyWatch Updated: 2026-10-12 Common issues and their solutions. ## Connection Issues ### Cannot connect to server 1. **Verify the URL** - open it in a browser to confirm it is reachable. 2. **Check the port** - default is `8096` for HTTP or `8920` for HTTPS. 3. **Firewall rules** - ensure your server allows incoming connections. 4. **Self-signed certificate** - enable the toggle in server settings if needed. 5. **VPN** - if your server is behind a VPN, ensure JellyWatch can reach it. ### Frequent disconnections - Enable **Dual URL mode** with auto-switch to handle network changes gracefully. - Check that your server does not have aggressive session timeout settings. - Verify your network is stable (try switching between Wi-Fi and mobile data). ## Notification Issues ### Not receiving notifications 1. Ensure notifications are **enabled** in Settings → Notifications. 2. Check Android settings: Apps → JellyWatch → Notifications - ensure channels are not muted. 3. Verify that battery optimization is not killing the **JellyWatch foreground service** in the background. 4. Go to **Android Settings → Battery → JellyWatch** and set to **Unrestricted**. ### Delayed notifications - Notifications are delivered by the local **SessionMonitorService** which polls every 5 seconds. - Delays are caused by Android killing the foreground service due to battery optimization. - Exclude JellyWatch from battery optimization: Android Settings → Battery → JellyWatch → Unrestricted. ### Notifications stop after a while - The `SessionMonitorService` may have been killed by the system. - Toggle notifications off and back on in Settings → Notifications to restart the service. - On some OEM devices (Xiaomi, Huawei, Samsung), additional autostart permissions may be required. ## Performance Issues ### Dashboard loads slowly - Reduce the number of visible dashboard sections in Menu Customization. - Disable sections for services you don't use. - Check your server's response time - a slow server will slow the app. ### Statistics take too long to load - Statistics use streaming JSON parsing for large datasets (140MB+). - The first load may take longer; subsequent loads use cached data. - Pull to refresh to force a fresh load. ### High battery usage - Reduce the refresh interval in Settings. - Disable Dynamic Island if not needed. - Disable background notification monitoring for unused services. ## Widget Issues ### Widget not updating - Ensure JellyWatch is not being killed by battery optimization. - Tap the refresh button on the widget. - Remove and re-add the widget. - Verify your server is reachable. ### Widget shows "Premium required" - The widget requires a Premium purchase. Go to Settings → Premium to upgrade. ## Dynamic Island Issues ### Overlay not appearing 1. Check that **overlay permission** is granted (Settings → Apps → JellyWatch → Display over other apps). 2. Check that **accessibility service** is enabled (Settings → Accessibility → JellyWatch). 3. Ensure Dynamic Island is toggled on in JellyWatch Settings. 4. Verify there are active sessions on your server. ### Overlay disappears after phone restart - The accessibility service may need to be re-enabled after a restart on some devices. - JellyWatch will show the setup dialog again if permissions are missing. --- ### Support & Feedback URL: https://jellywatch.app/doc/support-and-feedback Category: FAQ & Support Author: JellyWatch Updated: 2026-09-01 How to get help, report bugs, and provide feedback. ## In-App Support JellyWatch has a built-in support system: 1. Go to **Settings → Support**. 2. Create a new support ticket describing your issue. 3. You will receive a **ticket ID** for tracking. 4. View your open tickets and responses in the **Support Detail** screen. ## Community Support - Join the JellyWatch community on **Discord** for real-time help. - Link your Discord account in Settings → Discord Account Linking for premium verification and exclusive channels. ## Providing Feedback - Use the in-app support system for bug reports and feature requests. - Include your JellyWatch version, Android version, and server version when reporting issues. - Screenshots and reproduction steps help us resolve issues faster. ## Changelog View recent updates and new features in **Settings → Changelog**. Each release includes: - New features - Bug fixes - Performance improvements - UI enhancements --- ### Creator Code URL: https://jellywatch.app/doc/creator-code Category: FAQ & Support Author: JellyWatch Updated: 2026-10-12 Earn commissions by sharing your unique creator code or support your favorite creator during purchases. ## Creator Program The **Creator Program** lets content creators and community members earn commissions when users make purchases using their unique code. Buyers can also support their favorite creator by entering a code before purchasing. The Creator tab is accessible from the **Premium screen** (More > Shop > Premium > Creator tab). --- ## How It Works ### For Creators 1. Go to the **Premium** screen > **Creator** tab. 2. Enter your desired **creator code** (3-20 characters, letters, numbers, and hyphens). 3. Tap **Register** to claim your code. 4. Share your code with your audience. 5. Earn a **5% commission** on every purchase made with your code. ### For Buyers 1. Go to the **Premium** screen > **Creator** tab. 2. Under **Support a Creator**, enter the creator's code. 3. Tap **Validate** to confirm the code. 4. Make your purchase -- the creator receives their commission automatically. The creator code input section is only shown to users who have **not yet purchased Premium**. --- ## Creator Dashboard Once registered, the Creator tab shows your personal dashboard: | Metric | Description | |--------|-------------| | **Your code** | Your unique creator code (tap to copy) | | **Total referrals** | Number of purchases made with your code | | **Total earnings** | Cumulative commission earned | | **Recent referrals** | Latest purchases with product name, type, and commission amount | --- ## Payout - Minimum payout threshold: **15 EUR**. - Once your balance reaches 15 EUR, you become eligible for payout. - A progress bar shows how close you are to the minimum. - Contact **Support** to request your payment. --- ## Creator Code Rules - Codes must be **3 to 20 characters** long. - Only letters, numbers, hyphens, and underscores are allowed. - Codes are **case-insensitive** (automatically converted to uppercase). - Each creator code is **unique** -- first come, first served. - Codes are tied to your **Firebase account**. --- ## Recovering Your Account If you previously registered a creator code: 1. Go to the **Creator** tab. 2. Tap **Recover existing account**. 3. Your account will be restored if your Firebase UID matches. --- ## Rules and Terms Tap **View Creator Rules** in the Creator dashboard to review the full terms and conditions of the Creator Program. # Community Hub - Curated Pages > Programmatic pages ranking and curating hub projects for discovery. - **Best plugins** (https://jellywatch.app/hub/best): Community-voted ranking. Sorted by votes then views. - **Awesome plugins** (https://jellywatch.app/hub/awesome): Curated list of plugins with at least 1 vote or 20+ views, scored by engagement. - **Newest plugins** (https://jellywatch.app/hub/new): Latest approved submissions. - **Trending plugins** (https://jellywatch.app/hub/most-viewed): Most viewed plugins right now. - **New this month** (https://jellywatch.app/hub/new-this-month): Plugins approved in the last 30 days. # JellyWatch Player > A dedicated Jellyfin and Emby player for Android TV, mobile and tablet (separate app: com.jellywatch.tv). URL: https://jellywatch.app/player Google Play: https://play.google.com/store/apps/details?id=com.jellywatch.tv ## Features - **Direct Play and Transcoding**: ExoPlayer with hardware decoding. Falls back to HLS transcoding with configurable bitrate. - **Quality Selection**: Choose from Original, 1080p, 720p, 480p. Switch quality mid-stream. - **Home Screen Channels**: Continue Watching and Recently Added appear on the Android TV launcher via TvProvider API. - **Up Next Auto-Play**: 15-second countdown overlay between episodes. Cancel or play immediately. - **Audio and Subtitle Switching**: Switch tracks during playback. Server renegotiation for transcode, instant for Direct Play. - **Live TV**: Watch live channels from your Jellyfin server. - **Seerr Integration**: Search, discover, and request movies/TV via Jellyseerr or Seerr (Watch Pass required). - **Admin Dashboard**: View active sessions, system info, running tasks, and trigger library scans. - **LAN-Optimized Buffering**: 2 minutes ahead, 2.5s start latency, 5s rebuffer threshold. - **Deep Linking**: jellywatch:// URI scheme for movies, series, episodes, collections. - **Multi-Account**: Account picker, account switching, shared Watch Pass. ## Technical Stack Kotlin, Jetpack Compose with TV Material 3, Hilt DI, Media3/ExoPlayer, Retrofit + Gson, Navigation Compose, Coil image loading, Firebase Crashlytics, Baseline Profile for AOT. ## Requirements Android TV 8.0+ (API 26). Compatible with NVIDIA Shield, Chromecast with Google TV, Amazon Fire TV, Sony Bravia, Xiaomi Mi Box, and other Android TV/Google TV devices. # Community Hub Projects > 200 approved projects. --- ## WhisperSubs URL: https://jellywatch.app/hub/whispersubs Repository: https://github.com/GeiserX/whisper-subs Platform: jellyfin Category: Subtitles Author: Sergio_Fernndez Approved: 2026-10-12 Writes subtitles for the titles in your Jellyfin library that have none, by transcribing their audio with local Whisper models on your own server. WhisperSubs is a Jellyfin plugin that writes subtitles for the titles in your library that have none, by transcribing their audio with local AI models. Download providers such as OpenSubtitles only serve what someone has uploaded, and Bazarr's Whisper path needs a second service running beside it. WhisperSubs runs inside Jellyfin and makes the subtitle from the audio, in the audio's own language. Transcription runs on hardware you control: the Jellyfin server by default, plus any workers you add. Your media never reaches a third-party cloud unless you configure one yourself. Features: - A title with no subtitles gets one in the language of its audio, saved next to the file as `Movie.es.WhisperSubs.srt`, and the title is refreshed so the player offers the track right away. - A film in a language you do not speak gets an English subtitle too. English audio can also get subtitles in 24 European languages (experimental). - A film with a few lines of foreign dialogue gets a forced subtitle that covers only those lines. - **Generate Subtitles** and **Translate into...** buttons sit on every item page. Your users can ask for subtitles too, and a request costs no CPU until you approve it. - On Linux the engine and a model download from the settings page, and a GPU is used when there is one: CUDA, Vulkan or ROCm. - Transcription can spread across your own workers or a hosted endpoint, free workers first. - An interrupted job resumes from its last timestamp, and the daily sweep skips what it already checked. - Optional extras: Qwen3-ASR as the transcription model, `.lrc` lyrics for music libraries, and vocal separation for noisy audio (all experimental). Documentation: https://geiserx.github.io/whisper-subs/ License: GPL-3.0-or-later --- ## PleXMLTV URL: https://jellywatch.app/hub/plexmltv Repository: https://github.com/Bretteroo/PleXMLTV Platform: both Category: IPTV Author: Bretteroo Approved: 2026-10-11 Export Plex's Live TV guide data to XMLTV format for use with Jellyfin. PleXMLTV is a free, open-source Python script that extracts high-quality Live TV guide data from your Plex Media Server and exports it to standard XMLTV format for use with Jellyfin, Emby, and other compatible applications. Plex Media Server stores approximately 14 days of guide data. PleXMLTV grabs all of it, artwork included. You've already paid for the guide data. Might as well use it! PleXMLTV requires a Plex Pass. --- ## Quality Gate Encoder URL: https://jellywatch.app/hub/quality-gate-encoder Repository: https://github.com/GeiserX/quality-gate-encoder Platform: jellyfin Category: Tools Author: Sergio_Fernndez Approved: 2026-10-11 Docker service that adds a 720p copy beside every film and episode in a Jellyfin library, encoded on an Intel (QSV) or NVIDIA (NVENC) GPU in HEVC, H.264 or AV1, so phones and remote viewers direct play instead of transcoding live. Originals stay untouched. quality-gate-encoder watches a Jellyfin library and adds a 720p copy beside every film and episode, so phones and remote viewers direct play the copy instead of making the server transcode live for each stream. It runs as a Docker container on Linux, encodes on an Intel or NVIDIA GPU or in software, leaves the original file untouched, and Jellyfin lists the copy as a second version of the same title. ## Features - Keeps the original untouched and adds a `- 720p` copy beside it; Jellyfin shows both as versions of one title, never as a duplicate. - Phones and remote viewers direct play the copy, so the server stops transcoding live for every stream. - Encodes on an Intel iGPU (QSV) or an NVIDIA card (NVENC), decodes on the same GPU, and falls back to software by itself when the GPU refuses a file. - Output in HEVC, H.264 or AV1; H.264 comes out as MP4 with AAC for the widest direct play, and switching codec never re-encodes what exists. - Skips anything already 720p or lower, and a restart on a finished library checks the destination instead of re-reading the originals. - Works on NFS and CIFS shares: it polls instead of relying on inotify, and a Jellyfin on another host gets a manifest instead of symlinks. - Jellyfin never sees a half-written file: encodes go to `.tmp` and are renamed once verified. - A broken mount is caught before cleanup runs: orphan cleanup refuses when the source looks wrong, and delete events are rate-limited. - Holds new encodes while the destination is under a free-space floor you set. The QualityGate plugin (https://jellywatch.app/hub/qualitygate) is optional: it caps chosen users at the 720p copy and writes a priority list, so the titles your viewers are about to watch get encoded first. Documentation: https://geiserx.github.io/quality-gate-encoder/ License: GPL-3.0-or-later --- ## QualityGate URL: https://jellywatch.app/hub/qualitygate Repository: https://github.com/GeiserX/quality-gate Platform: jellyfin Category: Playback Author: Sergio_Fernndez Approved: 2026-10-10 Caps the video resolution each user can be served, from 480p to 4K, measured on the file's real video stream. Quality Gate is a Jellyfin plugin that caps the video height each user can be served: 480p, 720p, 1080p, 1440p or 4K, per user or as a default for everyone. The cap is measured on the file's real video stream, so a rename, a re-encode or a symlink does not get around it. Media above the cap arrives as a capped transcode, or as a smaller version of the same item when one exists, and the original file is refused. Jellyfin's own limit is a bitrate for remote clients, not a height: a low-bitrate 4K file passes it, and a viewer on the local network is not limited at all. Quality Gate checks pixels, for every client, on every route that hands out video, with one documented exception (a legacy HLS segment route). Features: - Per-user policies: assign one per user, set a default for everyone else, or mark a user unrestricted. - A capped user cannot direct-play, stream, download or fetch the original file. - Smaller copies play as they are: keep a 720p encode beside each original and capped viewers get it without a transcode. - Optional version grouping shows `Film.mkv` and `Film - 720p.mkv` as one film with two versions, in movies libraries. - API keys and anonymous requests can be held to a policy of their own. - A different intro video per policy, and a log line for every decision naming the user, the cap and the policy. It is not DRM, and if the plugin fails to load every user is unrestricted, so check that it stays Active. Documentation: https://geiserx.github.io/quality-gate/ License: GPL-3.0-or-later --- ## French Originals URL: https://jellywatch.app/hub/french-originals Repository: https://github.com/wildenrou/Jelly-lang-fix Platform: jellyfin Category: Library Management Author: wildenrou Approved: 2026-09-30 Give French-original films and shows their French titles and summaries. Runs natively from Jellyfin's Scheduled Tasks or the plugin's Run with saved settings button. No API key, Python runtime, Docker sidecar, or external scheduler is needed on your server. hecks local artwork before saving metadata. If an image file is missing or inaccessible, the item is skipped without changes and the batch continues. The report names the affected files, and the item remains retryable after its artwork is repaired. Existing completion history is retained. Unchanged items stay hidden, and summary-only updates do not appear as renames. Jellyfin's normal metadata save can also remove references to image files it cannot find. This release checks for that condition before invoking the save, including a second check immediately before changing cached metadata. Unexpected image changes during a save still fail verification. Start with preview and a small batch before scheduling apply. --- ## Jellyfin Alpha Jump URL: https://jellywatch.app/hub/jellyfin-alpha-jump Repository: https://github.com/The-Grog/Jellyfin-Alpha-Jump Platform: jellyfin Category: UI/Themes Author: thegrog Approved: 2026-09-23 Changes default WebUI TV and Library scrolling - selecting a letter scrolls to the letter on the whole #-Z list instead of serving a page with only that letter. Plex like scrolling. Alpha Jump is an installable Jellyfin 12.1+ plugin for Jellyfin Web. In supported library grids, it changes the native alphabet picker from letter filtering into a direct scroll to the first matching rendered title—while retaining the complete rendered library - Plex like scrolling now in Jellyfin. Jump with the alphabet picker or keyboard shortcuts. It preserves Jellyfin's renderer, appearance, playback, cards, and normal controls. Alpha Jump does not fetch items independently or replace the library view. When its safety conditions are not met, the native alphabet picker keeps its normal filtering behavior. What Alpha Jump does Scrolls to the first card whose rendered data-prefix begins with the chosen alphabet letter instead of applying Jellyfin's alphabet filter. Offers keyboard shortcuts: Prefix (default) uses Shift+J, then a letter or # within two seconds; Plain jumps directly with a letter or #. Choose Off to disable shortcuts. Keeps non-alphabet filters and search constraints intact. Treats A–Z as stateless jump commands: repeated clicks or keyboard commands repeat the jump without a persistent highlighted or selected letter. # returns to the top. --- ## jellycanvas URL: https://jellywatch.app/hub/jellycanvas Repository: https://github.com/SpeeDFireCZE/jellycanvas Platform: jellyfin Category: UI/Themes Author: SpeeDFire Approved: 2026-09-15 JellyCanvas is a Jellyfin plugin that gives you complete control over the native CSS. Any changes you make can be seen in the preview, and saving them will add the CSS to the native Jellyfin branding. Only a few options use the file transformation plugin. A theme designer for Jellyfin 12, delivered as a server plugin. Pick colors, bar layouts and styles, card effects, fonts and dozens of other options in the Dashboard, watch a live preview of the real web client for the web, TV and mobile layouts, and apply with one click. The output is plain CSS written to Dashboard → General → Branding → Custom CSS - the same place you would paste a hand-written theme. Nothing else in Jellyfin is touched; uninstalling leaves a server that behaves exactly as before. A few features that CSS cannot do (custom toolbar buttons, a home slideshow, card badges, a closable info bar) come from a small client script injected through the File Transformation plugin when it is installed. --- ## People Toolkit URL: https://jellywatch.app/hub/people-toolkit Repository: https://github.com/ghalva69-byte/jellyfin-plugin-peopletoolkit Platform: jellyfin Category: Tools Author: Georges_Hal Approved: 2026-09-15 Add, rename, delete and browse People on any Jellyfin item — including Photos, which don't natively support People. Includes a gallery view and orphan cleanup tools. People Toolkit works around a Jellyfin limitation where Photos don't support the People field at all. It lets you tag, rename, and delete People on any item — Photos, Videos, Movies, Episodes — with full library-wide consistency (renaming or deleting updates every item where that person appears, and keeps their cached image in sync). Also includes a Create tab to add a person directly, a Gallery view to browse everyone in your library, and cleanup tools for orphaned entries. Compatible with Jellyfin 10.11.x. Not yet tested on Jellyfin 12.0+. --- ## Jellyfin VideoOSD Tweaks and Candy URL: https://jellywatch.app/hub/videoosd-tweaks-and-candy Repository: https://github.com/chrissix666/Jellyfin-VideoOSD-Tweaks-Candy Platform: jellyfin Category: Tools Author: Christoph_Reinhold_Berger Approved: 2026-08-30 Tweaks for how it plays, candy for how it looks: VLC-familiar playback controls, quick actions, and artwork overlays for the Jellyfin Video OSD, all in one plugin A Jellyfin Web plugin for modifying, reordering, and extending the native Jellyfin VideoOSD. A VideoOSD modifier and enhancer, not a skin, theme, or custom player. The Jellyfin video OSD is functional, but fixed. You get what Jellyfin gives you, in the order Jellyfin decided. This plugin changes that. Every vanilla OSD element can be individually hidden or repositioned across four independent zones: top left, top right, bottom left, and bottom right. No compromise layout, no living with buttons you never use. On top of that, optional addons bring the controls you actually want: playback speed steps, frame-by-frame navigation, A-B loop, quick download, screenshots, and a Custom On/Off Menu to toggle all of it without leaving the video. Think of it as a VLC crossover for the Jellyfin OSD, extended with things VLC never had. And then there is the Candy. Artwork Display overlays your library artwork directly onto the OSD during playback. Fully configurable down to the smallest detail. --- ## Jelly Remote for Wear OS URL: https://jellywatch.app/hub/jelly-remote-for-wear-os Repository: https://github.com/WereWolfix/Jelly_Remote Platform: jellyfin Category: Clients Author: Leonardo_Milossi Approved: 2026-08-26 Simple app for Jellyfin to control Jellyfin from your WearOS smartwatch Jelly Remote is a native Wear OS app that turns your Galaxy Watch into a remote control for Jellyfin — the same "cast to a session" idea as the phone app's remote control feature, but built for your wrist. Features Sign in via Jellyfin Quick Connect — stays signed in across restarts Browse and pick any controllable Jellyfin session (PC, TV, etc.) Play / pause / skip playback controls, with a live progress ring One-tap Skip Intro / Skip Credits when a segment is detected Dedicated volume screen with a circular slider that follows the curve of the watch face Blurred backdrop art of whatever's currently playing Notes Sideload the APK with adb install JellyRemote 0.1.apk (not on the Play Store) Requires a Jellyfin server reachable from your watch's network --- ## Jellyfin Cinema Project URL: https://jellywatch.app/hub/cinema-project Repository: https://github.com/chrissix666/Jellyfin-Cinema-Project Platform: jellyfin Category: UI/Themes Author: Christoph_Reinhold_Berger Approved: 2026-08-24 A first-person 3D cinema for Jellyfin Web. Watch and listen to the soul of a movie, a visualized experience you step into like a video game. Jellyfin is all about accessibility. This project is all about ambience. However, with the one-button Smart Launch feature, you can instantly launch into the movie ambience without sacrificing any accessibility. Walls lined with poster art, theme songs filling the room, trailers and movies playing on the screen up front. None of it is new content, it's what your Jellyfin library already had, just given somewhere to actually be experienced instead of scrolled past. Walk up to a poster, pick movie / trailer / theme song / theme video / ambient mode. Front wall for videos, side walls as the library, back wall as an artwork slideshow. A kiosk to search and filter. Runs entirely in the browser, no extra server, no Docker container. --- ## jellyscope URL: https://jellywatch.app/hub/jellyscope Repository: https://github.com/SpeeDFireCZE/jellyscope Platform: jellyfin Category: Statistics Author: SpeeDFire Approved: 2026-08-21 Jellyfin statistics that connect what people watch with the technical state of the library. Jellyfin statistics that connect what people watch with the technical state of the library. Inspired by two existing projects: Jellystat — knows what is being watched MediaLyze — knows what those files are Jellyscope is not a copy of either. It is an independent implementation of both ideas in one app, because only together can they answer questions neither can answer alone: "How many terabytes are taken up by content nobody has watched in a year?" "Which file makes the server transcode most often?" "What do I watch the most — and do I even have it in decent quality?" "Which 60 GB 4K film did I watch once and never again?" Jellyscope combines the worlds of statistics and analysis, solving some of the problems of existing statistics tools. Jellyscope works with the library via the Jellyfin itemID, but also controls the TMDbID and names, so that no data is lost when the itemID changes (when the file is rewritten). Jellyscope will still sync those files and stats under one real item. Would you like to know the language preferences of your users and the language statistics of your library? Jellyscope can provide that information, too. Would you like to know the bandwidth stats and location of your streams? Jellyscope can provide that information too. And more stats will be implemented. Disclaimer: I'm not a full time programmer. I do HTML, C#, PowerShell and JS passionately, but not professionally, so this was written together with AI that helped me code and do documentation (to be best practice). --- ## Polskie Napisy Anime URL: https://jellywatch.app/hub/polskie-napisy-anime Repository: https://github.com/i3lackhawk/jellyfin-plugin-azureillusion/raw/refs/heads/catalog/manifest.json Platform: jellyfin Category: Subtitles Author: I3lack_Hawk Approved: 2026-08-20 Plugin umożliwia wyszukiwanie i automatyczne pobieranie napisów anime. Polskie Napisy Anime dla Jellyfin Wtyczka dostarcza polskie napisy z API AzureIllusion do Jellyfin. Jest przygotowana do instalacji z własnego katalogu wtyczek, dlatego działa także z Jellyfin zainstalowanym na Synology przez Centrum pakietów. Plugin preferuje AniList ID zapisane w Jellyfin. Gdy go brakuje, może użyć jednoznacznego dopasowania dokładnego tytułu i roku. --- ## Jellyfin Keyboard Library Navigation: Control Your Entire Library by Typing URL: https://jellywatch.app/hub/jellyfin-keyboard-library-navigation-control-your-entire-library-by-typing Repository: https://github.com/chrissix666/Jellyfin-Keyboard-LibraryNavigation Platform: jellyfin Category: Other Author: Christoph_Reinhold_Berger Approved: 2026-08-06 Adds keyboard-based navigation and commands to the Jellyfin Web interface, allowing quick access to libraries, views, filters, sorting, playback actions, and other functions through configurable key combinations. I built a userscript that turns your keyboard into a full remote control for your Jellyfin library. Just start typing anywhere in the web UI and press Enter — no mouse, no clicking through menus. Type a title and jump straight to it, from anywhere to any libary or detail page. Flexible input parsing that accepts many spelling variations, aliases, and alternative phrasings. Type a person's name and see their movies or shows. Combine sort, filter, view, and letter-jump in a single line, in any order you type them. Play with direct chapter jump, shuffle, or watch a trailer with one word. Watched & favorite, submenu, pagination & scrolling, and a lot more. Even random has a brain of its own. GitHub: https://github.com/chrissix666/Jellyfin-Keyboard-LibraryNavigation Features: Navigation - Jump to any movie, show, season, episode, person, collection, tag, genre, or studio just by typing its name - Works from anywhere ("remote") or on the current page ("bare") — most commands work both ways - Smart title matching: handles subtitles, bracketed edition suffixes, and release years automatically - Multilingual collection-suffix recognition (collection, saga, filmreihe, and more, across a dozen+ languages) Playback - Play, resume, replay, shuffle, trailer, and "Next Up" — all combinable, order-free - Context-aware play: no title needed once you're already on a season, episode, or movie - Seek directly to a chapter (by number or by name) or a percentage into playback Random, with context - Bare `random` adapts to where you are: a movie from the current collection, an episode from the current show, a show/movie/collection from the current library — or a real server-side random pick across genre/tag/studio views, not limited to what's loaded on screen - Nest it for more control: random show → random episode, random collection → random movie, with or without playing it directly Filter, sort, view, and letter-jump - Chain multiple filter categories in one command, and combine freely with sort/view/letter-jump - Reset all filters, or just one Watched, Favorite & Submenu - Fully unified phrasing — 15 sentence patterns × several word spellings each, so "mark as watched," "toggle fav," and "remove from favourites" all just work Pagination & scrolling - Jump between library pages (single or multiple at once), or scroll within a page — with a documented "lazy" fallback mode for when you just want to type the fewest possible characters Tested on: - Windows 11 - Chrome - Jellyfin Web 10.10.7 - Jellyfin JavaScript Injector Licence: MIT Note: AI assisted for debugging, testing, and documentation. I spent months on this, session after session, real testing, real bugs, real trial and error, not a single dashed-off prompt. Bugs can still occur, please report anything you run into. --- ## Cover Art Sync URL: https://jellywatch.app/hub/cover-art-sync Repository: https://github.com/leonardoman9/jellyfin-plugin-cover-art-sync Platform: jellyfin Category: Music Author: Leonardo_Mannini Approved: 2026-08-05 Synchronize missing Jellyfin music album and artist artwork from a configured metadata provider, with a scheduled task. Cover Art Sync is a plugin that finds albums and album artists without primary artwork, then synchronizes suitable images from a configured metadata provider. ### Features - Detects albums and album artists missing primary artwork - Matches albums by filesystem path, with artist/title fallback - Reuses existing local folder.jpg files when available - Downloads missing artwork beside the media - Registers images directly in Jellyfin - Supports album covers and artist artwork - Adds native Jellyfin scheduled tasks - Can run daily automatically or manually on demand - Does not replace artwork already set in Jellyfin The plugin currently supports one configured provider. Additional providers may be added in future releases. --- ## Subsync Starter URL: https://jellywatch.app/hub/subsync-starter Repository: https://github.com/Marnalas/jellyfin-subsync Platform: jellyfin Category: Subtitles Author: Marnalas Approved: 2026-08-03 Automatically re-syncs out-of-sync subtitles using ffsubsync and jellyfin metadata. There are two main ways to deal with out-of-sync subtitles. The easy way is just to download another one, hoping for a better result. The more automated way is to use tools that have integrated mechanisms to target good subtitles and may sync them or tools that crawl through your filesystem to sync subtitles, therefore relying on filenames and pattern recognition. Most of these tools tend to be heavy to run and configure, implying some monitoring through a separate UI. This plugin aims to provide a compromise, "the best of both worlds", the automated approach without the overhead of running and monitoring a separate service. ## What it does Subsync Starter re-times the subtitle you already have, against the video it belongs to or against an already synced subtitle. Nothing is downloaded, nothing is regenerated, it just gets aligned. - **It's a Jellyfin plugin, not another service.** No separate UI, no database, no complex configuration to babysit. It's configured from Jellyfin's own admin page and runs as a scheduled task, sitting right next to your library scans. - **No crawl of the filesystem and no dependency on naming patterns.** It reads the Jellyfin database of subtitles, built when Jellyfin scanned your library, so forced tracks, SDH tracks, and hyphenated locale tags sync correctly instead of getting silently skipped by pattern-matching. - **Skips what's already done.** Every synced file is fingerprinted, so nightly sweeps only touch what's new. It doesn't re-walk the same ground every night. ## How it works, and what setup actually costs This plugin aims to be an install-once, forget-it plugin. But let's be honest about the one-time cost. It's two pieces: the plugin runs inside Jellyfin, and a small sidecar docker container does the actual alignment work with ffsubsync and FFmpeg. It's a more hands-on installation than most plugins. You add it as a service in your existing `docker-compose.yml`, point the plugin at it, and map your library paths once. Check once that it runs fine, then after that you're done, no queue to watch, no indexer health to monitor, just a scheduled task that you can forget about. ## What it isn't It doesn't search for or download subtitles, bring your own, from Jellyfin's search, Bazarr, or other Jellyfin plugins, and it fixes the timing, that's all. It doesn't transcribe or generate subtitle text. If you don't have a subtitle file for something, this plugin has nothing to work with. It only sees what Jellyfin has indexed, so a subtitle dropped in since the last library scan won't be picked up until the next scan. And it skips ISO/BDMV/VIDEO_TS rips outright as there's no single video file to align against. ## Disclaimer This plugin brings [ffsubsync](https://github.com/smacke/ffsubsync) to Jellyfin and integrates it to the Jellyfin admin interface. [ffsubsync](https://github.com/smacke/ffsubsync) and [FFmpeg](https://ffmpeg.org) actually do the heavy lifting and are the real heroes. MIT licensed --- ## Jelana URL: https://jellywatch.app/hub/jelana Repository: https://github.com/skijk/Jelana Platform: jellyfin Category: Statistics Author: skijk Approved: 2026-07-28 Jelana is an analytics dashboard for Jellyfin focused on viewers rather than administrators. # Jelana **Jelana is a modern, viewer-focused analytics dashboard for Jellyfin.** Unlike most Jellyfin statistics tools, which are built primarily for server administration and troubleshooting, Jelana focuses on the people using your library. It transforms playback data into meaningful insights that are easy to explore and enjoyable to share. Whether you're running a private server for your family, sharing your library with friends, or managing a larger community, Jelana helps answer questions like: - What's trending right now? - Which movies and TV shows are the most popular? - How is the library growing over time? - Who are the most active viewers? - What does the media library actually look like? Instead of monitoring CPU usage, transcoding sessions, or server performance, Jelana highlights the content and the viewing experience. ![Jelana Dashboard](https://inactive.se/jelana-sshot.png) ## Features - Viewer-focused analytics - Trending movies and TV series - Most active users - Daily watch activity and playback trends - Library growth tracking - Storage overview - Media profile (video, resolution, and audio statistics) - Modern, responsive interface - Privacy-friendly and fully self-hosted - Runs on any standard PHP web server Jelana complements existing Jellyfin administration tools by providing the statistics that server owners and their users actually want to see. --- ## Fathom URL: https://jellywatch.app/hub/fathom Repository: https://github.com/Fathom-Media/fathom Platform: jellyfin Category: Clients Author: thebigjoe1 Approved: 2026-07-27 A modern desktop client for Jellyfin, with an optional built-in YouTube player and Seerr requests. **Fathom** is a modern, native Jellyfin client for the desktop that treats your media library like it deserves. Built with Flutter and a libmpv (media_kit) playback engine, it delivers smooth, high-quality video with full audio-track and subtitle support on both Linux and Windows. One app, your whole media world. Beyond gorgeous Movies, TV, and Live TV playback, Fathom pulls everything together: - **Rich playback** — a libmpv-powered engine with multiple audio tracks and subtitles, Skip Intro / Skip Credits, resume-where-you-left-off, and a refined player HUD that stays out of your way. - **Live TV** — a frosted live HUD with server-driven live seek, a one-tap LIVE button, and full subtitle support. - **Server administration** — run your entire Jellyfin server right from the app, no separate web dashboard required. Manage users, devices, and active sessions; edit server config (general, playback, branding, networking, API keys); set up Live TV and DVR; browse, install, and manage plugins; and stay on top of maintenance with scheduled tasks, activity, logs, and system info. - **SyncPlay** — a full two-way peer (clock-sync, scheduling, pause / seek / buffering) that interoperates with official and third-party Jellyfin clients so movie night just works, wherever everyone is. - **Built-in YouTube (optional)** — a first-class YouTube experience without ever leaving the app. Completely ad-free playback, built-in SponsorBlock that automatically skips sponsors, self-promos, intros, outros, and other filler, a reclaimable mini-player (picture-in-picture), theater mode, and downloads for offline viewing. Enable it only if you want it. - **Seerr integration (optional)** — browse, request, and manage content (approve / decline / edit, mark available) right from the detail page, so filling gaps in your library is a couple of taps away. - **In-app updates** — self-updating from GitHub Releases; you are always on the latest without hunting for a download. - **Localization** — fully translatable and Weblate-ready. **Coming in future releases:** Android phone / tablet and Android TV builds (with native Chromecast) and built-in internet radio (search, group, and favorite stations with live now-playing metadata). All are in testing today. Free and open source under **AGPL-3.0**. --- ## Dicoverr URL: https://jellywatch.app/hub/dicoverr Repository: https://github.com/loafdaddy/discoverr-bot Platform: jellyfin Category: Notifications Author: twoloafs Approved: 2026-07-20 Discoverr is a lightweight Discord bot for Seerr and Jellyfin users. It posts scheduled movie and TV picks into dedicated channels and lets people request titles through Seerr without leaving Discord. # Discoverr **Daily media recommendations in Discord, with one-click Seerr requests.** Discoverr is a lightweight Discord bot designed for self-hosted media servers. It automatically posts curated movie and TV recommendations into Discord every day and lets your community request titles directly through Seerr without ever leaving Discord. Instead of expecting people to constantly browse Seerr or ask "what should we watch?", Discoverr brings fresh recommendations to them. ## Features * 🎬 Movie of the Day * 📺 TV Show of the Day * 📈 Trending Movies & TV * 🆕 New Releases * 🍿 New on Streaming * 💎 Hidden Gems * ✅ One-click Seerr request buttons * 🔒 Automatically checks Seerr so already-requested or available titles are handled correctly * 🎲 Diversified recommendations so the same blockbuster movies don't dominate every category * 🐳 Docker-first deployment * ⚡ Lightweight and easy to self-host ## Built for self-hosters Discoverr is designed to sit alongside a typical media stack including: * Jellyfin * Seerr * Sonarr * Radarr * Docker It doesn't replace Seerr—it complements it by making discovery effortless inside your Discord server. ## How it works At scheduled times, Discoverr queries TMDb to build recommendation pools for each category. It intelligently filters and diversifies results before posting rich Discord embeds. Every post includes a **Request** button that submits directly to Seerr using a dedicated account you configure. Users never need to leave Discord to request something new. ## Security Discoverr only communicates with: * Discord * TMDb * Seerr It does **not** connect to or control your Jellyfin server directly. The bot only has the permissions granted to the dedicated Seerr account you create, so you remain in complete control over what it can request. ## Why Discoverr? Most media servers rely on users actively searching for something to watch. Discoverr flips that around by bringing fresh recommendations into Discord every day, helping your community discover content they may never have searched for otherwise. Perfect for family servers, friend groups and larger communities that want to keep their media library active and engaging. ## Installation Discoverr is Docker-first and includes comprehensive setup documentation covering: * Discord bot creation * TMDb API configuration * Seerr integration * Environment variables * Docker Compose deployment Setup typically takes just a few minutes if you already have Seerr running. ## Open Source Discoverr is completely open source and community contributions are always welcome. Whether you have feature ideas, bug reports or pull requests, feel free to get involved. --- ## Full Watch Party Suite : Intergrated with Radarr/Sonarr/Trakt URL: https://jellywatch.app/hub/full-watch-party-suite-intergrated-with-radarrsonarrtrakt Repository: https://github.com/marker197/party-watch-for-emby Platform: both Category: Playback Author: marker Approved: 2026-07-19 Watch party allows devices anywhere to watch the same item played on emby, in sync. # Emby-Trakt Suite A self-hosted companion app for Emby that adds Watch Party support, smart recommendations, and Trakt integration — all running from a single Docker container on your local network. ## Watch Party The main feature. Pick something from your Emby library, create a party, and share the code. Everyone joins from their own device and playback is synchronised — play, pause, and seek all happen together. A live chat with emoji reactions runs alongside. All participants need an Emby account on the server. Use tail scale or (eeek port forwarding) to allow eternal users to conenct to the app, port 8000, can be changed in .env.. ## Other Features The suite also builds a personalised Smart Watch Queue ranked by your Trakt watchlist, trending content, and upcoming episodes. An ML model trained on your rating history predicts scores for unwatched items. Universe Discovery organises franchises like Marvel and Star Wars into ordered playlists. A Taste Profile analyses your rating biases and suggests content outside your comfort zone. Scrobble Audit catches anything played in Emby but missing from Trakt. Radarr and Sonarr integration lets you send missing items to download in one click. Everything runs on a schedule with no manual upkeep needed. Full instructons/install etc on github. Use docker or synology container to build and run. Should work on jellyfin also, although not tested, maybe some of the endpoints are different from emby.. --- ## Plex2Jellyfin URL: https://jellywatch.app/hub/plex2jellyfin Repository: https://github.com/Nomadcxx/plex2jellyfin Platform: jellyfin Category: Library Management Author: rama Approved: 2026-07-13 plex2jellyfin migrates Plex-style media folders to Jellyfin naming and keeps new downloads organized with a CLI, daemon, web dashboard, and Jellyfin companion plugin. ![plex2jellyfin wordmark](https://raw.githubusercontent.com/Nomadcxx/plex2jellyfin/main/assets/plex2jellyfin_brand.png) plex2jellyfin helps clean up media libraries that worked in Plex but do not scan cleanly in Jellyfin. It scans existing movie and TV libraries, finds duplicate media, consolidates TV series split across drives, and previews cleanup plans before files are moved or deleted. ![plex2jellyfin dashboard](https://raw.githubusercontent.com/Nomadcxx/plex2jellyfin/main/assets/screenshot-dashboard.png) After migration, the daemon watches download folders and organizes new arrivals into Jellyfin-compatible paths. It parses release names, strips release tags, creates standard movie and TV folder structures, and can notify Sonarr, Radarr, and Jellyfin after imports. The project ships a Linux CLI, systemd daemon, web UI on port 5522, TUI installer, Docker image, and AUR package. The web UI includes setup, dashboard, queue, activity, trace, scheduler, duplicate review, consolidation, and settings pages. ![plex2jellyfin consolidation view](https://raw.githubusercontent.com/Nomadcxx/plex2jellyfin/main/assets/screenshot-consolidation.png) A companion Jellyfin plugin closes the feedback loop. It sends item and playback events back to plex2jellyfin so the tool can confirm that Jellyfin recognized organized files, detect orphaned media, and avoid moving files during playback. Path mappings support Docker and host path differences. Optional Ollama integration helps review low-confidence filename parses before rename plans run. ![plex2jellyfin scheduler view](https://raw.githubusercontent.com/Nomadcxx/plex2jellyfin/main/assets/screenshot-scheduler.png) Detailed description - no inline images fallback: plex2jellyfin helps clean up media libraries that worked in Plex but do not scan cleanly in Jellyfin. It scans existing movie and TV libraries, finds duplicate media, consolidates TV series split across drives, and previews cleanup plans before files are moved or deleted. After migration, the daemon watches download folders and organizes new arrivals into Jellyfin-compatible paths. It parses release names, strips release tags, creates standard movie and TV folder structures, and can notify Sonarr, Radarr, and Jellyfin after imports. The project ships a Linux CLI, systemd daemon, web UI on port 5522, TUI installer, Docker image, and AUR package. The web UI includes setup, dashboard, queue, activity, trace, scheduler, duplicate review, consolidation, and settings pages. A companion Jellyfin plugin closes the feedback loop. It sends item and playback events back to plex2jellyfin so the tool can confirm that Jellyfin recognized organized files, detect orphaned media, and avoid moving files during playback. Path mappings support Docker and host path differences. Optional Ollama integration helps review low-confidence filename parses before rename plans run. --- ## Media Preview Generator URL: https://jellywatch.app/hub/media-preview-generator Repository: https://github.com/stevezau/media_preview_generator Platform: both Category: Tools Author: Steven_Adams Approved: 2026-07-09 GPU-accelerated video preview thumbnail (BIF/trickplay) generation for Jellyfin & Emby (and Plex) Offload trickplay (scrubbing preview thumbnail) generation off your Jellyfin server and onto any machine with a GPU. Jellyfin can generate hardware-accelerated trickplay natively, but it shares the same CPU/GPU as playback — on a busy server that's resources you'd rather give to the player, and large libraries can take a long time to process. Media Preview Generator runs the whole job on a separate box of your choosing, uses every GPU it finds (NVIDIA, AMD, Intel), and processes files in parallel, then writes finished trickplay tiles into place so Jellyfin serves them normally. Jellyfin features: - Native trickplay tile output, written where Jellyfin expects it — both on-media (next to the video) and off-media (in Jellyfin's config folder), with instant registration so previews show up without a full library scan. - Multi-version aware: fans out across every MediaSource so each version of an item gets its own trickplay. - GPU-accelerated FFmpeg with per-GPU worker/thread tuning, automatic CPU fallback if a codec fails on the GPU, and HDR / Dolby Vision (incl. Profile 5) tone mapping. - Automation: Sonarr / Radarr / Tdarr / FileFlows webhooks, Recently-Added polling, and cron/interval schedules through one inbound URL, with source-aware dedup that re-runs on quality upgrades and skips when nothing changed. - A Previews Readiness panel audits the Jellyfin-side flags that affect trickplay and flags what needs fixing. - Web UI is the only interface; Docker deployment; supports Emby and Plex in the same run — when multiple servers share a file, FFmpeg runs once and the result is written in each server's own format. --- ## Astra URL: https://jellywatch.app/hub/astra Repository: https://github.com/AmbientFlare/astra-tv Platform: jellyfin Category: Clients Author: Ambient_Flare_Photography Approved: 2026-07-09 A Jellyfin client built for Amazon Vega OS — the Linux-based Fire TV Stick platform that broke every existing Jellyfin client when it removed sideloading. Astra brings Jellyfin back to these devices with native playback and a clean 10-foot UI. Astra is a Jellyfin client built for Amazon Vega OS — the Linux-based platform running on the newest Fire TV Stick hardware. Vega OS replaced Android TV on these devices and removed sideloading entirely, which broke every existing Jellyfin client on the platform. Astra was built from scratch against Amazon's Vega OS SDK to bring Jellyfin back to these Fire TV Sticks. Connect Astra to your own Jellyfin server (local network over HTTP or remote over HTTPS) and browse your movie and TV libraries from the couch. Astra supports searching your server, viewing season/episode and cast details, resuming playback where you left off, and switching between multiple saved servers. Playback runs through the native Vega media stack with Jellyfin transcode fallback for anything that isn't directly compatible. Astra is a client only — it has no hosted backend, no bundled content, and no accounts of its own. Everything you see comes from your own Jellyfin server. Currently on version 1.0.1, live on the Amazon Appstore. Actively developed, with more on the way — stay tuned. --- ## AI Search URL: https://jellywatch.app/hub/ai-search Repository: https://github.com/Franciskid/jellyfin-plugin-ai-search Platform: jellyfin Category: Tools Author: Franciskid Approved: 2026-07-03 Ask your movie library a question, in your own words, and get real answers. AI Search adds a search bar to the Jellyfin web client. You type what you're in the mood for, and it answers with a handful of movies from your own library, each with a one-line reason why it fits. It knows what you've already watched and what you marked as favorite. Click a result and you land on its detail page, ready to play. No third party is involved unless you point the plugin at one. Your prompt goes from your browser to your Jellyfin server, and from there to whatever AI backend you configured: a local Ollama, your own platform, or a hosted API if that's what you prefer. I built this for my own library (about 3000 movies, mostly with French metadata), so everything below is tested on a real, medium-sized, non-English collection. --- ## Nexus PobreFlix URL: https://jellywatch.app/hub/nexus-pobreflix Repository: https://github.com/ONeithan/Nexus-PobreFlix Platform: jellyfin Category: UI/Themes Author: O_Neithan Approved: 2026-06-30 An optimized fork of Jellyfin-MonWUI-Plugin — Brazilian Portuguese translation, performance tweaks, and custom theming for a premium streaming experience. PobreFlix PobreFlix is my personal fork of the excellent Jellyfin-MonWUI-Plugin by G-grbz, adapted to fit my own taste and the needs of the Brazilian Portuguese community. All credit for the original plugin and its core development goes to G-grbz. What I've added on top: Full Brazilian Portuguese (PT-BR) translation Performance and resource usage optimizations Custom color theming and visual adjustments Lighter, smoother experience overall The name is a joke that works in both languages: "Pobre" means "poor" in Portuguese, and it's funny there because I'm not paying for streaming services anymore. "Flix" is just my little nod to Netflix. I run this on my self-hosted Jellyfin server (TrueNAS SCALE, 7TB storage built up over the years) connected to a projector, so my living room basically turned into a private cinema. The result is genuinely premium-feeling, optimized, and a joy to use. Repository: https://github.com/ONeithan/Nexus-PobreFlix If you're curious about the full self-hosted setup behind this, I wrote a detailed post here: https://www.reddit.com/r/selfhosted/comments/1ui6vqk/finally_built_my_own_selfhosted_media_ecosystem/ Feedback, ideas, and questions are always welcome! --- ## Quality Overlay URL: https://jellywatch.app/hub/quality-overlay Repository: https://github.com/obxidion/Jellyfin-Quality-Overlay Platform: jellyfin Category: UI/Themes Author: OBX Approved: 2026-06-29 A Jellyfin plugin that overlays clean video quality and audio codec badges onto poster, thumbnail, and backdrop images. # Quality Overlay A Jellyfin plugin that overlays clean video quality and audio codec badges onto poster, thumbnail, and backdrop images. Badges are drawn in memory while images are served — original image files are never modified. - Video quality: 4K, 1440p, 1080p, 720p, 480p, SD (from the highest quality video stream) - Audio codec: best/main audio stream with channels, e.g. `DTS-HD MA 7.1`, `TrueHD Atmos`, `DD+ 5.1`, `AAC 5.1`, `DTS 5.1`, `FLAC 2.0` ## Plugin Quick Install Method `https://raw.githubusercontent.com/obxidion/Jellyfin-Quality-Overlay/main/manifest.json` --- ## Hide Empty Folders URL: https://jellywatch.app/hub/hide-empty-folders Repository: https://github.com/CapstonPeters/Jellyfin-Hide-Empty-Folders/ Platform: jellyfin Category: Library Management Author: Jo_Pettitt Approved: 2026-06-28 A Jellyfin plugin to remove empty media folders from Jellyfin, aimed specifically for TV Shows. What it does: Set the configuration to clean up certain library types, by default, only TV Show libraries are checked — enable others explicitly if you want Movies, Music, etc. cleaned too. Run automatically: Runs cleanup after every library scan. Turn off if you only want to trigger it manually. Hide empty seasons: TV seasons with zero episodes are removed from view. Hide empty collections: Box sets and collections with no items are removed from view. Manual trigger: Go to Dashboard → Scheduled Tasks → Hide Empty Folders and click the play button. How it works: After a library scan completes (or you trigger it manually), the plugin: Finds all media items across your selected libraries Walks up the folder tree marking every ancestor as "has content" Removes database entries for folders that have no media anywhere under them The plugin uses DeleteFileLocation = false — folder entries are removed from Jellyfin's database only. Your files stay exactly where they are. Collection folders (the top-level "Movies", "TV Shows" containers) are never touched. What to expect Jellyfin is the party that adds empty folders. The plugin only removes them from the library database — it never touches files on disk. If a show is added to an empty folder: Jellyfin's real-time monitoring (or scheduled scan) picks up the new file, re-adds the previously-removed empty folder structure to the library, then the plugin removes it again within ~10 seconds. The folder may briefly reappear and vanish — this is normal. If you run a manual library scan: The plugin runs immediately after the scan completes and cleans up any empty folders. If you trigger the scheduled task (Dashboard → Scheduled Tasks → Hide Empty Folders): It runs the same cleanup on demand. Files on disk are never deleted. --- ## Transcode Downloader URL: https://jellywatch.app/hub/transcode-downloader-quality-selection-download-button-for-the-web-ui Repository: https://github.com/ph15ch/Jellyfin-Transcode-Downloader Platform: jellyfin Category: Tools Author: ph15ch Approved: 2026-06-28 Enables you to download (with a queue) transcoded movies/series from the WebUI. Hey all, I built a small server plugin and wanted to share it here. Just build it for me because I was limited on the internet connection. Someone might find it useful. This is AI slop be aware, feel free to contribute. No Premium, no nothing. Just wanted to share :) ## What it does Adds a "Download (Transcode…)" option to the More (⋯) menu on any movie or episode detail page — right next to Jellyfin's own Download button. Click it, pick a quality tier (e.g. 1080p at 8 Mbps, H.264/AAC), and Jellyfin transcodes it server-side while the plugin downloads the stream with a live progress bar. If you want the original file, just use Jellyfin's regular Download button as before. Multiple downloads can be queued — each one starts automatically when the previous finishes. There's a small panel in the bottom-right showing the queue, with individual cancel buttons. ## How it works It uses Jellyfin's built-in transcoding — no custom encoding, just a quality picker on top. ## How to use it ![usage gif](https://github.com/ph15ch/Jellyfin-Transcode-Downloader/blob/main/demo/jellyfin-demo.gif) ## Git Repo https://github.com/ph15ch/Jellyfin-Transcode-Downloader ## Requirements: Jellyfin 10.11.x + File Transformation plugin (>= v2.2.1.0) --- ## 🍿 jellyfin-whatsapp URL: https://jellywatch.app/hub/jellyfin-whatsapp Repository: https://github.com/hfilippi/jellyfin-whatsapp Platform: jellyfin Category: Notifications Author: hfilippi Approved: 2026-06-26 A decoupled, lightweight notification engine built for Raspberry Pi to automatically aggregate newly added media from Jellyfin and send structured updates with official poster art to users via WhatsApp. Would you like to automatically notify your friends and family whenever new content is added to your library? This tool allows your Jellyfin users to receive updates about your latest additions via WhatsApp. Surprise them with new releases, childhood movies you used to share, or those classics everyone wants to watch again. Everything is handled automatically, securely, and non-intrusively. This is an open-source project under the MIT license, allowing anyone to improve it, contribute new features, or customize it to their needs. ## ⚙️How it works - **Jellyfin Media Server**: The process begins when new content is added or a library event triggers on your Jellyfin server. - **Webhook**: Jellyfin triggers a webhook endpoint configured for ‘Media Added / Library Event’ notifications. - **jellyfin-whatsapp Notification Engine**: This core engine receives the webhook payload. It processes the event by applying aggregation and filtering, checking quiet hours, matching users, and scheduling message delivery. It relies on Local JSON Storage to manage configurations (config.json), user preferences (users.json), and message layouts (templates.json). - **WhatsApp Message**: Finally, a WhatsApp message containing the movie poster, trailer link, and full details (such as title, year, TMDB rating, genres, and metadata links) is automatically sent to the users via a dedicated bot. ![Application Flow](https://raw.githubusercontent.com/hfilippi/jellyfin-whatsapp/main/img/app_flow.png) --- ## 🚀 Deploy in less than 5 minutes - Docker Compose ready. - Raspberry Pi compatible. - Jellyfin webhook integration. - WhatsApp notifications with posters and trailers. - No database required. --- ## 🎯 Key Features - **Smart Message Aggregation:** Instead of flooding users with single texts when a season of a TV show indexes, notifications are batched into a single unified broadcast based on a configurable interval window. - **Quiet Hours Shield:** Automatically holds back notifications received during late-night hours. Pending media aggregates silently in memory and flushes immediately as a single summary once morning hours kick in. - **One-Click Unsubscribe Link:** Every single notification message attaches a dynamically-built, native WhatsApp deep-link (`wa.me`) passing a unique cancellation payload. - **Local-First Architecture:** Eliminates complex database management. Subscriptions and runtime parameters are fully handled via lightweight, localized, system-synced JSON layers. - **Delivery Optimization & Smart Throttling:** Multi-layered message pacing, batching, and rate-control mechanisms designed to improve notification delivery quality and reduce unnecessary message bursts across the Python and Node.js services. --- ## 📋 Template Management & Customization Features a dynamic, decoupled templating system that allows you to fully customize the notification text, layout, and branding without modifying the source code. --- ## 🛡️ Delivery Optimization & Rate Control Delivering automated notifications to multiple recipients requires careful pacing to avoid excessive message bursts and maintain a consistent user experience. To address this, the Notifications Engine implements a multi-layered delivery optimization strategy across the Python and Node.js services. By combining message aggregation, configurable scheduling, randomized delivery intervals, and content variation mechanisms, the system distributes notifications gradually and efficiently while reducing unnecessary traffic spikes. --- ## JellyReg URL: https://jellywatch.app/hub/jellyreg Repository: https://github.com/chiappone/Jellyfin_user_registration Platform: jellyfin Category: Authentication Author: chiappone Approved: 2026-06-25 A self-hosted web app that provides invite-code-based user registration for Jellyfin, with built-in Quick Connect device authorization. Designed to be a one-page "Join [Your Server]" portal for friends and family. Features Invite-code registration — generate single-use or multi-use codes with optional expiration User login — existing users can log in to authorize new devices Quick Connect authorization — enter a 6-digit code from your TV or app to pair it, no existing client needed Admin panel — manage invites, view registered users, configure server settings Configurable branding — server name and Jellyfin URLs editable via the admin UI Quick Start 1. Create a .env file cp .env.example .env Edit .env with your values: Variable Required Description JELLYFIN_API_KEY Yes Jellyfin API key (from Dashboard → API Keys) JELLYFIN_URL Yes Internal URL to Jellyfin (e.g. http://localhost:8096) ADMIN_PASSWORD_HASH Yes SHA-256 hash of your admin password SERVER_NAME No Display name (default: Jellyfin) JELLYFIN_PUBLIC_URL No Public URL shown to users after registration DEFAULT_LIBRARIES No Comma-separated library names to grant access (empty = all) Generate the admin password hash: python3 -c "import hashlib; print(hashlib.sha256(b'your_password').hexdigest())" 2. Run with Docker docker compose up -d --build The app will be available at http://localhost:5050. 3. Configure (optional) Log in at /admin with your admin password. Use the Settings card to set: Server Name — what your Jellyfin instance is called (shown on the Join page) Jellyfin Internal URL — the URL the backend uses to reach Jellyfin Jellyfin Public URL — the link users see after registering (e.g. your Tailscale or public domain) How It Works Registration Flow Admin generates an invite code from the admin panel Share the JellyReg URL + invite code with the person They enter a username, password, and the invite code JellyReg creates the Jellyfin user, enables libraries, and authenticates as them The success page shows a link to open Jellyfin and a Connect a device section Quick Connect Flow After registration (or login), users can pair a TV or phone app: TV/app shows a 6-digit Quick Connect code User enters the code on the JellyReg success page JellyReg authorizes the code via the Jellyfin API using the user's session The device connects automatically — no existing logged-in client needed API Endpoints Endpoint Method Auth Purpose /api/register POST none Create Jellyfin user (invite code required) /api/login POST none Authenticate existing Jellyfin user /api/qc/authorize POST session Authorize a Quick Connect code /api/admin/invite POST admin Generate invite code /api/admin/invite/\ DELETE admin Delete invite code /api/admin/settings GET admin Read settings /api/admin/settings POST admin Update settings /api/admin/health GET none Jellyfin connectivity check --- ## ParallaxTV URL: https://jellywatch.app/hub/parallaxtv Repository: https://github.com/parallaxtv/ParallaxTV Platform: jellyfin Category: Clients Author: iiTzMYUNG Approved: 2026-06-20 A premium native Jellyfin desktop client built with Tauri, React, TypeScript and MPV. The first public alpha of ParallaxTV is now available. ParallaxTV is a premium open-source Jellyfin desktop client built with Tauri, React, TypeScript and MPV. Current features include: • Native MPV Playback • Continue Watching • Up Next • Favorites • AniList Integration • Voice Actor Pages • Intro/Outro Skip • Next Episode Autoplay • Discovery System • Settings Page This is an alpha release and feedback is extremely valuable. Please report bugs, request features, and share suggestions. Thank you for helping shape the future of ParallaxTV ❤️ --- ## HttpAuth Plugin URL: https://jellywatch.app/hub/httpauth-plugin Repository: https://github.com/UlysseM/jellyfin-plugin-httpauth Platform: jellyfin Category: Authentication Author: Ulysse_Manceron Approved: 2026-06-18 Users can authentificate with Http Headers (only when used in reverse proxy)

Jellyfin HttpAuth Plugin

## About This plugins allows users to skip the login page (and not set password in jellyfin), provided your app is configured to use a reverse proxy that provides a username through an HTTP header. **Warning: If you allow connections to your jellyfin without a reverse proxy, or if your reverse proxy doesn't override that header, this plugin is NOT for you, as it would allow anyone to log in as any other user, admin included.** ## Installation ## How this plugin works - Whenever a manual login attempt is made with the user `HttpAuth`, regardless of the password, an IAuthenticationProvider implementation will log the user as whatever the http header `X-Forwarded-User` (configurable) is set to. If that user doesn't exist, it will be automatically created (with or without admin permission depending on the configuration). - The html file will be modified when the plugin starts, to inject a javacsript file. - That javacript file will be served by the plugin itself does few things. On startup, it checks whether the plugin is active and if the http header is provided (by making an API call). If everything looks, it will auto-fill the login path with the right user `HttpAuth`, some random password, before logging in. - The HTTP endpoint used to return the name of the header is intended to be call each time the page loads, and if it sees that no HTTP header are set, it will "trip a breaker", disabling the plugin. This is a safety feature, so that in case of misconfiguration, login through this endpoint are automatically disabled. This "safety breaker" can also be turned off in the configuration. The design philosophy behind this plugin is to keep everything simple. The fact that I'm not exposing configuration to allow specific users to have specific permissions is not a missing feature; it's by design. I intend to make new release of this plugin only when necessary (eg: Jellyfin makes a breaking change to their codebase, or updates the web UI so the hook no longer works). The very small codebase also allows for easy audits, which should reassure folks interested in giving this plugin a go. ## Why this plugin exist I originally started using the 9p4/jellyfin-plugin-sso. It worked great (thanks!) but it had some flaws for my usecase: - It required setting up providers. - There is one more button to login. - The codebase has dependency on various libraries, making it more likely to get hit by vulnerabilities. This is aggravated by the fact that the plugin will no longer be receiving updates. Which gets me to the point, since reverse proxy can pass in username through headers, the extra complexity can be skipped. --- ## Better Posters URL: https://jellywatch.app/hub/better-posters Repository: https://github.com/NeurekaSoftware/Better-Posters Platform: jellyfin Category: Metadata Author: Neureka Approved: 2026-06-15 Better Posters is an unofficial Jellyfin plugin that lets you replace standard movie and show posters with customizable posters from btttr.cc. > **We've moved — please reinstall Better Posters (migrated 2026-07-10).** > > Better Posters is now hosted on a new server, so Jellyfin can no longer reach its old plugin repository and will not receive updates. If you installed it before this date, please reinstall it. Better Posters is an unofficial Jellyfin plugin that lets you replace standard movie and show posters with customizable posters from btttr.cc. The plugin works as a Jellyfin image provider and can fetch posters with optional details like ratings, genres, age ratings, trending labels, quality badges, and language preferences. Posters can be selected manually from Jellyfin’s image editor, refreshed through metadata updates, or replaced automatically using the included scheduled task. Better Posters is made for users who want cleaner, more informative, and more consistent media posters without having to manage custom artwork by hand. #### Preview ![Better Posters Preview](https://raw.githubusercontent.com/NeurekaSoftware/Better-Posters/refs/heads/master/Assets/Preview.png) --- ## OcenFin URL: https://jellywatch.app/hub/ocenfin Repository: https://github.com/seluce/OcenFin Platform: jellyfin Category: Clients Author: Ferris Approved: 2026-06-14 Jellyfin App for WebOS. Fast User Switching: Switch between profiles quickly and easily. Save Passwords: You can save your password as a token. Then you can jump right into your profile without typing the password again. Shared Profile: If you use a shared profile, you can link two personal profiles to it. It hides movies or series that one of you has already seen. This makes it easy to find something new to watch together. Custom Avatars: Create your own profile picture directly on the TV. You can use your recently watched shows or movies as a background. Or you can choose an SVG icon with a custom background. No need to upload images. WebSockets & SyncPlay: Full WebSocket support for remote commands from the Jellyfin server and SyncPlay features to watch together. Direct Play Focus: I use libbitsub, jassub, and hls to support many formats. This helps to run Direct Play on the TV and avoid transcoding on the server, even for complex subtitles like VobSub and DVDSub. Multi-Language: The app supports English, German, Spanish, French, Italian, Dutch, Portuguese, and Polish. --- ## Binge Buddy URL: https://jellywatch.app/hub/binge-buddy Repository: https://github.com/Cyprien-png/jellyfin-binge-buddy Platform: jellyfin Category: Other Author: R0kkxRyuk Approved: 2026-06-13 A plugin to keep track of your buddies' viewing progress in Jellyfin. Designed to sync up and resume watching together for your next IRL session. Binge Buddy helps household and friend groups see what everyone has already started watching on your Jellyfin server. An admin creates binge-watching groups, picks which Jellyfin users belong to each group, and the web client shows small avatar stacks on movie and episode posters so you can spot shared progress at a glance. Use it to plan the next watch session: open a library, see who has already begun a title, and pick up together without guessing where everyone left off. --- ## Plinth Player URL: https://jellywatch.app/hub/plinth-player Repository: https://apps.apple.com/us/app/plinth-player/id6772366960 Platform: emby Category: Music Author: neil_z Approved: 2026-06-13 A dedicated music and podcast emby player for iOS What it does: Browse by album, artist, song, genre, or playlist Stream or download albums, playlists, and podcast episodes for offline listening Lossless playback (FLAC/ALAC), plus the usual lock-screen and Control Centre controls Create playlists in the app that sync back to your server Podcast shows and episodes alongside your music, with resume-where-you-left-off A clean offline mode, with a clear banner when you're off-network A few honest notes: Independent app — not affiliated with, endorsed by, or sponsored by Emby LLC. No ads, no tracking, no account with us, no data collection. Plinth only talks to the server you point it at — I run no servers of my own. It's paid, but free to try: download it free with a 30-day full-access trial, then $4.99/year or $9.99 lifetime if you want to keep it. I use it daily and I read everything. The library views, playlists, podcasts, and offline mode are where I've put the most work — if you try it and something's missing or broken, tell me. I'd genuinely like to hear what this community wants from a native client. --- ## Live TV Builder Jellyfin Plugin URL: https://jellywatch.app/hub/live-tv-builder-jellyfin-plugin Repository: https://github.com/obxidion/Live-TV-Builder-Jellyfin-Plugin Platform: jellyfin Category: IPTV Author: OBX Approved: 2026-06-11 Native Jellyfin plugin that generates a custom tailored M3U/XMLTV Guide using Live TV Builder's Backend. Use it to generate FAST or "Premium" channel lists using community hosted restreams! # Live TV Builder — Jellyfin Plugin Auto-configure Jellyfin's native Live TV from a [Live TV Builder](https://livetvbuilder.replit.app) lineup. Pick your **country**, **postal/ZIP code**, **provider lineup**, and **languages** on a settings page inside Jellyfin, and the plugin wires up an **M3U tuner** + an **XMLTV guide** for you. No more hunting for or copy-pasting URLs that you have to sift through 14,000 channels just to find the channels you want. --- ## MediaSync URL: https://jellywatch.app/hub/mediasync Repository: https://github.com/DmesgNoise/mediasync Platform: both Category: Sync Author: DmesgNoise Approved: 2026-06-02 Automated Radarr/Sonarr → Emby library synchronization UPDATE Now supporting Jellyfin and Emby ——————————————————————— I built a self-hosted app called MediaSync to bridge the gap between the -arr stack and Emby library updates. I wanted something that made newly imported media appear in Emby quickly and predictably without babysitting scheduled scans. Real-time monitoring never quite worked reliably for me. Docker deployment currently. Current behavior: Radarr → immediate mapped movie library scans Sonarr → queue-aware TV synchronization smart source → library mapping live dashboard + activity monitoring automatic -arr webhook creation guided first-run setup Supports multiple source instances as well. Current support: Emby Radarr Sonarr Planned: Plex Jellyfin Unmanic deeper media pipeline visibility In future updates, this will track a media request from Seerr through the entire acquisition pipeline to the media server, with an intuitive dashboard. I would very much appreciate feedback from other users. I've been running this in my own stack for a few days with great success. --- ## Universal Plugin Repository URL: https://jellywatch.app/hub/universal-plugin-repository Repository: https://github.com/0belous/Jellyfin-Universal-Plugin-Repo Platform: jellyfin Category: Other Author: Obelous Approved: 2026-05-31 Install any plugin from one URL Aggregates more than 100 plugin sources into a single manifest URL: - Simplifies plugin installation - Speeds up catalogue loading - Integrates plugin discovery --- ## Linearr URL: https://jellywatch.app/hub/linearr Repository: https://github.com/gillberg1111/linearr Platform: both Category: Tools Author: Jake Approved: 2026-05-29 The missing show sequencer for Plex, Jellyfin, and Emby. Shows, genres, franchises — Automated. Sequenced. Yours. Linearr builds and maintains custom playlists across multiple TV shows (and their associated movies) on Plex, Jellyfin, Emby, or any combination of them at once. Pick a set of shows and Linearr weaves their episodes into a single playlist — round-robin, chronological by air date, weighted, blocked, or shuffled — then keeps it fed with new episodes and pruned of ones you've watched, on a schedule, in the background. Build by hand-picking shows, dynamically by genre, or as a chronological franchise watch order mixing movies and series. Configure any one, two, or all three backends. Each playlist independently targets whichever backends you select (mirrored to each server in lockstep, using each server's own library and watch state). Single-backend installs see no extra UI — the "Push to" picker only appears when more than one backend is configured. Important Linearr never deletes media files or library items from Plex, Jellyfin, or Emby. It only manages playlists. Per-backend safety guards (described below) make this structurally impossible — even an internal bug can't remove your media — and unit tests verify the guards hold. --- ## Live TV Builder Standalone URL: https://jellywatch.app/hub/live-tv-builder Repository: https://livetvbuilder.replit.app/ Platform: both Category: IPTV Author: OBX Approved: 2026-05-28 Live TV Builder — Your Free Personal IPTV Lineup Creator Turn your media server or IPTV player into a full live TV experience — completely free. Live TV Builder instantly generates a custom M3U playlist and XMLTV EPG guide tailored to your location and favorite channel lineup. Just enter your 5-digit US ZIP code, choose a provider template (YouTube TV, Xfinity, Sling, DISH, Pluto TV, and many more), and download ready-to-use files. Perfect for: - Plex Live TV & Jellyfin users wanting real linear TV - Kodi with PVR IPTV Simple Client - Channels DVR - TiviMate, IPTVnator, OTT Navigator, GSE Smart IPTV, VLC, and any M3U + XMLTV player How It Works (3 simple steps): 1. Select a lineup (Big 150, Premier packages, FAST-heavy options, etc.) 2. Enter your ZIP code to automatically match local NBC, ABC, CBS, FOX, CW, PBS, and MyNetworkTV affiliates 3. Download or copy/paste your personalized M3U playlist + 48-hour XMLTV EPG (Dont worry the EPG is automated to grab new data every 12 hours) All streams are pulled from publicly available free FAST channels (Pluto TV, LocalNow, Plex Live, LG Channels, and more) plus community favorites like tvpass.org and iptv-org — no subscriptions, no hidden costs. Key Features: - Accurate local channel detection by ZIP - Clean, properly tagged M3U with logos, group titles, and tvg-ids - Full XMLTV EPG with program titles, descriptions, and air times - Regular updates to channel lists and guide data - Works entirely in your browser — nothing to install - 100% free and open for personal use Whether you're cutting the cord, building a custom Plex/Jellyfin live TV setup, or just want free live TV in your favorite player, Live TV Builder gives you a professional-grade IPTV experience in seconds. No install. No payments. Just free live TV. (Perfect for cord-cutters, home theater enthusiasts, and anyone who wants cable-like live TV without the cable bill.) --- ## Static Assets URL: https://jellywatch.app/hub/jelly-static-assets-imp Repository: https://github.com/cleverdevil/jelly-static-assets Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-27 Upload and serve static assets (CSS, JavaScript, images) directly from Jellyfin for persistent custom styling. jelly-static-assets by cleverdevil lets you upload and serve static assets (CSS, JavaScript, images) directly from your Jellyfin server. Useful when you need persistent custom styling that survives server updates without modifying index.html. Features: - Host CSS, JavaScript, and image assets on Jellyfin itself - Persistent custom styling that survives updates - Drop-in companion to JavaScript Injector - No external file hosting required - Useful for advanced UI customization This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Air Times URL: https://jellywatch.app/hub/jellyfin-plugin-air-times-imp Repository: https://github.com/apteryxxyz/jellyfin-plugin-air-times Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-27 Provides localized series air times based on server location for accurate broadcast schedules. jellyfin-plugin-air-times by apteryxxyz provides localized series air times based on server location. Displays accurate broadcast schedules for currently airing TV shows, adapted to your timezone. Features: - Localized series air times - Server-location based timezone - Accurate broadcast schedule display - Works with currently airing TV shows - Lightweight metadata enhancement This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Media Upload Plugin URL: https://jellywatch.app/hub/media-upload-plugin-imp Repository: https://github.com/grandguyjs/media-upload-plugin Platform: jellyfin Category: Other Author: import Approved: 2026-05-27 Media manager that provides uploads, bulk URL downloads, and directory browsing within Jellyfin. media-upload-plugin by grandguyjs is a media manager that adds upload capability, bulk downloads from URLs, and directory browsing directly inside the Jellyfin admin UI. Convenient when you need to add media to a server that lacks SSH or other file transfer access. Features: - File upload from the Jellyfin web UI - Bulk download from URLs - Directory browsing - Useful for headless servers - Admin-only by design This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyFlix Theme URL: https://jellywatch.app/hub/jellyflix-theme-imp Repository: https://github.com/prayag17/JellyFlix Platform: jellyfin Category: Themes Author: import Approved: 2026-05-27 Netflix-inspired Jellyfin theme with red accents, full-width hero banners, and bold typography. JellyFlix by prayag17 is the most popular Netflix-style theme for Jellyfin. It transforms the default interface with red accents, full-width hero banners on the home page, bold typography, and refined card hover effects, making your library feel like a commercial streaming platform. Features: - Netflix-style hero section on the home page - Red primary color scheme (#E50914) - Improved card hover effects with smooth animations - Cleaner top navigation bar - Compatible with the Skin Manager plugin Note: not to be confused with the Jellyflix mobile/desktop client of the same name. This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Monochromic URL: https://jellywatch.app/hub/monochromic-imp Repository: https://github.com/CTalvio/Monochromic Platform: jellyfin Category: Themes Author: import Approved: 2026-05-27 Pure black, OLED-friendly Jellyfin theme by CTalvio. The minimalist sibling of Ultrachromic. Monochromic by CTalvio is the predecessor and minimalist sibling of Ultrachromic. It applies a pure black, OLED-friendly palette with no color distractions, making it perfect for OLED displays and users who prefer a focused, distraction-free interface. Features: - Pure black backgrounds (OLED-optimized) - No color distractions - Subtle accent colors - Cleaner typography - Compatible with the Skin Manager plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin-Netflix URL: https://jellywatch.app/hub/jellyfin-netflix-theme-imp Repository: https://github.com/DevilsDesigns/Jellyfin-Netflix Platform: jellyfin Category: Themes Author: import Approved: 2026-05-27 Alternative Netflix-style Jellyfin theme by DevilsDesigns. Similar feel to JellyFlix. Jellyfin-Netflix by DevilsDesigns is an alternative Netflix-style theme for Jellyfin. Similar in spirit to JellyFlix, it focuses on recreating the Netflix browsing experience inside the Jellyfin web UI. Features: - Netflix-inspired layout - Red accent color scheme - Hero banner on the home page - Refined card layout - Compatible with the Skin Manager plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Media Player URL: https://jellywatch.app/hub/jellyfin-media-player-imp Repository: https://github.com/jellyfin/jellyfin-media-player Platform: jellyfin Category: Clients Author: import Approved: 2026-05-27 Official desktop client for Windows, macOS, and Linux that pairs the Jellyfin web UI with the MPV playback engine. Jellyfin Media Player is the official desktop client for Jellyfin. It combines the Jellyfin web interface with the MPV playback engine, delivering better codec support than any browser, full hardware decoding, and a polished cross-platform desktop experience. Features: - Web UI + MPV-powered playback - Full codec and HDR support - Hardware decoding - Keyboard shortcuts and remote-friendly controls - Available on Windows, macOS, and Linux (Flatpak) - Maintained by the Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## FluentFin URL: https://jellywatch.app/hub/fluentfin-imp Repository: https://github.com/insomniachi/FluentFin Platform: jellyfin Category: Clients Author: import Approved: 2026-05-27 Native Windows Jellyfin client built with WinUI 3 and Microsoft's Fluent Design System. FluentFin by insomniachi is a Windows-native Jellyfin client built with WinUI 3 and Microsoft's Fluent Design System. Designed for users who want a true native Windows experience instead of a web wrapper. Features: - Native Windows app (WinUI 3) - Fluent Design System - Mica and Acrylic effects on supported Windows versions - Native window controls and animations - Active development This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Switchfin URL: https://jellywatch.app/hub/switchfin-imp Repository: https://github.com/dragonflylee/switchfin Platform: both Category: Clients Author: import Approved: 2026-05-27 Open-source Jellyfin client for Nintendo Switch, Windows, macOS, Linux, and more. Switchfin by dragonflylee is an open-source Jellyfin client originally built for the Nintendo Switch and now available across Windows, macOS, Linux, Android, and additional platforms. The only mainstream Jellyfin client targeting the Switch. Features: - Nintendo Switch support (homebrew) - Windows, macOS, Linux, Android builds - D-pad and gamepad-friendly UI - Hardware-accelerated playback - Active community development This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Feishin URL: https://jellywatch.app/hub/feishin-imp Repository: https://github.com/jeffvli/feishin Platform: jellyfin Category: Music Author: import Approved: 2026-05-27 Modern desktop and browser music client for Jellyfin and Navidrome with a Spotify-inspired interface. Feishin by jeffvli is the most feature-complete music client for Jellyfin and Navidrome. Built with a Spotify-inspired interface, it offers gapless playback, scrobbling, and a polished cross-platform experience. Features: - Spotify-inspired UI - Gapless playback - Last.fm and ListenBrainz scrobbling - Jellyfin and Navidrome support - Cross-platform (Windows, macOS, Linux, browser) - Successor to sonixd This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Sonixd URL: https://jellywatch.app/hub/sonixd-imp Repository: https://github.com/jeffvli/sonixd Platform: jellyfin Category: Music Author: import Approved: 2026-05-27 Mature Subsonic-compatible desktop music client by jeffvli, predecessor of Feishin. Sonixd by jeffvli is a mature, Subsonic-compatible desktop music client. While the author has moved active development to Feishin, sonixd remains widely used and stable. Works with Jellyfin via the Subsonic-compatible API. Features: - Subsonic API compatibility - Electron-based desktop app - Cross-platform (Windows, macOS, Linux) - Stable and mature codebase - Predecessor of Feishin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Ampcast URL: https://jellywatch.app/hub/ampcast-imp Repository: https://github.com/rekkyrosso/ampcast Platform: jellyfin Category: Music Author: import Approved: 2026-05-27 Browser-based music player supporting Jellyfin alongside Navidrome, Spotify, Apple Music, YouTube and more. Ampcast by rekkyrosso is a browser-based music player with a radio-style interface. It supports multiple music backends in a single app, including Jellyfin, Navidrome, Spotify, Apple Music, YouTube, and more, letting you mix sources in a single listening experience. Features: - Browser-based, no install required - Multi-backend support (Jellyfin, Navidrome, Spotify, Apple Music, YouTube and more) - Radio-style listening interface - Cross-source playlists - Self-hostable This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jelly Music App URL: https://jellywatch.app/hub/jelly-music-app-imp Repository: https://github.com/Stannnnn/jelly-app Platform: jellyfin Category: Music Author: import Approved: 2026-05-27 Lightweight web-based music player for Jellyfin focused on simplicity and speed. Jelly Music App by Stannnnn is a lightweight, web-based music player for Jellyfin. It focuses on simplicity and speed, providing a fast browsing experience without the heavyweight feel of Electron-based clients. Features: - Lightweight web app - Fast and responsive - Jellyfin-focused - Self-hostable - Simple, clean UI This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Coppelia URL: https://jellywatch.app/hub/coppelia Repository: https://github.com/j6k4m8/coppelia Platform: jellyfin Category: Clients Author: j6m8 Approved: 2026-05-26 An elegant native Android, macOS, and Linux Jellyfin music client Coppelia is a fast, low-resource app for your Jellyfin library. Built with Flutter for desktop and mobile, with offline pinning, smart lists, and a clean library view. --- ## jellyfin-theme-downloader URL: https://jellywatch.app/hub/jellyfin-theme-downloader Repository: https://github.com/ummmno/jellyfin-theme-downloader Platform: both Category: Tools Author: Daniel_ik Approved: 2026-05-25 Automatic theme song downloader from YouTube Automatically downloads theme songs for every movie and TV show in your Jellyfin library. Places a theme.mp3 in each media folder, which Jellyfin picks up natively. All themes are volume-normalised to EBU R128 so nothing blasts louder than anything else. --- ## LiveFin URL: https://jellywatch.app/hub/livefin Repository: https://github.com/LiveFin Platform: jellyfin Category: Clients Author: kpgamingz Approved: 2026-05-24 A Live TV Client for Jellyfin on iOS LiveFin is a Live TV client specifically designed for Jellyfin. It utilizes your personal Jellyfin server to stream your M3U or HDHomeRun Live TV channels alongside viewing a Guide, if equipped with an EPG. • Stream your channels provided by your Jellyfin server • Integrated EPG, which shows data up to however long the data can get • Minimalistic login page • Channel images included • Channel listed numerically (optionally based on tuner config) --- ## Pixelfin URL: https://jellywatch.app/hub/pixelfin Repository: https://github.com/nothing2obvi/pixelfin Platform: jellyfin Category: Tools Author: notthing2obvi Approved: 2026-05-24 Pixelfin helps you visually audit Jellyfin artwork, spot missing or low-resolution images, and quickly review what needs attention. It also supports downloadable HTML galleries, ZIP backups, and ZIP-based restores, but its main purpose is making artwork review faster and clearer. A big part of what makes a media library feel “premium” is the artwork. Consistent, high-quality images can make a collection of files feel curated, browsable, and actually enjoyable to explore. Pixelfin is an app that helps you audit and review the artwork in your Jellyfin libraries. It can generate galleries of your media so you can quickly see what artwork each media item has, what it’s missing, and what might need improvement. It checks image types like Primary, Backdrop, Logo, ClearArt, Banner, Thumb, and more, and it can flag images that fall below a minimum resolution threshold that you set. **The main point is pretty simple: A faster way to look at your library’s artwork and make judgment calls.** Pixelfin gives you a summary table, and you can click a title to jump directly to that item’s gallery section. From there, you can click the gallery title to open the item in Jellyfin and make your changes. It can also generate HTML galleries that embed your images, export a library’s artwork to ZIP files, and restore artwork back to Jellyfin from ZIP, complete with dry-run and a side-by-side comparison. ## Screenshots ![Light Mode](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-light.png) ![Dark Mode](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-dark.png) ![Table](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-table.png) ![All Images: Compact, Missing Images](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-all-images-compact-missing.png) ![All Images: Full, Missing and Low Resolution Images](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-all-images-full-missing-low.png) ![Select Images: Compact, Low Resolution Image](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-select-images-compact-low.png) ![Select Images: Full, Missing and Low Resolution Images](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-select-images-full-missing-low.png) ![Select Images: Full, Complete](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-select-images-full-complete.png) ![Season Posters](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-season-posters.png) ![Restore](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-restore.png) ![Restore Review](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-restore-review.png) ![Comparison Dry-Run](https://github.com/nothing2obvi/pixelfin/raw/main/assets/screenshots/pixelfin-comparison.png) --- ## TheIntroDB URL: https://jellywatch.app/hub/theintrodb Repository: https://github.com/TheIntroDB Platform: both Category: Playback Author: pas Approved: 2026-05-23 TheIntroDB is a community backed database of intro, recap, credits, and preview segments across thousands of TV shows and movies. TheIntroDB is a community backed database of intro, recap, credits, and preview segments across thousands of TV shows and movies. Powered by the community on [theintrodb.org](https://theintrodb.org) the official plugins offer simple integration of the free API. And because the times are submitted and verified by users, the segments are much more reliable than Intro Skipper or EmbyCredits automated identification, which rely on black-frame, OCR, or chroma fingerprinting. Plus, TheIntroDB not only supports intros and credits, but also recaps and previews! --- ## Maintainerr URL: https://jellywatch.app/hub/maintainerr Repository: https://github.com/Maintainerr/Maintainerr Platform: both Category: Library Management Author: maintainerr Approved: 2026-05-23 Free, open-source, self-hosted tool that automatically finds and removes unwatched or unwanted movies and TV shows from Jellyfin, Emby, and Plex using customizable rules — with collections, poster overlays, notifications, and a deletion calendar. ## Maintainerr — The Perfect Media Janitor **Maintainerr** is a free, open-source, self-hosted app that helps you reclaim storage space by automatically finding and removing unwatched or unwanted media from **Jellyfin**, **Emby**, and **Plex**. If you run a request system like Seerr, it's easy for users to add everything they can think of — and never watch most of it. Maintainerr finds those outlying items sitting in your library and helps you clean them up on your terms. ### How it works You build **rules** from parameters across Jellyfin, Emby, Plex, Sonarr, Radarr, Tautulli, Streamystats, and Seerr — things like last watch date, release date, rating, file size, or request status. Matching media is grouped into **collections** (for example, a "Leaving Soon" collection shown on your home screen) with an optional countdown before deletion. When the timer runs out, Maintainerr can delete the files from disk, unmonitor them in Radarr/Sonarr, and clear the original requests from Seerr. ### Features - **Visual rule builder** — Combine multiple parameters to target exactly the media you want to clean up. - **Collection management** — Create rule-based collections and display them on your media server home screen (e.g. "Leaving Soon"). - **Countdown timer** — Set how many days a collection lives before its contents are deleted. - **Deletion calendar** — See exactly when scheduled deletions and *arr actions will run, in month or week view. - **Manual control** — Add, remove, or exclude specific items even when they match a rule. - **Browse & sort** — Browse any library and sort by title, date added, release date, rating, or size to spot what to clean up. - **Poster overlays** — Brand collection items with custom poster and title-card overlays so users know what's leaving soon. - **Radarr / Sonarr integration** — Remove or unmonitor media automatically. - **Seerr integration** — Auto-clear requests from Overseerr / Jellyseerr / Seerr - **Tautulli & Streamystats integration** — Use watch statistics to inform rules. - **Storage insights** — See how much space your media uses. - **Notifications** — Stay in the loop via Discord, Telegram, Slack, Email, Gotify, Ntfy, Pushover, Pushbullet, LunaSea, and Webhooks. ### Why Maintainerr Maintainerr was one of the original rule-based media-cleanup tools, and it's fully free and open source. It supports Jellyfin, Emby, and Plex from a single clean web UI, with a visual rule builder, poster overlays, notifications, and a deletion calendar that many alternatives don't offer. Docs can be found [here](https://docs.maintainerr.info). --- ## Notifiarr URL: https://jellywatch.app/hub/notifiarr-imp Repository: https://github.com/Notifiarr/notifiarr Platform: both Category: Notifications Author: import Approved: 2026-05-23 Unified notification and integration hub for the arr ecosystem and media servers. Notifiarr is a unified notification and integration hub for the arr ecosystem and media servers including Jellyfin and Emby. Centralize all your notifications. Features: - Unified notifications - Arr ecosystem integration - Jellyfin/Emby support - Discord notifications - Plex integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Unpackerr URL: https://jellywatch.app/hub/unpackerr-imp Repository: https://github.com/Unpackerr/unpackerr Platform: both Category: Tools Author: import Approved: 2026-05-23 Extracts downloaded archives for Radarr, Sonarr, and other arr apps automatically. Unpackerr automatically extracts downloaded archives for Radarr, Sonarr, Lidarr, and Readarr. Handles the extraction step in your media automation pipeline. Features: - Automatic archive extraction - Radarr integration - Sonarr integration - Lidarr integration - Readarr integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Stash URL: https://jellywatch.app/hub/stash-imp Repository: https://github.com/stashapp/stash Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Self-hosted media organizer for adult content with Jellyfin integration support. Stash is a self-hosted media organizer for adult content with Jellyfin integration support. Organize, tag, and manage your content library. Features: - Self-hosted organization - Metadata scraping - Tagging system - Jellyfin integration - Scene management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Kavita URL: https://jellywatch.app/hub/kavita-imp Repository: https://github.com/Kareadita/Kavita Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Self-hosted digital library for manga, comics, and books with Jellyfin-like interface. Kavita is a self-hosted digital library for manga, comics, and books. Provides a Jellyfin-like experience specifically designed for reading content. Features: - Manga support - Comic support - Book support - Self-hosted - Beautiful reading interface This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Audiobookshelf URL: https://jellywatch.app/hub/audiobookshelf-imp Repository: https://github.com/advplyr/audiobookshelf Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Self-hosted audiobook and podcast server with Jellyfin-compatible organization. Audiobookshelf is a self-hosted audiobook and podcast server. Provides dedicated audiobook management with features specifically designed for listening content. Features: - Audiobook management - Podcast support - Progress tracking - Mobile apps - Self-hosted This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Navidrome URL: https://jellywatch.app/hub/navidrome-imp Repository: https://github.com/navidrome/navidrome Platform: both Category: Music Author: import Approved: 2026-05-23 Self-hosted music server with Subsonic API compatibility and Jellyfin ecosystem integration. Navidrome is a self-hosted music server with Subsonic API compatibility. Works alongside Jellyfin for dedicated music streaming with superior music-specific features. Features: - Subsonic API compatible - Self-hosted music server - Web interface - Mobile app support - Scrobbling support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Homarr URL: https://jellywatch.app/hub/homarr-imp Repository: https://github.com/ajnart/homarr Platform: both Category: Statistics Author: import Approved: 2026-05-23 Modern homelab dashboard with Jellyfin and Emby integration widgets. Homarr is a modern homelab dashboard with Jellyfin and Emby integration widgets. Monitor your media server alongside all your other self-hosted services. Features: - Jellyfin widget - Emby widget - Modern dashboard UI - Multiple service integrations - Self-hosted This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Heimdall URL: https://jellywatch.app/hub/heimdall-imp Repository: https://github.com/linuxserver/Heimdall Platform: both Category: Statistics Author: import Approved: 2026-05-23 Application dashboard with Jellyfin and Emby enhanced tiles for quick server access. Heimdall is an application dashboard with enhanced tiles for Jellyfin and Emby. Quick access to your media servers alongside all your other self-hosted apps. Features: - Jellyfin enhanced tile - Emby enhanced tile - Application dashboard - Quick access links - Self-hosted This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Uptime Kuma URL: https://jellywatch.app/hub/uptime-kuma-imp Repository: https://github.com/louislam/uptime-kuma Platform: both Category: Statistics Author: import Approved: 2026-05-23 Self-hosted monitoring tool for tracking Jellyfin and Emby server uptime and response times. Uptime Kuma is a self-hosted monitoring tool for tracking server uptime and response times. Monitor your Jellyfin and Emby servers alongside all your other services. Features: - Uptime monitoring - Response time tracking - Alert notifications - Beautiful dashboard - Self-hosted This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Portainer URL: https://jellywatch.app/hub/portainer-imp Repository: https://github.com/portainer/portainer Platform: both Category: Tools Author: import Approved: 2026-05-23 Docker management UI for managing Jellyfin and Emby containers with a visual interface. Portainer is a Docker management UI for managing containers including Jellyfin and Emby. Provides a visual interface for Docker administration. Features: - Docker container management - Visual UI - Container logs - Stack management - Volume and network management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## TheTVDB URL: https://jellywatch.app/hub/jellyfin-thetvdb-imp Repository: https://github.com/jellyfin/jellyfin-plugin-tvdb Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Official Jellyfin plugin to fetch metadata from TheTVDB for TV shows and series. TheTVDB is an official Jellyfin plugin that fetches metadata from TheTVDB for TV shows and series. Provides episode titles, descriptions, artwork, and air dates. Features: - TheTVDB metadata integration - Episode titles and descriptions - Series artwork - Air date information - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## AniDB URL: https://jellywatch.app/hub/jellyfin-anidb-imp Repository: https://github.com/jellyfin/jellyfin-plugin-anidb Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Official Jellyfin plugin to fetch metadata from AniDB for anime series. AniDB is an official Jellyfin plugin that fetches metadata from AniDB, the most comprehensive anime database. Provides detailed anime metadata including episode information and ratings. Features: - AniDB metadata integration - Comprehensive anime data - Episode information - Ratings and reviews - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Themerr-jellyfin URL: https://jellywatch.app/hub/themerr-jellyfin-imp Repository: https://github.com/LizardByte/Themerr-jellyfin Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Adds theme songs to movies and TV shows using ThemerrDB. Themerr-jellyfin by LizardByte adds theme songs to movies and TV shows using ThemerrDB. Automatically fetches and plays theme music for your media. Features: - ThemerrDB integration - Movie theme songs - TV show theme songs - Automatic fetching - Background music support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Lyrics Plugin URL: https://jellywatch.app/hub/jellyfin-lyrics-plugin-imp Repository: https://github.com/Felitendo/jellyfin-plugin-lyrics Platform: jellyfin Category: Music Author: import Approved: 2026-05-23 Automatically downloads and applies lyrics to songs in your Jellyfin music library from LrcLib. jellyfin-plugin-lyrics by Felitendo automatically downloads and applies lyrics to songs in your Jellyfin music library from LrcLib. Synchronized lyrics for your music collection. Features: - Automatic lyrics download - LrcLib integration - Synchronized lyrics support - Music library coverage - Batch processing This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MetaShark URL: https://jellywatch.app/hub/jellyfin-metashark-imp Repository: https://github.com/cxfksword/jellyfin-plugin-metashark Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Chinese movie metadata plugin for Jellyfin using Douban and other Chinese databases. jellyfin-plugin-metashark by cxfksword is a Chinese movie metadata plugin for Jellyfin. Fetches metadata from Douban and other Chinese databases for Chinese-language media. Features: - Douban metadata integration - Chinese movie database - Chinese TV show metadata - Localized descriptions - Chinese artwork This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## File Transformation URL: https://jellywatch.app/hub/jellyfin-file-transformation-imp Repository: https://github.com/IAmParadox27/jellyfin-plugin-file-transformation Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Allows plugins to manipulate content served by jellyfin-web without modifying web source files. jellyfin-plugin-file-transformation by IAmParadox27 allows other plugins to manipulate the content served by jellyfin-web without modifying the web source directly. A core dependency for the IAmParadox27 plugin ecosystem. Features: - Web content manipulation - No source file modification - Plugin dependency framework - Safe content injection - Update-resistant This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin MPV Shim URL: https://jellywatch.app/hub/jellyfin-mpv-shim-imp Repository: https://github.com/jellyfin/jellyfin-mpv-shim Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Cast media from Jellyfin to MPV player with full subtitle and audio track support. Jellyfin MPV Shim is an official Jellyfin cast client that lets you cast media from any Jellyfin client to MPV. Supports all subtitle formats, audio tracks, and provides a superior playback experience. Features: - Cast from any Jellyfin client to MPV - Full subtitle format support - Audio track selection - Hardware decoding - Cross-platform (Windows, macOS, Linux) - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Finamp URL: https://jellywatch.app/hub/finamp-imp Repository: https://github.com/unicornsonlsd/finamp Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 A Jellyfin music client for Android and iOS with offline download support. Finamp is a dedicated Jellyfin music client for Android and iOS. Its main feature is the ability to download songs for offline listening, making it the go-to mobile music player for Jellyfin. Features: - Offline music download - Android and iOS support - Background playback - Gapless playback - Lyrics support - Beautiful music-focused UI This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Findroid URL: https://jellywatch.app/hub/findroid-imp Repository: https://github.com/jarnedemeulemeester/findroid Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Third-party native Android client for Jellyfin with a modern Material You design. Findroid is a third-party native Android client for Jellyfin built with Jetpack Compose and Material You design. Provides a modern, native Android experience. Features: - Native Android app - Material You design - Jetpack Compose UI - Offline downloads - Hardware decoding - Modern Android experience This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Swiftfin URL: https://jellywatch.app/hub/swiftfin-imp Repository: https://github.com/jellyfin/Swiftfin Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Modern native iOS and tvOS Jellyfin client redesigned in Swift with VLC-powered playback. Swiftfin is a modern video client for Jellyfin redesigned in Swift to maximize direct play with the power of VLC. Looks and feels native on all Apple devices. Features: - Native Swift implementation - VLC-powered playback - iOS and tvOS support - Maximum direct play - Native Apple design - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## IINA Jellyfin Plugin URL: https://jellywatch.app/hub/iina-jellyfin-imp Repository: https://github.com/mhajder/iina-jellyfin Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 IINA plugin for Jellyfin providing automatic subtitles and a media browser sidebar on macOS. iina-jellyfin by mhajder is a plugin for the IINA video player on macOS that adds Jellyfin integration with automatic subtitles and a media browser sidebar. Features: - IINA player integration - Automatic subtitle loading - Media browser sidebar - macOS native experience - Jellyfin library browsing This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MPV Jellyfin URL: https://jellywatch.app/hub/mpv-jellyfin-imp Repository: https://github.com/EmperorPenguin18/mpv-jellyfin Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 MPV plugin that turns the MPV video player into a full Jellyfin client. mpv-jellyfin by EmperorPenguin18 turns the MPV video player into a full Jellyfin client. Browse your library and play media directly in MPV. Features: - Full Jellyfin client in MPV - Library browsing - Direct playback - MPV native controls - Cross-platform This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Android TV URL: https://jellywatch.app/hub/jellyfin-android-tv-imp Repository: https://github.com/jellyfin/jellyfin-androidtv Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Official Jellyfin app for Android TV and Amazon Fire TV devices. The official Jellyfin app for Android TV and Amazon Fire TV devices. Provides a full 10-foot UI experience optimized for TV viewing. Features: - Android TV optimized UI - Amazon Fire TV support - 10-foot interface - Remote control navigation - Hardware decoding - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Vue URL: https://jellywatch.app/hub/jellyfin-vue-imp Repository: https://github.com/jellyfin/jellyfin-vue Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Modern web client for Jellyfin built with Vue.js as an alternative to the official web interface. Jellyfin Vue is a modern web client for Jellyfin built with Vue.js. An alternative to the official web interface with a more modern design and improved performance. Features: - Vue.js modern interface - Alternative web client - Improved performance - Modern design - Active development This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Iconic Image Enhancer URL: https://jellywatch.app/hub/emby-iconic-imp Repository: https://emby.media/community/index.php?/topic/94635-plugin-iconic-image-enhancer/ Platform: emby Category: UI/Themes Author: import Approved: 2026-05-23 Emby plugin that adds icon badges to cover art based on configurable rules about your media. Iconic Image Enhancer is an Emby plugin that helps you turn rules about your media into icon badges on your movie and TV images. Highly configurable badge system. Features: - Rule-based icon badges - Cover art enhancement - Configurable badge rules - Movie and TV support - Multiple badge types This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Bulky URL: https://jellywatch.app/hub/emby-bulky-imp Repository: https://emby.media/community/topic/117487-bulky-bulkmass-metadata-editor/ Platform: emby Category: Library Management Author: import Approved: 2026-05-23 Bulk and mass metadata editor for Emby. Edit metadata for multiple items at once. Bulky is a bulk/mass metadata editor for Emby. Edit metadata for multiple items simultaneously, saving time when managing large libraries. Features: - Bulk metadata editing - Mass update support - Multiple item selection - Field-by-field editing - Large library management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Emby Smart Playlist URL: https://jellywatch.app/hub/emby-smart-playlist-imp Repository: https://github.com/ShanePe/Emby.SmartPlaylist.Plugin Platform: emby Category: Library Management Author: import Approved: 2026-05-23 Create smart playlists for Emby based on episode and movie tags, genres, ratings, and more. Emby Smart Playlist by ShanePe lets you create smart playlists based on episode and movie tags, genres, ratings, and other criteria. Dynamic playlists that update automatically. Features: - Tag-based playlists - Genre filtering - Rating-based rules - Dynamic updates - Multiple criteria support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## EmbySonic URL: https://jellywatch.app/hub/embysonic-imp Repository: https://github.com/trifleneurotic/EmbySonic Platform: emby Category: Music Author: import Approved: 2026-05-23 Extends the Emby API to allow Subsonic-compatible calls from Subsonic clients. EmbySonic by trifleneurotic extends the Emby API to allow Subsonic-compatible calls. Use any Subsonic client with your Emby music library. Features: - Subsonic API compatibility - Emby music library access - Subsonic client support - API bridge - Music streaming This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## EmbyConLite URL: https://jellywatch.app/hub/embyconlite-imp Repository: https://github.com/faush01/plugin.video.embycon Platform: emby Category: Clients Author: import Approved: 2026-05-23 Lightweight Kodi addon for Emby that streams directly without full library sync. EmbyCon by faush01 is a lightweight Kodi addon for Emby that lets you browse and stream content directly without syncing the full library into Kodi. Features: - Lightweight Kodi integration - Direct streaming - No full library sync - Browse Emby from Kodi - Lower resource usage This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Emby CRX URL: https://jellywatch.app/hub/emby-crx-imp Repository: https://github.com/Nolovenodie/emby-crx Platform: emby Category: UI/Themes Author: import Approved: 2026-05-23 Chrome extension that enhances and beautifies the Emby web interface. emby-crx by Nolovenodie is a Chrome extension that enhances and beautifies the Emby web interface. Adds visual improvements and quality-of-life features to the Emby web UI. Features: - Chrome extension - UI enhancement - Visual beautification - Quality-of-life improvements - Emby web interface This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Emby Danmu URL: https://jellywatch.app/hub/emby-danmu-imp Repository: https://github.com/fengymi/emby-plugin-danmu Platform: emby Category: Playback Author: import Approved: 2026-05-23 Emby plugin that adds danmaku (bullet comments) overlay to video playback. emby-plugin-danmu by fengymi adds danmaku (bullet comments/barrage) overlay to video playback in Emby. Popular feature for Chinese anime and video content. Features: - Danmaku overlay support - Bullet comment display - Chinese content support - Configurable display - Multiple danmaku sources This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin MPC Shim URL: https://jellywatch.app/hub/jellyfin-mpc-shim-imp Repository: https://github.com/Trellmor/jellyfin-mpc-shim Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Cast media from Jellyfin to MPC-HC or MPC-BE video players on Windows. jellyfin-mpc-shim by Trellmor lets you cast media from Jellyfin to MPC-HC or MPC-BE video players on Windows. A Windows-focused alternative to the MPV shim. Features: - MPC-HC support - MPC-BE support - Windows-focused - Cast from Jellyfin clients - Local player quality This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Roku URL: https://jellywatch.app/hub/jellyfin-roku-imp Repository: https://github.com/jellyfin/jellyfin-roku Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Official Jellyfin app for Roku streaming devices. The official Jellyfin app for Roku streaming devices. Browse and play your Jellyfin library directly on your Roku TV or streaming stick. Features: - Official Roku app - Full library browsing - Direct play support - Roku remote navigation - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Web URL: https://jellywatch.app/hub/jellyfin-web-imp Repository: https://github.com/jellyfin/jellyfin-web Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 The official Jellyfin web interface accessible from any modern browser. Jellyfin Web is the official web interface for Jellyfin, accessible from any modern browser. The primary way most users interact with their Jellyfin server. Features: - Browser-based access - Full library management - Admin dashboard - User management - Plugin configuration - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Tizen URL: https://jellywatch.app/hub/jellyfin-tizen-imp Repository: https://github.com/jellyfin/jellyfin-tizen Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Official Jellyfin app for Samsung Smart TVs running Tizen OS. Jellyfin Tizen is the official Jellyfin app for Samsung Smart TVs running Tizen OS. Available in the Samsung App Store for Tizen 6.0+ devices. Features: - Samsung Smart TV support - Tizen OS native app - Samsung App Store available - Full library access - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin LG WebOS URL: https://jellywatch.app/hub/jellyfin-lgwebos-imp Repository: https://github.com/jellyfin/jellyfin-webos Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Official Jellyfin app for LG Smart TVs running webOS. Jellyfin for LG webOS is the official Jellyfin app for LG Smart TVs. Available in the LG Content Store for webOS TVs. Features: - LG Smart TV support - webOS native app - LG Content Store available - Full library access - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Xbox URL: https://jellywatch.app/hub/jellyfin-xbox-imp Repository: https://github.com/jellyfin/jellyfin-xbox Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Official Jellyfin app for Xbox consoles via the Microsoft Store. Jellyfin for Xbox is the official Jellyfin app for Xbox consoles. Available in the Microsoft Store for Xbox One and Xbox Series X/S. Features: - Xbox One support - Xbox Series X/S support - Microsoft Store available - Controller navigation - Official Jellyfin project This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Theater URL: https://jellywatch.app/hub/jellyfin-theater-imp Repository: https://github.com/jellyfin/jellyfin-theater-electron Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Electron-based desktop client for Jellyfin providing a full-screen 10-foot UI experience. Jellyfin Theater is an Electron-based desktop client for Jellyfin that provides a full-screen 10-foot UI experience on Windows, macOS, and Linux. Features: - Full-screen 10-foot UI - Windows support - macOS support - Linux support - Electron-based This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Infuse URL: https://jellywatch.app/hub/infuse-imp Repository: https://firecore.com/infuse Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Premium video player for Apple devices with Jellyfin support and exceptional codec coverage. Infuse by Firecore is a premium video player for Apple devices (iPhone, iPad, Apple TV, Mac) with Jellyfin support. Offers exceptional codec coverage and a beautiful interface. Features: - Jellyfin server support - Exceptional codec coverage - Apple TV, iPhone, iPad, Mac - Beautiful interface - Dolby Vision and Atmos support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Tdarr URL: https://jellywatch.app/hub/tdarr-imp Repository: https://github.com/HaveAGitGat/Tdarr Platform: both Category: Tools Author: import Approved: 2026-05-23 Distributed transcode automation with library analytics and video health checking. Tdarr is a distributed transcode automation system with library analytics and video health checking. Automate your media transcoding pipeline across multiple nodes. Features: - Distributed transcoding - Library analytics - Video health checking - Multiple node support - Plugin-based processing - Web UI dashboard This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Radarr URL: https://jellywatch.app/hub/radarr-imp Repository: https://github.com/Radarr/Radarr Platform: both Category: Tools Author: import Approved: 2026-05-23 Automates downloading and management of movies, integrates with Jellyfin and Emby. Radarr automates downloading and management of movies. Integrates with Jellyfin and Emby to trigger library scans when new movies are added. Features: - Automated movie downloads - Quality management - Jellyfin/Emby integration - Automatic library scans - Multiple indexer support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Sonarr URL: https://jellywatch.app/hub/sonarr-imp Repository: https://github.com/Sonarr/Sonarr Platform: both Category: Tools Author: import Approved: 2026-05-23 Automates downloading and management of TV series, integrates with Jellyfin and Emby. Sonarr automates downloading and management of TV series. Integrates with Jellyfin and Emby to trigger library scans when new episodes are added. Features: - Automated TV downloads - Episode tracking - Jellyfin/Emby integration - Automatic library scans - Multiple indexer support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Lidarr URL: https://jellywatch.app/hub/lidarr-imp Repository: https://github.com/Lidarr/Lidarr Platform: both Category: Music Author: import Approved: 2026-05-23 Automates downloading and management of music, integrates with Jellyfin and Emby. Lidarr automates downloading and management of music. Integrates with Jellyfin and Emby to trigger library scans when new music is added. Features: - Automated music downloads - Artist and album tracking - Jellyfin/Emby integration - Automatic library scans - Multiple indexer support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Readarr URL: https://jellywatch.app/hub/readarr-imp Repository: https://github.com/Readarr/Readarr Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Automates downloading and management of ebooks and audiobooks for Jellyfin libraries. Readarr automates downloading and management of ebooks and audiobooks. Integrates with Jellyfin to keep your book library up to date. Features: - Automated ebook downloads - Audiobook support - Author tracking - Jellyfin integration - Multiple indexer support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Prowlarr URL: https://jellywatch.app/hub/prowlarr-imp Repository: https://github.com/Prowlarr/Prowlarr Platform: both Category: Tools Author: import Approved: 2026-05-23 Indexer manager and proxy for the arr ecosystem, integrates with Radarr, Sonarr, and more. Prowlarr is an indexer manager and proxy for the arr ecosystem. Manages all your indexers in one place and integrates with Radarr, Sonarr, Lidarr, and Readarr. Features: - Centralized indexer management - Radarr integration - Sonarr integration - Lidarr integration - Readarr integration - Automatic sync This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Autoscan URL: https://jellywatch.app/hub/autoscan-imp Repository: https://github.com/Cloudbox/autoscan Platform: both Category: Tools Author: import Approved: 2026-05-23 Replaces default Plex and Emby file system scanning with event-driven library updates. Autoscan replaces the default Plex and Emby behavior for picking up changes on the file system. Uses event-driven scanning for faster library updates. Features: - Event-driven scanning - Faster library updates - Plex and Emby support - Sonarr/Radarr integration - Webhook support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellytools URL: https://jellywatch.app/hub/jellytools-imp Repository: https://github.com/cleverdevil/jellytools Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 CLI tool for synchronizing artwork and collections from Plex to Jellyfin and generating animated library card videos. Jellytools by cleverdevil is a CLI tool for synchronizing artwork and collections from Plex to Jellyfin and generating animated library card videos. Features: - Plex to Jellyfin artwork sync - Collection synchronization - Animated library card generation - CLI interface - Batch operations This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## AudioBookRequest URL: https://jellywatch.app/hub/audiobookrequest-imp Repository: https://github.com/markbeep/AudioBookRequest Platform: jellyfin Category: Requests Author: import Approved: 2026-05-23 Request management tool for audiobooks on Plex, Jellyfin, and Audiobookshelf. AudioBookRequest by markbeep is a request management tool for audiobooks on Plex, Jellyfin, and Audiobookshelf. Let users request audiobooks through a dedicated interface. Features: - Audiobook request management - Plex, Jellyfin, Audiobookshelf support - User request interface - Admin approval workflow - Notification system This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Content Recommender URL: https://jellywatch.app/hub/content-recommender-imp Repository: https://github.com/jeffersoncgo/content-recommender Platform: jellyfin Category: Requests Author: import Approved: 2026-05-23 Suggests movies or TV shows from your Jellyfin library based on your watch history. Content-recommender by jeffersoncgo suggests movies or TV shows from your library based on watch history. Get personalized recommendations without external services. Features: - Watch history analysis - Local recommendations - Movie and TV suggestions - No external service needed - Privacy-first approach This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Updoot URL: https://jellywatch.app/hub/jellyfin-updoot-imp Repository: https://github.com/BobHasNoSoul/jellyfin-updoot Platform: jellyfin Category: Requests Author: import Approved: 2026-05-23 Adds thumbs-up recommendations, per-item comments, and a recommended by users page to Jellyfin. jellyfin-updoot by BobHasNoSoul adds thumbs-up recommendations, per-item comments, and a "recommended by users" page to Jellyfin. Community-driven content discovery. Features: - Thumbs-up recommendation system - Per-item comment section - Recommended by users page - Community-driven discovery - Social features for shared servers This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## List-Sync URL: https://jellywatch.app/hub/list-sync-imp Repository: https://github.com/Woahai321/list-sync Platform: jellyfin Category: Requests Author: import Approved: 2026-05-23 Automatically import movies and TV shows from IMDB or Trakt lists into Jellyseerr. List-Sync by Woahai321 automatically imports movies and TV shows from IMDB or Trakt lists into Jellyseerr. Keep your request queue populated from curated lists. Features: - IMDB list import - Trakt list import - Jellyseerr integration - Automatic sync - Scheduled updates This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## ScenePeek Android URL: https://jellywatch.app/hub/scenepeek-android-imp Repository: https://github.com/Divinelink/scenepeek-android Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Android app with detailed movie and TV show information with TMDB and Jellyseerr integration. ScenePeek for Android by Divinelink provides detailed movie and TV show information with TMDB and Jellyseerr integration. Discover and request content from your phone. Features: - TMDB integration - Jellyseerr request support - Detailed movie/TV info - Android native app - Content discovery This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## WhatSeerr URL: https://jellywatch.app/hub/whatseerr-imp Repository: https://github.com/SuFxGIT/whatseerr Platform: jellyfin Category: Requests Author: import Approved: 2026-05-23 WhatsApp bot for Seerr that allows users to search and request media via WhatsApp messages. WhatSeerr by SuFxGIT is a WhatsApp bot for Seerr (Jellyseerr/Overseerr) that allows users to search and request media via WhatsApp messages. Features: - WhatsApp bot integration - Media search via WhatsApp - Request submission - Jellyseerr/Overseerr backend - Easy user access This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Watch Updater URL: https://jellywatch.app/hub/jellyfin-watch-updater-imp Repository: https://github.com/Simon-Eklundh/jellyfin-watch-updater Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Updates lastPlayedDate for watched items when clients fail to set it, fixing media cleanup tools. jellyfin-watch-updater by Simon-Eklundh updates lastPlayedDate for watched items when clients fail to set it. Enables tools such as media cleanup plugins to correctly detect watched media. Features: - lastPlayedDate correction - Client compatibility fix - Media cleanup tool support - Automatic detection - Lightweight background task This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jelly Watch Wise URL: https://jellywatch.app/hub/jelly-watch-wise-imp Repository: https://github.com/Joker-KP/jelly-watch-wise Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Monitors and enforces Jellyfin watch time limits per user with API integration and a simple GUI. jelly-watch-wise by Joker-KP monitors and enforces Jellyfin watch time limits per user, with API integration and a simple GUI. Parental controls for watch time. Features: - Per-user watch time limits - Parental control features - API integration - Simple GUI - Automatic enforcement This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellycord URL: https://jellywatch.app/hub/jellycord-imp Repository: https://github.com/SiddheshDongare/Jellycord Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Discord companion bot for managing JFA-GO Jellyfin invite management instances. Jellycord by SiddheshDongare is a Discord companion bot for managing JFA-GO instances. Manage Jellyfin user invites directly from your Discord server. Features: - JFA-GO integration - Discord bot interface - Invite management - User account control - Discord command support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Telegram Channel Sync URL: https://jellywatch.app/hub/jellyfin-telegram-channel-sync-imp Repository: https://github.com/GeiserX/jellyfin-telegram-channel-sync Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Syncs Jellyfin user access with Telegram channel membership, auto-disabling accounts when members leave. jellyfin-telegram-channel-sync by GeiserX syncs Jellyfin user access with Telegram channel membership. Automatically disables accounts when members leave the Telegram channel. Features: - Telegram channel membership sync - Automatic account management - Access revocation on leave - Membership-based access control - Automated user lifecycle This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JF Avatars URL: https://jellywatch.app/hub/jf-avatars-imp Repository: https://github.com/kalibrado/jf-avatars Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Allows Jellyfin users to select avatars from an image gallery. jf-avatars by kalibrado allows users to select avatars from an image gallery in Jellyfin. A simpler alternative to GetAvatar with gallery-based selection. Features: - Avatar gallery - User avatar selection - Image gallery interface - Easy to use - Customizable gallery This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## CineSync URL: https://jellywatch.app/hub/cinesync-imp Repository: https://github.com/sureshfizzy/CineSync Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Python-based library management tool for organizing debrid and local libraries without Sonarr or Radarr. CineSync by sureshfizzy is a Python-based library management tool for organizing debrid and local libraries without needing Sonarr or Radarr. Lightweight media organization. Features: - Debrid library organization - Local library management - No Sonarr/Radarr required - Python-based - Flexible organization rules This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Fixarr URL: https://jellywatch.app/hub/fixarr-imp Repository: https://github.com/sachinsenal0x64/fixarr Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Cross-platform media renaming and backup tool for Jellyfin libraries. Fixarr by sachinsenal0x64 is a cross-platform media renaming and backup tool. Fix incorrectly named media files and back up your library structure. Features: - Media file renaming - Cross-platform support - Backup functionality - Batch processing - Naming convention enforcement This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Auto Collections Tool URL: https://jellywatch.app/hub/jellyfin-auto-collections-tool-imp Repository: https://github.com/ghomasHudson/Jellyfin-Auto-Collections Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Automatically makes and updates collections based on internet lists such as IMDb and Letterboxd. Jellyfin-Auto-Collections by ghomasHudson automatically makes and updates collections based on internet lists such as IMDb Top 250, Letterboxd lists, and more. Features: - IMDb list collections - Letterboxd list collections - Automatic updates - Multiple list sources - Scheduled sync This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyfinEasyMetadataManager URL: https://jellywatch.app/hub/jellyfin-easy-metadata-manager-imp Repository: https://github.com/CesarBianchi/JellyfinEasyMetadataManager Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Desktop tool for managing and editing metadata in Jellyfin libraries. JellyfinEasyMetadataManager by CesarBianchi is a desktop tool for managing and editing metadata in Jellyfin libraries. A GUI-based metadata editor. Features: - Desktop GUI interface - Metadata editing - Batch metadata updates - Library management - Easy to use This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfinmanager URL: https://jellywatch.app/hub/jellyfinmanager-imp Repository: https://github.com/Forceu/jellyfinmanager Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 CLI tool for managing Jellyfin watched status with backup/restore and missing episode detection. Jellyfinmanager by Forceu is a command-line tool for managing Jellyfin watched status with backup/restore capabilities and missing episode detection using TVDB. Features: - Watched status management - Backup and restore - Missing episode detection - TVDB integration - CLI interface This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## mnamer URL: https://jellywatch.app/hub/mnamer-imp Repository: https://github.com/jkwill87/mnamer Platform: both Category: Tools Author: import Approved: 2026-05-23 Customizable tool to automatically rename and organize media files for Jellyfin. mnamer by jkwill87 is a customizable tool to automatically rename and organize media files. Uses TMDB and TVDB to find the correct names for your media. Features: - Automatic media renaming - TMDB integration - TVDB integration - Customizable naming templates - Batch processing This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Multi-User Media Cleaner URL: https://jellywatch.app/hub/multi-user-media-cleaner-imp Repository: https://github.com/terrelsa13/MUMC Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Query and delete unwanted media content from your Jellyfin server based on multi-user watch data. Multi-User Media Cleaner (MUMC) by terrelsa13 queries and deletes unwanted media content from your Jellyfin server based on multi-user watch data. Features: - Multi-user watch data analysis - Unwanted media detection - Safe deletion workflow - Configurable rules - Dry-run mode This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Squishy URL: https://jellywatch.app/hub/squishy-imp Repository: https://github.com/cleverdevil/squishy Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Transcode and download your Jellyfin media with fully customizable presets and hardware acceleration. Squishy by cleverdevil lets you transcode and download your Jellyfin media with fully customizable presets and hardware acceleration support. Features: - Media transcoding - Download support - Customizable presets - Hardware acceleration - Multiple output formats This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Bazarr-Jellyfin URL: https://jellywatch.app/hub/bazarr-jellyfin-imp Repository: https://github.com/enoch85/bazarr-jellyfin Platform: jellyfin Category: Subtitles Author: import Approved: 2026-05-23 Search and download subtitles directly from Jellyfin native subtitle UI using your Bazarr instance. bazarr-jellyfin by enoch85 lets you search and download subtitles directly from Jellyfin native subtitle UI using your existing Bazarr instance. Seamless Bazarr integration. Features: - Native Jellyfin subtitle UI integration - Bazarr backend - Direct subtitle search - One-click download - Uses existing Bazarr configuration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## OpenSubtitlesDownload URL: https://jellywatch.app/hub/opensubtitlesdownload-imp Repository: https://github.com/emericg/OpenSubtitlesDownload Platform: both Category: Subtitles Author: import Approved: 2026-05-23 Automatically or manually downloads subtitles from OpenSubtitles using CLI, Gnome, or KDE. OpenSubtitlesDownload by emericg automatically or manually downloads subtitles from OpenSubtitles using CLI, Gnome, or KDE interfaces. A standalone subtitle downloader. Features: - CLI interface - Gnome integration - KDE integration - Automatic subtitle download - Manual search option This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Theme Music Manager URL: https://jellywatch.app/hub/jellyfin-theme-music-manager-imp Repository: https://github.com/akhilmulpurii/jellyfin-theme-music-manager Platform: jellyfin Category: Music Author: import Approved: 2026-05-23 Web application for managing theme songs and backdrop videos for Jellyfin libraries. jellyfin-theme-music-manager by akhilmulpurii is a web application for managing theme songs and backdrop videos for Jellyfin libraries. Easily assign and manage audio themes. Features: - Theme song management - Backdrop video management - Web-based interface - Library-wide management - Easy assignment workflow This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyTunes URL: https://jellywatch.app/hub/jellytunes-imp Repository: https://github.com/oriaflow-labs/jellytunes Platform: jellyfin Category: Music Author: import Approved: 2026-05-23 Sync your Jellyfin music library to any USB drive or SD card with optional FLAC to MP3 conversion. JellyTunes by oriaflow-labs syncs your Jellyfin music library to any USB drive or SD card with optional FLAC to MP3 conversion. Take your music offline. Features: - USB drive sync - SD card support - FLAC to MP3 conversion - Selective sync - Offline music access This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MusicBrainz UserScripts URL: https://jellywatch.app/hub/musicbrainz-userscripts-imp Repository: https://github.com/Druidblack/MusicBrainz-UserScripts Platform: jellyfin Category: Music Author: import Approved: 2026-05-23 One-click importing of albums from Jellyfin into MusicBrainz for metadata contribution. MusicBrainz-UserScripts by Druidblack provides one-click importing of albums from Jellyfin into MusicBrainz. Contribute your music metadata back to the community. Features: - One-click MusicBrainz import - Album metadata contribution - Jellyfin library integration - Browser userscript - Easy workflow This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Calibre2Jellyfin URL: https://jellywatch.app/hub/calibre2jellyfin-imp Repository: https://github.com/shawn61cp/calibre2jellyfin Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Python script to construct a Jellyfin ebook library from a Calibre library. calibre2jellyfin by shawn61cp is a Python script to construct a Jellyfin ebook library from a Calibre library. Bridge your Calibre collection into Jellyfin. Features: - Calibre library import - Jellyfin ebook library creation - Metadata preservation - Python-based - Automated sync This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Trailerfin URL: https://jellywatch.app/hub/trailerfin-imp Repository: https://github.com/Pukabyte/trailerfin Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Automatically retrieves and creates STRM links to IMDb trailers for Jellyfin detail pages. Trailerfin by Pukabyte automatically retrieves and creates STRM links to IMDb trailers and places them in the backdrops folder to view trailers on the details page. Features: - IMDb trailer retrieval - STRM link creation - Backdrop folder integration - Detail page trailers - Automatic matching This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## ytdlp2STRM URL: https://jellywatch.app/hub/ytdlp2strm-imp Repository: https://github.com/fe80Grau/ytdlp2STRM Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Streams YouTube, Twitch, and more via yt-dlp to Jellyfin using STRM files. ytdlp2STRM by fe80Grau streams YouTube, Twitch, and more via yt-dlp to Jellyfin using STRM files. Import any yt-dlp supported source into your Jellyfin library. Features: - YouTube streaming - Twitch support - Any yt-dlp source - STRM file generation - Jellyfin library integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## ADRG URL: https://jellywatch.app/hub/adrg-imp Repository: https://github.com/jaldertech/adrg Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Dynamic Docker resource governor using cgroups v2 to throttle background tasks during media activity. ADRG by jaldertech is a dynamic Docker resource governor using cgroups v2 to throttle background tasks during media activity. Prioritize playback over background processing. Features: - Dynamic resource management - cgroups v2 support - Background task throttling - Playback priority - Docker integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Cloud Seeder URL: https://jellywatch.app/hub/cloud-seeder-imp Repository: https://github.com/ipv6rslimited/cloudseeder Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 One-click installer and maintainer for Jellyfin on Windows, macOS, and Linux. Cloud Seeder by ipv6rslimited is a one-click installer and maintainer for Jellyfin on Windows, macOS, and Linux. The easiest way to get Jellyfin running. Features: - One-click installation - Windows support - macOS support - Linux support - Automatic updates This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Declarative Jellyfin URL: https://jellywatch.app/hub/declarative-jellyfin-imp Repository: https://github.com/Sveske-Juice/declarative-jellyfin Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Declarative configuration of your Jellyfin server on NixOS using Nix modules. declarative-jellyfin by Sveske-Juice provides declarative configuration of your Jellyfin server on NixOS. Manage your Jellyfin setup as code. Features: - NixOS module - Declarative configuration - Infrastructure as code - Reproducible setup - Version-controlled config This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyhub URL: https://jellywatch.app/hub/jellyhub-imp Repository: https://github.com/Zigl3ur/jellyhub Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Indexes media from multiple Jellyfin servers into a single searchable hub. Jellyhub by Zigl3ur indexes media from multiple Jellyfin servers into a single searchable hub. Search across all your Jellyfin instances from one place. Features: - Multi-server indexing - Unified search - Cross-server discovery - Single interface - Lightweight This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyman URL: https://jellywatch.app/hub/jellyman-imp Repository: https://github.com/Smiley-McSmiles/jellyman Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 CLI tool for installing, managing, and updating Jellyfin on Linux systems. Jellyman by Smiley-McSmiles is a CLI tool for installing, managing, and updating Jellyfin on Linux. The go-to tool for Linux Jellyfin administration. Features: - Jellyfin installation - Version management - Update automation - Backup and restore - Linux-focused This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyRoller URL: https://jellywatch.app/hub/jellyroller-imp Repository: https://github.com/LSchallot/JellyRoller Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 A CLI Jellyfin controller for managing your server from the command line. JellyRoller by LSchallot is a CLI Jellyfin controller. Manage your Jellyfin server, libraries, and users from the command line. Features: - CLI server management - Library control - User management - Task scheduling - Scriptable interface This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellySearch URL: https://jellywatch.app/hub/jellysearch-imp Repository: https://gitlab.com/DomiStyle/jellysearch Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 A fast full-text search proxy for Jellyfin using Meilisearch as the backend. JellySearch by DomiStyle is a fast full-text search proxy for Jellyfin using Meilisearch. Provides significantly faster and more accurate search results. Features: - Meilisearch backend - Full-text search - Fast results - Typo tolerance - Drop-in proxy This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyswarrm URL: https://jellywatch.app/hub/jellyswarrm-imp Repository: https://github.com/LLukas22/Jellyswarrm Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Reverse proxy that combines multiple Jellyfin servers into one virtual instance. Jellyswarrm by LLukas22 is a reverse proxy that lets you combine multiple Jellyfin servers into one virtual instance. Present multiple servers as a single unified Jellyfin. Features: - Multi-server aggregation - Reverse proxy - Single virtual instance - Transparent to clients - Load distribution This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## xsrv.jellyfin URL: https://jellywatch.app/hub/xsrv-jellyfin-imp Repository: https://github.com/nodiscc/xsrv/tree/master/roles/jellyfin Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Ansible role to deploy and configure Jellyfin on Linux servers. xsrv.jellyfin by nodiscc is an Ansible role to deploy and configure Jellyfin on Linux servers. Automate your Jellyfin deployment with Ansible. Features: - Ansible role - Automated deployment - Configuration management - Linux server support - Infrastructure as code This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin on macOS Guide URL: https://jellywatch.app/hub/jellyfin-on-macos-imp Repository: https://github.com/Digital-Shane/jellyfin-on-macos Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Guide for hosting Jellyfin on macOS with dynamic DNS, geo-filtering, and monitoring dashboards. jellyfin-on-macos by Digital-Shane is a comprehensive guide for hosting Jellyfin on macOS with dynamic DNS, geo-filtering, and monitoring dashboards. Features: - macOS hosting guide - Dynamic DNS setup - Geo-filtering configuration - Monitoring dashboard setup - Step-by-step instructions This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Explo URL: https://jellywatch.app/hub/explo-imp Repository: https://github.com/LumePart/Explo Platform: both Category: Music Author: import Approved: 2026-05-23 Automated music discovery tool that recommends tracks based on your listening history. Explo by LumePart is an automated music discovery tool that recommends tracks based on your listening history. Works alongside Jellyfin for music discovery. Features: - Listening history analysis - Automated track recommendations - Music discovery - Jellyfin integration - Personalized suggestions This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MediaTracker URL: https://jellywatch.app/hub/mediatracker-imp Repository: https://github.com/bonukai/MediaTracker Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Media tracker and user rating platform with Jellyfin integration for tracking what you watch. MediaTracker by bonukai is a media tracker and user rating platform with Jellyfin integration. Track movies, TV shows, books, and games with ratings and reviews. Features: - Media tracking - User ratings - Jellyfin integration - Movies, TV, books, games - Watch history This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Movary URL: https://jellywatch.app/hub/movary-imp Repository: https://github.com/leepeuker/movary Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Self-hosted media tracker and user rating platform for movies and TV shows. Movary by leepeuker is a self-hosted media tracker and user rating platform for movies and TV shows. A privacy-first alternative to Letterboxd and Trakt. Features: - Self-hosted tracking - Movie and TV ratings - Watch history - Privacy-first - Jellyfin integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Multi Scrobbler URL: https://jellywatch.app/hub/multi-scrobbler-imp Repository: https://github.com/FoxxMD/multi-scrobbler Platform: both Category: Music Author: import Approved: 2026-05-23 Scrobbles music from many sources to many clients including Last.fm, ListenBrainz, and more. Multi Scrobbler by FoxxMD scrobbles music from many sources to many clients. Supports Jellyfin as a source and Last.fm, ListenBrainz, and others as targets. Features: - Multiple source support - Multiple target support - Jellyfin source - Last.fm target - ListenBrainz target This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Quasarr URL: https://jellywatch.app/hub/quasarr-imp Repository: https://github.com/rix1337/Quasarr Platform: both Category: Tools Author: import Approved: 2026-05-23 Emulates a usenet indexer and download client to allow direct downloads with Sonarr and Radarr. Quasarr by rix1337 emulates a usenet indexer and download client to allow direct downloads with Sonarr and Radarr. Bridge direct download sources into the *arr ecosystem. Features: - Usenet indexer emulation - Download client emulation - Sonarr integration - Radarr integration - Direct download support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## rffmpeg URL: https://jellywatch.app/hub/rffmpeg-imp Repository: https://github.com/joshuaboniface/rffmpeg Platform: both Category: Tools Author: import Approved: 2026-05-23 A remote FFmpeg wrapper for transcoding media on more capable machines. rffmpeg by joshuaboniface is a remote FFmpeg wrapper commonly used for transcoding media on more capable machines. Offload Jellyfin transcoding to a dedicated server. Features: - Remote FFmpeg execution - Transcoding offload - Multiple remote host support - Transparent to Jellyfin - Load balancing This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Icon Metadata URL: https://jellywatch.app/hub/jellyfin-icon-metadata-imp Repository: https://github.com/Druidblack/jellyfin-icon-metadata Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Adds metadata provider icons to Jellyfin item pages so you can see where each piece of metadata came from. jellyfin-icon-metadata by Druidblack adds metadata provider icons to Jellyfin item pages, making it easy to see at a glance where each piece of metadata (title, description, artwork, ratings) was sourced from. Features: - Provider icons on item detail pages - Visual metadata source identification - Supports all major providers (TMDB, TVDB, AniDB, etc.) - Lightweight, no performance impact - Works with all Jellyfin library types This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Speedrr URL: https://jellywatch.app/hub/speedrr-imp Repository: https://github.com/itschasa/speedrr Platform: both Category: Tools Author: import Approved: 2026-05-23 Dynamically changes torrent client upload speed when a Jellyfin or Plex stream starts. Speedrr by itschasa dynamically changes your torrent client upload speed based on events such as when a Plex or Jellyfin stream starts. Prioritize streaming bandwidth. Features: - Dynamic upload speed control - Jellyfin stream detection - Plex stream detection - Torrent client integration - Bandwidth prioritization This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## ActorPlus URL: https://jellywatch.app/hub/jellyfin-plugin-actorplus-imp Repository: https://github.com/Druidblack/Jellyfin.Plugin.ActorPlus Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Adds hoverable filmography to actor portraits and displays actor lists when hovering over movie or series posters. Jellyfin.Plugin.ActorPlus by Druidblack adds additional details and hoverable filmography to actor portraits in Jellyfin. It also displays actor lists when hovering over movie or series posters. Features: - Hoverable actor filmography - Actor list on poster hover - Additional actor details - Works with movies and TV series - Enhances the people section This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Collection Sections URL: https://jellywatch.app/hub/jellyfin-plugin-collection-sections-imp Repository: https://github.com/IAmParadox27/jellyfin-plugin-collection-sections Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Adds collection and playlist sections to the Jellyfin home screen via the home-sections plugin. jellyfin-plugin-collection-sections by IAmParadox27 adds additional sections to jellyfin-plugin-home-sections specifically for collections and playlists. Requires the home-sections plugin to be installed first. Features: - Collection sections on home screen - Playlist sections on home screen - Integrates with home-sections plugin - Customizable section order - Per-user configuration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Custom Tabs URL: https://jellywatch.app/hub/jellyfin-plugin-custom-tabs-imp Repository: https://github.com/IAmParadox27/jellyfin-plugin-custom-tabs Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Add personalized tabs in the Jellyfin web UI for quick access to custom content. jellyfin-plugin-custom-tabs by IAmParadox27 adds personalized tabs in jellyfin-web for quick access to custom content. Create shortcuts to your most-used sections. Features: - Custom tab creation - Quick access shortcuts - Personalized navigation - Works with home-sections ecosystem - Per-user configuration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## GetAvatar URL: https://jellywatch.app/hub/jellyfin-plugin-getavatar-imp Repository: https://github.com/cedev-1/jellyfin-plugin-GetAvatar Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Allows Jellyfin users to choose an avatar from a curated collection of images. jellyfin-plugin-GetAvatar by cedev-1 allows users to choose an avatar from a collection of images directly within Jellyfin, replacing the default initials-based avatar. Features: - Avatar selection interface - Curated image collection - Per-user avatar setting - Replaces default initials avatar - Easy to use This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Pages Plugin URL: https://jellywatch.app/hub/jellyfin-plugin-pages-imp Repository: https://github.com/IAmParadox27/jellyfin-plugin-pages Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Enables other plugins to create custom Jellyfin pages that match the native UI style. jellyfin-plugin-pages by IAmParadox27 enables other plugins to create custom Jellyfin pages that match the native UI style. A dependency plugin for the IAmParadox27 plugin ecosystem. Features: - Custom page framework - Native UI style matching - Plugin dependency support - Foundation for other plugins - Consistent design language This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Ratings Plugin URL: https://jellywatch.app/hub/jellyfin-plugin-ratings-imp Repository: https://github.com/K3ntas/jellyfin-plugin-ratings Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Adds user ratings, card overlays, media requests, deletion workflows, chat, and new media notifications. jellyfin-plugin-ratings by K3ntas adds user ratings, card overlays, media requests, deletion workflows, chat, and new media notifications to Jellyfin. A comprehensive community engagement plugin. Features: - User rating system - Card overlay ratings display - Media request workflow - Content deletion requests - In-app chat - New media notifications This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## KefinTweaks URL: https://jellywatch.app/hub/kefintweaks-imp Repository: https://github.com/ranaldsgift/KefinTweaks Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Collection of UI enhancements and customization tweaks for Jellyfin. KefinTweaks by ranaldsgift is a collection of UI enhancements and customization tweaks for Jellyfin. Complements other UI plugins with additional quality-of-life improvements. Features: - Multiple UI tweaks - Quality-of-life improvements - Customization options - Lightweight additions - Community-maintained This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## PPJF URL: https://jellywatch.app/hub/ppjf-imp Repository: https://github.com/Damocles-fr/PPJF Platform: jellyfin Category: UI/Themes Author: import Approved: 2026-05-23 Allows launching PotPlayer directly from Jellyfin Web for local video playback. PPJF by Damocles-fr allows launching PotPlayer from Jellyfin Web. Play your Jellyfin media in PotPlayer for superior local codec support and playback features. Features: - PotPlayer integration - Launch from Jellyfin Web - Local playback support - Better codec compatibility - Windows-focused This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Favorited Songs Playlist URL: https://jellywatch.app/hub/jellyfin-favorited-songs-playlist-imp Repository: https://github.com/Saturn745/jellyfin-favorited-songs-playlist Platform: jellyfin Category: Music Author: import Approved: 2026-05-23 Automatically creates and updates a Favorited Songs playlist containing all your favorited music tracks. jellyfin-favorited-songs-playlist by Saturn745 automatically creates and updates a "Favorited Songs" playlist containing all your favorited music tracks in Jellyfin. Features: - Automatic playlist creation - Syncs with favorited tracks - Always up to date - Works with all music libraries - No manual management needed This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Provider Stuff URL: https://jellywatch.app/hub/jellyfin-plugin-provider-stuff-imp Repository: https://github.com/kamilkosek/jellyfin-plugin-provider-stuff Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Automates tagging library items with streaming provider tags and creates per-provider collections. jellyfin-plugin-provider-stuff by kamilkosek automates tagging library items with streaming provider tags and creates collections per provider. Know which streaming service each title is available on. Features: - Streaming provider tagging - Per-provider collections - Automatic tag management - Multiple provider support - Library organization This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## TheDwarfsHammer URL: https://jellywatch.app/hub/thedwarfshammer-imp Repository: https://github.com/Kamoba/jellyfin-plugin-thedwarfshammer Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Enhanced collection management and content discovery for Jellyfin with advanced organization tools. TheDwarfsHammer by Kamoba provides enhanced collection management and content discovery for Jellyfin. Adds tools for organizing and browsing collections beyond what the default UI offers. Features: - Enhanced collection management - Advanced content discovery - Better organization tools - Improved browsing experience - Collection metadata management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JF to Stash Sync URL: https://jellywatch.app/hub/jellyfin-jf-to-stash-sync-imp Repository: https://github.com/Druidblack/Jellyfin.Plugin.JF_To_Stash_Sync Platform: jellyfin Category: Sync Author: import Approved: 2026-05-23 Synchronizes Jellyfin viewing activity with Stash, the self-hosted content manager. Jellyfin.Plugin.JF_To_Stash_Sync by Druidblack synchronizes viewing activity from Jellyfin with Stash, the self-hosted content manager for adult content libraries. Features: - Jellyfin to Stash sync - Viewing activity tracking - Watch progress synchronization - Stash integration - Automatic sync This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Streamyfin Plugin URL: https://jellywatch.app/hub/jellyfin-plugin-streamyfin-imp Repository: https://github.com/streamyfin/jellyfin-plugin-streamyfin Platform: jellyfin Category: Clients Author: import Approved: 2026-05-23 Companion server plugin for the Streamyfin client enabling centralized app configuration. jellyfin-plugin-streamyfin is the companion server plugin for the Streamyfin mobile client. It allows centralized configuration of the Streamyfin application from the server side. Features: - Centralized Streamyfin configuration - Server-side settings management - Streamyfin client integration - Admin control over client behavior - Easy configuration interface This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin RPC (kennethsible) URL: https://jellywatch.app/hub/jellyfin-rpc-kennethsible-imp Repository: https://github.com/kennethsible/jellyfin-rpc Platform: jellyfin Category: Sync Author: import Approved: 2026-05-23 Displays your current Jellyfin activity directly on your Discord profile via Rich Presence. jellyfin-rpc by kennethsible displays your current Jellyfin activity directly on your Discord profile using Discord Rich Presence. An alternative implementation to the Radiicall version. Features: - Discord Rich Presence - Current media display on Discord - Movie, TV, and music support - Automatic status updates - Configurable display options This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MyAnimeSync URL: https://jellywatch.app/hub/myanimesyncc-imp Repository: https://github.com/iankiller77/MyAnimeSync Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Automatically synchronizes anime watching progress between Jellyfin and MyAnimeList. MyAnimeSync by iankiller77 automatically synchronizes anime watching progress between Jellyfin and MyAnimeList. Keep your MAL profile up to date as you watch. Features: - MyAnimeList synchronization - Automatic progress tracking - Watch status updates - Episode progress sync - Per-user configuration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Newsletter Plugin URL: https://jellywatch.app/hub/jellyfin-newsletter-plugin-imp Repository: https://github.com/Cloud9Developer/Jellyfin-Newsletter-Plugin Platform: jellyfin Category: Notifications Author: import Approved: 2026-05-23 Sends newsletters for recently added media to Jellyfin users via email. Jellyfin-Newsletter-Plugin by Cloud9Developer sends newsletters for recently added media to Jellyfin users. Keep your users informed about new content additions. Features: - Recently added media newsletters - Email delivery - Configurable frequency - Media artwork in emails - User subscription management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## NotifySync URL: https://jellywatch.app/hub/notifysync-imp Repository: https://github.com/peterdu1109/NotifySync Platform: jellyfin Category: Notifications Author: import Approved: 2026-05-23 Adds a notification bell to Jellyfin that displays recent additions to your library. NotifySync by peterdu1109 adds a notification bell to Jellyfin that displays recent additions. Users can see what is new without leaving the interface. Features: - Notification bell UI element - Recent additions display - In-app notifications - No external service needed - Clean integration This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## AniLiberty STRM Plugin URL: https://jellywatch.app/hub/aniliberty-strm-imp Repository: https://github.com/queukat/AniLibriaStrmPlugin Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Generates AniLiberty STRM libraries for Jellyfin with metadata, intro markers, and watch-progress sync. AniLiberty STRM Plugin by queukat generates AniLiberty STRM libraries for Jellyfin with metadata, intro markers, and watch-progress sync. Designed for anime streaming integration. Features: - AniLiberty STRM library generation - Metadata integration - Intro marker support - Watch progress synchronization - Anime-focused This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Language Tags URL: https://jellywatch.app/hub/jellyfin-plugin-languagetags-imp Repository: https://github.com/TheXaman/jellyfin-plugin-languageTags Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Adds language tags to media based on audio tracks using FFmpeg for better library filtering. jellyfin-plugin-languageTags by TheXaman adds language tags to media based on audio tracks using FFmpeg. Makes it easy to filter your library by audio language. Features: - Automatic language tag detection - FFmpeg-based audio track analysis - Library filtering support - Multiple language support - Batch processing This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MediathekViewDL URL: https://jellywatch.app/hub/jellyfin-plugin-mediathekviewdl-imp Repository: https://github.com/CatNoir2006/jellyfin-plugin-MediathekViewDL Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Integrates MediathekViewDL into Jellyfin for searching and downloading German public broadcaster content. jellyfin-plugin-MediathekViewDL by CatNoir2006 integrates MediathekViewDL into Jellyfin, allowing users to search, download, and manage content from German public broadcasters (ARD, ZDF, etc.). Features: - MediathekViewDL integration - German public broadcaster content - ARD, ZDF, and more - Search and download - Library management This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Powertoys URL: https://jellywatch.app/hub/jellyfin-powertoys-imp Repository: https://github.com/lennykean/jellyfin-powertoys Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 A collection of plugins to enhance Jellyfin with additional features and tools. jellyfin-powertoys by lennykean is a collection of plugins to enhance Jellyfin with additional features and tools. A multi-purpose enhancement pack. Features: - Multiple enhancement plugins - Various utility tools - Library improvements - Playback enhancements - Community-maintained This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyfinTweaks URL: https://jellywatch.app/hub/jellyfintweaks-imp Repository: https://github.com/n00bcodr/JellyfinTweaks Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Override Jellyfin settings like Enable Backdrops and Enable Theme Music across all devices from one toggle. JellyfinTweaks by n00bcodr overrides Jellyfin settings such as Enable Backdrops and Enable Theme Music across all devices from a single admin toggle. No more per-device configuration. Features: - Global settings override - Enable/disable backdrops server-wide - Theme music control - Single admin toggle - Applies to all connected devices This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Smart Covers URL: https://jellywatch.app/hub/smart-covers-imp Repository: https://github.com/GeiserX/smart-covers Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Cover extraction for books, audiobooks, comics, and music with online fallback via Open Library and Google Books. smart-covers by GeiserX provides cover extraction for books, audiobooks, comics, magazines, and music libraries with online fallback via Open Library and Google Books. Features: - Book cover extraction - Audiobook cover support - Comic and magazine covers - Music library covers - Open Library fallback - Google Books fallback This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Apple Music Plugin URL: https://jellywatch.app/hub/jellyfin-plugin-applemusic-imp Repository: https://github.com/lyarenei/jellyfin-plugin-applemusic Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Fetches album and artist metadata from Apple Music for Jellyfin music libraries. jellyfin-plugin-applemusic by lyarenei fetches album and artist metadata from Apple Music. The dedicated Apple Music metadata provider for Jellyfin music libraries. Features: - Apple Music metadata - Album artwork - Artist biographies - Track listings - Genre and release data This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## ArtworkMultiSource URL: https://jellywatch.app/hub/jellyfin-plugin-artworkmultisource-imp Repository: https://github.com/Druidblack/Jellyfin.Plugin.ArtworkMultiSource Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Combines posters and logos from TMDb and TVDB with language-aware priority and configurable sorting. Jellyfin.Plugin.ArtworkMultiSource by Druidblack combines posters and logos from TMDb and TVDB with language-aware priority and configurable sorting. Get the best artwork from multiple sources. Features: - TMDb and TVDB artwork aggregation - Language-aware priority - Configurable sorting - Poster and logo support - Multi-source fallback This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Hikka Metadata URL: https://jellywatch.app/hub/jellyfin-plugin-hikka-imp Repository: https://github.com/HotMasya/jellyfin-plugin-hikka Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Metadata and images for anime and manga from the Hikka website. jellyfin-plugin-hikka by HotMasya provides metadata and images for anime and manga from the Hikka website, a Ukrainian anime and manga database. Features: - Hikka database integration - Anime metadata - Manga metadata - Ukrainian language support - Artwork fetching This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## MyAnimeList Metadata URL: https://jellywatch.app/hub/jellyfin-plugin-myanimelist-imp Repository: https://github.com/ryandash/jellyfin-plugin-myanimelist Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Provides MyAnimeList metadata for anime series in Jellyfin. jellyfin-plugin-myanimelist by ryandash provides MyAnimeList metadata for anime series in Jellyfin. Fetch ratings, descriptions, and artwork directly from MAL. Features: - MyAnimeList metadata - Anime ratings - Series descriptions - Artwork from MAL - Episode information This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Shikimori Metadata URL: https://jellywatch.app/hub/jellyfin-plugin-shikimori-imp Repository: https://github.com/te9c/jellyfin-plugin-shikimori Platform: jellyfin Category: Anime Author: import Approved: 2026-05-23 Metadata provider for shikimori.one, a Russian-language anime and manga database. jellyfin-plugin-shikimori by te9c provides metadata from shikimori.one, a popular Russian-language anime and manga database. Essential for Russian-speaking anime fans. Features: - Shikimori database integration - Russian-language anime data - Manga metadata - Ratings and reviews - Artwork support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## OpenSubtitles URL: https://jellywatch.app/hub/jellyfin-opensubtitles-imp Repository: https://github.com/jellyfin/jellyfin-plugin-opensubtitles Platform: jellyfin Category: Subtitles Author: import Approved: 2026-05-23 Official Jellyfin plugin to download subtitles from OpenSubtitles.com for any video in your library. The OpenSubtitles plugin is an official Jellyfin plugin that allows your server to download subtitles from OpenSubtitles.com for any video file in your library. Supports automatic and manual subtitle downloads. Features: - OpenSubtitles.com integration - Automatic subtitle downloading - Manual search and download - Multiple language support - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Fanart.tv URL: https://jellywatch.app/hub/jellyfin-fanart-imp Repository: https://github.com/jellyfin/jellyfin-plugin-fanart Platform: jellyfin Category: Metadata Author: import Approved: 2026-05-23 Official Jellyfin plugin to fetch high-quality artwork from Fanart.tv for your media library. The Fanart.tv plugin is an official Jellyfin plugin that fetches high-quality artwork from Fanart.tv including backgrounds, logos, disc art, and more for movies, TV shows, and music. Features: - High-quality artwork from Fanart.tv - Movie backgrounds and logos - TV show artwork - Music album art - Disc art support - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## TMDB Box Sets URL: https://jellywatch.app/hub/jellyfin-tmdb-boxsets-imp Repository: https://github.com/jellyfin/jellyfin-plugin-tmdbboxsets Platform: jellyfin Category: Library Management Author: import Approved: 2026-05-23 Official Jellyfin plugin that automatically creates movie collections based on TMDB collection data. TMDB Box Sets is an official Jellyfin plugin that automatically creates movie collections based on TMDB collection data. Organizes your movie library into proper franchises and series. Features: - Automatic collection creation - TMDB collection data - Movie franchise organization - Keeps collections updated - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Playback Reporting URL: https://jellywatch.app/hub/jellyfin-playback-reporting-imp Repository: https://github.com/jellyfin/jellyfin-plugin-playbackreporting Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Official Jellyfin plugin that tracks and reports on playback activity across your server. Playback Reporting is an official Jellyfin plugin that tracks and reports on playback activity across your server. View detailed statistics about what is being watched and by whom. Features: - Playback activity tracking - Detailed usage reports - Per-user statistics - Most watched content - Playback duration tracking - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Reports URL: https://jellywatch.app/hub/jellyfin-reports-imp Repository: https://github.com/jellyfin/jellyfin-plugin-reports Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-23 Official Jellyfin plugin that generates detailed library reports in various formats. Reports is an official Jellyfin plugin that generates detailed library reports. Export information about your media collection in various formats for analysis. Features: - Library reports generation - Multiple export formats - Media inventory reports - Missing metadata reports - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Trakt URL: https://jellywatch.app/hub/jellyfin-trakt-imp Repository: https://github.com/jellyfin/jellyfin-plugin-trakt Platform: jellyfin Category: Sync Author: import Approved: 2026-05-23 Official Jellyfin plugin to synchronize watch history and scrobble to Trakt. The Trakt plugin is an official Jellyfin plugin that synchronizes watch history between Jellyfin and Trakt. Supports automatic scrobbling as you watch. Features: - Automatic scrobbling - Watch history sync - Collection sync - Per-user configuration - Official Jellyfin project plugin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## SubBuzz URL: https://jellywatch.app/hub/subbuzz-imp Repository: https://github.com/josdion/subbuzz Platform: both Category: Subtitles Author: import Approved: 2026-05-23 Subtitles plugin for Emby and Jellyfin supporting multiple subtitle providers. SubBuzz by josdion is a subtitles plugin for both Emby and Jellyfin that supports multiple subtitle providers. A comprehensive alternative to the official OpenSubtitles plugin. Features: - Multiple subtitle providers - Emby and Jellyfin support - Automatic subtitle search - Manual download option - Multiple language support This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Aphrodite URL: https://jellywatch.app/hub/aphrodite-imp Repository: https://github.com/jackkerouac/aphrodite Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Enhances media library posters with quality indicators like resolution, audio codec, and review ratings. Aphrodite by jackkerouac enhances media library posters with quality indicators like resolution, audio codec, and review ratings. Overlay badges directly onto your poster images. Features: - Resolution badges (4K, 1080p, etc.) - Audio codec indicators - Review rating overlays - Batch processing - Customizable badge styles This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## CoverMaker URL: https://jellywatch.app/hub/covermaker-imp Repository: https://github.com/jeffersoncgo/CoverMaker Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Design and generate custom cover images for your Jellyfin media collections. CoverMaker by jeffersoncgo allows designing and generating custom cover images for your media collections. Create professional-looking library covers. Features: - Custom cover design - Template-based generation - Multiple style options - Batch generation - Export for Jellyfin This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Cover Maker URL: https://jellywatch.app/hub/jellyfin-cover-maker-imp Repository: https://github.com/KartoffelChipss/Jellyfin-Cover-Maker Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Website for creating consistent covers and posters for Jellyfin libraries. Jellyfin-Cover-Maker by KartoffelChipss is a website for creating consistent covers and posters for Jellyfin libraries. Generate matching artwork for your entire library. Features: - Web-based cover creation - Consistent style templates - Library-wide matching - Multiple design options - Export-ready output This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Image Exporter URL: https://jellywatch.app/hub/jellyfin-image-exporter-imp Repository: https://github.com/Kurotaku-sama/Jellyfin-Image-Exporter Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Exports images (posters, banners, thumbnails) from Jellyfin metadata to local files. Jellyfin-Image-Exporter by Kurotaku-sama exports images (posters, banners, thumbnails) from Jellyfin metadata to local files. Back up or reuse your Jellyfin artwork. Features: - Poster export - Banner export - Thumbnail export - Batch export - Organized file output This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin Ratings URL: https://jellywatch.app/hub/jellyfin-ratings-imp Repository: https://github.com/Druidblack/jellyfin_ratings Platform: jellyfin Category: Tools Author: import Approved: 2026-05-23 Replaces Jellyfin ratings with ratings from IMDb, Trakt, Letterboxd, and other sources. jellyfin_ratings by Druidblack replaces Jellyfin ratings with ratings from various sources including IMDb, Trakt, Letterboxd, and others. See the ratings that matter to you. Features: - IMDb ratings - Trakt ratings - Letterboxd ratings - Multiple source support - Replaces default ratings This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jellyfin2Samsung URL: https://jellywatch.app/hub/jellyfin2samsung Repository: https://github.com/Jellyfin2Samsung/Samsung-Jellyfin-Installer Platform: jellyfin Category: Tools Author: PatrickSt1991 Approved: 2026-05-22 Bridge and patch tool for Jellyfin and forks. This tool acts as a bridge between your Samsung TV and the Jellyfin apps and forks! Allowing easy installation and even patching some known bugs in Jellyfin for Tizen like the trailers not working issue --- ## hdhomerun-jellyfin-guide URL: https://jellywatch.app/hub/hdhomerun-jellyfin-guide Repository: https://github.com/stephenhoos/hdhomerun-jellyfin-guide Platform: jellyfin Category: Tools Author: CenturioApertus Approved: 2026-05-22 Jellyfin plugin that imports SiliconDust HDHomeRun XMLTV guide data and configures Live TV automatically. HDHomeRun Guide is a Jellyfin server plugin for SiliconDust HDHomeRun tuners. It fetches guide data from SiliconDust's official XMLTV API, caches it locally, generates Jellyfin-compatible XMLTV and M3U files, and can automatically update Jellyfin Live TV's tuner and guide paths. At SiliconDust/HDHomeRun's request, the plugin no longer uses the older render-oriented `/api/guide` endpoint. Current releases are XMLTV-only. ## Features - Uses SiliconDust's official XMLTV endpoint - Reads fresh `DeviceAuth` from the tuner on each refresh - Optional SiliconDust account email support for the documented Email + DeviceIDs XMLTV path - Does not store `DeviceAuth` in plugin configuration or logs - Generates local XMLTV and M3U files for Jellyfin - Updates Jellyfin Live TV M3U/XMLTV paths automatically - Clears stale Jellyfin XMLTV cache entries before import - Supports Jellyfin-side HDHomeRun discovery - Refreshes automatically on a randomized configurable interval - Supports free XMLTV guide data and paid DVR guide accounts when available SiliconDust documents 2 days of XMLTV guide data for everyone and 14 days with HDHomeRun DVR guide service. Actual returned guide duration is controlled by SiliconDust entitlement/server behavior. ## Install Download the latest release zip from GitHub, extract it into Jellyfin's plugin directory, restart Jellyfin, then configure it from: Dashboard -> Plugins -> HDHomeRun Guide Latest release: https://github.com/stephenhoos/hdhomerun-jellyfin-guide/releases/latest --- ## StreamyStats URL: https://jellywatch.app/hub/streamystats-imp Repository: https://github.com/streamystats/streamystats Platform: jellyfin Category: Statistics Author: import Approved: 2026-05-21 Statistics service for Jellyfin providing analytics and data visualization. StreamyStats is a statistics service for Jellyfin that provides analytics and data visualization for your media server activity. Features: - Server activity analytics - Data visualization dashboards - User statistics - Playback history - Library insights This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## JellyPlex-Watched URL: https://jellywatch.app/hub/jellyplex-watched-imp Repository: https://github.com/luigi311/JellyPlex-Watched Platform: both Category: Sync Author: import Approved: 2026-05-21 Syncs watch history between Jellyfin, Plex, and Emby servers locally. JellyPlex-Watched by luigi311 syncs watched status between Jellyfin, Plex, and Emby locally. Essential for users running multiple media servers. Features: - Cross-server watch sync - Jellyfin, Plex, and Emby support - Local processing (no cloud) - Bidirectional sync - Scheduled automation This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Watchstate URL: https://jellywatch.app/hub/watchstate-imp Repository: https://github.com/ArabCoders/watchstate Platform: both Category: Sync Author: import Approved: 2026-05-21 Syncs play state between different media servers including Jellyfin, Plex, and Emby. Watchstate syncs play state between different media servers. Supports Jellyfin, Plex, and Emby for keeping watch progress consistent across platforms. Features: - Multi-server play state sync - Jellyfin, Plex, Emby support - Bidirectional synchronization - Webhook support - CLI and Docker deployment This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Jfa-go URL: https://jellywatch.app/hub/jfa-go-imp Repository: https://github.com/hrfee/jfa-go Platform: jellyfin Category: Tools Author: import Approved: 2026-05-21 User and invite management system for Jellyfin with Discord and Telegram integration. jfa-go is a user and invite management system for Jellyfin. Create invite links, manage user access, and integrate with Discord and Telegram for account creation. Features: - Invite link generation - User management - Discord bot integration - Telegram bot integration - Email notifications - Customizable user profiles This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Wizarr URL: https://jellywatch.app/hub/wizarr-imp Repository: https://github.com/Wizarrrr/wizarr Platform: jellyfin Category: Tools Author: import Approved: 2026-05-21 Advanced user invitation and management system for Jellyfin and Plex. Wizarr is an advanced user invitation and management system for Jellyfin and Plex. Provides a polished onboarding experience for new users. Features: - Beautiful invitation pages - User onboarding flow - Expiring invitations - User management dashboard - Multi-server support - Customizable branding This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app --- ## Ultrachromic URL: https://jellywatch.app/hub/ultrachromic-imp Repository: https://github.com/CTalvio/Ultrachromic Platform: jellyfin Category: Themes Author: import Approved: 2026-05-21 The final form, the true evolution of the chromic theme saga. A highly customizable CSS theme for Jellyfin. Ultrachromic is the most popular and customizable CSS theme for Jellyfin. It represents the final evolution of the chromic theme series by CTalvio, offering multiple variations and extensive configuration options. Features: - Multiple theme variations (dark, light, monochrome) - Highly customizable color schemes - Clean, modern interface design - Active community support - Compatible with Jellyfin 10.9+ This plugin was automatically imported by the JellyWatch moderation team. For removal, modification, or if you wish to republish it yourself, please contact support@jellywatch.app # Community Hub Requests > 7 open requests from the community. Developers can use this to discover what users want built. --- ## Yearly watch stats summary like Spotify Wrapped URL: https://jellywatch.app/hub/requests/jellyfin-yearly-watch-summary Category: Statistics Platform: both Author: felix_homelabber Votes: 15 Status: open Submitted: 2026-05-31 Would be awesome to have something like Spotify Wrapped but for Jellyfin. At the end of the year, generate a shareable summary showing total hours watched, top genres, most watched shows, top directors, and a few fun stats. Could be a plugin that builds a static HTML page or even just a clean PDF export. Jellyfin Rewind does something close but it feels incomplete and is not actively maintained. --- ## Reliable Trakt scrobbling plugin for Jellyfin URL: https://jellywatch.app/hub/requests/trakt-reliable-scrobble-plugin Category: Sync Platform: jellyfin Author: lena_streams Votes: 11 Status: open Submitted: 2026-05-29 I know the official Trakt plugin exists but it has been broken for a while with newer Jellyfin versions and the sync is unreliable. Looking for a well-maintained plugin that scrobbles plays to Trakt in real time, syncs watch history both ways, and handles API rate limits properly. A configurable delay before scrobbling so short test plays do not count would be a nice touch. --- ## Watch progress sync across multiple Jellyfin servers URL: https://jellywatch.app/hub/requests/cross-server-watch-progress-sync Category: Sync Platform: jellyfin Author: soph_selfhost Votes: 9 Status: open Submitted: 2026-06-02 I run two Jellyfin servers, one at home and one on a VPS, and keeping watch progress in sync between them is a pain. Watchstate exists but the setup is complex and it does not always handle resume points correctly. Would be great to have a simpler tool focused only on progress sync, not full library sync. Something that runs on a schedule and pushes played status and resume positions from server A to server B using the Jellyfin API. --- ## Native iOS client with offline downloads URL: https://jellywatch.app/hub/requests/jellyfin-ios-native-offline Category: Clients Platform: jellyfin Author: tundra_ops Votes: 7 Status: open Submitted: 2026-05-27 Swiftfin is great but offline download support is still missing. I travel a lot and really want to be able to download a few episodes before a flight and watch them without internet. Even a basic implementation that lets you queue a download and saves it to local storage would be enough. Bonus points for background downloads and an auto-delete after watching option. --- ## Discord Rich Presence for Jellyfin URL: https://jellywatch.app/hub/requests/jellyfin-discord-rich-presence Category: Notifications Platform: jellyfin Author: mxrtin_dev Votes: 4 Status: open Submitted: 2026-05-24 Would love a plugin or a lightweight app that shows what I am currently watching on Jellyfin as a Discord Rich Presence status. Something like "Watching Breaking Bad S03E05 on Jellyfin" visible on my Discord profile. There are a few scripts floating around but nothing maintained and easy to install. Ideally it would run as a small background service on Windows and Linux and read the active session via the Jellyfin API. A Docker image would be a bonus. --- ## vod on emby ? URL: https://jellywatch.app/hub/requests/vod-on-emby Category: IPTV Platform: emby Author: bledad Votes: 0 Status: open Submitted: 2026-07-23 hello , thank you for your work , i put dispatchaar with emby for iptv , but how to for VOD on emby , thank's --- ## commercial skipping plugin for window 11 server URL: https://jellywatch.app/hub/requests/commercial-skipping-plugin-for-window-11-server Category: Playback Platform: jellyfin Author: terryturzynski Votes: 0 Status: open Submitted: 2026-07-19 Comgone and ComSkip are not setp for a jellyfin server running on windows. How to get the plugins for windows --- ## Support Portal Guide URL: https://jellywatch.app/support/how-to The JellyWatch support portal lets users submit, track, and manage support tickets from Discord, the app, or the web portal. Key features: Google sign-in, ticket submission, public board with voting (https://jellywatch.app/support/board), Discord account linking, private Discord channels per ticket, and admin replies delivered to Discord and the portal. Link accounts via Settings > Account > Link Discord in the app, or the Link Discord banner on the portal, then run /verify in #verify on Discord. # Public Support Board > 28 public bug reports and feature requests from users. > Board URL: https://jellywatch.app/support/board > Sorted by votes. Users can vote to help prioritise development. --- ## Shuffle Playback URL: https://jellywatch.app/support/tickets/f16dd500-d13a-4a01-9a86-67546a1f8a57 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 3 Updated: 2026-09-06 it would be great to have a shuffle playback option available like you have e.g. in the official jellyfin android tv app. So e.g. i would like to navigate to a TV Show and start a random Episode right from the Overview screen. Or the same with Movies. Having an option to start a random movie from the library view would be nice. Thanks in Advance! :) --- ## Add a request episodes option in the series page. URL: https://jellywatch.app/support/tickets/4cb01de7-ccd6-4a42-a288-4574abae9c88 Type: Feature Request Status: closed App: JELLYWATCH_ADMIN Platform: EMBY Votes: 1 Updated: 2026-09-27 I propose adding a button within the actual series panel of a show that is already on a server. As an example, if I already have Rick and Morty on my server and I already have up to let's say season 8, but I do not have all of season 9 available just yet. The user could press a button in some form or fashion on the panel to request the newest episodes that are available based on information from Seer and any other metadata provider. This would reduce clicks and pages that the user would have to go through. Thus improving the user experience. This will particularly only be applied to series like anime, TV shows and cartoons. Not to movies. Obviously, you need to go look for those if you want the movie on the server. --- ## jw doesnt close URL: https://jellywatch.app/support/tickets/89394dc7-5214-4a3c-a3f5-42adf8c4b9b7 Type: Bug Report Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-10-11 while playing music using jellywatch player. when trying to close app. app will not close. have to go to the app store and force close app. will post video on discord. --- ## Edit local/external URLs in settings without logging out & JellyWatch TV support URL: https://jellywatch.app/support/tickets/8e81bad2-74f7-4bda-98ad-972ed4533d8d Type: Feature Request Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-10-07 Hey, Thanks for the great app! I have a question and feature request regarding local and external server URL handling: Right now, setting up both a local and external URL seems to only be available on the initial login screen in JellyWatch Admin. - Updating URLs without logging out: Is it possible to add a setting to edit or add the local/external addresses for an existing server profile directly from the app settings, without having to disconnect and re-authenticate? - JellyWatch TV availability: Is dual URL support (local vs. external fallback) currently available or planned for JellyWatch TV as well? Having this directly configurable in settings and supported across both apps would be a great QoL update for switching between local Wi-Fi and remote access. Thanks! --- ## ping en local URL: https://jellywatch.app/support/tickets/eba83301-46bb-43ef-b3d5-f75f7681f22c Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-10-05 j'ai ajouté une url externe pour tailscale et mon url locale et impossible de me connecter sur l'URL locale quand je suis en wifi, ça ne veut pas se connecter. une idée sur la cause de ce comportement ? ça marche nickel avec tailscale Merci --- ## The Jellyfin Client GitHub Repo has a broken Discord link URL: https://jellywatch.app/support/tickets/1c844fa5-97d4-4d06-8e06-7cf190f0e657 Type: Bug Report Status: closed App: JELLYWATCH_PLAYER Platform: BOTH Votes: 0 Updated: 2026-10-02 https://github.com/JellyWatchteam/JellyWatch-Jellyfin-TV-Player/tree/main --- ## JW Player stay on notification bar and other URL: https://jellywatch.app/support/tickets/3629284e-95b8-4851-82c4-5a6f5e344617 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-10-01 i dont know if i missed a setting to have the jw player to stay on the notification bar while listening to music. have the ability to click on the player to open when viewing from the notification bar when interrupted the player force closes instead of pausing the song --- ## Sequential Playback for Theme Media & Trailers (Alphabetical/Numerical Order) URL: https://jellywatch.app/support/tickets/7861893a-1c73-47a6-847b-f66f37937357 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: BOTH Votes: 0 Updated: 2026-10-01 Currently, JellyWatch only selects and plays a single random file when an item's details page has multiple theme music tracks, theme videos, or trailers. I would like an option for JellyWatch to automatically queue and play all available theme/trailer files sequentially in alphabetical and numerical order (0–9, A–Z). Use Case & Problem: I meticulously organize my media library's themes and extras in chronological order by season and type. For example, my show folder contains: * 01 - Overlord - S01 - NC OP1 - Clattanoia [OxT].mp4 * 02 - Overlord - S01 - NC ED1 - L.L.L. [MYTH & ROID].mp4 * 03 - Overlord - S02 - NC OP1 - GO CRY GO [OxT].mp4 * 04 - Overlord - S02 - NC ED1 - HYDRA [MYTH & ROID].mp4 Because Jellyfin itself doesn't natively support ordered playback for multiple theme items, having JellyWatch handle this client-side would be a huge quality-of-life upgrade for users who share heavily curated libraries. Proposed Functionality: * Sequential Queueing: Instead of picking a single random file, fetch all available theme music, theme video, or trailer assets associated with the item page. * Deterministic Sorting: Sort and play the files sequentially based on their filenames (0-9, A-Z). There could also be a toggle in the playback settings to choose if for example theme videos should be played sequentally or random Thank you for considering this feature and for your work on JellyWatch! --- ## JellyWatch is not reading my playlists URL: https://jellywatch.app/support/tickets/b7cbd78e-4866-4b15-b764-f9d9d65cd533 Type: Bug Report Status: closed App: JELLYWATCH_PLAYER Platform: EMBY Votes: 0 Updated: 2026-09-30 For some strange reason, JellyWatch is not importing or reading the playlists from the server, instead it's creating some empty playlists based on TV episodes from my library 🤷‍♂️ --- ## Add the Issues system that is in seerr URL: https://jellywatch.app/support/tickets/5c5df2a4-fbca-4ffc-9536-e3a11df3a9b3 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: BOTH Votes: 0 Updated: 2026-09-30 add the Issues system to the player so that we can see when problems pop up and correct them as server admins. --- ## Web dashboard login fails "Invalid username or password" — request never reaches self-hosted server URL: https://jellywatch.app/support/tickets/b5792671-a61b-448f-9c61-e35f322b57c2 Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-30 Self-hosted Jellyfin v10.11.11 behind a Cloudflare Tunnel, external URL https://[my-domain]. Credentials are confirmed correct — same server URL/username/password work fine logging into both the native Android TV app and the phone app. The web dashboard fails every time with "Invalid username or password" using those identical, working credentials. Diagnosed before reporting: during each failed attempt, I checked both my Jellyfin server logs and my Cloudflare Tunnel logs in real time. Neither shows any incoming connection attempt at all — no failed auth entry, nothing reaching the tunnel. Confirmed across multiple attempts on separate occasions. This suggests the request isn't reaching my server, and "invalid username or password" is likely a generic error masking a different failure — possibly specific to how the web client connects to self-hosted servers behind a reverse proxy/tunnel, since the identical URL works fine for the native apps. Is this a known limitation for self-hosted setups, and is there a workaround? --- ## widget URL: https://jellywatch.app/support/tickets/3bbe6370-7f94-45e4-bdaa-b8e7df51aba2 Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-29 when i add the widget to my home screen it tells me its a premium function and it will nlt load, yet i have premium jellyfin. --- ## MPV falling back to exoplayer URL: https://jellywatch.app/support/tickets/e482e77f-3b65-4498-a88a-1fa5e144d632 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: BOTH Votes: 0 Updated: 2026-09-27 I currently seem to have occasional playback issues with mpv but i cannot play items at the speed i want in exoplayer so if possible id like the fallback option for mpv to exoplayer basically the opposite of the auto option --- ## Seerr management in JellyWatch URL: https://jellywatch.app/support/tickets/23900820-68be-445f-aac8-a6d70d82bb6c Type: Feature Request Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-27 Can we change what is displayed in Seerr? It only shows pending requests, but since my service never has any pending requests, it always shows nothing. I'd like to be able to change this setting to "All" or "Available", for example. Sorry, I wanted to post the request in the public feature requests, but I don't have permission. --- ## Unlimited Continue Watching Option URL: https://jellywatch.app/support/tickets/0e4e674f-144d-45fc-a3d4-32ed5c810929 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: BOTH Votes: 0 Updated: 2026-09-21 Continue watching is capped at 12. Could you add more or at least an option to make it unlimited. Thanks for everything! I have purchased the player and admin and trying to sell to my fam and friends. But this is something everyone asks. --- ## Enhance the download options for the player. URL: https://jellywatch.app/support/tickets/010266cb-6143-48da-a6d2-f66e9f986b13 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-09-21 It would be good to be able to select bitrate whan downloading a file. I just tried a download with a 20gb 4k hdr movie and when selecting 720p the resulting downloaded file is still 15gb. Would it be possible to add options for bitrate rather than just 1080p 720p and 480p? Also it seems you need to go into settings to see what you have downloaded, could a downloaded library be added or maybe a button on the bottom menu bar to take you to downloads rather than having to go into the settings menu? --- ## unable to play videos URL: https://jellywatch.app/support/tickets/3f536ac3-3f22-44c0-9f25-c2738340400b Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: EMBY Votes: 0 Updated: 2026-09-17 Currently I'm test driving and figuring out how this program and the whole ecosystem is going to be implemented into my server architecture. I have a singular user who is currently using the program and when he tries to play the video it says unknown As the title of the video, even though he can very clearly go into, like, let's say, the anime section, select ghosts in the shell, and then the specific episode that he wants to play, but it just doesn't play at all. It just says unknown as the title. And looking on the back end, I don't even see a request or a video started on the logs, so I'm not exactly sure what the disconnect is. I've already had him completely uninstall the application and clear the cache and then reinstall it and then re-log back into the actual application. That didn't do anything. It's still happening. I even tried it myself and I have been able to replicate the exact same problem. Any time I try to play a video, I just get an unknown as the title header for the video itself. And the video doesn't play. --- ## Seperate favorites URL: https://jellywatch.app/support/tickets/1824fc52-f16f-4f77-af43-45d171c08cfd Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: EMBY Votes: 0 Updated: 2026-09-12 Separate favorites into categories or provide a filter that can remain locked. --- ## unknown user URL: https://jellywatch.app/support/tickets/87e1fdd2-2762-4404-a247-fe7d7998070f Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-12 All entries in The watch history section now show "unknown user" when they used to just show username --- ## EPG data for live tv URL: https://jellywatch.app/support/tickets/66578c21-ac15-4211-ba81-035c17830109 Type: Feature Request Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-09 The live TV section on Android TV is missing EPG data just has channel names and what looks to be a view for EPG data but is always empty. --- ## jellywatch admin bug save parameters URL: https://jellywatch.app/support/tickets/7ded024e-b343-43c7-b2fc-253f4c52f142 Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-08 bonjour, j'ai très souvent le bug quand je veux sauvegarder mes paramètres de jellywatch pour pouvoir les restaurer par la suite si nécessaire : "echec de chiffrement des données sensibles". J'ai 2 téléphone dont un pixel 10 pro tout neuf et c'est pareil pour les 2. quoi faire? idem après avoir vidé le cache ou reboot tel. --- ## previous ticket was closed for unable to play 2160 hdr 10 dv URL: https://jellywatch.app/support/tickets/4692740c-9264-41d5-a7f0-9969e71b74b0 Type: Bug Report Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-09-07 the issue it was timing out on android tv and using jellywatch tv version 1.0.rev-0355. file works and play on android 15 well with no buffering using mobile version. file plays with no issues using vlc 3.7.1 on sony android tv os 9. --- ## Auto-skip on a 0.0 segment start freezes transcoded playback URL: https://jellywatch.app/support/tickets/1457d406-990d-42a0-b57d-5d8f9e231020 Type: Bug Report Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-09-06 Hello, I've hit a reproducible playback bug in JellyWatch TV and narrowed it down to a single cause, so it seemed worth reporting properly rather than just as "it doesn't play". SHORT VERSION When a Jellyfin media segment starts at 0.0, JellyWatch fires its auto-skip on the very first frame of playback. On transcoded content that kills the stream: Jellyfin services a seek by terminating the running ffmpeg and starting a new one at the seek position, so the transcode is torn down while the client is still establishing it. The result is a second or two of picture, then a permanent freeze. The same seek performed a few seconds later works fine, so the transcode restart itself is survivable. The problem is only that the skip is issued during startup. HOW TO REPRODUCE 1. Have an episode whose Intro media segment starts at 0.0. Intro Skipper produces these whenever the detected intro start falls within its EndSnapThreshold of the episode start. 2. The content must require transcoding - e.g. 4K HEVC on a 1080p device. 3. Settings > Skip Segments > Skip intro = "Auto - skip silently". 4. Play the episode. Observed: picture appears, then freezes. The reported playback position is the intro-skip target (in my case exactly 112111 ms) on every attempt, on every episode with a zero-start intro. Expected: playback continues after the skip. WHAT ISOLATES IT Same server, same client, same session - the only variable that predicts success is where the intro segment starts: | Content | Intro start | Transcoded? | Result | | --- | --- | --- | --- | | Show A, 4K | no intro segments | yes | plays | | Show B, 4K | 197.8 s earliest | yes | plays | | Show C, ep. 7, 4K | 6.006 s | yes | plays, skips correctly | | Show C, ep. 1 & 2, 4K | 0.0 s | yes | FREEZES | | Show C, ep. 6, 1080p | 0.0 s | no (direct play) | plays - seeks are free without a transcode | Raising the segment start in the Jellyfin database to 5 s fixes it completely, with no other change anywhere. 2 s is not enough; 5 s, 6 s and 10 s all work: | Segment start | Where the seek landed | Result | | --- | --- | --- | | 2 s | 3 s after ffmpeg start | froze | | 5 s | - | plays | | 6 s | 12 s after ffmpeg start | plays | | 10 s | - | plays | SERVER SIDE IS HEALTHY THROUGHOUT Worth stressing, because it makes this look like a server fault when it isn't: during a failure the transcode runs at roughly 5x realtime, produces zero ffmpeg errors, and every ffmpeg process exits with code 0. Two ffmpeg invocations appear about 3 seconds apart, the second carrying -ss and a shifted -start_number - that second one is the skip-triggered restart. Also worth flagging for anyone else debugging this: the client logcat during a failure is full of "PesReader: Unexpected start code prefix", "IDolbyAudioServiceImpl: DeadObjectException" and MediaTek PQ/FRC/hwcomposer errors. All three also appear during completely healthy playback, so they are baseline noise rather than symptoms. They cost me several hours of wrong theories. SUGGESTED FIX Defer the auto-skip until playback is genuinely established - e.g. until the first frames have rendered, or a short fixed delay after playback start - rather than issuing it at position 0. Alternatively, clamp the skip so a segment beginning at 0 doesn't produce a seek before the stream is ready. Either would also make the client robust against zero-start segments from any provider, not just Intro Skipper. ENVIRONMENT - JellyWatch TV 1.0.REV-0320 - Android TV 14, MediaTek SoC, 1080p output; the active codec profile caps HEVC at 1920x1088, so 4K cannot direct-play - Jellyfin 10.11.11, HLS/MPEG-TS transcode via h264_qsv - Skip Segments: all types "Auto - skip silently", Segment detection enabled - Segment providers: Intro Skipper, Chapter Segments Provider 4.0.0.0 Happy to supply logs, the exact ffmpeg command lines, or to test a build if that's useful. Thanks for the app - it's otherwise been solid. --- ## Home Screen Layout URL: https://jellywatch.app/support/tickets/71f516c6-9080-4523-9717-77b5aded1d88 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-09-06 Sidemenu your able to adjust which folder sits were, Would be good if you could do the same with the recently added folders on home screen. It defaults to the last library added so in my instance I have 4K Movies as my last folder added but it shows as first on home screen It would be good if it could be customised so My TV shows are first then Say Movies, 4K , Music I hope that makes sense --- ## Sort Series by "Recently Added Episodes" Hi! First of all, great work on the app. URL: https://jellywatch.app/support/tickets/c51c0f49-33de-447d-8070-697237019de3 Type: Feature Request Status: closed App: JELLYWATCH_PLAYER Platform: JELLYFIN Votes: 0 Updated: 2026-09-06 Could you consider adding a sort option for series based on "Recently Added Episode"? In native Jellyfin, we can sort the TV Shows library by newest episodes added, which is great for catching up on ongoing shows. It would be awesome to have this same sorting feature on the JellyWatch TV app as well. Thanks! --- ## Download Page URL: https://jellywatch.app/support/tickets/b0b3ae05-657c-4a58-9311-18d225e63a09 Type: Feature Request Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-05 Can we get a download status page within the tv app ill attach a image reference from another project. https://private-user-images.githubusercontent.com/193228488/607431363-c247919c-a22d-4852-afe5-70f03ee8f8d1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODgyMDAwODAsIm5iZiI6MTc4ODE5OTc4MCwicGF0aCI6Ii8xOTMyMjg0ODgvNjA3NDMxMzYzLWMyNDc5MTljLWEyMmQtNDg1Mi1hZmU1LTcwZjAzZWU4ZjhkMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgzMVQxODA5NDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jYTMyM2YzZGU3NzI5ZWZkNWFiNzYzOTE5NDk5OWU5MzcwZGY2YWJiYWM4YzRmZjU5OGJhODNlMzI4YzdiMWM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.Ok3cK1Q_Aq5WDE5IKLzlgrrYYVOwzmT6UjYo8zo8y9k --- ## My premium membership isn't showing up. URL: https://jellywatch.app/support/tickets/53596256-9218-47d6-84ce-280ce9e4cd74 Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: JELLYFIN Votes: 0 Updated: 2026-09-05 Even though I'm a premium member, my account isn't showing up. --- ## Bug avatar homescreen URL: https://jellywatch.app/support/tickets/6ede1cf1-0f2f-44e0-b830-8b7a84086bc1 Type: Bug Report Status: closed App: JELLYWATCH_ADMIN Platform: BOTH Votes: 0 Updated: 2026-08-30 The avatar does not display correctly when switching screens and returning to the home screen.