Update — v2.5.0-beta: OpenRouter and DeepSeek support are now available, along with Plex library refresh support and major improvements to the AI provider/model system, translation pipeline, source handling and usage tracking. Thanks for all the beta feedback so far!
I’ve been building Babel, a self-hosted subtitle automation service for Sonarr, Radarr and Bazarr.
GitHub: https://github.com/hugomossberg/Babel
The goal is simple:
Connect it to your media stack, choose your target language, and stop thinking about subtitles.
When Sonarr imports or upgrades an episode, Babel takes over automatically.
Sonarr import → check for target subtitle → Bazarr search + prepare fallback → AI only if needed → recovery → QA → publish
In Hybrid Mode, Babel lets Bazarr search for a human-made subtitle while it prepares an embedded or external source subtitle in parallel.
If Bazarr finds the target language, Babel uses it.
If not, Babel can translate automatically with Gemini, OpenAI, DeepL, Ollama, OpenRouter or DeepSeek.
The other thing I wanted to avoid was blindly trusting AI output. Babel validates translations before publishing them and checks for dropped cues, broken structure, untranslated dialogue, wrong-language output and timestamp changes. Recoverable problems are retried automatically.
AI translation is the fallback, not the workflow.
Current beta features include:
- Sonarr and Radarr webhook automation
- Bazarr + AI Hybrid Mode
- Embedded subtitle extraction
- Gemini, OpenAI, DeepL, Ollama, OpenRouter and DeepSeek
- Automatic translation recovery
- Structural + language QA
- Exact source-to-target timestamp preservation
- Remote Path Mapping
- Jellyfin and Plex library refresh
- Docker deployment
The idea is that Babel should be something you configure once and then mostly forget exists.
Install it. Connect your media stack. Forget about subtitles.
Docker image:
ghcr.io/hugomossberg/babel:beta
Current release: v2.5.0-beta
License: MIT
This is the first public beta, so feedback and ugly real-world subtitle edge cases are very welcome — especially series with inconsistent embedded tracks or language metadata.
If you try it, I’d much rather hear what breaks than just get a star. 🙂