# mpv

mpv is a versatile and lightweight media player with extensive customizability. It is used and recommended by most enthusiasts as it supports a wide range of video, audio, and subtitle formats. Additionally, it offers many advanced features and is available on multiple platforms.

# Installation

# Windows

  1. Download the latest Windows build of mpv from SourceForge: 64-bit 32-bit
  2. Once downloaded, extract the archive's contents to your specified location
  1. Navigate to the installer folder and run mpv-install.bat. Follow the on-screen instructions to complete installation

Installing mpv on Windows

Scoop is a command line package manager for Windows. We can use it to install and manage mpv. Scoop downloads and manages packages in a portable way, keeping them neatly isolated in %userprofile%/scoop and automatically adds them to your PATH.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
scoop bucket add extras
scoop install extras/mpv-git
scoop update mpv-git
scoop uninstall mpv-git

mpv can also be found in the various forks below:

If you don't want to setup mpv yourself, a portable build of mpv is available below. This is pre-configured to have the settings described in the Basic Config and Advanced Config and is updated daily. You can also just grab the portable_config folder and add it to your existing mpv installation.

mpv
mpv
portable_config
mpv

If you want to access mpv from the command line, you will need to add it to Windows PATH:

  1. In Windows Settings -> System -> About, locate Advanced System Settings. Head to Advanced and click on Environment Variables...
  2. Under System Variables, select Path and click on Edit...
  3. Click New and point the new variable to the mpv.exe located where mpv is installed
  4. Dismiss all of the dialogs by clicking OK

# macOS

Download the latest macOS build of mpv: Stable Nightly

Install Homebrew. Then, run the following command in your terminal:

brew install mpv

# Linux

Distributions usually package outdated, unmaintained, and unsupported versions of mpv. This is especially true for popular distros like Debian and Ubuntu. You are recommended to use mpv-build or third-party packages instead.

All of these packages are unofficial:

# Config Overview

By default, mpv's config can be found under %APPDATA%/mpv/. However, a folder named portable_config next to where mpv.exe is stored can override this location as the config folder.

.
└── mpv/
    ├── fonts/
    ├── script-opts/
    ├── scripts/
    ├── shaders/
    ├── input.conf
    └── mpv.conf
.
├── mpv.exe
└── portable_config/
    ├── fonts/
    ├── script-opts/
    ├── scripts/
    ├── shaders/
    ├── input.conf
    └── mpv.conf

%userprofile%/scoop/persist/mpv-git/
└── portable_config/
    ├── fonts/
    ├── script-opts/
    ├── scripts/
    ├── shaders/
    ├── input.conf
    └── mpv.conf
File Meaning
fonts/ Directory for custom font files. These are typically used for subtitles
scripts/ Directory for custom scripts. These are usually .lua scripts
shaders/ Directory for custom shaders used in scaling, filtering, etc.
script-opts/ Directory used by custom scripts to store additional options/configs
mpv.conf General user configuration for mpv
input.conf Keybind settings for mpv

Some folders may not be present by default and will need to be created.

For more details, see mpv's documentation on files.

# Basic Config

mpv is a great player out-of-the-box which can be extensively customized to your liking.

We recommend taking your time to create your own config. If you want to get up and running quickly, we suggest using the generic mpv.conf config below:

## Video
profile=high-quality
vo=gpu-next
scale-antiring=0.6
deband=no

# Dither
# This must be set to match your monitor's bit depth
dither-depth = 8

## Behavior (personal preference)
keep-open=yes
save-position-on-quit

## Screenshots
screenshot-format=png
screenshot-dir="~/Pictures/mpv"
screenshot-template="%F-%p-%n"

## Language Priority
# Sub
# Add enm before eng for honorifics
slang=eng,en
alang=jpn,ja

# Dub
# Uncomment this section to prefer English dub with subtitles for English dub
#slang=zxx,eng,en
#alang=eng,en
#subs-with-matching-audio=no
Option Meaning
profile The profile to be used by mpv. This should be left at the top of your file avoid conflict with other settings.
vo The output driver to be used by mpv. gpu-next is recommended for most modern hardware
scale-antiring Sets the strength of the antiringing filter. We recommend not setting too high of a value to prevent unwanted artifacts
deband Toggles debanding. profile=high-quality enables deband by default and is manually disabled in the config. We recommend enabling it manually or using auto-profiles when needed
dither-depth Sets the dither depth. This should be set to your monitor's bit depth to prevent banding
keep-open Whether to close or leave the player open after the file finishes playing. Use no if you want the player to close
save-position-on-quit Save the current playback position on quit. When the file is reopened, mpv will resume from where it left off. Remove this option if you do not want the player to save your position
screenshot-format File format used for screenshots. png is recommended for lossless quality
screenshot-dir The directory where screenshots will be saved. Currently set to your default pictures folder (Pictures/mpv)
screenshot-template The naming scheme for screenshots. %F-%p translates to filename-timestamp
slang Priority list of subtitle languages to use when there are multiple tracks
alang Priority list of audio languages to use when there are multiple tracks
subs-with-matching-audio Determines whether the subtitle and audio track must match their language. Use no if you want to watch dubs with subtitle track

# Advanced Config

mpv can be fine-tuned to meet your specific needs, from tweaking playback behavior to customizing video, audio, and subtitle settings. This section outlines the common options that can improve your experience.

# Debanding

Color banding is a visual artifact that is typically seen in gradients, where the colors can be easily differentiated by the human eye. See Tom Scott's video explaining color banding.

Banding (left) vs. No banding (right)

Banding (left) vs. No banding (right)

To enable debanding in mpv, apply the following changes to your config:

## Deband
# Set deband to "no" as we only need to enable it for specific cases
deband=no
deband-iterations=4
deband-grain=48
D cycle deband

After applying your changes, debanding can be applied at any time by pressing Shift + D.

# Scaling

Scaling is the process of taking content that does not match your screen resolution and resizing it to fit your display. See the Playback Guide for more information.

mpv has a built-in profile called high-quality which enables better upscaling using ewa_lanczossharp. By default, mpv uses lanczos and hermite. This option is necessary to enable even if you use an external shader, as it can act as a fallback.

Scalers only work when the resolution of your video does not match your display. They do not activate if the content resolution already matches your display resolution.

If you use high-end hardware, we suggest using nnedi3-nns256-win8x4.

Download the shader file and place it in your shaders folder.

To use the shader, add the following to your mpv.conf:

glsl-shaders="~~/shaders/nnedi3-nns256-win8x4.hook"

To activate it with a key, add the following to your input.conf, replacing G with the bind of your choice, if necessary (case-sensitive):

G change-list glsl-shaders toggle "~~/shaders/nnedi3-nns256-win8x4.hook"

If you use mid-range hardware, we suggest sticking to mpv's built-in high-quality profile.

To use the profile, add the following to the top of your mpv.conf:

## Video
profile=high-quality
vo=gpu-next
scale-antiring=0.6
deband=no

# Dither
# This must be set to match your monitor's bit depth
dither-depth = 8

This is included in the Basic Config.

If you use low-end hardware, we suggest sticking to mpv's built-in fast profile, which prioritizes performance over quality.

To use the profile, add the following to the top of your mpv.conf:

profile=fast

# Subtitle Restyling

Most releases will use their own font for .ass subtitles. These can be manually overridden by mpv, which can help improve readability or match personal preferences.

Below are a couple of commonly used styles:

Gandhi Sans
Gandhi Sans

Download this font here or use the button below:

Gandhi Sans

Run the .otf font file to install it system-wide or put it in your fonts folder. Add the following to your mpv.conf:

## Restyle Subtitles
# Set sub-ass-override to "no" as we only need to enable it for specific cases
sub-ass-override=no
sub-ass-style-overrides=playresx=1920,playresy=1080
sub-font="Gandhi Sans"
sub-font-size=50
sub-color="#FFFFFF"
sub-border-size=2.4
sub-border-color="#FF000000"
sub-shadow-color="#A0000000"
sub-shadow-offset=0.75
sub-bold=yes
sub-ass-style-overrides=Kerning=yes

Cabin
Cabin

Download this font here or use the button below:

Cabin

Run the .ttf font file to install it system-wide or put it in your fonts folder. Add the following to your mpv.conf:

## Restyle Subtitles
# Set sub-ass-override to "no" as we only need to enable it for specific cases
sub-ass-override=no
sub-ass-style-overrides=playresx=1920,playresy=1080
sub-font="Cabin"
sub-font-size=50
sub-color="#FFFFFFFF"
sub-border-size=2.4
sub-border-color="#FF000000"
sub-shadow-color="#A0000000"
sub-shadow-offset=0.8
sub-ass-style-overrides=Kerning=yes

Cabin F
Cabin F

Cabin

Run the .ttf font file to install it system-wide or put it in your fonts folder. Add the following to your mpv.conf:

## Restyle Subtitles
# Set sub-ass-override to "no" as we only need to enable it for specific cases
sub-ass-override=no
sub-ass-style-overrides=playresx=1920,playresy=1080
sub-font="Cabin F"
sub-font-size=50
sub-color="#FFFFFFFF"
sub-border-size=2.4
sub-border-color="#FF000000"
sub-shadow-color="#A0000000"
sub-shadow-offset=0.8
sub-ass-style-overrides=Kerning=yes

To activate it with a key, add the following to your input.conf, replacing k with the bind of your choice, if necessary (case-sensitive):

k cycle_values sub-ass-override "force" "no"

# Auto Profiles

Auto profiles allow users to automate actions based on certain conditions. Tasks such as debanding and subtitle restyling can be applied automatically when these conditions are met, such as file names.

For instance, some seasonal releases may exhibit banding issues and use subjectively less-appealing subtitle fonts. To address this, we can create a simulcast auto profile, which automatically applies debanding and subtitle restyling when playing releases uploaded by SubsPlease, Erai-raws, Tsundere-Raws, VARYG, or HorribleSubs.

Add the following to the end of your mpv.conf:

## Auto profiles
[simulcast]
profile-cond=filename:match("SubsPlease") or filename:match("Erai%-raws") or filename:match("Tsundere%-Raws") or filename:match("%-VARYG") or filename:match("HorribleSubs") or filename:match("SubsPlus%+")
profile-restore=copy
sub-fix-timing=yes
sub-ass-override=force
deband=yes

# Custom Scripts

mpv supports loading custom scripts, allowing you to further expand the player's functionality.

Below is a list of some popular scripts:

  • autocrop - Automatically crop the video by using lavfi's cropdetect filter to detect black bars
  • autoload - Automatically adds all files present in the folder to a playlist
  • change-refresh - Script to automatically change the refresh rate of the display to reflect the current video
  • mpv-playlistmanager - Script to create and manage playlists
  • mpv-webm - WebM maker for mpv
  • pause-when-minimize - Pauses playback when minimizing the window, and resumes playback when brought back
  • thumbfast - Display thumbnails when scrubbing video (may be needed for some Skins)
  • trackselect - Select tracks based on their title

# Skins

You can customize how mpv looks using skins. These are subject to personal preference, so find what works best for you.

Below is a list of some popular skins: