selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
subarr logo

Self-host subarr

v2.7.24

Subtitle coordination layer for the *arr stack

ReleaseOpen SourceMIT
Updated11 hours ago
LanguagePython
Setup difficultyAdvanced
Stars
147
CPU
0.25 cores (reserved)
RAM
256 MB (reserved)
Port
9922 (HTTP web UI and API)
Requires
Bazarr, Radarr, Sonarr, Subgen
Docker
ghcr.io/coaxk/subarr
Install with Docker Compose
Dashboard showing live pipeline stages, GPU widget, integration health, next scheduled run, and recent activityCoverage tab with scored gap list, probe-gate, and reason chipsQueue management with Processing, Queued, Lost-on-restart, Issues sections and bulk actionsLibrary browser showing all series and movies with audio, subtitle, runtime, and probe stateReview page with audio player, multi-track support, and inline Whisper detectionTuning Lab sweeping Whisper recipes against live subgen with per-clip winnersRecipe leaderboard with per-language rankings and confidence signalsAudio language issues panel showing mislabeled, bilingual, and multi-track filesAuto-queue rules with score thresholds, language filters, and live previewSettings integrations page with live health status per service

What is subarr?

Subarr is a coordination service that sits alongside Bazarr in the *arr media automation stack. It analyzes your media library to determine which subtitles are actually missing, verifies audio languages by sampling multiple chunks of each file with Whisper, and schedules transcription jobs to subgen (a patched Whisper worker) with backpressure and priority signals from Tautulli. It provides a web UI with dashboard, coverage gap analysis, queue management, library browser, audio-language review with an audio player, a Whisper tuning lab for per-language model optimization, and provenance tracking of which provider delivered each subtitle. It integrates with Sonarr, Radarr, Bazarr, Plex, Jellyfin, Tautulli, and optionally Ollama for AI enrichment. Runs as a non-root Docker container with SQLite storage on a persistent volume. Authentication is enabled by default with a single admin account, API keys, and reverse-proxy support.

Should you self-host subarr?

subarr scores 48/100 on selfhost.directory (how scoring works) and ranks #79 of 142 in Media Management. It has 147 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v2.7.24, came out on 22 October 2026. New versions land roughly every 2 days.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is MIT-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Sonarr (81/100, 17 471 stars). It scores higher overall, so compare the two before you pick. See subarr vs Sonarr side by side.

Features

  • Audio-language review queue
  • Auto-queue rules with score thresholds
  • Auto-re-timing of generated subtitles
  • Calibrated audio-language detection
  • Default audio track mismatch detection
  • Forced subtitle segment generationExperimental, off by default
  • Image-only subtitle filling
  • Multi-instance stack support
  • Multi-library support
  • Post-transcription quality review (Aftercare)
  • Provenance ledger
  • Scheduled transcription with backpressure
  • Subtitle coverage analysis
  • Whisper Tuning Lab

subarr README

How to install subarr

Install subarr with Docker Compose

Docker, Docker Compose; SQLite on local (non-network) volume; media library mounted at same path as Bazarr and subgen
Environment variables
PUID, PGID, TZ, UMASK, SUBARR_DB_PATH, SUBGEN_URL, BAZARR_URL, BAZARR_API_KEY, SONARR_URL, SONARR_API_KEY, RADARR_URL, RADARR_API_KEY, PLEX_URL, PLEX_TOKEN, JELLYFIN_URL, JELLYFIN_API_KEY, TAUTULLI_URL, TAUTULLI_API_KEY, OLLAMA_URL, OLLAMA_MODEL, OLLAMA_VISION_MODEL, SUBARR_MEDIA_ROOT, SUBGEN_MEDIA_PREFIX, ARR_PATH_PREFIX, PLEX_PATH_PREFIX, JELLYFIN_PATH_PREFIX, SUBARR_RETIME_ENABLED, SUBARR_VAD_ENABLED, SUBARR_FORCED_SEGMENT_ENABLED, SONARR_PROPAGATE_AUDIO_LANG, SUBARR_SUBGEN_WEBHOOK_ENABLED, SUBARR_MULTILANG_CHUNK_MIN_PROB, SUBARR_USER, SUBARR_PASS, SUBARR_SESSION_SECRET, SUBARR_API_KEY, SUBARR_AUTH_DISABLED, SUBARR_AUTH_RESET, SUBARR_CSRF_PROTECTION, SUBARR_COOKIE_SAMESITE, SUBARR_TRUSTED_PROXIES, SUBARR_LOGIN_ALLOWLIST, SUBARR_LOGIN_MAX_ATTEMPTS, SUBARR_LOGIN_WINDOW_S, SUBARR_PORT, SUBARR_DEBUG, SUBARR_ARENA_RETENTION_DAYS, SUBARR_COVERAGE_REFRESH_MIN_INTERVAL_S, SUBARR_VAD_DIR, SUBARR_LID_DIR, NVIDIA_SMI_PATH, SUBGEN_CONTAINER, SUBGEN_COMPOSE_PATH, SUBARR_DOCKER_PROXY_URL, SUBARR_DOCKER_SOCKET_PATH, SUBARR_TELEMETRY_ENDPOINT

docker compose up -d

Copy docker-compose.yml from repo; requires persistent /data volume and media mount at same path as Bazarr/subgen

subarr releases & version history

More in Audio Processing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…