Some online video players give you the option to add or subtract delay e.g. by ±0.5s to subtitles to manually sync them to the video currently playing. However I become functionally dyslexic when it comes to actually figuring out how much delay has to be added. I end up randomly adding or subtracting delay and make it work through trial and error.
Is there some rule of thumb I could follow instead to systematically sync subtitles?
VLC has hotkey for this. It’s pretty easy to tweak with just trial an error and no need to go to settings to guestimate the values.
I count the seconds to get in the ball park and fine tweak on the go.
Line.
1… 2… 3… 4… 5… 6… 7…
Subtitles.
Ok, seven and a half seconds.I still haven’t gotten straight which way plus and minus are. Should I go minus if the subtitle is coming late? Or plus?
I don’t know what software you are using and if they are indicating the direction of error or correction, but I trust if you try it you’ll figure it out.
Put on media with properly synchronized subtitles. Change to plus five. Are the subs behind or ahead of audio? Make a note. Now you know.
What’s your setup? Where are you watching, what format are the subtitles?
I watch movies online in my browser through uhh… alternative means. Subtitle formats aren’t listed explicitly, though I assume it is .lrc given they are imported from opensubtitles.org.
Oh so you don’t actually have access to the files themselves. That’s unfortunate. Then I fear you’re at the mercy of whoever wrote that browser plugin.
I must restate that the option of syncing subtitles by hand is still available in the interface, as mentioned in the post. It is only the question of how to deterministically set the subtitle delay without resorting to tinkering with the controls randomly.
If the subtitles are actual subtitles and not dubs, you can extract timestamps from the audio with a model such as whisper + timestamp support. You could then optimize the overlap of timestamps in the subtitle format (e. g. SRT) with the timestamps provided by the model. That would give you a best fit delay, potentially even shifting over time.
Given that you’re in a browser and don’t even have access to the subtitle data, that’s a purely theoretical exercise. While it might be possible to retrieve the subtitles from the site / API the browser is using and then set the delay in the browser component as well, that’d be far too much effort vs. switching to a better playback method.
You could, however, compute the best match and set that manually, if that’s all you’re after, i. e. skip the automation part. You’d still need to access the source audio and subtitles.
If the audio is in a different language, all bets are off, there is nothing to sync against. Translations also won’t help, since there are multiple ways to translate any given source material, and the origin and length don’t match up between languages, naturally.
I get that but I wouldn’t know any such way. There are dedicated subtitle tools that can sync audio and text but those need the files. Failing that you can only do it by ear.
If the subtitle file was downloaded from opensubtitles automatically, there’s also the very real possibility that it’s the wrong file. It might be the correct movie but the subtitles might be synced to a different framerate and there’d be no way for you to know.
Trial and error, basically. Change the delay, wait a second and then see if it makes it better or worse (at least for VLC there is a delay in the setting actually changing the sync in my experience so you need to give it a second to see the difference). Repeat until it’s perfect.
It also helps to do this in a dialogue heavy scene so you can match the audio to mouth movement.
There must be a better way to do this though. I waste too much time tinkering with the syncing at times.I realised what I’m asking for is essentially a modified version of ‘trial and error’. I should clarify that I’m looking for a technique I could follow to instead of clicking buttons and modifying values by pure randomness and hoping the subtitles sync.
So you just want a better system than “completely at random”. Fair enough. Here’s what I’d do:
- After the first line is uttered, see if the subtitles are late or early. Pause.
- Adjust the delay, let’s say -1.0 second (or more if the difference between them felt really long).
- Skip back to before the line was heard, and play. Is the gap better or worse? If it’s worse, then you need to change the delay in the other direction (+1.0 instead of -1.0). If it’s better, the direction you used was good.
- Repeat step 3 until you get that one line synced perfectly.
- Enjoy the rest of the movie/episode.
Disclaimer: I’ve never had this problem (that I remember), subtitles have always been either synced or completely out of my control. I don’t use ‘alternative means’ much.
Every video player has a slightly different codebase. I imagine all of these are going to be a hair different when it comes to timing.
By default, they are synced by the subtitle creator. I have only had to modify probably 2 videos ever, in my life.
The rule of thumb is: don’t mess with the syncing. It’s already synced.
I don’t know that I’ve ever seen subtitles synced correctly outside of streaming services. You must have a different setup to me.
Unfortunately from where I watch movies it is pretty common for the stream and the subtitles to not sync by default as they come from different sources, so syncing them manually is inevitable.
I think the problem arises mostly from trying to add subtitles to arrrr creatively acquired videos where the settings of the creator were not adhered to in the strictest sense.
I mean, I totally wouldn’t know about that myself, I just heard about it online.
It also arises simply from digital copies of DVDs that don’t come with subtitles. Which I unfortunately know too much about.








