mpv Interpolation Not Working: How to Fix It

  • Test interpolation cleanly with display-resample and no configuration
  • Verify refresh rate, tscale, GPU load, profiles, and hardware decoding
  • Use stats and logs to identify overrides or performance limits

When mpv interpolation is not working, motion may still look uneven, the interpolation setting may appear inactive, or enabling it may make no visible difference. The most common causes are an incompatible video synchronization mode, a display refresh rate that already matches the video closely, an overridden configuration option, or insufficient GPU performance. Interpolation in mpv is not frame generation in the same sense as motion smoothing on many televisions. It blends nearby video frames to reduce judder caused by differences between video frame rate and display refresh timing.

The safest troubleshooting method is to begin with a clean command, confirm that interpolation can work on the current display, and then restore custom settings one group at a time. This avoids damaging a working configuration and helps distinguish an mpv player issue from a display, driver, stream, or media limitation.

Video playback test showing a smooth camera pan beside a clean terminal setup.

1. Confirm the Symptom With a Minimal Clean mpv Command

Before editing mpv.conf, test one local video without loading your normal configuration, scripts, profiles, input bindings, or shaders. Use a file with a known frame rate, preferably a typical 23.976, 24, 25, or 30 FPS video displayed on a 60 Hz or higher-refresh monitor.

Open a terminal or command prompt and run:

mpv --no-config --interpolation=yes --video-sync=display-resample "path/to/video.mkv"

On Windows, use the complete path to mpv.exe if mpv is not in PATH:

"C:\path\to\mpv.exe" --no-config --interpolation=yes --video-sync=display-resample "C:\Videos\test.mkv"

On Linux or macOS, quote paths containing spaces:

mpv --no-config --interpolation=yes --video-sync=display-resample "$HOME/Videos/test file.mkv"

This test addresses the two core requirements. The interpolation option enables temporal interpolation, while video-sync=display-resample synchronizes playback to the detected display refresh rate and resamples audio as needed. Using --no-config prevents an old profile, script, shader, or later option from silently reversing the test settings.

Success usually looks like more even camera pans and scrolling motion, with stable display synchronization and no rapid increase in dropped or delayed frames. Interpolation does not necessarily make 24 FPS video look like native 60 FPS footage. If the clean command improves motion without performance problems, stop changing global system settings. The cause is probably inside your normal mpv configuration.

1.1 Test a Suitable Frame-Rate Mismatch

Interpolation is easiest to evaluate when the video frame rate does not divide evenly into the display refresh rate. For example, 24 FPS playback on a 60 Hz display normally requires uneven frame presentation. Interpolation can blend the transitions to reduce visible judder.

A 30 FPS video on a 60 Hz display, a 25 FPS video on a 50 Hz display, or a 24 FPS video on a display operating near 120 Hz may already have regular frame pacing. In those cases, interpolation may be enabled but provide little visible change. A variable-refresh-rate display can also make the result less obvious.

Do not judge interpolation from a static scene. Use a slow horizontal pan, moving credits, or another sequence with predictable motion. Stop testing once motion is even and the player reports no sustained timing problems.

2. Check the Options That Directly Control Interpolation

2.1 Verify interpolation and video-sync

Open your mpv.conf and look for conflicting entries. Common locations include %APPDATA%\mpv\mpv.conf on Windows, ~/.config/mpv/mpv.conf on Linux, and ~/.config/mpv/mpv.conf on macOS. The exact active configuration location can depend on how mpv was packaged or launched.

A basic configuration is:

interpolation=yes
video-sync=display-resample

Search the entire file for later lines such as interpolation=no or another video-sync value. Later options and activated profiles can override earlier settings. Also inspect included configuration files if your setup uses include=.

Modes that prioritize audio timing or ordinary playback behavior may not provide the display-resampling environment expected for interpolation. For this symptom, explicitly test display-resample rather than assuming that interpolation=yes alone guarantees a visible result.

2.2 Test tscale without expensive custom shaders

The tscale family of options controls temporal scaling used by interpolation. A practical starting point is to leave the defaults intact. If your configuration contains experimental temporal scaling settings, temporarily remove them or test a known option directly:

mpv --no-config --interpolation=yes --video-sync=display-resample --tscale=oversample "video.mkv"

You can also test other tscale filters supported by your installed mpv build, but do not assume that a more expensive filter always looks better. Filter behavior, blur, smoothness, and GPU cost vary. Check the manual for the options recognized by your actual installation with:

mpv --list-options

If a simple tscale setting works but a customized one causes delayed frames or stutter, the interpolation mechanism is functional. Keep the simpler setting or reduce other GPU-heavy processing.

2.3 Inspect profiles, input bindings, and scripts

An auto profile may activate for HDR, a particular resolution, fullscreen playback, a protocol, or a filename pattern. It can replace video-sync, disable interpolation, or load expensive shaders. Run:

mpv --show-profile=profile-name

Replace profile-name with the profile you suspect. This displays the profile's options without requiring guesswork.

Check input.conf for keys that toggle interpolation, video sync, shaders, or profiles. A binding can make behavior change between launches or after an accidental key press. User scripts can also set properties after startup, so repeat the test with scripts disabled through --no-config or temporarily launch with a clean configuration directory rather than deleting your existing one.

2.4 Separate unrelated playback settings

Subtitle rendering, selected audio tracks, screenshots, yt-dlp, and IPC do not normally enable or disable interpolation. They matter only when they change timing, load, or the actual media being played.

  • Complex ASS subtitles can increase rendering load, particularly at high resolutions.
  • Audio filters or an unstable audio device can interfere with display-resample timing.
  • HDR tone mapping and high-quality scaling can consume GPU resources needed by temporal scaling.
  • Screenshot settings affect interpolation only when captures or screenshot hooks create load.
  • IPC clients or scripts may change mpv properties during playback.
  • yt-dlp can select a stream whose resolution, frame rate, or codec differs from the expected format.

Use --sid=no for a temporary subtitle-free test and select a normal audio track if timing becomes unstable only with a particular file. If interpolation works after one of these changes, re-enable features individually and stop when the conflicting load or option is identified.

3. Check the Display, GPU, Hardware Decoder, and Media Source

3.1 Confirm the operating system refresh rate

mpv relies on accurate display timing. Verify that the operating system has not reset a high-refresh monitor to 60 Hz, 30 Hz, or another unintended value. This can happen after changing ports, cables, drivers, display modes, or multi-monitor arrangements.

On Windows, inspect Advanced display settings. On Linux, check the active mode in your desktop display panel and consider whether X11 or Wayland reports timing differently. On macOS, inspect the display refresh setting in System Settings where available. Test mpv on one display if monitors have substantially different refresh rates.

Success means mpv detects stable timing close to the operating system's selected refresh rate. Once the correct display is active and motion is even, avoid forcing custom timing values unless logs show that automatic detection is inaccurate.

3.2 Reduce shader and GPU pressure

Interpolation adds GPU work because mpv must sample frames over time. HDR tone mapping, debanding, image scaling, custom GLSL shaders, high bit-depth output, and 4K or 8K media may compete for the same resources.

Test without custom shaders:

mpv --no-config --interpolation=yes --video-sync=display-resample "video.mkv"

If that works, restore your normal settings in groups. Add scaling first, then HDR processing, then debanding, and finally third-party shaders. Watch for delayed frames after each change. A lower-cost scaling algorithm or simpler shader chain is preferable to interpolation that consistently misses presentation deadlines.

Update the GPU driver through the operating system, hardware vendor, or trusted package repository. Avoid random codec packs and unofficial binary bundles. mpv normally uses its own supported decoding stack, so installing a generic codec pack is unlikely to repair interpolation.

3.3 Compare hardware decoding modes

Hardware decoding reduces CPU use, but driver and video-output interactions can differ by platform. Run one test without hardware decoding:

mpv --no-config --hwdec=no --interpolation=yes --video-sync=display-resample "video.mkv"

Then test the normal automatic mode:

mpv --no-config --hwdec=auto --interpolation=yes --video-sync=display-resample "video.mkv"

If software decoding cannot keep up, that result does not prove hardware decoding is broken. Use a lower-resolution sample to compare behavior. If only one hwdec mode produces stable output, keep that mode for the affected codec or create a narrow profile instead of changing every file.

3.4 Compare local files with streams

If interpolation fails only for an online URL, network share, playlist, or yt-dlp source, first download or use a lawful local test file with similar frame rate and resolution. Network buffering can look like motion judder, but interpolation cannot create missing data or repair pauses caused by an unstable connection.

Use the track list or stats display to verify that the stream is actually the expected frame rate. Adaptive services may choose 30 FPS when you expected 60 FPS, or select a resolution too demanding for the GPU. Confirm that yt-dlp is installed through a trusted source and is visible to mpv if direct site URLs depend on it. DRM-protected sources cannot be repaired by changing interpolation settings.

Playback diagnostics connecting frame timing, performance counters, and a focused log.

4. Use mpv Diagnostics Instead of Guessing

4.1 Open the stats overlay

During playback, use mpv's stats script, commonly available through the i key, to inspect video FPS, display FPS, dropped frames, delayed frames, video output, decoding, and synchronization information. Key behavior can differ if input.conf has been customized, so consult the default bindings or invoke the stats script through your configured binding.

Look for these signs:

  • The source FPS matches what you expect from the file or stream.
  • The display FPS is detected and remains stable.
  • Dropped or delayed frame counters do not rise continuously.
  • The selected video track is the intended track.
  • The active output and hardware-decoding state match the test command.

If interpolation is enabled but delayed frames climb quickly, the issue is likely performance rather than configuration. If the display and video rates already divide evenly, a subtle visual difference is normal.

4.2 Create a focused log

Run mpv from a terminal and save diagnostic output:

mpv --log-file=mpv-interpolation.log --msg-level=all=v --interpolation=yes --video-sync=display-resample "video.mkv"

Verbose logs can be large. Reproduce the issue briefly, close mpv, and search the log for interpolation, video-sync, display, vo, hwdec, dropped, audio, shader, and error. Remove private file paths, URLs, tokens, and headers before sharing a log publicly.

Terminal output can also reveal an unknown option, an unavailable video output, a failed shader compilation, a script error, or inaccurate display timing. Correct the first relevant error rather than changing unrelated options.

4.3 Verify tracks and runtime property changes

Use the on-screen track list or terminal output to confirm the active video and audio tracks. Files can contain alternate-angle, low-frame-rate, attached-picture, or unusual tracks. IPC clients and scripts can change properties after startup, so compare normal playback with a clean --no-config session.

If the clean session remains correct for the same file, GPU, and display, the operating system and media are probably not the primary cause. Return to profiles, scripts, input bindings, and included config files.

5. Run a Clean Temporary Test Before Editing Everything

Create a temporary empty directory and tell mpv to use it as the configuration directory if your build supports the relevant configuration-directory option. Alternatively, continue using --no-config. Do not delete or rename your entire normal configuration folder as a first step.

Use this order:

  1. Test a modest local file with --no-config, interpolation, and display-resample.
  2. Confirm the operating system refresh rate and inspect mpv stats.
  3. Compare hwdec=no and hwdec=auto.
  4. Add your normal video output and basic scaling options.
  5. Add HDR processing or custom shaders one group at a time.
  6. Restore scripts, input bindings, profiles, subtitles, and IPC integrations last.

After every step, replay the same scene. Success means motion remains even, audio stays synchronized, and dropped or delayed frames do not accumulate. Stop changing settings at the first stable configuration. If adding one group recreates the problem, inspect only that group.

6. Quick Fix Checklist

  • Run mpv --no-config --interpolation=yes --video-sync=display-resample "video.mkv".
  • Test a video frame rate that does not divide evenly into the display refresh rate.
  • Confirm the operating system is using the intended monitor and refresh rate.
  • Check mpv.conf for later overrides, includes, and automatically activated profiles.
  • Return custom tscale settings to defaults or test a simpler filter.
  • Disable custom shaders temporarily and watch delayed-frame counters.
  • Compare hardware decoding with hwdec=auto and hwdec=no.
  • Use a local file to separate interpolation problems from network buffering.
  • Inspect stats, the track list, terminal output, and a short verbose log.
  • Restore settings one group at a time and stop when playback is stable.

7. Frequently Asked Questions

7.1 Does interpolation require display-resample?

For the normal mpv use case, pair interpolation=yes with video-sync=display-resample. Interpolation is designed to smooth temporal transitions while playback is synchronized to the display. Enabling interpolation without a suitable synchronization mode may produce no obvious improvement.

7.2 Why does 24 FPS video still not look like 60 FPS?

mpv interpolation blends temporal samples to reduce judder from refresh-rate mismatch. It does not necessarily generate fully new motion-estimated frames like television motion-smoothing systems. The expected result is more even presentation, not the complete appearance of native high-frame-rate footage.

7.3 How can I tell whether interpolation is active?

Use the stats overlay and compare the same panning scene with interpolation enabled and disabled. Confirm the active video-sync mode, source FPS, display FPS, and frame counters. You can also launch with verbose logging to identify option overrides or output errors.

7.4 Can subtitles prevent interpolation from working?

Ordinary subtitles do not disable interpolation. Very complex animated ASS subtitles can increase rendering load, however. Test with --sid=no. If delayed frames stop increasing, subtitle rendering is contributing to a performance limit rather than changing interpolation directly.

7.5 Can HDR or shaders cause stutter after interpolation is enabled?

Yes. HDR tone mapping, high-quality scaling, debanding, and custom shaders can raise GPU usage. Interpolation adds additional work. Remove shaders, confirm stable playback, and then restore processing gradually. Choose visual settings that do not cause sustained delayed frames.

7.6 Why does interpolation work for local files but not streams?

A stream can stall, switch formats, report unusual timestamps, or arrive too slowly. yt-dlp may also select a different frame rate or resolution than expected. Verify the selected track and test a comparable lawful local file. If only the stream pauses, investigate network access, buffering, and format selection rather than tscale.


Citations

  1. Official reference for interpolation, video synchronization, temporal scaling, logging, and configuration options. (mpv Manual)
  2. Official source repository, issue tracker, documentation, and project information for mpv. (mpv 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.