Your Bazarr, upgraded.

Stop waiting for features upstream will never ship. Bazarr+ is a drop-in replacement that adds everything you have been asking for, with zero telemetry. Same config, same database. Just swap the container image.

Zero data to Google
300+ AI translation models
10k items per batch

For Sonarr, Radarr, Plex, and Jellyfin users who run their own stack.

Bazarr+ vs Upstream Bazarr

Features requested for years, ignored or rejected upstream. Bazarr+ ships them all.

Feature Upstream Bazarr Bazarr+
Provider Priority Requested (62 votes) Priority order with early stop
OpenSubtitles.org Self-hosted scraper
AI Translation Any OpenRouter model (free tiers available)
Mass Sync Requested (249 votes) Bulk sync from Tasks page
Bulk Operations One at a time 11 batch actions (up to 10k items)
Subtitle Editor Full editor with video, waveform, AI
Telemetry GA4 + UA to Google Removed entirely
Password Security MD5 PBKDF2 (600k iterations)

See it in action

Subtitle editor showing video preview, waveform timeline, and AI translation panel
Series page showing batch action toolbar with checkboxes for selecting episodes and bulk operation controls
Mass Translate dialog showing source and target language selection with 7 items queued for AI translation
AI Translator settings page showing model selection, temperature controls, and translation job queue with status indicators

Up and running in under a minute

One command to install everything, or copy the compose file below.

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

Want to inspect first? View the script source.

docker-compose.yml
services:
  bazarr:
    image: ghcr.io/lavx/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    depends_on:
      opensubtitles-scraper:
        condition: service_healthy
    ports:
      - 6767:6767
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=UTC
      - OPENSUBTITLES_SCRAPER_URL=http://opensubtitles-scraper:8000
    volumes:
      - ./config:/config
      - /path/to/movies:/movies
      - /path/to/tv:/tv
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost:6767/_supervisor/status | grep -q '\"running\"'"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s

  opensubtitles-scraper:
    image: ghcr.io/lavx/opensubtitles-scraper:latest
    container_name: opensubtitles-scraper
    restart: unless-stopped
    depends_on:
      flaresolverr:
        condition: service_healthy
    ports:
      - 8000:8000
    environment:
      - FLARESOLVERR_URL=http://flaresolverr:8191/v1
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

  # Handles Cloudflare challenges for the scraper
  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    restart: unless-stopped
    environment:
      - LOG_LEVEL=info
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://localhost:8191/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  # AI translation via OpenRouter (free tiers available)
  # Configure the API key in Settings > AI Translator
  ai-subtitle-translator:
    image: ghcr.io/lavx/ai-subtitle-translator:latest
    container_name: ai-subtitle-translator
    restart: unless-stopped
    ports:
      - 8765:8765
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://localhost:8765/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

For environment variables, volume mappings, and Sonarr/Radarr setup, see the Getting Started guide.

Switching from upstream? Same database, same config. Back up your config directory, swap the container image, and start. Settings, history, and provider accounts carry over.

Common questions

Yes. Bazarr+ uses the same database with a few added columns created on first run. Your SQLite database, settings, download history, and subtitle files are all preserved. Back up your config directory first, swap the container image, and start.
Yes. Restore your config backup, change the image back, and start. The only manual step is clearing the password field in config.yaml since upstream cannot read the PBKDF2 hash. See the migration guide for details.
Completely free and open source under the same GPL license as upstream Bazarr. AI translation uses OpenRouter, which offers free model tiers with generous limits. Paid models are available if you want higher quality, but they are entirely optional.
No. Your Sonarr/Radarr connections, language profiles, provider accounts, and notification settings carry over as-is. New features like provider priority, bulk operations, and the subtitle editor are available immediately with no extra setup.
The scraper fetches publicly available subtitle pages from OpenSubtitles.org, similar to how a browser works. It uses FlareSolverr to handle Cloudflare challenges. No OpenSubtitles account or API key is needed.
Join our Discord server for help and discussion, or open an issue on GitHub. The guides section covers installation, AI translation setup, and migration in detail.

Ready to switch?

Every day on upstream is another day of one-at-a-time downloads, no editor, and your usage data sent to Google. Swap the image and leave all of that behind.

Switch to Bazarr+
Open source. Fully reversible. No account required.