mpv-synth is a Windows media player built on mpv, with frame interpolation, automatic HDR colour management, a filmstrip timeline, OpenSubtitles integration, and one-click browser streaming.
The third-party ecosystem hasn't kept pace with how people watch things now. The most popular options work, but they feel like they were designed a decade ago, because they were.
Clunky interfaces assembled from stock Windows form components. Windows that sit on your desktop doing nothing after playback ends. No memory of where you were in a file.
No awareness that you might want to move on to the next episode automatically. No consideration of the display you're watching on, the colour space of the content, or whether the motion could benefit from interpolation.
You open a file and it plays. When it's done, it's done. It gets out of the way. There's no application to wrangle. It feels like a feature that should be part of any modern operating system.
That's the experience mpv-synth delivers on Windows. Open a video file and it plays, full stop. No splash screens, no library to build, no window hanging around after playback ends. When there are no more videos to watch in a folder, the player closes itself. It knows its job is done.
Download the zip and extract it where you want the installation to live. C:\Program Files\ is the recommended location.
This single script downloads the latest versions of mpv, ffmpeg, ffprobe, yt-dlp, and VapourSynth*; registers file associations; creates Start Menu and AutoPlay entries; then removes itself.
The install is interactive. Read the prompts as they appear. Defaults are set to the recommended choices throughout, with one exception: if your machine is more than roughly a decade old, choose x86_64 at the first prompt rather than the default x86_64-v3. Any modern hardware should handle v3 fine.
mpv-synth registers itself as the default handler for common video formats. If Windows asks which app to use, select mpv-synth and tick "Always". That's it. Everything else is handled automatically from this point forward.
mpv-synth is built on mpv, one of the most capable media engines around, and wraps it in the experience layer that was always missing. Optional browser extensions for Chrome-family browsers and Firefox add a "Play in mpv-synth" right-click option to any link or page with embedded video, routing the stream directly through the player.
Full VapourSynth pipeline. Feed it any framerate. Match your display's refresh rate, stick to 60fps, or push 144. The presets in the right-click menu are just numbers in a config file: change them, add more, remove ones you don't need. Set it to activate automatically and limit by resolution, if your GPU handles 1080p fine but struggles at 4K, set a max resolution and it only kicks in below that. Entirely optional → the player works fine without it.
The icc-detect plugin reads the colour space and HDR metadata of every file on load. HDR content passes through natively on capable displays and tone-maps correctly on SDR, automatically, every time.
150 evenly-spaced thumbnail slices by default, have as many or as few as you like to achieve your best look, composited into the seekbar, giving you a visual map of the entire file. Hover for a frame-accurate preview. Jump to any scene with a click.
When a video ends, mpv-synth moves to the next file in the folder automatically → when you quit mid-file, it resumes exactly where you stopped. No manual bookmarking required.
The auto-subs plugin activates a subtitle track only when it matches every term in a configurable list → match=en,forced picks up English (Forced) automatically, while leaving everything else untouched. Fine-grained, or one-word simple.
The opensubs plugin searches and downloads subtitles from OpenSubtitles and other providers directly from the right-click menu. Manual search, best-match download, or browse results, all without leaving the player. Supports login credentials for premium providers.
The osc-simplified plugin replaces mpv's default OSC with a clean, minimal control bar. Configurable skip buttons (left, right, middle click, each with its own seek duration), dark and light modes, and rounded corners. No clutter.
The dyn_menu plugin builds a native Windows context menu from your input.conf bindings. Every shortcut you define appears in the menu automatically, organized by the menu path you specify. No separate menu config to maintain.
Press U from within the player to pull the latest versions of mpv, ffmpeg, yt-dlp, plugins, and the updater itself. The entire toolchain stays current with a single keypress, or run updater.bat directly without opening the player.
The config-editor plugin lets you open any conf file in your text editor or IDE of choice, straight from the right-click menu. Press E for mpv.conf, I for input.conf, or pick from the menu. Set your preferred editor once and it's one keypress away.
The installer handles all dependencies: mpv, ffmpeg, VapourSynth, and the interpolation libraries, automatically.
Download the zip and extract it where you want the installation to live. C:\Program Files\ is the recommended location.
This single script downloads the latest versions of mpv, ffmpeg, ffprobe, yt-dlp, and VapourSynth*; registers file associations; creates Start Menu and AutoPlay entries; then removes itself.
The install is interactive. Read the prompts as they appear. Defaults are set to the recommended choices throughout, with one exception: if your machine is more than roughly a decade old, choose x86_64 at the first prompt rather than the default x86_64-v3. Any modern hardware should handle v3 fine.
Open portable_config\mpv.conf and set your preferred language codes:
# preferred audio language
alang=ja,jpn,en
# preferred subtitle language
slang=en,eng
For subtitles to activate automatically, edit portable_config\script-opts\auto-subs.conf and set your match terms. A track is only selected if it matches every term in the list, so you can be as broad or as specific as you like:
# English forced subs only (the default)
match=en,forced
# Any French subtitle track
match=fr
# Nothing auto-selects. mpv picks based on slang above
enabled=no
match list is comma-separated with no spaces. Each entry must appear somewhere in the subtitle track's name or language tag for it to be selected. The default match=en,forced targets tracks labelled something like English (Forced).
mpv-synth registers itself as the default handler for common video formats. If Windows asks which app to use, select mpv-synth and tick "Always". That's it. Everything else is handled automatically from this point forward.
portable_config\mpv.conf and look at the PERFORMANCE PROFILE section. Setting vo=gpu and gpu-context=d3d11 will make the biggest immediate difference. Any machine capable of running Windows 11 should handle mpv-synth smoothly.The browser extensions are completely optional. mpv-synth works perfectly as a local player without them. They add a "Play in mpv-synth" right-click option to any page with embedded video in Chrome-family browsers and Firefox.
Extract installer\mpv-synth-extension.zip in place. Then, inside the native\ folder, right-click install.bat and choose "Run as Administrator". This registers the Python host that allows the browser to securely launch mpv. You only need to do this once.
Chrome / Edge / Brave / Vivaldi: Go to chrome://extensions, enable Developer Mode, click "Load unpacked", and select the chrome\ folder.
Firefox: Go to about:debugging#/runtime/this-firefox, click "Load Temporary Add-on…", navigate to the firefox\ folder, and select manifest.json. For a permanent install, see the README inside the extension zip.
Click the mpv-synth icon in your toolbar. Fill in the mpv Location (the folder containing mpv.exe) and Config Location. If you installed to the default location, you can leave the pre-filled placeholders as-is. Click Save.
In the same config page for the extension you can adjust the slider to adjust the amount of video you'd like to have cached, the default 30 seconds is a good balanced amount. Lowering it may start playback faster, depending on your internet speed, and raising it provides more protection against running out of buffered video.
All actions are available in the right-click menu with keyboard shortcuts displayed alongside them. Here are the ones you'll reach for most often.
| Key | Action |
|---|---|
| Escape | Toggle fullscreen |
| Space | Play / Pause |
| q | Quit → position saved automatically |
| ← → | Seek 5 seconds; hold Ctrl for 5 minutes |
| ↑ ↓ | Seek 30 seconds forward / back |
| a / d | Previous / next chapter |
| w / s | Step one frame forward / back |
| , / . | Previous / next file in folder |
| [ / ] | Playback speed −10% / +10% |
| { / } | Playback speed ½× / 2× |
| Backspace | Reset playback speed |
| - / = | Volume down / up |
| v | Toggle subtitle visibility |
| Ctrl+v | Cycle subtitle tracks |
| Shift+s | Browse OpenSubtitles |
| Alt+t | Download best-match subtitles from OpenSubtitles |
| Alt+s | Manual OpenSubtitles search |
| Ctrl+i | Toggle automatic ICC profile detection |
| Alt+` | VapourSynth off |
| Alt+5 | VapourSynth 60fps |
| Alt+8 | VapourSynth 120fps |
| I | Edit keyboard bindings & menu |
| E | Edit player configuration |
| U | Update all components (mpv, ffmpeg, yt-dlp…) |
| t | Toggle statistics overlay |
All shortcuts and right-click menu entries are defined in portable_config\input.conf.
Each line follows this pattern:
[key] [action] #menu: Top Level > Submenu > Item name
For example:
Right seek 60 #menu: Navigate > Skip > 1 min forward
#menu: portion is optional → omit it for a binding with no menu entry. Use _ as the key for a menu entry with no keyboard shortcut. Each > adds a submenu level. Open the file via Tools → Edit Config in the right-click menu, or press I.
All plugin options live in portable_config\script-opts\, one .conf file per plugin, named accordingly. The main player options are in portable_config\mpv.conf. Each setting includes a comment describing what it does and its type, so you can edit them in any text editor.
The filmstrip defaults to 150 thumbnails generated across 4 concurrent threads. This gives a dense, visually rich timeline and runs smoothly on modest hardware, tested on a 65W Ryzen 7 mini-PC.
# portable_config\script-opts\filmstrip.conf
thumbnail_count=150
max_concurrent=4
max_concurrent to 2 or 1 → thumbnails will build more slowly, but playback won't be affected. thumbnail_count=100 still looks great. Every plugin written for mpv-synth can be disabled with enabled=no at the top of its conf file.
Several plugins were written from scratch for mpv-synth. Others are bundled from open source projects, some modified for reliability or to resolve issues found during testing.
The player at the core of everything. Extraordinarily capable, extraordinarily extensible.
InspirationThe starting point and inspiration for this project.
OriginalAutomatic subtitle selection based on configurable match terms. Written for mpv-synth.
OriginalOpenSubtitles search and download directly from the player. Supports multiple providers with optional login credentials.
OriginalFilmstrip timeline. 150 thumbnail slices composited into the seekbar with configurable generation and animation.
OriginalAutomatic ICC profile and HDR detection. Tone-maps HDR content on SDR displays using configurable algorithms.
OriginalMinimal on-screen control bar with configurable skip buttons, dark/light modes, and rounded corners.
ModifiedDynamic right-click menu generated from input.conf bindings. Modified from the original mpv-menu-plugin for reliability.
OriginalFrame interpolation integration. VapourSynth filter management with configurable FPS presets and auto-apply rules.
BundledThe frame processing framework powering interpolation.
BundledThe interface layer. The de facto standard for mpv UI.
ModifiedTimeline hover thumbnails. Heavily modified → stall watchdog added, filmstrip integration, configurable process priority.
OriginalNative Windows file/folder open dialog integration.
OriginalOpen any conf file in your text editor or IDE of choice, straight from the right-click menu.
BundledRecently played files list.
BundledLibraries for VapourSynth integration and interpolation.
mpv-synth is and always will be free. No premium tier, no feature gates, no ads. The code is on GitHub for anyone to read, fork, or contribute to.
What it isn't is cost-free to build. The plugins, the bug hunts, the rendering pipeline deep dives. That's real time, and time is the one thing you can't get back. A small donation says "keep going" in a way that matters more than a star.
If mpv-synth has been useful, that's enough. If you'd like to see it grow faster → a proper GUI for managing settings without touching conf files, more plugins, better documentation, then a coffee helps make that happen sooner rather than later.
The core player is stable and in daily use. Plugins are actively maintained. If something's broken, open an issue.
A Tauri-based GUI is in development to manage settings, updates, and plugins without touching conf files. Internal testing begins this autumn.
Barring paid work getting in the way, a full public GUI release should follow, aimed at users of all technical levels, not just those comfortable editing config files.