Search and download subtitles directly from Jellyfin using your Bazarr instance.
181
stars
25
commits
C#
primary language
Aug 31, 2026
updated
This plugin integrates Jellyfin with Bazarr to provide on-demand subtitle searching and downloading. Instead of navigating to Bazarr's web UI, users can search and download subtitles directly from Jellyfin's native subtitle interface.
1. Edit subtitle
2. Choose language, and hit search
3. If the search takes longer than your set value (default 25 seconds), this placeholder pops up.
flowchart TB
subgraph media[Shared Media Folders]
folders["/movies /tv"]
end
subgraph arr[*arr Stack]
sonarr["Sonarr (:8989)"]
radarr["Radarr (:7878)"]
bazarr["Bazarr (:6767)"]
sonarr --> bazarr
radarr --> bazarr
end
subgraph jf[Jellyfin]
plugin[Bazarr Plugin]
end
bazarr -->|writes subtitles| media
media -->|reads| jf
plugin <-->|API| bazarr
Search Flow
flowchart TB
A[User clicks Search] --> B[Plugin receives IMDB/TVDB ID]
B --> C[Lookup Bazarr ID]
C --> D[Search subtitles]
D --> E{Results within 25s?}
E -->|Yes| F[Return subtitle list]
E -->|No| G[Return placeholder]
G --> H[Search continues in background]
H --> I[Results cached 1 hour]
I --> J[Click Search again]
J --> F
Download Flow
flowchart TB
A[Select subtitle] --> B[Plugin decodes ID]
B --> C[POST to Bazarr]
C --> D[Bazarr downloads .srt]
D --> E[Trigger library refresh]
E --> F[Subtitle in player]
From Repository (Recommended)
https://raw.githubusercontent.com/enoch85/bazarr-jellyfin/main/manifest.jsonManual Installation
~/.local/share/jellyfin/plugins/Bazarr//config/plugins/Bazarr/%AppData%\Jellyfin\plugins\Bazarr\Navigate to Dashboard → Plugins → Bazarr:
| Setting | Description |
|---|---|
| Bazarr URL | Your Bazarr instance URL (e.g., http://localhost:6767) |
| Bazarr API Key | API key from Bazarr Settings → General |
| Enable for Movies | Allow subtitle search for movies |
| Enable for Episodes | Allow subtitle search for TV episodes |
| Search Timeout | UI timeout before showing placeholder (default: 25s). Search continues in background. |
Click Test Connection to verify your settings.
git clone https://github.com/enoch85/bazarr-jellyfin.git
cd bazarr-jellyfin
dotnet build
dotnet test # unit tests
dev-env/e2e/run-e2e.sh # Playwright tests against a real Jellyfin server
See dev-env/e2e/README.md for what the end-to-end suite provisions.
git tag -a v1.x.x -m "Description" && git push origin v1.x.x
The GitHub Actions workflow automatically builds and publishes the release.
If Bazarr is behind an authentication proxy (Authentik, Authelia, Keycloak, etc.), the plugin cannot authenticate with OAuth2 - it only has an API key for Bazarr.
Solution: Bypass authentication for Bazarr's API paths.
http:
routers:
bazarr-api:
rule: "Host(`bazarr.example.com`) && PathPrefix(`/api`)"
service: bazarr
# No authentik middleware - direct access
bazarr-ui:
rule: "Host(`bazarr.example.com`)"
service: bazarr
middlewares:
- authentik
priority: 1
location /api/ {
proxy_pass http://bazarr:6767/api/;
# No auth for API
}
location / {
proxy_pass http://bazarr:6767/;
auth_request /auth;
}
Use the internal container name instead of the external URL:
Plugin config: http://bazarr:6767
Browser access: https://bazarr.example.com (with auth)
Don't worry - this is safe:
localhost, http://bazarr:6767) never leave your machine/Docker networkThis is normal - Bazarr is querying multiple providers which takes time. Wait 5-15 minutes and click Search again to see cached results.
The row's comment carries Bazarr's own message. The most common one is All providers are throttled: a provider hit its rate or download limit - often right after a download - so Bazarr benched it for 1-3 hours. Check Bazarr → System → Providers for the retry time, or enable more providers.
The plugin triggers a library refresh after download. If it still doesn't appear:
Ensure the item exists in Radarr/Sonarr and Bazarr has synced. The plugin matches movies by IMDB ID, and episodes by series TVDB/IMDB ID or title.
See Reverse Proxy Setup if using an authentication proxy.
Otherwise, verify your URL format:
http://localhost:6767 (not http://localhost:6767/api)http://your-bazarr-url/api/system/languages should return JSON, not HTMLContributions welcome! Please open an issue or PR on GitHub.
18 commits
7 commits
C#
78.8%
Shell
17.1%
HTML
4.1%
Search and download subtitles directly from Jellyfin using your Bazarr instance.
181
stars
25
commits
C#
primary language
Aug 31, 2026
updated
This plugin integrates Jellyfin with Bazarr to provide on-demand subtitle searching and downloading. Instead of navigating to Bazarr's web UI, users can search and download subtitles directly from Jellyfin's native subtitle interface.
1. Edit subtitle
2. Choose language, and hit search
3. If the search takes longer than your set value (default 25 seconds), this placeholder pops up.
flowchart TB
subgraph media[Shared Media Folders]
folders["/movies /tv"]
end
subgraph arr[*arr Stack]
sonarr["Sonarr (:8989)"]
radarr["Radarr (:7878)"]
bazarr["Bazarr (:6767)"]
sonarr --> bazarr
radarr --> bazarr
end
subgraph jf[Jellyfin]
plugin[Bazarr Plugin]
end
bazarr -->|writes subtitles| media
media -->|reads| jf
plugin <-->|API| bazarr
Search Flow
flowchart TB
A[User clicks Search] --> B[Plugin receives IMDB/TVDB ID]
B --> C[Lookup Bazarr ID]
C --> D[Search subtitles]
D --> E{Results within 25s?}
E -->|Yes| F[Return subtitle list]
E -->|No| G[Return placeholder]
G --> H[Search continues in background]
H --> I[Results cached 1 hour]
I --> J[Click Search again]
J --> F
Download Flow
flowchart TB
A[Select subtitle] --> B[Plugin decodes ID]
B --> C[POST to Bazarr]
C --> D[Bazarr downloads .srt]
D --> E[Trigger library refresh]
E --> F[Subtitle in player]
From Repository (Recommended)
https://raw.githubusercontent.com/enoch85/bazarr-jellyfin/main/manifest.jsonManual Installation
~/.local/share/jellyfin/plugins/Bazarr//config/plugins/Bazarr/%AppData%\Jellyfin\plugins\Bazarr\Navigate to Dashboard → Plugins → Bazarr:
| Setting | Description |
|---|---|
| Bazarr URL | Your Bazarr instance URL (e.g., http://localhost:6767) |
| Bazarr API Key | API key from Bazarr Settings → General |
| Enable for Movies | Allow subtitle search for movies |
| Enable for Episodes | Allow subtitle search for TV episodes |
| Search Timeout | UI timeout before showing placeholder (default: 25s). Search continues in background. |
Click Test Connection to verify your settings.
git clone https://github.com/enoch85/bazarr-jellyfin.git
cd bazarr-jellyfin
dotnet build
dotnet test # unit tests
dev-env/e2e/run-e2e.sh # Playwright tests against a real Jellyfin server
See dev-env/e2e/README.md for what the end-to-end suite provisions.
git tag -a v1.x.x -m "Description" && git push origin v1.x.x
The GitHub Actions workflow automatically builds and publishes the release.
If Bazarr is behind an authentication proxy (Authentik, Authelia, Keycloak, etc.), the plugin cannot authenticate with OAuth2 - it only has an API key for Bazarr.
Solution: Bypass authentication for Bazarr's API paths.
http:
routers:
bazarr-api:
rule: "Host(`bazarr.example.com`) && PathPrefix(`/api`)"
service: bazarr
# No authentik middleware - direct access
bazarr-ui:
rule: "Host(`bazarr.example.com`)"
service: bazarr
middlewares:
- authentik
priority: 1
location /api/ {
proxy_pass http://bazarr:6767/api/;
# No auth for API
}
location / {
proxy_pass http://bazarr:6767/;
auth_request /auth;
}
Use the internal container name instead of the external URL:
Plugin config: http://bazarr:6767
Browser access: https://bazarr.example.com (with auth)
Don't worry - this is safe:
localhost, http://bazarr:6767) never leave your machine/Docker networkThis is normal - Bazarr is querying multiple providers which takes time. Wait 5-15 minutes and click Search again to see cached results.
The row's comment carries Bazarr's own message. The most common one is All providers are throttled: a provider hit its rate or download limit - often right after a download - so Bazarr benched it for 1-3 hours. Check Bazarr → System → Providers for the retry time, or enable more providers.
The plugin triggers a library refresh after download. If it still doesn't appear:
Ensure the item exists in Radarr/Sonarr and Bazarr has synced. The plugin matches movies by IMDB ID, and episodes by series TVDB/IMDB ID or title.
See Reverse Proxy Setup if using an authentication proxy.
Otherwise, verify your URL format:
http://localhost:6767 (not http://localhost:6767/api)http://your-bazarr-url/api/system/languages should return JSON, not HTMLContributions welcome! Please open an issue or PR on GitHub.
18 commits
7 commits
C#
78.8%
Shell
17.1%
HTML
4.1%