It took me a while to try Jellyfin, but I absolutely love it. However, hunting down subtitles is tedious and easily breaks immersion. Unfortunately, I find myself going down this path more often than I’d like to admit, fixing broken download links and subtitles that have drifted out of sync. In fact, for some less popular releases, entire languages may be missing. Jellyfin’s built-in subtitle support alone is inadequate to fix this, especially for non-streaming content.
My ultimate solution is a combination of Bazarr and Jellyfin Bazarr plugin. The plugin makes the process feel native, while Bazarr actually handles searching, prioritizing, and updating subtitles. By simply pressing play, you now get subtitles that are synced and usable.
- OS
-
Android, iOS/iPadOS, Android TV, Fire TV, Web browsers
- Developer
-
Jellyfin Community
- Pricing model
-
Free (open-source)
- Initial release
-
December 8, 2018
Jellyfin is a free-and-open-source media-server system that lets you self-host your movies, music, TV shows, photos and more and stream them to any device without subscriptions or third-party tracking.
Integrating Bazarr with Jellyfin via the plugin
Installation, library monitoring, and external service basics
It’s important to point out how Bazarr fits into Jellyfin’s ecosystem. Bazarr itself is a dedicated subtitle automation service, and you must treat it as such to get the best out of it. Bazarr runs independently of Jellyfin but watches over the same media folders that your Jellyfin server already uses. It indexes your movies and episodes so they’re ready for subtitle searches.
For the Jellyfin Bazarr plugin to work, you must first get the Bazarr API key. Follow these steps:
- Download Bazarr, extract the files, then double-click the .exe to start the installation. The steps will vary on Linux.
- Once it’s installed, visit this URL in your browser to start the Bazarr server: http://localhost:6767/
- Under General, scroll down to the Security section and copy the API key.
Next, you’ll need to install and configure the Jellyfin Bazarr plugin. Follow these steps:
- Launch Jellyfin in your browser by visiting: http://localhost:8096/
- Click your user profile at the top right, then click Dashboard.
- Scroll down the left pane and click Plugins.
- Click Manage Repositories, then give your repository a name, paste the link below into the Repository URL field, and click Add.
-
Add the repository:
https://raw.githubusercontent.com/enoch85/bazarr-jellyfin/main/manifest.json - Now refresh the browser page, click Available to see all plugins, click the Bazarr plugin, then click Install and restart Jellyfin.
Once Jellyfin is up and running, go back to the plugin page, click Bazarr from the list of installed plugins, and click Settings. Paste your API key into the Bazarr API Key field and click Test Connection. If it says “Connected successfully”, click Save, and you’re good to go.
How subtitle searches actually work inside the Jellyfin Bazarr plugin
Triggering Bazarr without ever opening its web interface
After setting up the plugin, you see its true value in daily use. For any media missing a subtitle or with subtitles in the wrong language, you can edit its subtitles using Jellyfin’s Edit subtitles option. When you hit search, Jellyfin delegates control to the Jellyfin Bazarr plugin, which in turn sends the movie’s TMDB ID or the episode’s TVDB ID to Bazarr.
At this point, Bazarr queries several subtitle providers simultaneously, and you get a list in usually under 25 seconds, though rare cases may take up to 15 minutes. It goes the extra step of caching the results for an hour, so if I need to click search again, I get an instant result.
The main gain is that I don’t constantly think of where to download subtitles, because this setup handles it for me.
Why this approach avoids bad subtitles and sync issues
Letting Bazarr choose instead of guessing yourself
Typically, when there’s a subtitle problem, it starts with poor matching. A solution I tried in the past was to manually download subtitles. However, it’s easy for the subtitles to drift out of sync just minutes into the movie. Bazarr fixes the drifting issue by matching subtitles using structured metadata.
Searches use TMDb and TVDB IDs—unique identifiers for movies and TV shows—so results are matched by metadata rather than filename. Having this context makes it possible for Bazarr to reject close results that are not a perfect match. These could be results that technically match the titles even though they’re meant for a different release—an error caused when small encoding differences throw off the subtitles.
Bazarr is also accurate because it doesn’t attempt to apply magical sync corrections to subtitles or retime them. It strictly sticks to selecting the right file for the media.
What happens after you download a subtitle
Library refresh, background upgrades, and hands-off maintenance
You don’t need to restart your server or rescan the media library after selecting a subtitle with the Jellyfin Bazarr plugin. It automatically writes the subtitle file into the media folder alongside the video, then refreshes the specific Jellyfin item.
What makes this plugin more helpful is that, well after you request subtitles, Bazarr continues monitoring your library. If, on a future date, a subtitle with better timing and improved translation becomes available, it automatically replaces the existing file.
You’ll probably see the merits of this automatic update with TV shows. Bazarr picks up new episodes as they arrive and fetches subtitles as soon as they’re available. It also upgrades earlier episodes without manual action.
I didn’t realize these tiny tweaks would make Netflix so good
It only takes a few small changes to massively boost your Netflix viewing experience.
Effortless subtitles across your library
Ever since I set up the Jellyfin Bazarr plugin, I really haven’t been thinking about subtitles. The plugin uses Bazarr to ensure subtitles exist and stay updated, and allows Jellyfin to control how they appear.
The best part is that across devices, you get a consistent set of user preferences. The plugin has eliminated the need to manually search because it integrates the entire process into a single click. I stick to Jellyfin because it’s a streaming service that allows me to control my data, and this subtitle plugin makes it more convenient to use.











