mpv Audio Out Of Sync: How to Fix It

  • Distinguish a constant audio offset from progressive drift before changing settings.
  • Test mpv without configuration to isolate profiles, scripts, shaders, and bindings.
  • Diagnose Bluetooth, hardware decoding, stream timing, tracks, and output backends.

When mpv audio is out of sync, the first question is whether you have a constant offset or timing that gradually drifts. A constant offset usually points to an audio-delay setting, Bluetooth latency, incorrect timestamps, or a file-specific offset. Progressive drift more often indicates damaged timestamps, stream timing problems, playback performance issues, refresh-rate behavior, or an unstable audio or video clock. The safest approach is to reproduce the symptom with a clean mpv command, identify the failure category, and change one relevant option at a time.

Video and audio timelines illustrating a fixed offset and progressive drift.

1. Confirm the Symptom With a Minimal Clean mpv Command

Before editing mpv.conf, changing GPU settings, or removing scripts, test the same media without your normal configuration. This separates an mpv configuration problem from a media, operating-system, or output-device problem.

1.1 Test a local file without configuration

Open a terminal, PowerShell window, or command prompt and run mpv with --no-config. Quote the path if it contains spaces.

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

On Windows, you may need to run mpv.exe from its installation directory or provide the complete executable path. On Linux and macOS, the command normally works if mpv is available through your shell's PATH.

Play long enough to observe the original symptom. If the clean command stays synchronized, the file, basic decoder path, and default outputs probably work. Stop changing operating-system settings and investigate your mpv configuration, profiles, scripts, and input bindings instead. If the problem remains, continue testing the media, output device, hardware decoding, and timing path.

1.2 Distinguish a constant offset from drift

Use visible speech, a clap, a door closing, or another sharp event as a reference. Then classify the problem:

  • Constant offset: Audio leads or trails by roughly the same amount throughout playback.
  • Progressive drift: Playback begins in sync but the timing difference increases over time.
  • Intermittent desynchronization: Sync changes after seeking, buffering, track switching, screenshots, or dropped frames.
  • Perceived subtitle mismatch: Subtitles are early or late, but picture and sound remain aligned.

This distinction determines the next step. Do not compensate for progressive drift with a fixed delay. A fixed value may align one scene while making another scene worse.

1.3 Compare another file and output device

Test a known-good local file with clear speech. If only one file fails, suspect its timestamps, variable frame rate, damaged container, or track metadata. If every file fails only through Bluetooth headphones, suspect output latency. If local files work but a network stream does not, focus on stream timestamps, buffering, network stability, and the external URL resolver.

A successful comparison gives you a boundary: one file, one source type, one output device, or all playback. Once that boundary is clear, stop performing unrelated changes.

2. Check Settings Directly Related to A/V Sync

2.1 Inspect and reset audio delay

The --audio-delay option intentionally shifts audio timing. A positive or negative value can correct a constant offset, but an old value in mpv.conf or a profile can also create the problem.

Test the neutral value:

mpv --no-config --audio-delay=0 "path/to/video.mkv"

If you need to compensate for a consistently misaligned file, try a small value and adjust it carefully:

mpv --no-config --audio-delay=0.150 "path/to/video.mkv"

The value is measured in seconds. The necessary sign depends on whether audio needs to be delayed or advanced, so test in small increments. Keyboard bindings may also alter audio delay during playback. If the offset appears after an accidental key press, restart with --audio-delay=0 and inspect input.conf for commands that change audio-delay.

Success means the offset remains corrected at the beginning, middle, and end. If the error continues growing, return the delay to zero and investigate drift instead.

2.2 Understand the autosync option

mpv's --autosync option can gradually adjust audio timing based on measured differences between audio and system time. It is not a universal repair for bad timestamps, severe playback overload, or a fixed Bluetooth delay. Test it only after confirming that the symptom is gradual or unstable rather than a simple constant offset.

For example:

mpv --no-config --autosync=30 "path/to/video.mkv"

Do not immediately make this permanent. Compare a meaningful section with and without the option. Success means small timing errors settle without audible artifacts, unstable speed, or renewed drift after seeking. If it makes no clear improvement, remove it and continue diagnosing the underlying clock or timestamp problem.

2.3 Audit mpv.conf, profiles, and input.conf

If --no-config fixes the issue, inspect your configuration rather than deleting the entire folder. Search mpv.conf and included files for options involving:

  • audio-delay, autosync, or audio output selection
  • Video synchronization, interpolation, display synchronization, or refresh-rate behavior
  • speed, frame dropping, cache settings, or demuxer behavior
  • hwdec, GPU output, shaders, scaling, tone mapping, or HDR processing
  • Conditional profiles activated by file type, protocol, resolution, or display

Also inspect input.conf for bindings that alter audio delay, speed, track selection, video synchronization, or frame dropping. Comment out one suspicious line at a time, launch a new mpv process, and repeat the same scene.

Use --show-profile=PROFILE_NAME to print the contents of a named profile before applying or changing it. This is useful when a profile looks harmless but contains inherited or included settings.

2.4 Temporarily disable scripts and heavy shaders

Scripts can modify properties, apply profiles, alter speed, load external tracks, or react to file events. Complex shaders, high-quality scaling, and HDR tone mapping can also make video rendering miss deadlines on an overloaded GPU. That performance problem may look like an mpv player sync issue, especially with high-resolution or high-bitrate media.

Use --no-config as the broad isolation test. If it succeeds, restore your normal configuration in stages: basic options first, then profiles, then shaders, and finally scripts. Do not remove everything permanently before identifying the trigger.

Success means normal frame delivery and stable synchronization after the responsible component is disabled or simplified. Stop when you identify the smallest reproducible change.

2.5 Verify audio, video, and subtitle tracks

A file may contain several language tracks, commentary, descriptive audio, alternate cuts, or external tracks with different timing. Open mpv's track list or use the interactive controls to confirm that the intended audio and video tracks are active. Terminal output also reports detected streams.

Subtitles do not normally control audio-to-video synchronization. However, an incorrectly timed subtitle track can make correctly synchronized speech seem wrong. Disable subtitles temporarily. If lips and sound align while text remains mistimed, adjust subtitle delay or select the proper subtitle track instead of changing audio delay.

Success means the intended audio track matches the visible edit and remains aligned with the picture. If only subtitles are wrong, stop modifying A/V settings.

Playback signal path connecting a media source, processor, display, and audio devices.

3. Check Hardware, Operating-System, and Source Causes

3.1 Test hardware decoding

Hardware decoding can reduce CPU usage, but compatibility varies by codec, GPU, driver, operating system, and output path. Compare default behavior with an explicit software-decoding test:

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

If software decoding stays synchronized while hardware decoding does not, update the GPU driver through the operating system or hardware vendor's trusted channel, and test a supported hardware-decoding mode documented by mpv. Do not install random codec packs. mpv normally brings the decoding components it needs through legitimate builds and package sources.

Software decoding may itself be too slow for 4K, HDR, AV1, HEVC, or high-bitrate media. Watch CPU use and dropped frames. Success means the chosen decoding path plays at normal speed without accumulating dropped frames or sync error.

3.2 Reduce GPU and HDR workload

HDR tone mapping, high-quality scaling, interpolation, debanding, and multiple custom shaders can overwhelm the rendering path even when decoding is fast enough. Test the file clean, then add these features back individually.

If only HDR media fails, compare it with ordinary SDR media of similar resolution and codec. Check whether the display mode, GPU driver, or compositor changes when HDR playback starts. On Linux, compare relevant display-server conditions if you can safely test another supported session. On Windows and macOS, verify that system HDR behavior and the selected display are consistent.

Success is smooth playback with stable frame timing. Once one expensive shader or output setting is identified, tune or remove that component rather than changing audio delay.

3.3 Account for Bluetooth latency

Bluetooth audio adds buffering and codec latency. A stable delay that appears only on Bluetooth headphones or speakers is usually an output-path issue, not timestamp drift inside the file.

  1. Replay the same scene through wired headphones or built-in speakers.
  2. Confirm whether the offset disappears.
  3. Reconnect the Bluetooth device and ensure it is using the intended playback profile rather than a call-oriented profile.
  4. If the delay is stable, apply a modest temporary --audio-delay value for that output scenario.

A device-specific mpv profile can be convenient, but create one only after confirming the offset is consistent. Success means Bluetooth playback remains aligned across seeks and throughout the file. If the offset varies, a fixed delay is not the correct remedy.

3.4 Check audio backends and exclusive access

If all files drift on one operating-system audio output, test another device or mpv-supported audio output configuration. Audio enhancement software, virtual mixers, sample-rate conversion, and exclusive-access behavior can affect buffering or clock stability. Close unnecessary virtual audio tools and compare the direct system output.

Use terminal output to see which audio output mpv selected. Avoid forcing a backend merely because it is popular on another platform. Success means consistent sync through the normal supported backend without dropouts or repeated audio reinitialization messages.

3.5 Separate local files from URLs and network streams

Live streams and some online videos can contain discontinuous, missing, or inaccurate timestamps. Network stalls may also cause buffering and recovery behavior that resembles drift. Test a local file first. Then test the stream again without your configuration.

If mpv relies on yt-dlp to resolve a URL, verify that the external tool is installed through its official project or a trusted package manager and is discoverable through PATH. Terminal output should reveal resolver failures, unavailable formats, or malformed URLs. An outdated resolver can prevent playback or select an unexpected format, but it should not be treated as the automatic explanation for every sync problem.

For a stream, success means synchronization survives buffering and seeking where the source permits it. If several players show the same timing problem at the same points, the stream itself is likely defective. No local mpv delay can reliably repair timestamps that change unpredictably.

3.6 Consider damaged or unusual media files

If one local file fails in multiple players, its container timestamps, edit lists, variable-frame-rate metadata, or encoded streams may be faulty. Check a legally obtained replacement copy or remux the media with a reputable tool only if you understand the source and track layout. Preserve the original while testing.

File paths and permissions matter when mpv loads external audio, subtitles, scripts, or playlists. Quote paths containing spaces and confirm that the current user can read every referenced file. A missing external audio file may cause mpv to fall back to a different embedded track, creating the impression of incorrect synchronization.

4. Use mpv Diagnostics to Identify the Failure

4.1 Read terminal output and create a log

Launch mpv from a terminal instead of by double-clicking the file. Watch for decoder errors, timestamp warnings, audio-device resets, dropped frames, script exceptions, failed URL resolution, or unavailable output drivers.

For more detail, increase message verbosity and save a log:

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

Logs can be large. Reproduce the problem briefly, close mpv, and inspect the relevant time range. Remove private file paths, URLs, usernames, tokens, or IPC details before sharing a log publicly.

4.2 Use the stats overlay

mpv's stats overlay helps reveal dropped frames, display timing, decoder load, cache behavior, and other playback information. The default interactive binding is commonly used to show statistics, although custom input bindings may replace it.

Observe the overlay during the exact moment synchronization changes. Rising dropped-frame counts or sustained rendering delays point toward performance or output timing. Stable performance with a fixed offset points more strongly toward audio delay, Bluetooth latency, or source timestamps.

4.3 Inspect active profiles and tracks

Use --show-profile for named profiles and review startup output for auto-profile activity. Confirm selected audio, video, and subtitle tracks after playback begins. With IPC-based controllers or scripts, check whether an external client changes properties after startup.

A clean start followed by sudden desynchronization after an IPC command, screenshot action, track switch, or script event narrows the cause considerably. Screenshots can briefly increase rendering or disk load, especially with large images or slow destinations, but they should not produce permanent drift under normal conditions. If sync changes only after screenshots, test a writable local screenshot directory and simpler screenshot settings.

5. Run a Clean Temporary Test Before Making Permanent Changes

Use a controlled sequence so that each result means something:

  1. Run the affected local file with --no-config.
  2. Set --audio-delay=0 and disable subtitles.
  3. Confirm the intended audio and video tracks.
  4. Test --hwdec=no.
  5. Compare wired or built-in audio with Bluetooth.
  6. Check the stats overlay for dropped frames or rendering overload.
  7. Test another known-good local file.
  8. Only then test the original URL, playlist, or network stream.
  9. Restore configuration sections one at a time.

Do not combine five speculative options into one command. If the result improves, you will not know which change mattered. A successful clean test plays the same reference scene repeatedly, survives seeking, and remains synchronized later in the file. When that happens, stop changing unrelated settings and reintroduce only the features you need.

6. Quick Fix Checklist

  • Classify the issue as constant offset, progressive drift, or intermittent timing loss.
  • Run mpv --no-config "file" before editing configuration files.
  • Reset unintended delay with --audio-delay=0.
  • Use a small audio delay only for a stable, repeatable offset.
  • Disable subtitles to verify that the problem is truly A/V sync.
  • Confirm the selected audio and video tracks belong to the same cut.
  • Compare hardware decoding with --hwdec=no.
  • Temporarily remove heavy shaders, HDR processing, and script effects.
  • Compare Bluetooth output with wired headphones or built-in speakers.
  • Test a local file before blaming yt-dlp or a network stream.
  • Use terminal output, the stats overlay, and a short diagnostic log.
  • Restore profiles and scripts one at a time after a clean test succeeds.

7. Frequently Asked Questions

7.1 How do I fix a constant audio offset in mpv?

First reset the delay with --audio-delay=0. If the file or output device has a repeatable constant offset, apply a small positive or negative --audio-delay value and test several points in the video. Stop once speech and visible actions remain aligned throughout playback.

7.2 Why does mpv begin in sync and drift later?

Progressive drift can result from bad timestamps, variable-frame-rate problems, stream discontinuities, rendering overload, dropped frames, or clock behavior in the audio and video output paths. A fixed delay is not an adequate drift fix. Test clean playback, inspect statistics, compare hardware and software decoding, and try another file.

7.3 Can Bluetooth cause mpv audio to lag?

Yes. Bluetooth introduces buffering and codec latency, and the amount can vary by device and operating-system profile. Compare the same scene through a wired or built-in output. If only Bluetooth has a stable offset, a device-specific audio delay may help.

7.4 Can hardware decoding make audio and video lose sync?

It can contribute when a particular decoder, driver, codec, or GPU output combination behaves poorly. Test with --hwdec=no. If that fixes the issue and the CPU can decode the file smoothly, investigate supported hardware-decoding modes and trusted GPU driver updates.

7.5 Should I use autosync for every file?

No. Use --autosync as a targeted experiment for timing instability, not as a blanket remedy. It does not repair every malformed file, overloaded GPU, Bluetooth delay, or broken stream. Keep it only if controlled comparisons show a repeatable improvement without side effects.

7.6 Why is mpv out of sync only for online video?

The stream may have unstable timestamps, separate audio and video formats, buffering discontinuities, or source-side encoding problems. yt-dlp may also be unable to resolve the intended formats if it is missing or outdated. Compare a local file, run mpv from a terminal, and check resolver and demuxer messages. If the same stream fails in several players, the source is probably responsible.


Citations

  1. Official mpv reference for audio delay, autosync, hardware decoding, logging, profiles, and playback options. (mpv Manual)
  2. Official project documentation and trusted release information for the external URL resolver used with mpv. (yt-dlp)
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.