A blue-lit workstation displays a media streaming and file-management interface across multiple screens.
Every self-hoster eventually hits the same moment. The episode is queued and the popcorn is ready. Then you find the subtitle track is missing, so you pause, open a browser, and start playing subtitle roulette. An XDA Developers writer says he fixed this by adding Bazarr to the Sonarr and Radarr tools he already used. He reports that subtitles now show up on their own, and that he hasn't searched for one in months. That's one person's experience, not a guarantee. The mechanism behind it is documented, though, and it is worth understanding before you copy it.

A blue-lit workstation displays a media streaming and file-management interface across multiple screens. The setup in brief​

The author runs Jellyfin natively on Windows. Sonarr, Radarr and Bazarr live in a single Docker Compose file. All three use named volumes for their configuration and identical bind-mounted media paths, so they see the same folders Jellyfin does.

Bazarr's job is narrow. It finds subtitles and saves them next to the video file, usually as an SRT sidecar. Jellyfin picks the file up on its next library scan, and the author just selects the track in the player. The author says this needs no Jellyfin plugin and no special Jellyfin configuration.

Why not just use Jellyfin's OpenSubtitles plugin?​

The author's complaint is about scale, not quality. The official OpenSubtitles plugin is fine for grabbing one subtitle by hand. He found its scheduled downloads opaque. They gave him little visibility into which providers were queried or why some episodes were skipped. He frames this as two different problems: fetching one subtitle versus maintaining subtitles across a whole library. That is his opinion, but it matches how the tools are designed. Bazarr is built around language profiles, scoring and scheduled tasks. The plugin is a manual search box.

How Bazarr actually works​

The author says Bazarr "doesn't actually integrate with Jellyfin at all". That's true of the sidecar approach he describes, but the full picture is more nuanced.

  • Sonarr and Radarr are required. Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles based on your requirements. Bazarr's documentation says it gets its library from those two apps. It then indexes the matching files on disk to see which subtitles already exist.
  • It listens for changes. Bazarr can open a read-only SignalR event feed to Sonarr and Radarr for live updates. If that feed is unavailable, a scheduled sync catches up. The documented default is every 60 minutes.
  • It checks what's missing locally. Bazarr compares the subtitles it finds on disk with your language profiles to decide what is missing.
  • It asks for rescans. After a subtitle is added, uploaded, deleted or extracted, Bazarr asks Sonarr or Radarr to rescan that series or movie.
  • There is now an optional Jellyfin link. Bazarr integrates with Jellyfin Media Server to refresh items and libraries automatically after subtitle changes. Jellyfin integration requires Bazarr 1.5.7-beta.26 or newer. Authentication is API key based and the integration still requires Sonarr and Radarr to function.

The Jellyfin link is optional. The filesystem approach works without it. But if you don't want to wait for a scheduled scan before new subtitles appear, that integration is worth a look. The same documentation says "Immediate" is the default refresh method and is sufficient for refreshing newly downloaded subtitles.

Step-by-step: building the pipeline​

This follows Bazarr's official setup guide, with the Windows and Docker details from the author's own setup.

  1. Get Sonarr and Radarr running with your existing libraries imported. Bazarr can't work without them.
  2. Share the same media paths. The author mounts identical media paths in all three containers. A community guide from Peira.dev says the same thing: mount the media root at the identical path across Radarr, Sonarr and Bazarr. Bazarr then has write access to the folder where the video lives.
  3. Open Bazarr's web interface. The official guide gives the address as the host's IP on port 6767.
  4. Connect Sonarr and Radarr under their Settings pages. Enter the hostname or IP, the port (8989 for Sonarr and 7878 for Radarr by default) and the API key. Press Test and confirm it succeeds before moving on.
  5. Set up languages. Choose your subtitle languages, then create a language profile. You can set an optional cutoff. If a profile lists several languages with Dutch as the cutoff, Bazarr stops once it finds Dutch.
  6. Enable subtitle providers. The guide recommends multiple providers with accounts, especially for large libraries.
  7. Choose where subtitles are stored. The guide recommends placing them alongside the media file.
  8. Save, then wait. Bazarr needs time to pull its information from Sonarr and Radarr.

Docker on Windows: one trap to avoid​

The author's mix of native Jellyfin and containerized *arr apps is common, and it has a trap. Loopback addresses refer to the Bazarr Docker container, not the Docker host. Bazarr's docs say you can't reach Sonarr or Radarr in another container using 127.0.0.1 or localhost. Use the container name or an internal address instead.

Path mappings are the other trap. They are only for cases where Sonarr and Bazarr see the same files under different paths. The documentation warns that adding a mapping with identical values on both sides causes errors. In a consistent Docker setup like the author's, you normally don't need them.

Making sure Jellyfin sees the subtitles​

Jellyfin's documentation says external subtitles are added through file suffixes. It also describes flags such as sdh, cc and hi for hearing-impaired tracks. An important wrinkle: "hi" collides with the Hindi language code. On its own it resolves as Hindi. Alongside another language code, as in a name like title.en.hi.srt, it tags the track as hearing impaired instead.

Bazarr's subtitle settings include a hearing-impaired extension option (.hi, .sdh or .cc). Its docs also warn against the Single Language option unless a player truly needs it, because the language code is then left out of the filename. Keep the defaults unless a client misbehaves.

Tuning: scores, retries and upgrades​

Automation here is configurable, not magic.

  • Minimum scores. Bazarr has separate thresholds for episodes and movies, each 0 to 100%. Its docs say scores draw on filename and release-name matching, uploader reputation and provider verification. Higher is stricter. The wiki calls anything below 50% not recommended because of the risk of wrong subtitles. A higher score also means more items may go unmatched.
  • Retries. Bazarr has separate scheduled tasks for missing episode subtitles, missing movie subtitles and upgrades. Adaptive searching limits provider calls. The documented defaults are a three-week window before it takes effect and then a one-week interval between searches.
  • Upgrades. Bazarr can look for better versions of subtitles it already downloaded. You choose how far back it considers, from 1 to 30 days. A separate option decides whether manually downloaded or translated subtitles are eligible for replacement.
  • Optional extras. The docs describe audio-based timing sync with ffsubsync and a Whisper fallback when no provider reaches the minimum score. The timing sync can take minutes per subtitle. Treat both as extras to test, not defaults.

When it doesn't work​

Bazarr's library documentation lists the usual suspects for missing subtitles:

  • No language profile is assigned.
  • No provider is enabled.
  • Excluded tags or series types are filtering the content.
  • The episode or movie isn't monitored in Sonarr or Radarr.
  • The minimum score is too high.

Connection failures come down to the wrong address or API key, a firewall, or Docker networking. Peira.dev's guide puts the most common causes in similar terms. Either Bazarr can't reach the same files, or no provider is working, or the score threshold is too strict. Enabling debug logging in Bazarr is a documented way to dig further, but turn it off afterward because it inflates log files.

The caveats​

The author's biggest caveat is provider limits. He pointed Bazarr at OpenSubtitles.com, and its free tier caps daily downloads, so his initial backfill took a few days. I couldn't verify the current quota in the material available, so I won't quote a number. Bazarr's own guide adds that some providers need a paid anti-captcha service. No setup can promise a correct subtitle for every release.

Resource use is another consideration. The Bazarr wiki says to disable simultaneous provider searches on low-powered devices. It also cautions that audio sync is heavy. If you run this on a small PC or NAS, start with conservative schedules.

Is it worth running three apps to solve one annoyance? If you already run Sonarr and Radarr, the extra cost is small. Bazarr's design is also media-server-agnostic, since the sidecar files work for Plex and Emby as well as Jellyfin. If you manage files by hand, the setup is more of a commitment. A single afternoon of configuration against months of manual downloads is a trade many self-hosters would take.

Bottom line​

  • Bazarr automates subtitles by reading your Sonarr and Radarr libraries and writing sidecar files next to your media.
  • Identical media paths across containers are the most important detail to get right.
  • Match scores, providers and schedules decide how many subtitles you actually get.
  • Jellyfin works with sidecar files out of the box. Bazarr's optional Jellyfin integration needs 1.5.7-beta.26 or newer.
  • The author's "months without searching" result is his experience. Your results will depend on your providers and release names.
 

References

  1. Every show on my media server gets subtitles automatically now, and I haven't searched for one in months XDA 2026-11-04T23:00:20+00:00
  2. How Bazarr connects to Sonarr and Radarr - Bazarr Wiki wiki.bazarr.media
  3. Setup Guide - Bazarr Wiki wiki.bazarr.media