Jellyfin subtitles out of sync: why it happens and how to fix it
Updated ยท 5 min read
Lines that appear two seconds before anyone speaks, or drift further off as the film goes on. When Jellyfin subtitles are out of sync, the cause is almost always the subtitle file, not Jellyfin. Here is how to tell which kind of problem you have, patch it for tonight, and fix it for good.
Why subtitles go out of sync
A subtitle file is a list of lines with start and end times. Those times were made against one particular copy of the film. If your copy differs, the times are wrong. There are three common patterns, and the first job is to work out which one you have: check a line near the start, then one near the end.
- Same gap all the way through. The subtitle was timed for a copy with a slightly longer or shorter opening, such as an extra studio logo. A single shift fixes it.
- Fine at first, worse and worse later. A frame rate mismatch. Subtitles timed for a 25 fps European TV copy drift against a 23.976 fps film copy, by roughly four percent. Shifting doesn't help; the timing has to be stretched.
- Fine, then suddenly off after a certain scene. The subtitle comes from a different cut, such as a director's cut or a TV version with ad breaks removed. Different parts need different shifts.
Rarely, the file is right and the trouble is the stream: subtitles drift only when Jellyfin is converting the video. Jellyfin has an option for this under Dashboard > Playback > Transcoding, Always burn in subtitle when transcoding, which its own help text says keeps subtitles in sync at the cost of slower conversion. Fast conversion helps here too; see Jellyfin hardware acceleration.
Quick fix while watching
In Jellyfin's web player, open the settings menu during playback and choose Subtitle Offset. A slider moves every line earlier or later. Nudge it until the words match the mouths. It works for a constant gap, not for drift.
Treat it as a fix for this viewing. It doesn't change the file, so other devices and other people still see the old timing. Other apps vary: some Jellyfin apps and players have their own subtitle delay control, and some have none. Kodi, for example, has a subtitle offset in its player menu.
Fix the file for good
This works for subtitles stored as separate files next to the video, such as Movie (2010).en.srt. Subtitles inside the video file have to be extracted first, which Subtitle Edit can do.
- Copy the subtitle file first. Keep the original somewhere outside the media folder, so you can go back.
- Let a tool line it up against the audio. ffsubsync listens to the film's speech and shifts the subtitles to match. Install it with Python, then run it with the video, the bad file and a new file name:
pip install ffsubsync ffs "Movie (2010).mkv" -i "Movie (2010).en.srt" -o "fixed.en.srt" - Use alass when the cut differs. alass also handles splits, such as removed ad breaks and different frame rates:
alass "Movie (2010).mkv" "Movie (2010).en.srt" "fixed.en.srt" - Or fix it by eye in Subtitle Edit. This free Windows editor can shift every line at once, convert between frame rates such as 25 and 23.976, and line the file up against two points you pick near the start and the end.
- Put the fixed file in place. Replace the old file with the fixed one, keeping the original name, so Jellyfin matches it to the video.
- Refresh in Jellyfin. Open the film's ... menu and refresh its metadata, or wait for the next library scan. Then play it and check a line near the end.
Tip: automatic tools need clear speech. On a film that opens with ten minutes of music, they can lock onto the wrong point. Always check a line near the end before you delete the backup.
Get a file that matches
Often the fastest fix is a different file. Subtitle sites list each file against a release name; one made for the same release as your copy usually fits without any work.
- Under Dashboard > Plugins, open the catalog, install Open Subtitles and restart Jellyfin.
- In the plugin's settings, enter the name and password of your own free opensubtitles.com account. A free account allows a limited number of downloads a day.
- Open the film's ... menu, choose Edit subtitles, search, and pick a result whose name matches your file's release.
- To fetch subtitles for new videos by themselves, edit the library and turn on Open Subtitles under Subtitle Downloads.
More on this in download missing subtitles and subtitles that turn on by themselves.
Burned-in or separate
Text subtitles (SRT, VTT, ASS) are drawn by the player, so they can be shifted, restyled and switched off. Picture subtitles from discs (PGS, VobSub) are images, and many apps can't draw them, so Jellyfin burns them into the video while converting it. That costs processing power, and once a subtitle is part of the picture, a player's offset control may no longer be able to move it.
For timing problems, a separate text file is the easiest to fix and to keep fixed. If you only have picture subtitles and they're out of sync, look for a matching text version instead.
Questions
Why are subtitles fine at the start but out of sync later?
The file was timed for a copy with a different frame rate, often 25 fps against 23.976 fps. The gap grows through the film. Shifting won't fix it; a tool has to stretch the timing.
Does Jellyfin save the subtitle offset?
Treat it as a fix for this viewing. To fix it on every device and for every person, fix the file.
Can Jellyfin fix subtitle timing by itself?
Jellyfin has no built-in tool that rewrites subtitle timing. It offers the player's offset slider; lasting fixes are made to the file.
The one-click way: Reelhost
Reelhost's timing fixer finds subtitles that run early or late and lines them up with the video. You see a preview first, and Undo puts the old timing back. Checking is free; fixing needs Complete or Yearly. No subtitles at all? AI subtitles (Beta) are made on your computer by the open-source Whisper model, with nothing sent anywhere, also in Complete or Yearly. See fix subtitle timing, and AI subtitles.
The check-up is free and changes nothing. Every fix is previewed, backed up and reversible.