Subtitles that land a beat late are fixable from the keyboard while the video keeps playing — no re-encoding, no editing the file. This guide covers the three ways VideoLAN documents for shifting subtitle timing in VLC: a keyboard nudge, an exact delay value you type in, and a three-key "advance synchronisation" routine that works in one direction only.
You need VLC, your video, and whatever subtitles go with it. On sources: the VLC HowTo pages quoted below are hosted by VideoLAN but carry a footer describing themselves as part of "the informal VLC Support Guide" — that is the weight to give them.
Before you start: confirm it is really a timing problem
Delay controls only help when the subtitles are correct but early or late. Two lookalikes waste a lot of time:
- Garbled characters. VideoLAN's support guide splits two symptoms most write-ups treat as one. Question marks: "If you see question marks or weird characters, this means that the selected encoding is wrong." Boxes: "If you see boxes or squares, it means the selected font lacks the needed characters." Neither is a timing fault — see question marks vs boxes.
- The wrong track is loaded, or no track at all. "If your video has multiple subtitle tracks, you can select the one you would like to see from Video -> Subtitles Track." If nothing shows up at all, start with VLC subtitles not showing.
If lines appear at the wrong moment but are otherwise readable, carry on.
Step 1: Nudge the timing with g and h
This is the fastest fix and it works during playback. From VideoLAN's how-to on subtitle delay:
"During playback you can press g or h to adjust subtitle delay (adjust step is 50 ms)."
The direction is documented just as plainly:
"If subtitle is ahead of sound, press g" "If subtitle is behind sound, press h"
The step size is the number to hold on to: 50 ms per press. A one-second correction is twenty presses; a half-second correction is ten. Because each press is small, overshooting is cheap to undo.
On a Mac the keys may not be the same ones. The same page documents a different mapping, scoped to one release: "OS X v2.2.1 keys: "h" (decrease delay, subtitles display after sound) and "j" (increase delay, subtitles display before sound)." So if g does nothing on macOS, try h and j before assuming the feature is broken — and check your own build's shortcut list if neither pair responds.
Step 2: Type an exact delay instead of tapping
When you already know the offset, or when tapping keeps overshooting, there is a dialog for it:
"You can also set a specific delay. Go to Tools > Track Synchronization and set the delay you want."
Use this when the offset is large. Twenty keypresses to cover a second is fine; two hundred to cover ten seconds is not.
Do not reach for the audio-delay keys by mistake. Audio has its own shift, with its own keys and the same step: "During playback you can press j or k to adjust audio delay (adjust step is 50 ms)." VideoLAN's audio-delay page ends its direction advice with the caveat "or the other way round; negations can be pretty confusing" — so if audio is what is off, press and watch rather than trusting a remembered direction.
Step 3: When subtitles run late, let VLC measure the gap
VLC has a routine that works out the offset from your own reactions instead of making you guess a number. The wording matters, so here it is in full:
"When subtitles are late compared to the audio, and only in this case, you can use the advance synchronisation functionality of VLC : Step 1 : Detect ("hear and see") that subtitles are out of sync Step 2 : Press Shift H when you hear a sentence that you will be able to easily recognize Step 3 : Press Shift J when you read the same sentence in the subtitle Step 4 : Press Shift K to correct the sync"
Read the qualifier again: "and only in this case." This is a one-direction tool, documented for subtitles that arrive after the audio. If your subtitles appear before the line is spoken, it is not the documented answer — go back to the g/h nudge or the Track Synchronization dialog.
Shift H marks when you hear the line, Shift J when you read it, Shift K applies the gap. The instruction to pick "a sentence that you will be able to easily recognize" is doing real work: the fix is only as accurate as your two keypresses, so choose a line with a sharp start.
If the offset lives in the subtitle file
Sometimes the file, not the player, is the odd one out. VideoLAN's subtitle support table gives two data points worth knowing:
- SubRip (
*.srt) is listed as supported, with a timing precision of "1 Millisecond (1/1000th sec)." - MicroDVD (
*.sub) is listed with timing "Dependent on Frames." A format timed in frames rather than seconds is tied to the frame rate it was authored against, so the same file against a differently-timed video will not line up — and no single fixed offset clears that up.
One more wrinkle: VideoLAN's documentation does not clearly state whether VLC handles WebVTT subtitles. The parser option --sub-type lists formats from microdvd through sbv and includes neither vtt nor webvtt; the wiki's support table has no WebVTT row; yet the published vlc -H output does list webvtt among encoder modules. Three official places, no clear answer. If you are holding a .vtt and VLC is behaving strangely with it, converting to SubRip puts you on a format the table actually lists.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
That runs in your browser tab — the caption file is parsed and rewritten locally, never uploaded. It also has its own page at VTT to SRT, and all Clapr tools covers the rest. On which format to hand a player, see SRT vs VTT.
Setting the delay from the command line
VLC exposes the same shift as a startup option, and its units are easy to get wrong. The documented description:
"
--sub-delay=<integer>Subtitle delay Apply a delay to all subtitles (in 1/10s, eg 100 means 10s)."
The unit is tenths of a second, not milliseconds. The example is explicit: 100 means ten seconds. So a two-second shift is 20 and a half-second shift is 5. Read the option as milliseconds instead and 500 — meant as half a second — becomes a shift of fifty seconds, a hundred times bigger than intended.
One caveat on the option list itself: the vlc -H dump published on VideoLAN's wiki is introduced with the line "Here's the output of vlc -H of vlc-4.0.0-dev under Windows." That is a development build, not a stable release — run vlc -H against your own installation to see what your build exposes.
Common mistakes
- Using the three-key routine for subtitles that are early. The documented scope is "when subtitles are late compared to the audio, and only in this case."
- Reading
--sub-delayas milliseconds. It is in 1/10 s.500is fifty seconds, not half a second. - Hunting for g and h on a Mac. The mapping documented for OS X v2.2.1 is h and j.
- Confusing the audio keys with the subtitle keys. j and k shift audio; g and h shift subtitles, both in 50 ms steps — easy to "fix" the wrong stream and end up further out.
- Syncing a track you are not reading. With multiple subtitle tracks, pick the right one under Video -> Subtitles Track first.
FAQ
What is the keyboard shortcut for subtitle delay in VLC? g and h during playback, in 50 ms steps per press — g when the subtitle is ahead of the sound, h when it is behind. On macOS, VideoLAN documents h and j for OS X v2.2.1.
How do I set an exact subtitle delay instead of tapping a key? Tools > Track Synchronization, then set the delay you want — the documented route for a specific value, and the sane option for anything over a second.
Is --sub-delay in milliseconds?
No. The option description says the delay is "in 1/10s, eg 100 means 10s." A value of 10 is one second, and 5 is half a second.
My subtitles drift further out as the video plays — will these fix it? The controls here apply one fixed offset: a 50 ms step, a typed delay, or the gap advance sync measures. A progressive drift is a different problem. One documented starting point is the format — the support table lists MicroDVD timing as "Dependent on Frames," so a frame-timed file against a video at another frame rate will not track. Beyond that, check the official documentation for your VLC version.
Does VLC support WebVTT subtitle files?
The official documentation does not give a clear answer: the --sub-type parser list does not include WebVTT, the wiki's support table has no WebVTT row, and the published vlc -H output does list webvtt among encoder modules. Converting to SubRip sidesteps the question.
Timing is the easy half of subtitle trouble. If yours go missing after an encode instead, HandBrake subtitles not showing covers the burn-in side of it, and the rest of these walkthroughs live in how-to guides.
Cited from VideoLAN's wiki: the subtitle-delay and audio-delay how-tos, the subtitle rendering and track-selection pages, the subtitle format support table, and the published vlc -H option list (from a vlc-4.0.0-dev build). Checked 16 September 2026. VideoLAN calls its HowTo and VSG pages an informal support guide, and its documentation index warns that parts of the wiki are outdated or incomplete — verify against the docs for your version.