mpv Screenshot Wrong Colors: How to Fix It

  • Compare clean SDR and HDR tests before editing your mpv configuration.
  • Check screenshot mode, tone mapping, ICC profiles, formats, shaders, and hardware decoding.
  • Use logs and controlled tests to isolate the exact color mismatch.

If an mpv screenshot has wrong colors even though the video looks correct in the player window, the screenshot is probably capturing a different stage of the video pipeline than the one you are viewing. HDR tone mapping, display color management, ICC profiles, screenshot mode, output format, shaders, hardware decoding, and image-viewer behavior can all create this mismatch. The fastest solution is not to change every mpv setting. First reproduce the symptom without your normal configuration, identify whether it affects HDR or SDR media, and then test the few options directly involved in rendering and screenshot creation.

Paused video beside a mismatched screenshot in a clean troubleshooting workspace.

1. Confirm The Symptom With A Minimal Clean mpv Command

Begin with a local video file that reliably produces the problem. A local file removes network behavior, yt-dlp, expiring URLs, and stream variability from the initial test. Run mpv with --no-config, pause on a representative frame, and create a screenshot from the console or with your normal screenshot key.

1.1 Start mpv Without User Configuration

On Windows, open PowerShell or Command Prompt in the directory containing mpv and run:

mpv.exe --no-config --pause "C:\Media\test-video.mkv"

On Linux or macOS, run:

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

Use quotes around paths containing spaces or shell-sensitive characters. Do not remove or rename your configuration folder. The --no-config option temporarily bypasses configuration files for this invocation, making it a safe diagnostic test.

Once the video opens, navigate to the affected scene and pause it. Open mpv's console if available and issue screenshot video to capture the video image without relying on a customized key binding. You can also compare screenshot subtitles and screenshot window. Exact screenshot command capabilities can vary with the mpv build, so check the command output or current manual if a flag is rejected.

Success means the clean screenshot resembles the paused video when both are viewed under comparable color-management conditions. If the clean test works, stop changing system-wide settings. The cause is probably in your mpv configuration, profile, shader, script, or input binding. If the mismatch remains, continue with HDR, color-management, format, GPU, and image-viewer checks.

1.2 Compare With A Known SDR Sample

Test an ordinary SDR video, preferably one identified as standard BT.709 content, in addition to the problematic file. Do not use a second unknown download as your reference because it may have incorrect or missing color metadata.

  • If SDR screenshots match but HDR screenshots do not, focus on HDR transfer functions, tone mapping, target display settings, and screenshot tagging.
  • If both HDR and SDR screenshots are wrong, investigate ICC handling, screenshot format, shaders, output drivers, GPU processing, and the application used to open the image.
  • If only one file is wrong, inspect that file's color metadata and compare it with another player or a trusted media-analysis tool.

Success is a repeatable boundary around the problem, such as “only HDR files differ” or “only my configured mpv differs.” Once you have that boundary, avoid unrelated audio, networking, or subtitle changes.

2. Check The mpv Settings Directly Related To Screenshot Color

A screenshot is not necessarily a photograph of the pixels already presented on the monitor. Depending on the screenshot command and rendering path, mpv may save the processed video frame, a frame with subtitles, or the composed player window. Those outputs can differ because display conversion, ICC correction, HDR presentation, dithering, scaling, and overlays do not always occur at the same stage.

2.1 Distinguish Video, Subtitle, And Window Screenshots

Compare the available screenshot targets deliberately:

  • screenshot video is useful for testing the video image without subtitles or the complete window composition.
  • screenshot subtitles can include the video plus visible subtitles or OSD elements, depending on the command and build behavior.
  • screenshot window aims to capture the composed window, making it the most relevant comparison when the display rendering itself is what you want to preserve.

If a window screenshot matches but a video screenshot does not, mpv is probably not failing to decode the video. The difference is more likely caused by processing applied during final display composition, such as HDR output conversion, an ICC profile, a shader, or display-specific color handling.

Check input.conf to see what your screenshot key actually invokes. A customized binding may use a different target than expected. Scripts can also intercept keys or trigger their own screenshot implementation. Test from mpv's console or temporarily start with --no-config to bypass those variables.

Success means you know which screenshot type matches your goal. If the window screenshot is correct and contains everything you need, you may use it and stop. If you need a clean video frame for editing or archival use, continue investigating the video screenshot's color representation.

2.2 Verify Screenshot Format And Color Tags

Review any options beginning with screenshot- in mpv.conf, command-line arguments, profiles, and scripts. In particular, check the selected image format, high-bit-depth behavior, output directory, filename template, and color-space tagging support.

PNG is a useful diagnostic format because it avoids JPEG's lossy compression. Higher bit depth can preserve gradients and reduce banding, but it does not guarantee that every image viewer will interpret HDR or wide-gamut data correctly. Conversely, converting an HDR-derived image into an ordinary SDR image requires suitable tone mapping, not merely a different file extension.

Temporarily remove custom screenshot format options or override them on the command line. For example, test PNG output with a clean configuration, then open the result in more than one color-managed application. If your mpv build exposes a screenshot color-space tagging option, compare its enabled and disabled states. Correct tags help compatible software interpret an image, but software that ignores or mishandles those tags can still display it incorrectly.

Success means the same screenshot appears reasonably consistent in multiple color-aware viewers. If only one viewer shows incorrect saturation, gamma, or contrast, stop changing mpv and troubleshoot that viewer's color management.

2.3 Inspect HDR Tone Mapping

HDR is the most common reason a screenshot looks washed out, too dark, overly bright, or differently saturated. An HDR video may use a PQ or HLG transfer function and a wide-gamut color space. Your display path may tone-map that signal for an SDR monitor, send HDR to an HDR-capable display, or apply operating-system HDR processing. A saved screenshot may instead contain pixels or metadata that the image viewer interprets differently.

Check whether the video is HDR through mpv's track and frame information or stats overlay. Look for transfer characteristics such as PQ or HLG, HDR metadata, and BT.2020-related color information. Then compare it with the SDR sample.

For an SDR-looking screenshot, use a consistent SDR target and tone-mapping path rather than relying on automatic behavior that may differ between display and capture. If you have custom options for target color space, target transfer function, peak detection, tone mapping, gamut mapping, or an HDR shader, disable them together for one clean test. Then add them back one at a time.

If the screen is operating in system HDR mode, also compare behavior with a window screenshot. An operating-system capture can have its own HDR-to-SDR conversion rules. Do not assume that an OS screenshot, an mpv video screenshot, and an image exported by an editor should be byte-for-byte identical.

Success means the screenshot and displayed frame have comparable brightness, contrast, and hue when viewed on the same display. Minor differences from dithering or peak adaptation can be normal. Once the visually important mismatch is resolved, stop adjusting tone-mapping parameters unless you are calibrating a controlled workflow.

2.4 Check ICC And Display Color Management

An ICC profile describes how a particular display reproduces color. mpv can use display color management in supported rendering configurations, while the screenshot may be stored in a standard or tagged output space. The image viewer may then apply its own interpretation. This can make both programs individually reasonable while their appearances differ.

Search your configuration for options involving icc-profile, automatic ICC selection, target color space, or display primaries. Run one test without custom ICC options and another with the known correct monitor profile. On multi-monitor systems, place mpv and the image viewer on the same display. Automatic profile selection may depend on the monitor, window location, operating system, and video output path.

Avoid downloading an arbitrary ICC profile for a monitor model. Unit variation, display mode, brightness, and calibration state matter. Use the operating system's assigned profile, a manufacturer profile from an official source, or a profile produced through actual calibration.

Success means mpv and a color-managed image viewer agree closely on the same monitor. If moving either window to another monitor changes the result, the issue is likely profile assignment or per-display color management rather than decoding.

2.5 Review Profiles, Shaders, Scripts, And Output Drivers

Use --show-profile=PROFILE_NAME to inspect a named profile before applying it. Check auto profiles that activate for HDR content, particular extensions, resolutions, protocols, or display conditions. A profile may silently enable shaders, alter tone mapping, select a video output, or change hardware decoding.

Temporarily disable custom GLSL shaders, user scripts, and script options. Shaders used for scaling, debanding, HDR conversion, gamut mapping, or stylistic changes may affect only a particular rendering stage. If --no-config fixes the screenshot, restore your setup in groups rather than deleting it:

  1. Load the main mpv.conf without scripts or shaders.
  2. Add named and automatic profiles.
  3. Add shaders and their parameters.
  4. Add scripts and script-specific configuration.
  5. Restore customized input bindings last.

Also compare the normal video output with a supported alternative available in your installed build. Do not copy old output-driver recommendations blindly. Use mpv --vo=help and the current mpv manual to see what your build supports.

Success occurs when one restored group recreates the mismatch. Stop there and narrow that group option by option.

Video frame passing through hardware, operating system, and display color-processing stages.

3. Check Hardware, Operating System, And Media Variables

3.1 Compare Hardware And Software Decoding

Hardware decoding can use different pixel formats, bit depths, interop layers, or GPU conversion paths. Run a temporary test with hardware decoding disabled:

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

Then compare it with your normal hardware-decoding configuration. If software decoding fixes the screenshot, inspect the selected hardware decoder and GPU interoperability path. Update the graphics driver from the GPU vendor or operating-system repository, not from a random driver or codec-download site.

This test can be demanding for high-bitrate 4K or 8K video. A slow or dropped-frame software test can still reveal whether colors are interpreted differently, but it is not automatically a suitable permanent configuration.

Success means you identify whether the mismatch depends on hardware decoding. If both paths match, restore hardware decoding and stop investigating it.

3.2 Account For Display Server And Operating-System HDR

On Windows, check whether system HDR is enabled and whether the image viewer supports the resulting screenshot representation. On Linux, note whether you are using X11 or Wayland and whether the compositor's HDR and color-management capabilities are involved. On macOS, compare applications known to participate in system color management.

A window screenshot may pass through the compositor or operating-system capture path, while a video screenshot can be generated directly from mpv's render pipeline. Therefore, a disagreement between those two outputs is valuable evidence, not merely another unexplained failure.

Permissions and file paths matter only if the screenshot is not written, is written somewhere unexpected, or a script fails to process it. They do not normally explain a successfully saved image with wrong colors. Likewise, the audio backend and audio-track selection are not plausible causes of screenshot color mismatch. Do not spend time changing them unless terminal output shows a broader initialization failure that prevents the intended video output from loading.

3.3 Separate Local Files From URLs And Streams

If the problem occurs with an online URL, playlist, or network stream, reproduce it with a local copy that you are authorized to access. Streaming services may provide different codecs, bit depths, color metadata, or resolutions depending on format selection. yt-dlp can influence which video format mpv receives, but it does not normally recolor decoded frames by itself.

Use mpv's track information to compare the actual video stream selected in each case. Confirm resolution, codec, pixel format, transfer characteristics, and color primaries. If an online source selects HDR while a local comparison is SDR, the difference is expected to affect screenshot handling.

Success means the same media stream produces the same result locally and remotely. If only the remote case differs, investigate format selection, URL handling, and stream metadata rather than global screenshot options.

4. Use mpv Diagnostics To Find The Active Difference

Run mpv from a terminal so warnings are visible. Increase relevant logging without making every subsystem excessively verbose. For example:

mpv --no-config --msg-level=vo=debug,video=debug --log-file=mpv-screenshot.log "test-video.mkv"

Subsystem names and available diagnostic detail can vary, so adjust the message levels if your build reports an invalid category. The log may reveal the chosen video output, decoder, pixel format, color metadata, hardware-decoding path, ICC behavior, or shader errors.

Use the stats overlay to inspect frame properties and rendering performance. Review the track list to confirm that the expected video track is active, especially in files containing multiple angles, SDR and HDR variants, cover art, or alternate streams. Subtitle and audio-track selection will not recolor the video, but confirming the selected video track can expose an unexpected source.

Use --show-profile for any profile that might activate. Also search your configuration files for screenshot, HDR, tone mapping, ICC, shader, GPU, video output, and hardware-decoding options. Record each command and result. A small table in your notes containing test command, media type, screenshot mode, viewer, and outcome is often enough to prevent circular troubleshooting.

Success means the logs or controlled tests identify one active difference. Warnings unrelated to rendering should not be treated as causes simply because they appear in red or contain the word “error.”

5. Run A Clean Temporary Test Before Making Permanent Changes

Use a simple test matrix rather than editing several options simultaneously:

  1. Run an SDR local file with --no-config.
  2. Run the problematic HDR or wide-gamut file with --no-config.
  3. Capture video, subtitle, and window screenshot variants.
  4. Open each image in two reputable, color-managed viewers.
  5. Repeat the failing case with --hwdec=no.
  6. Restore the normal configuration without scripts and shaders.
  7. Add profiles, shaders, and scripts one group at a time.

Change only one meaningful variable per comparison. Keep the video paused on the same frame and use the same monitor and viewer. Dynamic HDR peak detection, animated grain, temporal processing, and playback timing can otherwise make two captures slightly different.

When a test produces an acceptable match, repeat it once. If the result is stable, stop. Continuing to tweak unrelated settings after success can introduce new problems and make the final configuration harder to maintain.

6. Quick Fix Checklist

  • Test a local file with --no-config.
  • Compare an ordinary SDR sample with the affected HDR sample.
  • Compare video, subtitle, and window screenshot modes.
  • Use PNG temporarily and test more than one color-managed viewer.
  • Inspect HDR tone mapping, target color space, and screenshot tags.
  • Check ICC options and keep both windows on the same monitor.
  • Temporarily disable custom shaders, profiles, and scripts.
  • Inspect input.conf for a customized screenshot binding.
  • Compare normal hardware decoding with --hwdec=no.
  • Review the stats overlay, track list, terminal output, and log file.
  • For URLs, verify the selected stream is not an unexpected HDR variant.
  • Stop once one controlled change produces a stable, correct result.

7. Frequently Asked Questions

7.1 Why Does An HDR Screenshot Look Washed Out?

The image may contain HDR-derived values or color metadata that the viewer interprets incorrectly, or it may bypass the tone mapping used for the displayed video. Compare an SDR sample, inspect the video's transfer characteristics, and test a window screenshot. A consistent SDR tone-mapped output is usually easier to share across ordinary image viewers.

7.2 Why Does A Window Screenshot Match But A Video Screenshot Does Not?

The window capture can include final display processing that is absent from the video-frame capture. That points toward ICC correction, HDR presentation, shaders, compositor behavior, or another late rendering step. It generally indicates that basic video decoding is working.

7.3 How Do I Include Or Exclude Subtitles And OSD?

Use the screenshot command's video, subtitle, or window target instead of assuming a key's behavior. Check input.conf because users and scripts commonly redefine screenshot keys. Compare captures while paused so subtitle timing does not change between tests.

7.4 Can The Screenshot Format Cause Wrong Colors?

Yes, indirectly. Formats differ in supported bit depth and metadata, while image viewers differ in how they interpret color tags. Test PNG, use the format options supported by your mpv build, and compare the result in multiple color-managed viewers. Changing format alone does not perform correct HDR tone mapping.

7.5 Is yt-dlp Responsible For Screenshot Colors?

Usually not directly. However, format selection can cause mpv to receive an HDR stream instead of an SDR stream, or a stream with different metadata. Compare the selected video track and format with a local reference before changing yt-dlp paths or options.

7.6 Should I Delete My mpv Configuration?

No. Start with --no-config, which safely bypasses the configuration for one run. If that fixes the issue, restore configuration groups gradually until the responsible option, profile, shader, script, or binding is identified.


Citations

  1. Official mpv manual covering screenshot commands, video output, hardware decoding, profiles, logging, and color-management options. (mpv Manual)
  2. Official mpv documentation index and project resources. (mpv Documentation)
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.