Subtitles for everything you watch.Found, timed and translated, automatically.

Bazarr+ fetches subtitles in the languages you asked for and lines them up with your files. Connect Sonarr, Radarr or Sportarr and it does that unattended for every new episode, or run it on its own and search any film or show by name. Self-hosted. No account, no telemetry.

docker pull ghcr.io/lavx/bazarr:latest
Stars
—
Forks
—
Providers
—
Latest
—
00:00:02,400

A demonstration, not a capture. Drag it to scrub.

What it does

If you have never automated subtitles before, this is the whole job. Bazarr+ does each of these on a schedule, for everything in your library, and tells you when it could not.

Find

Search every source you trust, in order

A provider is a place subtitles come from, like OpenSubtitles or Podnapisi. Bazarr+ ships a catalog of them you can install, enable and put in priority order, and it stops as soon as a good enough match is found rather than hammering every site.

Time

Line the text up with your actual file

A subtitle written for a different release drifts, so the words land seconds off. Bazarr+ compares the subtitle against your file’s audio and shifts it into place, with several sync engines available and a side-by-side compare when you want to check the work yourself.

Translate

Make the language you wanted, when nobody made it

Some languages simply do not exist for some titles. Bazarr+ can translate an existing subtitle, or a track already embedded in the file, using any model on OpenRouter including free tiers. It can also compose a bilingual subtitle with two languages stacked, which is the one in the frame above. How subtitle processing works.

Keep

Do it again for every new episode, without being asked

You describe what you want once, as a language profile: which languages, whether forced or hearing-impaired tracks count, how good is good enough. After that Bazarr+ applies it to everything, including whatever downloads at 3am tonight.

No media stack required.

Bazarr+ used to be able to work only on what Sonarr and Radarr told it about. Since v2.7.0 it opens on Discover, and Discover works on its own.

On its own

Search any title and pull a subtitle for it

Type a film or show by name, or browse what is trending, what has reached digital and what aired recently. Pick a title, search the providers, read the result in a preview and download it. No Sonarr, no Radarr, no Sportarr, no library, nothing indexed first.

Nothing to sign up for either: the title data arrives through a key the application carries, so a fresh install can search the moment it is up. Bring your own key instead if you would rather.

With a library

Connect the stack and all of it happens unattended

Point Bazarr+ at Sonarr, Radarr or Sportarr and the same work runs on a schedule across everything they track, against a language profile you write once. Discover stays where it is, and tells you which of the titles it shows you already hold.

Getting started

If you run Seerr, Jellyseerr or Overseerr, a title you do not have yet can be requested from its page in Discover. The request goes in as the Seerr owner, so it is approved and dispatched immediately rather than queued for somebody to look at. Requesting titles from Discover.

What it connects to

Seven applications, in two groups. One group tells Bazarr+ what media exists. The other is told when a subtitle lands. They are configured differently and they fail differently, which is worth knowing before you add one.

Library sources

They tell Bazarr+ what exists

  • Sonarr
  • Radarr
  • Sportarr v2.7

Sonarr tracks TV, Radarr tracks films, and Sportarr, new in this release, tracks sport. Connect as many of each as you like: every one is an instance of its own with its own subtitle settings. Sport is a first-class media type now, so a recording gets the manual search, upload, editing, sync, translation, combine, Wanted queue and History an episode gets.

Refresh destinations

They show the subtitle once it lands

  • Plex
  • Jellyfin
  • Emby v2.7
  • Silo v2.7

A subtitle on disk that the player never re-read is a subtitle nobody can select. When one lands, Bazarr+ asks the servers that cover that file to scan it again. All four now sit on one multi-instance layer, so two Jellyfin servers or three Emby servers is an ordinary setup, each with its own credentials, its own pending work and its own retry.

Two things worth knowing before you configure them. Emby and Silo find a file by its path, so they need path mappings; Jellyfin and Plex match another way and have never asked for them. And Plex is on the shared layer for refreshes only: its account panel, server discovery and webhook helpers still read the single Plex connection in settings. How media server connections work.

The interface

Screenshots from the running application. Nothing here is a mockup. v2.7.0 rebuilt what you meet first: Discover is the homepage, the setup wizard asks what you want to do instead of insisting on Sonarr, and Statistics has a page of its own under System.

Discover is the page Bazarr+ opens on. With a library it leads with what is still missing and what arrived last.
No library needed: search any title, read the result in a preview, download the one you want. How that works
Every integration on one page, each server its own instance with its own settings. What connects to what
Sport is a media type of its own now, with the same subtitle workflow episodes and films get.
Statistics has a page of its own under System, with one filter row across every tab.
Play the film, read the line against the waveform, fix it in place. Gaps between cues are called out as you go.
Select a season, or ten thousand items, and run the same action across all of them. Bulk operations guide
Providers are installable plugins, so a broken source can be fixed without waiting for a release. Provider Hub guide
Hand other apps a key and your instance becomes their subtitle source, metered per key. Distribution Hub guide

What this fork adds

Bazarr+ is a hard fork of Bazarr by morpheus65535, and it keeps everything that already worked. This is what it puts on top. If you are new here, you can skip this table entirely.

Finding subtitles at all

FeatureUpstream BazarrBazarr+
Run with no library v2.7 Not available Discover is the homepage: search any film or show by title, preview the result and download it, with no Sonarr, Radarr or Sportarr connected and nothing indexed
Provider Hub v2.4 Not available Marketplace of subtitle provider plugins that replace the shipped providers, with startup auto-install of your enabled built-ins, local package installs, trust labels and an activity log
OpenSubtitles.org Not available Native plugin, scrapes in-process with a FlareSolverr fallback, so no API key or VIP account is needed
Provider priority Requested, 72 votes Priority order with early stop

Making them right

FeatureUpstream BazarrBazarr+
Combined subtitles v2.4 Not available Bilingual and trilingual SRT or ASS composed from subtitles already on disk, per profile or on demand
Embedded tracks and multi-engine sync v2.4 Not available Score and translate directly from embedded tracks, plus multi-engine sync with side-by-side compare
AI translation Not available Any OpenRouter model, free tiers included
Subtitle editor Not available Full editor with video preview, waveform and AI assistance

At library scale

FeatureUpstream BazarrBazarr+
First-run setup wizard v2.5 Not available A guided wizard that asks first whether you are connecting a media stack or running without one, then walks a fresh install through the steps that answer needs, handling the restart and resuming afterwards
Bulk operations One at a time 12 batch actions on any selection, up to 10,000 items per run
Sport as a media type v2.7 Not available Sportarr as an instance kind beside Sonarr and Radarr, with sport sharing the subtitle workflows series and films already use
Mass sync Requested, 260 votes Select any number of shows or films and sync them all in one run

Yours, and private

FeatureUpstream BazarrBazarr+
Telemetry GA4 and UA to Google Removed entirely
Password security MD5 PBKDF2, 600,000 iterations
API key encryption v2.2 Not available AES encrypted at rest, with auto-migration and key rotation
Distribution Hub v2.4 Not available Multi-tenant OpenSubtitles-compatible API with named keys, tiers, per-window metering and per-key provider scoping, plus a first-party Jellyfin plugin and VLSub Bazarr+
Media server refresh v2.7 Jellyfin only, development branch Emby, Silo, Jellyfin and Plex on one layer, several servers of each, with HTTPS and self-signed support, per-instance retry and a Refresh libraries action

Install

Start with standalone subtitle search, or connect Sonarr, Radarr or Sportarr to automate your library. Media folders are optional.

Quick install

Run this on your server. The installer creates the Docker Compose stack and starts Bazarr+. Leave the movie, TV and sports paths empty to use Discover on its own. Review the script.

One-line install
curl -fsSL https://lavx.github.io/bazarr/install.sh | bash

When it finishes, open the address printed by the installer. The installer pre-enables three providers, so the app skips the first-run wizard and opens straight in Discover; to walk the wizard anyway, use Settings > General > Run first-time setup. If you browse from another machine, use your server's IP or hostname instead of localhost.

Prefer Docker Compose?

With Docker and Docker Compose installed, save this as compose.yaml. It works as-is for standalone Discover. For a library, uncomment only the folders you use and replace each /path/to/... with its location on your server. Set PUID and PGID to the user and group that own those folders.

Compose
services:
  bazarr:
    image: ghcr.io/lavx/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    ports:
      - 6767:6767
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=UTC
    volumes:
      - ./config:/config
      # Optional: uncomment only the media folders you use.
      # - /path/to/movies:/movies
      # - /path/to/tv:/tv
      # - /path/to/sports:/sports
    read_only: true
    tmpfs:
      - /tmp:size=512m
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETUID
      - SETGID
    security_opt:
      - no-new-privileges:true

From the folder containing compose.yaml, run:

Start Bazarr+
docker compose up -d

Open http://localhost:6767, or use your server's IP or hostname instead of localhost. Choose standalone Discover in the setup wizard, or connect your library under Settings > Connections. The TV, movie and sports mounts are for Sonarr, Radarr and Sportarr libraries respectively; only /config is needed for standalone search.

Already using Bazarr? Stop the old container, back up its /config directory, then change its image to ghcr.io/lavx/bazarr:latest while keeping your existing mounts. See the migration guide.

Optional extras: add FlareSolverr for OpenSubtitles.org Cloudflare challenges or the AI translator sidecar for translation. The getting started guide covers both.

Questions

Yes. Bazarr+ uses the same database with a few added columns created on first run. Your database, settings, download history and subtitle files are all preserved. Stop Bazarr, back up your config directory, swap the container image, and start.

Yes. Stop Bazarr+, restore the config backup you made before migrating, change the image back, and start. That backup still holds your old password hash, so nothing needs resetting. If you have no backup, the migration guide lists what to fix by hand, including clearing the password field in config.yaml, since upstream cannot read the PBKDF2 hash.

Not any more. Since v2.7.0 Discover is the homepage, and it searches, previews and downloads subtitles for any film or show with nothing connected at all. Connect Sonarr, Radarr or Sportarr when you want that to happen on its own for a whole library, on a schedule, and you can connect any number of each.

Free and open source under the same GPL licence as upstream Bazarr. AI translation runs through OpenRouter, which has free model tiers with generous limits. Paid models are available if you want higher quality, and they are entirely optional.

It is a native Provider Hub plugin that fetches publicly available subtitle pages in-process, the way a browser would, so no OpenSubtitles account or API key is needed. FlareSolverr is strongly recommended as a fallback for Cloudflare browser challenges: run the container and set its URL in the plugin settings.

The Discord server for questions and discussion, or GitHub issues for bugs. The guides cover installation, migration, AI translation and the hubs in detail.

Roadmap

Where Bazarr+ is going, nearest first. There are no dates here, because a self-hosted project ships when the work is right rather than when a quarter ends. Plans shift; the direction has not.

  1. Shipped

    The v2 line so far

    v2.7.2 is a stability and security patch on the Atlas line. It masks credentials in logs and diagnostics, guards the request host while login is off, moves the editor's native playback to a signed token, and adds library filters for subtitle completeness, tags and score. v2.7.1 is a stability and security patch on the Atlas line. It moves API keys out of request URLs, runs post-processing commands as argument lists, and binds Provider Hub trust to the catalog source. v2.7.0 “Atlas” opens on Discover: search and pull subtitles for any title, whether or not it is in your library, and run with no library at all. It adds Sports as a third media type, folds Emby, Silo, Jellyfin and Plex onto one multi-instance layer, requests titles in Seerr, and gives Statistics a real page. Before it, v2.6.2 “Clockwork” keeps subtitle history and sync outputs with the right media, saves useful partial OpenRouter translations with an incomplete status, lists uploads before background sync finishes, and adds explicit OpenRouter routing choices. Searches continue past unusable archives from catalog providers. The v2.6 line also brought whole-season subtitle downloads, stricter sync validation, and adoption of upstream Bazarr databases. Before it, v2.5 “Murmuration” brought many Sonarr and Radarr instances managed as one, per-instance subtitle settings and archive uploads.

    Every release, with full notes

  2. Next

    Coming on the v2 line
    • A rebuilt translator. Translation moves in-process, with a catalog of models, configuration per engine, and a choice of engine per language profile, instead of a separate sidecar container.
    • Search inside your subtitles. Find the episode from a line of dialogue you half remember, across everything you have.
    • Install it like an app. Native installers for Windows, macOS and Linux, each one carrying its own Python and a tray icon, so Bazarr+ runs on a desktop with no Docker and no terminal.
  3. v3.0.0

    Several v2 releases away

    Bazarr+ instances sharing subtitles directly with each other, peer to peer, with no central server in the middle and nothing shared that you did not choose to share. It is the largest thing on this list by a distance, which is why it carries the major version and why a good deal of the v2 line comes first.

Point it at your library, or at nothing at all.

It takes one compose file. Everything else it works out on its own, and if you change your mind, your backup puts you back exactly where you were.