108

When I play a movie with subtitles (on VLC media player), the text is often displayed too soon or too late. Is there a way to delay the starting point of the subtitles?

2

10 Answers 10

86
  1. Open VLC media player.
  2. Click the File Menu.
  3. Click Open File.
  4. Click Browse to Open the Movie.
  5. Check the "Use a subtitle file" Box.
  6. Click Browse to Open the Subtitle.
  7. Click "Advanced Settings"
  8. Move the Delay into the minus if the subtitles are too fast. Move it into the positive if the subtitles are too slow.

You can also just press H and G while the video is running to align the subtitles backward and forward in time; for the voice use J and K. The increments are in milliseconds, so it can be pretty easily fine tuned that way.

Source

9
  • 3
    with the kmplayer you could adjust the timing of your subtitles while you watching the video AND saving it. (And you could also set the amount of milliseconds incremented by the hotkeys)
    – fluxtendu
    Jan 14, 2010 at 13:33
  • 3
    it's G & H on my fresh install of VLC 1.0.3, and the default jump is around 50ms. J/K are the audio delay. (i expect your source just reported the keys wrong.) Jan 14, 2010 at 23:15
  • 3
    This solution permit to "slide" the subtitle starting point. But I have the problem that the subtitles slowly become de-sync with time. Just as the "pitch" was a little bit higher... Is there a way to "to accelerate" or "to slow down" the subtitles speed ?
    – Rabskatran
    Jun 18, 2010 at 12:09
  • 1
    All the steps are correct except for step 8. If the subtitles are too fast, then you need to induce some positive delay and vice versa. So 1. If subs come before audio -> set subtitles delay in +ve. 2. If audio comes before subtitles -> set subtitles delay in -ve.
    – user143374
    Jul 1, 2012 at 2:39
  • 5
    Why would VLC not allow you to simply save this setting out to a file that gets automatically loaded with the movie when you open it? Apr 16, 2016 at 5:02
123

There is a much more easy way to do this via the advance synchronisation functionality of VLC

  1. Detect (“hear and see”) that subtitles are out of sync
  2. Press Shift + H when you hear a sentence that you will be able to easily recognize
  3. Press Shift + J when you read the same sentence in the subtitle
  4. Press Shift + K to correct the sync
12
  • 6
    Nice one - solves the problem when the subtitles are out of sync. I wish there was a similar facility for solving issues when the subtitles have a different FPS.
    – axel22
    Dec 24, 2014 at 13:29
  • 5
    @axel22 Wishes of Christmas often are fulfilled. You can start it from command line with the option --sub-fps and the new fps, or change it in the options windows. Give it a look to another answer and to the full help of vlc.
    – Hastur
    Jan 19, 2015 at 8:19
  • 8
    This is better than the accepted answer.
    – Computist
    Jan 17, 2016 at 19:15
  • 1
    You can rewind the movie after pressing Shift+H, no? Jan 20, 2018 at 19:48
  • 6
    Doesn't seem to work properly when the sub is ahead of sound, with rewinding.
    – woony
    Dec 11, 2018 at 20:13
7

By command-line is possible to use the option --sub-delay followed by the number positive or negative of 1/10 of seconds of delay to add. So to shift the subtitle of 3 second you can run vlc with the following command line

 vlc --sub-delay 30  myfile.avi

In a similar way acts the option --sub-fps that override the normal fps.

--sub-fps Frame per second
Override the normal frames per second settings. This will only work with MicroDVD and SubRIP (SRT) subtitles.

With VLC 3.0.0 there are some other option that can be useful (and almost self-explicative)

  • --sub-fps
  • --sub-delay
  • --sub-type
  • --sub-file
  • --sub-language
  • --sub-autodetect-file

More options maybe interesting:

  • --sub-description, --sub-autodetect-fuzzy --sub-autodetect-path --sub-margin -sub-source --sub-filter --sub-track --sub-track-id

Specifically with subsdelay

  • --subsdelay-mode --subsdelay-factor --subsdelay-overlap --subsdelay-min-alpha --subsdelay-min-stops --subsdelay-min-start-stop --subsdelay-min-stop-start

For further information invoke vlc -H or check the online vlc user manual

2
  • is there any option to save the modified timings to file?
    – Zimba
    Sep 12, 2019 at 16:30
  • @Zimba If I correctly understood... you can use any subtitle editor (the 1st I found open source)... or you can write a script with the used command line (.sh or *.bat if you are under Linux or Windows)... :-)
    – Hastur
    Sep 12, 2019 at 19:00
2

2017 VLC version 2.2.6

Open

Tools => Track Synchronization => Subtitle Track Synchronization

Here you can increase/decrease the speed.

1
  • are we actually changing the speed here? isn't it supposed to shift the position in time instead? Feb 11, 2020 at 20:48
2

VLC has an advanced support for subtitles. You can easily synchronize subtitles with keyboard shortcuts G and H within the application.

This way, you can sync subtitles by +/- 0.5 seconds by default.

However, if you want more functions and possibility to save synchronization permanently in your subtitle file, then you would need to use tools such as Subtitle Workshop (Windows only) or Jubler (Java cross-platform).

With these apps, you can easily set the first and the last spoken word in the movie and subtitle timings are automatically adjusted between these two lines.

1
  • 1
    Subtitle Workshop is quite poor, at least on macOS, menus don't open, I tried to open a file from the splash menu, hung forever, two times.
    – zakmck
    Aug 28, 2019 at 16:47
1

With VLC for Mac (mine is v3.0.6),

  1. Use the menu File > Advanced Open File ...;
  2. In the prompt, select the File tab, and browse to your video file;
  3. Check Add Subtitle File, then click Choose... to bring up the next prompt;
  4. In that prompt, browse to your subtitle file;
  5. Check Override parameters;
  6. Set your delay in seconds in Delay. Minus values speed up subtitle and vice versa;
  7. Hit OK then hit Open. The video either restarts or continues depending on your related settings in your Preferences;
  8. If the delay is not quite there, repeat #1-7 with adjustments; if that still doesn't seem to work, then after resetting, close and reopen VLC.

One trick: Use big numbers at first, e.g., 20s, to test water, then fine-tune to close in on the actual delay.

1
  • 1
    If only I could up vote twice
    – karuhanga
    Mar 1, 2019 at 21:21
1

Other answers are good temporary solutions, but...

To permanently fix the timing of subtitles on Windows:

  1. Download the free Subtitle Workshop program.

  2. Convert at least a little bit of your video to .avi or other formats it supports (not .mp4). For example, you could convert it with a program like Ffmpeg:

    ffmpeg -i .\myMovie.mp4 -t 0:02:00 .\myMovie_cut.avi`
    
  3. In Subtitle Workshop, open the video and the .srt subtitle file.

  4. Use a stopwatch (such as an app on your phone) to time how far out of sync your subtitles are with the audio when you play the video.

  5. Edit > Timings > Set Delay, set a positive or negative delay time, select the "All subtitles" radio button, Apply. (Thanks to this answer to How to accurately shift subtitles)

1
  • I have fixed the dead link, but it only works on Windows as far as I can see.
    – David
    Jul 19, 2023 at 10:12
0

On OS X 10.13.6, running VLC 3.0.11.1 (Vetinari), to advance and retard (respectively), the keys are:

  • Audio: F & G
  • Subtitles: H & J

It's unclear why the keys differ from this answer.

0

My answer I just did this works great: start the movie and add the subtitle file as normal. Then, go "tools" select "Track Synchronization" then you have options to delay or advance(start earlier) the subtitle file by as many seconds as you want! Keep fiddling with it until the first statement and first subtitle aligln. Easy.

1
  • 1
    Welcome to Super User! Before answering an old question having an accepted answer (look for green ✓) as well as other answers ensure your answer adds something new or is otherwise helpful in relation to them. Here is a guide on How to Answer. There is also tour for the site tour, and help center for the help center. Jun 20, 2021 at 7:52
0

Because I use the online program...

SubSync - Subtitle Speech Synchronizer

...so often, I rarely need to think about advancing / retarding subtitle display while actually watching a movie through VLC.

Sometimes even a subtitle gotten by VLC's VLsub extension "hash matching" isn't perfectly synchronised. And I've often been caught out by subtitles that "drift" partway through the movie.

Because it runs in the browser, SubSync has no installation hassles, and doesn't care what browser or OS you're using. It only takes a couple of minutes to synchronise before settling down for a couple of hours to watch the movie, so I find it's worth doing as a matter of course.


I'm not sure about other OSes, but with Linux, if your subtitles are embedded within the video file (*.mkv or whatever), it's easy to extract them into a file for SubSync using ffmpeg. At the terminal...

ffmpeg -i <"videofilename">

...to find the "stream number" N of the subtitle, followed by...

ffmpeg -i <"file.mkv"> -map "0:N" <"file.srt">

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .