A practical mpv setup guide for learning config file locations, building a small mpv.conf, customizing input.conf, and using profiles cleanly.
Key takeaways
The patterns worth keeping
Skim this block if you want the condensed version before reading the full walkthrough below.
Point 01
Learning where mpv reads configuration files is more useful than copying a giant config from the web.
Point 02
A short mpv.conf with a few proven defaults is easier to debug and easier to keep.
Point 03
input.conf is the right place for habit changes such as remapped keys and custom seek distances.
Point 04
Profiles help you keep scenario specific settings separate instead of overloading the base config.
Point 05
File specific and directory specific config should stay rare so normal playback remains predictable.
Section 01
Learn the config locations before changing anything
Most configuration problems come from editing the wrong file or guessing the wrong directory. Once you know where mpv actually reads its config, the rest of the setup becomes much more predictable and you stop troubleshooting imaginary mistakes.
This also keeps platform differences under control. The same concepts apply across Linux, macOS, and Windows, but the exact path can differ, so starting from the manual path list saves time.
- On Unix like systems, mpv reads mpv.conf and input.conf from ~/.config/mpv/ by default.
- On Windows, the config directory is typically under %APPDATA%/mpv/.
- Keep scripts in the scripts subdirectory and script specific settings in script-opts.
- Use the FILES section of the manual whenever you are unsure which platform path applies to you.
Section 02
Start with a small mpv.conf that you can explain
The manual examples are useful because they model restraint. A short base config is easier to understand, easier to undo, and less likely to introduce interactions that you do not notice until a strange file stops behaving the way you expect.
That approach also makes future tuning better. If each line exists for a reason, you can tell whether a setting helped, hurt, or simply added complexity without solving a real problem.
- Add only a few options at first instead of pasting a huge community config.
- Use save-position-on-quit=yes if you want normal closes to store resume position.
- Use autofit-larger=100%x100% if you do not want giant videos to open larger than the screen.
- Test hardware decoding with hwdec=auto or another manual recommended mode instead of hard coding a backend immediately.
Section 03
Customize input.conf safely and test your key ideas
input.conf is where mpv becomes personal. The important part is to change it deliberately, because a small remap that matches your habits is often more valuable than dozens of clever bindings you will never remember under pressure.
The testing commands matter because they remove guesswork. Instead of editing and hoping, you can confirm how mpv sees a key before you commit it to your daily setup.
- Put key remaps in input.conf instead of trying to memorize every default forever.
- Use mpv --input-keylist to list the key names that mpv can bind.
- Use mpv --input-test --force-window --idle to see how mpv interprets your keyboard input.
- Keep remaps simple at first, such as changing a seek distance or adding a quit binding you actually use.
Section 04
Use profiles when one setup is not right for every file
Profiles solve a real configuration problem: one off needs should not hijack the defaults you use for everything else. A presentation setup, a noisy network stream, or a special subtitle workflow can live in its own profile and stay out of the way until needed.
That makes your base config smaller and more trustworthy. When you know which settings are always active and which ones belong to a profile, debugging becomes much faster.
- Use [profile-name] blocks to group scenario specific settings in mpv.conf.
- Add profile-desc so profile names stay understandable in profile help output.
- Use --profile=help to list available profiles and --show-profile=<name> to inspect one in detail.
- Apply a profile at startup with --profile=<name> or later with the apply-profile command.
Section 05
Keep file specific and directory specific config for true edge cases
These features are powerful, but they are best used sparingly. If every unusual file gets its own override, you eventually lose track of why playback behaves differently from one folder to the next.
A cleaner pattern is to keep the base config simple, add named profiles for repeat scenarios, and reserve file specific config for the rare cases that truly need it.
- Use file specific config when a single file genuinely needs different settings.
- mpv can load filename based config files from your config directory for matching media files.
- Enable use-filedir-conf when you want mpv to also look for same directory mpv.conf and file specific configs beside the media.
- Treat these overrides as exceptions so your normal defaults remain stable and predictable.