mpv Subtitles Out Of Sync: How to Fix It

When mpv subtitles are out of sync, the text usually appears at a consistent early or late offset, gradually drifts away from the dialogue, or becomes incorrect only with a particular stream, track, or configuration. Those patterns matter. A constant offset normally needs a subtitle-delay adjustment, while progressive drift more often indicates a mismatched subtitle release, incorrect timestamps, variable frame-rate behavior, or a damaged media timeline. Start with a clean playback test, identify the pattern, and stop as soon as synchronization remains correct during several widely separated scenes.

Video player timeline comparing constant subtitle offset, progressive drift, and sudden timing jumps.

1. Confirm the Symptom With a Minimal Clean mpv Command

Before editing mpv.conf, input.conf, scripts, or profiles, determine whether the problem survives without your normal configuration. Open a terminal or command prompt and run mpv with --no-config.

On Windows PowerShell or Command Prompt, use:

mpv --no-config "C:\path\to\video.mkv"

On Linux or macOS, use:

mpv --no-config "/path/to/video.mkv"

Quoting is important when a path contains spaces, brackets, ampersands, or shell-sensitive characters. Dragging the file into a terminal can help insert its full path, although you should still verify the resulting quotation marks.

1.1 Identify Constant Offset or Progressive Drift

Test dialogue near the beginning, middle, and end of the video. Classify the result before changing anything:

  • Constant offset: subtitles remain early or late by approximately the same amount everywhere.
  • Progressive drift: subtitles begin correctly but become increasingly early or late.
  • Discontinuous timing: synchronization changes suddenly after seeking, an advertisement break, a segment boundary, or a damaged timestamp.
  • Playback slowdown: audio, video, or both stutter, making the subtitle problem appear to be a timing offset.

If --no-config fixes the problem, the media and subtitle files are probably usable. Concentrate on configuration, profiles, bindings, scripts, and playback options. If the problem remains, test the subtitle file, track selection, timestamps, and media source.

1.2 Verify the Selected Tracks

Press i during playback to open mpv's statistics overlay, or use the track list shown in the terminal and on-screen controls. Confirm that mpv selected the intended audio language and subtitle track. A commentary audio track, alternate dub, hearing-impaired subtitle track, or subtitle track made for another edit can look like a synchronization failure.

Success means the clean command uses the correct audio and subtitle tracks and the timing remains stable across multiple scenes. If that is true, stop investigating the media file and compare the clean test with your regular configuration.

2. Correct a Constant Subtitle Offset

For subtitles that remain consistently early or late, mpv's subtitle delay is the direct fix. The relevant property and command-line option are named sub-delay.

2.1 Use the z and Z Subtitle Delay Controls

In mpv's default input bindings, lowercase z decreases subtitle delay by 0.1 seconds, while uppercase Z increases it by 0.1 seconds. Uppercase means pressing Shift with Z on a typical keyboard layout.

  • If subtitles appear too late, decrease the delay with z.
  • If subtitles appear too early, increase the delay with Z.

Watch the on-screen delay value and adjust in small steps. For example, subtitles displayed 1.5 seconds too early generally need a positive delay of about 1.5 seconds. Test more than one line before deciding that the offset is correct.

Success looks like subtitle text appearing with the corresponding spoken line near the beginning, middle, and end. Once a constant offset works throughout the file, stop changing hardware decoding, video output, or audio settings. Those options are not needed for a stable fixed offset.

2.2 Set sub-delay on the Command Line

For a precise temporary adjustment, launch the file with:

mpv --sub-delay=1.5 "video.mkv"

A positive value delays subtitles. A negative value displays them earlier:

mpv --sub-delay=-0.8 "video.mkv"

This is also the safest way to save a temporary fix without modifying global behavior. Put the command in shell history, a Windows shortcut, a small batch or shell script, or a playlist launcher used only for that file. Do not add a file-specific offset globally to mpv.conf unless every file genuinely requires it.

2.3 Use Ctrl Shift Arrow Subtitle Sync Controls Carefully

mpv's built-in input configuration includes subtitle navigation and subtitle-step commands associated with Ctrl, Shift, and arrow combinations in common default configurations. In particular, Ctrl+Shift+Left and Ctrl+Shift+Right may invoke subtitle stepping behavior that aligns playback around the previous or next subtitle event. These controls are useful when synchronizing against a known spoken line, but they are not simply aliases for repeatedly adding a fixed 0.1-second delay.

Custom input.conf files, front ends, operating-system shortcuts, and different keyboard layouts can override these combinations. If they do nothing, inspect your active bindings rather than assuming mpv is broken. For predictable constant-offset correction, z, Z, and --sub-delay are easier to verify.

3. Inspect Configuration, Profiles, Bindings, and Scripts

If clean playback works but normal playback does not, reintroduce your setup methodically. Do not delete the entire configuration folder. Temporarily rename or bypass one component at a time.

3.1 Check mpv.conf and input.conf

Search mpv.conf and included configuration files for options involving subtitle delay, audio delay, playback speed, synchronization, track selection, demuxing, or caching. Pay particular attention to:

  • sub-delay values left from earlier troubleshooting
  • audio-delay, which can make correctly timed subtitles appear wrong relative to speech
  • speed or bindings that alter playback speed
  • sid, aid, or language preferences selecting unintended tracks
  • Conditional profiles activated by file type, protocol, resolution, HDR status, or other properties

Then inspect input.conf for bindings that modify sub-delay, audio-delay, speed, subtitle stepping, or track selection. A script may also intercept z, Z, or Ctrl+Shift+arrow.

3.2 Examine Profiles and Script Behavior

Use --show-profile=PROFILE_NAME to print the contents of a named profile:

mpv --show-profile=my-profile

Review auto profiles as well as profiles explicitly selected on the command line. If the issue appears only for HDR video, online URLs, or high-resolution media, compare the profile activated for that category with clean playback.

Temporarily disable individual user scripts by moving one script at a time out of the scripts directory, then repeating the same test scene. Scripts related to synchronization, automatic track selection, online playback, segment skipping, or playback speed deserve attention first.

Success means you can name the exact option, profile, binding, or script that introduces the offset. Remove or correct only that item, then restore everything else.

4. Diagnose Drifting Subtitles and Mismatched Releases

A delay adjustment cannot fully repair subtitles that drift. If an offset of 0.5 seconds works at five minutes but becomes five seconds wrong near the end, investigate the subtitle source and media timeline.

4.1 Check for the Wrong Subtitle Release

External subtitles are often timed for a particular cut, frame rate, intro length, recap, or source edit. A theatrical cut and an extended cut may share dialogue while having different scene timing. Broadcast and streaming versions may contain different logos, recaps, advertisements, or censored sections.

Compare the external subtitle file with any embedded subtitle track. Check runtime, edition, language, and release naming. A wrong-release subtitle can begin correctly and diverge after an inserted or removed scene. Replacing it with a subtitle file created for the exact video release is preferable to stacking delay adjustments.

4.2 Distinguish Rate Error From Timestamp Breaks

Smooth, steadily increasing drift suggests a timing-rate mismatch. A sudden jump suggests an edit difference, timestamp discontinuity, corrupt segment, or missing section. Seek to points before and after the change. If synchronization is correct before one scene and consistently wrong afterward, a simple global sub-delay cannot solve both sections.

For authored subtitle repair, use a reputable subtitle editor to retime the file against two or more reference points, then save a new copy. Preserve the original. If only one video needs the repair, do not put compensating speed or synchronization settings into global mpv configuration.

Playback pipeline showing video, audio, and subtitles converging at synchronized output.

5. Check Playback, Hardware Decoding, HDR, and Audio Timing

Subtitles can seem late when the underlying playback pipeline is stalling. This is particularly relevant to high-bitrate files, network shares, HDR shaders, demanding scaling, or unreliable hardware decoding.

5.1 Watch the Stats Overlay

Press i during the affected scene and look for dropped frames, delayed frames, cache behavior, A/V synchronization information, and the selected decoder. If video visibly stutters while audio continues, the subtitle clock may be correct even though the picture is late.

Run a comparison with hardware decoding disabled:

mpv --no-config --hwdec=no "video.mkv"

If your CPU cannot decode the file smoothly in software, this test may perform worse. Its purpose is comparison, not a universal recommendation. You can also test a safe automatic hardware-decoding mode:

mpv --no-config --hwdec=auto "video.mkv"

If only one mode fails, review GPU drivers and mpv's reported decoder. Avoid random codec packs, which generally do not repair mpv's internal decoding pipeline and may create unrelated system problems.

5.2 Isolate Shaders and HDR Processing

Heavy shaders, interpolation, tone mapping, and high-quality scaling can exceed GPU capacity. Test the same scene with --no-config, which removes custom shader and profile effects. If timing becomes stable, re-enable processing options in small groups while watching dropped frames.

On Linux, compare behavior under your normal Wayland or X11 session only if the statistics show presentation problems or the issue is specific to fullscreen and display refresh. On Windows and macOS, update GPU drivers or operating-system graphics components through trusted vendor or system channels when logs indicate device or presentation failures.

5.3 Check Audio Delay and Backend Symptoms

If subtitles match lip movement but not the sound, the actual fault is audio timing. Look for an accidental audio-delay setting or binding. Test another audio output device, especially when using Bluetooth, HDMI receivers, wireless speakers, or audio-processing software that can add latency.

Stop changing subtitle delay when text matches visible speech. Correct the delayed audio path instead, because shifting subtitles would hide rather than solve the underlying A/V mismatch.

6. Test Online URLs, yt-dlp, Playlists, and Network Streams

For online playback, determine whether the timing issue exists in mpv, the selected stream combination, or the source timestamps. Use only content and services you are authorized to access.

6.1 Compare the Stream With a Local File

If permitted, test a legitimate local copy of the same media or another known-good local file. If local subtitles work but the URL does not, inspect the online track selection, segmented stream timestamps, network interruptions, and external-tool integration.

When mpv uses yt-dlp for supported URLs, ensure the configured executable path points to the trusted installation you intended. Shell quoting matters if the path contains spaces. An unavailable or incompatible external tool usually produces terminal errors, so capture logs before replacing software.

6.2 Account for Live and Segmented Media Limitations

Live streams and segmented playlists can contain timestamp discontinuities. Seeking, reconnecting, or switching tracks may expose timing errors supplied by the stream. Retry from a fresh launch and compare another point in the stream. A screenshot setting does not normally change subtitle timing, although screenshots can misrepresent animated subtitle state or capture a frame different from the moment you perceived during playback.

If the same discontinuity occurs with --no-config and is visible in logs at a segment boundary, stop adjusting global settings. The limitation is likely source-specific.

7. Use Logs to Find the Exact Cause

mpv's terminal output is more useful than changing unrelated options. Reproduce a short section and save a log:

mpv --no-config --log-file=mpv-sync.log --msg-level=all=v "video.mkv"

For less verbose output, raise only relevant components rather than everything. Review messages around subtitle loading, selected tracks, demuxer timestamps, audio initialization, video decoding, cache underruns, scripts, and hardware-decoding fallback.

Do not publish logs without reviewing them. Commands and logs may expose usernames, local paths, private URLs, tokens, IP addresses, or file names. Redact sensitive information first.

7.1 Compare Clean and Configured Logs

  1. Run the same scene with --no-config and save its log.
  2. Run it normally and save a second log.
  3. Confirm both runs selected the same audio, video, and subtitle tracks.
  4. Compare loaded scripts, active profiles, decoder choice, output behavior, and delay properties.
  5. Change one relevant difference and repeat the test.

Success means the log confirms stable playback, the expected tracks, and no unexplained delay setting. Once the symptom is gone, preserve the working command and stop making changes.

8. Run a Clean Temporary Test Before Permanent Changes

Use a small test matrix rather than editing many options simultaneously:

  1. Run the local file with --no-config.
  2. Select the intended audio and subtitle tracks.
  3. Test beginning, middle, and end.
  4. For constant offset, adjust with z, Z, or --sub-delay.
  5. For drift, verify the subtitle release and timeline instead of adding a global delay.
  6. If playback stutters, compare hardware decoding and remove expensive shaders temporarily.
  7. For URLs, compare a local file and inspect network or external-tool logs.
  8. Restore configuration components one at a time.

This process protects a working customized setup. It also prevents a subtitle-file mismatch from turning into an unnecessary GPU, audio, or operating-system troubleshooting project.

9. Quick Fix Checklist

  • Run mpv --no-config "file" to separate media problems from configuration problems.
  • Confirm the correct subtitle and audio tracks are selected.
  • Use z for an earlier subtitle display and Z for a later display.
  • Use --sub-delay=SECONDS for a precise, temporary constant offset.
  • Test multiple scenes before accepting the correction.
  • Replace subtitles made for a different release when timing drifts or jumps.
  • Search mpv.conf, input.conf, profiles, and scripts for delay or speed changes.
  • Use the stats overlay to identify dropped frames and playback stalls.
  • Capture a redacted log when the cause remains unclear.
  • Stop as soon as synchronization remains correct across the file.

10. Frequently Asked Questions

10.1 Why are mpv subtitles always two seconds early?

A stable two-second offset usually means the subtitle timestamps differ from the media by a constant amount. Press uppercase Z repeatedly or launch with approximately --sub-delay=2. If that correction remains accurate throughout the video, no deeper playback change is necessary.

10.2 Why do subtitles become more out of sync over time?

Progressive drift commonly points to a subtitle file made for a different release, a timing-rate mismatch, or problematic source timestamps. A constant delay only moves every subtitle equally, so it cannot correct increasing drift.

10.3 How do I save a subtitle delay for one file?

Save the working command, such as mpv --sub-delay=1.2 "video.mkv", in a trusted local batch file, shell script, shortcut, or launcher. This keeps the correction file-specific and avoids affecting unrelated videos.

10.4 Why do z and Z not change subtitle timing?

Your input.conf, a script, keyboard layout, window manager, or front end may override the default keys. Test with --no-config and click the mpv window before pressing the keys. You can always verify the feature directly with the --sub-delay command-line option.

10.5 Can hardware decoding cause subtitle sync problems?

It can contribute indirectly if decoding or frame presentation stalls, but it is not the usual cause of a stable subtitle-only offset. Check dropped frames and compare --hwdec=no with --hwdec=auto. If both play smoothly and the offset is constant, use subtitle delay instead.

10.6 Why does the problem happen only with an online stream?

The stream may use discontinuous timestamps, separate audio and video renditions, segmented delivery, or subtitle tracks aligned to another rendition. Test with --no-config, inspect the selected tracks and logs, verify the trusted yt-dlp path when applicable, and compare a known-good local file. If only the source fails at the same segment boundary, avoid changing global mpv settings.


Citations

  1. Official reference for mpv options, subtitle delay, profiles, logging, hardware decoding, and configuration. (mpv Manual)
  2. Official source repository containing mpv documentation and default input configuration. (mpv GitHub Repository)
  3. Official documentation for the external media extraction tool commonly integrated with mpv. (yt-dlp GitHub Repository)
Cindy, ContentBASE creator assistant

MEET CINDY

Your ContentBASE creator assistant

Cindy helps creators find Canva templates, content ideas, and simple ways to make better social media posts faster.

Want ready-to-use templates? Claim the free Canva bundles or browse the full bundle store.