mpv OSD Font Too Small: How to Fix It

If the mpv on-screen display is difficult to read, the cause is usually an OSD size option, HiDPI scaling behavior, a profile override, or a script that controls its own text styling. The symptom may affect volume indicators, seek messages, track information, the stats overlay, or script-provided menus. These elements can look similar while being controlled by different settings, so the fastest solution is to identify exactly which text is wrong and test one option at a time.

This guide focuses specifically on OSD sizing in mpv on Windows, Linux, and macOS. It begins with a clean command that bypasses your normal configuration, then covers persistent settings, fullscreen behavior, stats script customization, profile conflicts, logging, and operating-system scaling. Unrelated media features such as subtitles, hardware decoding, HDR, yt-dlp, audio tracks, and network streams are considered only where they help isolate the display problem.

Side-by-side video player views showing a tiny OSD and a larger readable OSD.

1. Confirm the Symptom With a Minimal Clean mpv Command

Before editing mpv.conf, determine whether the small text comes from mpv itself or from your configuration. Open a terminal and launch a familiar local video with configuration loading disabled.

1.1 Run a configuration-free test

On Linux or macOS, use a command like this:

mpv --no-config --osd-font-size=40 "/path/to/video.mkv"

In Windows PowerShell, use the actual path to mpv.exe and your media file:

& "C:\Path\To\mpv.exe" --no-config --osd-font-size=40 "C:\Path\To\video.mkv"

While the file is playing, change the volume or seek so mpv displays an OSD message. Success means the volume, seek position, and other native OSD messages are clearly larger. If this fixes the issue, stop investigating GPU decoding, codecs, the media file, and network playback. The relevant cause is almost certainly in your normal configuration, profile selection, input bindings, or scripts.

If the OSD remains too small, repeat the test with a noticeably larger value, such as --osd-font-size=60. Testing an intentionally obvious size helps distinguish a setting that is being applied from one that is being ignored.

1.2 Identify which interface element is too small

Not every piece of text displayed over video uses the same control. Separate the symptom into one of these categories:

  • Native OSD messages, including volume, seeking, pause state, and track changes
  • The built-in stats script opened through its assigned key
  • Subtitles embedded in or loaded beside the media
  • A menu or interface supplied by an installed script
  • Terminal text printed outside the mpv video window

The osd-font-size option controls mpv OSD text, but it is not a universal font-size switch. Subtitles use subtitle styling options. The stats script and third-party menus can have independent script settings. Terminal output is controlled by the terminal application and operating system, not by mpv's OSD configuration.

2. Set osd-font-size in the Correct Configuration File

If the clean command works, make the setting persistent by adding it to the configuration file that your mpv installation actually loads.

2.1 Add one OSD size option

Open mpv.conf in a text editor and add this line:

osd-font-size=40

Save the file, close every running mpv instance, and launch mpv normally. Trigger a volume or seek message. If the native OSD now has the desired size, the fix is complete. Do not add scaling options or modify script settings unless another specific overlay remains wrong.

Common configuration locations include:

  • Linux: ~/.config/mpv/mpv.conf
  • macOS: ~/.config/mpv/mpv.conf
  • Windows: %APPDATA%\mpv\mpv.conf
  • Portable installations: a portable_config directory associated with the mpv executable

The effective location can differ when an XDG configuration directory, custom launcher, portable build, or --config-dir option is used. If editing the expected file changes nothing, do not create multiple copies at random. First inspect startup output or launch mpv with a known configuration directory.

2.2 Avoid incorrect command-line syntax in mpv.conf

Command-line options use leading hyphens, but entries in mpv.conf normally do not. Use osd-font-size=40 in the file, not --osd-font-size=40. Also ensure the line is not commented out with a leading #.

Change only this option for the first persistent test. Success looks like a visible size change in native OSD messages after restarting mpv. Once that happens, stop changing general display or rendering settings.

3. Check HiDPI Scaling and Fullscreen Display Size

mpv's OSD is rendered into the video window, so perceived size can change with window dimensions, fullscreen output, display density, and scaling-related options. A configuration that looks comfortable on a laptop may look tiny on a high-resolution external monitor or projector.

3.1 Compare windowed and fullscreen playback

Play the same file in a modest window and then enter fullscreen. Trigger the same OSD action in both modes. Note whether the text is too small only in fullscreen, only on one monitor, or in both states.

If increasing osd-font-size produces an appropriate result in both modes, use that simple fix. If the relative size changes unexpectedly with the window, inspect osd-scale and osd-scale-by-window in your configuration. These options affect OSD scaling behavior and may have been added by an old configuration, copied profile, or frontend.

Test scaling options temporarily on the command line rather than immediately combining them in mpv.conf. The goal is to verify whether scaling behavior, rather than the base font size, is responsible.

3.2 Account for operating-system display scaling

Windows display scaling, macOS Retina behavior, and Linux desktop scaling can affect the apparent relationship between application content and physical screen size. Fractional scaling under Linux display servers can introduce additional differences between applications.

First compare mpv on each connected display. Then verify the operating system's scaling percentage and log out or restart the relevant desktop session if the platform requests it after a scaling change. Avoid changing system-wide scaling solely for mpv until the clean osd-font-size test has failed.

If the OSD is readable after setting an explicit font size, keep the operating-system settings unchanged. System scaling is relevant when many applications are unusually small, while an mpv-only symptom should normally be corrected inside mpv.

4. Fix the Stats Overlay and Script-Provided Menus Separately

A common source of confusion is that native OSD messages become larger while the stats overlay remains small. This does not mean osd-font-size is broken. The stats script can use its own font-size configuration.

4.1 Configure the stats script display

Test a stats-specific value temporarily:

mpv --script-opts=stats-font_size=16 "/path/to/video.mkv"

Open the stats overlay and compare it with the previous display. If the overlay becomes larger, make the setting persistent using mpv's script options or a stats script configuration file. A typical script configuration location is the script-opts directory within the active mpv configuration directory, using a file named stats.conf. The entry takes this form:

font_size=16

Use a value that fits the screen without causing important lines to be clipped. Success means the stats text is readable and its columns remain visible. Stop increasing the size once the overlay fits comfortably.

4.2 Check menu and user-interface scripts

Third-party menus, playlist interfaces, and custom OSD scripts may define their own font settings. Review the script's documentation and its file under script-opts. Do not assume that osd-font-size will override text explicitly styled by a script.

To confirm script involvement, run mpv with --no-config. If the small menu disappears entirely while native OSD text works, the menu belongs to a script loaded by your normal setup. Re-enable or test scripts individually rather than deleting the entire configuration directory.

Layered configuration sources converging on a video player's on-screen display.

5. Find Profile, Input Binding, and Frontend Overrides

An OSD setting can work initially and then change when a profile activates, a key binding runs a command, or a graphical frontend supplies additional arguments.

5.1 Search profiles for conflicting values

Search mpv.conf and any included configuration files for these terms:

  • osd-font-size
  • osd-scale
  • osd-scale-by-window
  • script-opts
  • profile

Later settings and active profiles can override earlier values. Profiles may be selected manually or activated conditionally based on fullscreen state, display characteristics, file properties, or other conditions.

Use --show-profile=PROFILE_NAME to inspect a named profile before applying it. If removing one conflicting OSD line from an active profile restores the expected size, stop there. There is no need to disable unrelated HDR, shader, audio, or hardware-decoding options.

5.2 Inspect input.conf

Review input.conf for bindings that change properties or execute commands. A custom key can set an OSD property, load a profile, or invoke a script with its own style. This is especially relevant when the text changes size only after pressing a particular shortcut.

Temporarily comment out the suspected binding, restart mpv, and repeat the same action using a standard control. Success means the OSD retains its chosen size throughout playback.

5.3 Check launcher and frontend arguments

A desktop shortcut, file association, shell alias, media library, or graphical frontend can append command-line options after loading mpv.conf. Test the same local file directly from a terminal. If direct playback works but frontend playback does not, inspect that application's mpv arguments and profile selections.

Shell quoting matters when paths contain spaces. Quote the media path and executable path appropriately for your shell. A malformed command may prevent the intended option from reaching mpv.

6. Use Logs and Runtime Information to Verify the Cause

Logs are useful when an option appears to be ignored or the wrong configuration file is loading. They are less useful when the only problem is choosing a comfortable numerical size.

6.1 Create a focused log

Launch mpv with a log file and increased verbosity:

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

Review the beginning of the log for configuration loading, scripts, profiles, and option-related errors. Do not publish the log without checking it first because paths, URLs, usernames, and other local details may appear in it.

Success means you can identify the active configuration or an invalid option. Correct that one issue, restart mpv, and test the OSD again.

6.2 Distinguish OSD issues from playback issues

The stats overlay can show rendering details, dropped frames, video output information, and hardware-decoding status. These details are helpful for playback performance, but they normally do not determine native OSD font size.

A subtitle track, audio track, HDR mode, video output driver, hardware decoder, screenshot format, yt-dlp path, stream URL, or high-bitrate file does not ordinarily require a different osd-font-size. If the small OSD occurs with local files and online URLs alike, focus on configuration and display scaling.

Only investigate a GPU driver or display-server issue when the overlay is corrupted, missing, clipped, or rendered at an obviously incorrect scale despite configuration-free tests. Updating through the operating system or hardware vendor's official channel is safer than installing random codec packs or binaries.

7. Run a Clean Temporary Test Before Making More Changes

When several settings have already been edited, return to a controlled comparison. Use one familiar local file so network access, yt-dlp extraction, authentication, buffering, and server behavior cannot interfere.

  1. Close all mpv instances.
  2. Launch the file with --no-config --osd-font-size=40.
  3. Trigger volume and seek messages.
  4. Compare windowed and fullscreen modes.
  5. Run a separate stats-specific test if only the stats overlay is small.
  6. Add the successful option to the active configuration file.
  7. Restart normally and verify the result.

This process changes one variable at a time. If the first command fixes native OSD text, do not modify subtitles, audio backends, hardware decoding, output drivers, shaders, HDR settings, or external tools. Those systems are not part of the confirmed cause.

8. Quick Fix Checklist

  • Test mpv --no-config --osd-font-size=40 FILE.
  • Confirm whether native OSD, subtitles, stats, or a script menu is affected.
  • Add osd-font-size=40 to the active mpv.conf.
  • Restart mpv after saving the configuration.
  • Compare windowed and fullscreen playback on each display.
  • Inspect osd-scale and osd-scale-by-window only if scaling remains inconsistent.
  • Use a stats-specific font_size setting when only stats text is small.
  • Search profiles, included files, input bindings, and frontend arguments for overrides.
  • Create a log when the expected configuration appears not to load.
  • Stop changing settings as soon as the affected overlay is readable and stable.

9. Frequently Asked Questions

9.1 Why does osd-font-size not change my subtitles?

OSD text and subtitles are separate. osd-font-size controls on-screen interface messages, while subtitles use subtitle styling options such as subtitle font size and scale settings. Identify whether the text appears as dialogue or as a player status message before editing either group.

9.2 Why is the stats overlay still tiny?

The stats script can use its own font-size option. Test --script-opts=stats-font_size=16, then place a confirmed value in the stats script configuration. Do not keep increasing the general OSD size if native messages already look correct.

9.3 Why is the OSD smaller in fullscreen?

The apparent size can be influenced by fullscreen resolution, display density, monitor switching, and OSD scaling behavior. Compare windowed and fullscreen playback with an explicit font size, then inspect osd-scale and osd-scale-by-window if the relationship remains inconsistent.

9.4 Can a profile override osd-font-size?

Yes. A manually selected or conditionally activated profile can supply another value. Search the configuration for the option and use --show-profile=PROFILE_NAME to inspect named profiles. Remove or adjust only the conflicting line.

9.5 Is hardware decoding causing the small OSD?

Usually not. Hardware decoding affects how video frames are decoded, while OSD sizing is controlled by OSD and scaling settings. Investigate the renderer or GPU driver only if text is corrupted, absent, clipped, or incorrectly scaled even during a clean --no-config test.

9.6 What is the safest single setting to test first?

Use --no-config --osd-font-size=40 with a local file. It bypasses existing configuration and tests one directly relevant option. If the native OSD becomes readable, copy the size into the active mpv.conf and stop once normal playback produces the same result.


Citations

  1. Official reference for mpv OSD, scaling, profiles, logging, and configuration options. (mpv Manual)
  2. Official guidance covering mpv configuration files and platform-specific setup. (mpv Configuration Files)
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.