Jellyfin Subtitles: The Complete Guide (2026)
Subtitles are one of the most requested features on any media server. Whether you serve a multilingual family or simply prefer watching foreign films in their original language, getting subtitles right on Jellyfin is essential.
This guide covers everything: formats, plugins, automation with Bazarr, and troubleshooting the most common issues.
Subtitle Formats Explained
Not all subtitle formats are equal. The format you use affects compatibility, styling, and whether Jellyfin needs to transcode.
| Format | Type | Styling | Transcode risk |
|---|---|---|---|
| SRT | External text | No | None (Direct Play) |
| ASS/SSA | External text | Yes (fonts, colors, positioning) | Low |
| PGS (SUP) | Image-based (Blu-ray) | Yes | High - forces burn-in transcode |
| VobSub (IDX/SUB) | Image-based (DVD) | Yes | High - forces burn-in transcode |
| WebVTT | External text | Limited | None |
The golden rule
Text-based subtitles (SRT, ASS) = Direct Play. Image-based subtitles (PGS, VobSub) force Jellyfin to burn them into the video stream, which triggers a full video transcode.
If your users complain about buffering only when subtitles are enabled, PGS burn-in is almost certainly the cause.
Embedded vs External Subtitles
Embedded subtitles
Subtitles stored inside the MKV container. Jellyfin detects them automatically.
- Pros: no extra files, always travel with the media
- Cons: harder to replace or update, PGS embedded subs force transcoding
External subtitles
Separate files placed next to the video file:
Movie Name (2024)/
Movie Name (2024).mkv
Movie Name (2024).en.srt
Movie Name (2024).fr.srt
Movie Name (2024).de.srt
Jellyfin picks them up automatically if the naming matches. Use ISO 639-1 language codes (en, fr, de, es, it, pt, etc.).
Method 1: OpenSubtitles Plugin (Manual)
The built-in OpenSubtitles plugin lets you search and download subtitles from the Jellyfin dashboard.
Setup
- Dashboard → Plugins → Catalog → OpenSubtitles
- Install and restart Jellyfin
- Go to Plugins → OpenSubtitles → Enter your opensubtitles.com API credentials
- Navigate to any movie → Edit Metadata → Subtitles → Search
Important: Use the opensubtitles**.com** API (v2), not the legacy .org API.
This method works well for occasional downloads but does not scale for large libraries.
Method 2: Bazarr (Fully Automated)
For serious subtitle automation, Bazarr is the industry standard. It integrates with Radarr and Sonarr to automatically download subtitles for every movie and episode in your library.
Docker Compose
services:
bazarr:
image: lscr.io/linuxserver/bazarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./bazarr/config:/config
- /path/to/movies:/movies
- /path/to/tv:/tv
ports:
- 6767:6767
restart: unless-stopped
Configuration
- Open Bazarr at
http://your-server:6767 - Settings → Subtitles → Add providers (OpenSubtitles.com, Addic7ed, Podnapisi, etc.)
- Settings → Languages → Set your desired languages and priorities
- Settings → Radarr / Sonarr → Connect with API keys
- Bazarr will scan your library and download missing subtitles automatically
Bazarr best practices
- Set a score threshold (e.g., 90+) to avoid bad subtitle matches
- Enable anti-captcha if you use providers that require it
- Schedule scans during off-peak hours to reduce server load
- Use subtitle sync (built into Bazarr) to fix timing offsets automatically
Fixing Common Subtitle Issues
Subtitles cause buffering
Cause: PGS or VobSub image-based subtitles force a full video transcode (burn-in).
Fix: Replace image-based subs with SRT equivalents. Use Bazarr to download text-based alternatives.
Subtitles are out of sync
Fix options:
- Use Bazarr built-in subtitle sync (automatic)
- Use SubSync (standalone tool) for manual correction
- Adjust offset in the Jellyfin player during playback
Subtitles not detected by Jellyfin
Cause: File naming mismatch.
Fix: Ensure the subtitle file name matches the video file name exactly, with the language code:
Movie.mkv
Movie.en.srt ✅
Movie_english.srt ❌
Wrong language displayed
Fix: Edit the subtitle metadata in Jellyfin: Media → Edit → Subtitles → Set correct language.
ASS subtitles look wrong (missing fonts)
Cause: ASS subtitles reference fonts not available on the client.
Fix: Use SRT instead, or ensure the client supports ASS rendering (Jellyfin Media Player, mpv-based clients).
Subtitle Strategy for Multi-User Servers
If you share your server with users who speak different languages:
- Configure Bazarr to download subtitles in all required languages automatically
- Set Jellyfin default subtitle language per user: Dashboard → Users → [User] → Subtitle language preference
- Prefer SRT format to avoid transcoding for subtitle-heavy users
- Monitor transcode sessions with JellyWatch - subtitle burn-in is one of the top transcode triggers
Subtitle Provider Comparison
| Provider | Coverage | Quality | Free tier |
|---|---|---|---|
| OpenSubtitles.com | Excellent | Good | Yes (limited) |
| Addic7ed | TV shows | Very good | Yes |
| Podnapisi | European languages | Good | Yes |
| Subscene | Asian languages | Good | Yes |
Using multiple providers in Bazarr increases your chances of finding accurate subtitles.
Monitor Subtitle-Related Transcoding
Subtitle burn-in is a silent performance killer. A user enabling PGS subtitles can spike your CPU from 5% to 90% instantly.
JellyWatch shows you the exact transcode reason for every active session - including when subtitles are the cause. You can then message the user or adjust their subtitle settings remotely.
Subtitles triggering unexpected transcodes? Catch it in real time. Download JellyWatch on Google Play - see transcode reasons, monitor CPU spikes, and manage your Jellyfin server from Android.
Running Emby? Download EmbyWatch on Google Play - the same monitoring experience for Emby servers.




Comments 4
Bazarr + OpenSubtitles is the combo everyone needs. Automatic subtitles in 5 languages for my entire library. Set it and forget it.
The PGS vs SRT explanation finally made me understand why subtitles were causing buffering. Replaced all PGS with SRT and problem solved.
Running Bazarr with 4 languages (EN, FR, DE, ES) for my international friend group. It downloads subs automatically within minutes of Radarr importing a new movie. Zero manual work.
This article finally explained why some movies buffer and others do not. It was always the ones with embedded PGS subs. Bazarr + SRT replacement fixed my entire library.
Leave a comment