ff2mpv hands a browser URL to mpv through a native messaging host
A Firefox/Chrome add-on for playing URLs in mpv.
At a glance
- What is it?
- ff2mpv is a browser extension that sends the current or a right-clicked URL to mpv for playback, using the browser native messaging API so a local helper process can launch the player. It suits people who want mpv handling video playback, and the native host must be installed and kept in step with the extension.
- Who is it for?
- Adopt ff2mpv if you already live in mpv and want one click in the browser to hand a URL to the player, on Firefox, Chrome or another Chromium-based browser. Skip it if you need a browser player instead of a separate process, or if your machine has no way to run a native messaging host, because the extension without that helper does nothing.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 17 days ago.
- What is it written in?
- Mainly PowerShell, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The toolbar icon plays the current tab, the context menu plays a link
The interaction is deliberately small. Clicking the extension icon in the toolbar makes mpv attempt to play the current URL, and if you want a specific URL on a page rather than the page itself, you right click it and choose the Play in MPV context button. There is no popup full of options and no embedded player, which is the point: the extension is a trigger, and the playback happens in mpv. That design keeps the extension small and puts all the real capability, playback formats, subtitles, seeking and audio routing, in the player you already configured. It also means the browser never decodes the media itself, so a page with a codec the browser cannot handle is still watchable.
Native messaging is the bridge, and the helper is a separate install
A browser extension cannot start an arbitrary process on its own, so ff2mpv uses the native messaging API: the extension hands the URL to a locally installed helper, and that helper is what invokes mpv. The README describes the extension as working on Firefox, Chrome and other Firefox or Chromium-based browsers, with the add-on published on AMO and the Chrome Web Store. The native side is separate. The installation instructions live in the project wiki, with distinct pages for Linux, macOS and Windows, and the repository itself carries the pieces: ff2mpv.py as the Python implementation, ff2mpv.bat and install.ps1 for Windows, install.sh for the other platforms, and a ff2mpv directory. The primary language is recorded as PowerShell, which reflects the Windows installer rather than the whole project.
Updating the addon without the host is the documented failure mode
The usage section opens with a warning in capitals. If you update the addon in your browser, make sure you update the native host as well. This is the sharpest edge in the whole project and it is worth understanding rather than memorising. The two halves communicate through a manifest whose format the browser defines, and a mismatched pair is exactly the kind of thing that produces a silent failure: the toolbar button either does nothing or reports an error with no obvious cause. It also means ff2mpv is not a single artefact you install and forget. It is a browser extension plus a local program, and both need to be at compatible versions, which is the ongoing maintenance cost of the approach.
Community maintained native clients exist for Rust and Go
The bundled helper is not the only option. The README lists two community-maintained native clients, one written in Rust and one written in Go, and gives links to each. The Go one is hosted on a codeberg instance rather than GitHub, which is worth noting for anyone who wants to see the source before installing it. A native client is a small program that sits between the browser and the player, so its entire job is to read the URL from the browser, pass it to mpv, and stay out of the way. Because the protocol is fixed by the browser's native messaging standard, the client is replaceable, which is what makes the choice between the bundled implementation and the community ones a matter of taste rather than architecture.
The packaging scripts separate the Firefox and Chromium builds
The repository layout shows how the two browser targets are handled. There are two manifest files, ff2mpv.json and ff2mpv-chromium.json, and two packaging scripts, package-firefox.sh and package-chromium.sh, plus a dist.files manifest. The Firefox and Chromium extension formats differ enough that a separate manifest and a separate build step are needed, and the icon set lives in its own directory. The Windows path also has a bat launcher and a PowerShell installer, which is where the recorded PowerShell primary language comes from. The options directory holds the extension preferences, and a .rubocop.yml file at the top level shows the project also carries Ruby tooling for some part of its workflow.
A modified MIT licence covers the code, the icons are LGPL
The licence situation is split and the README is direct about it. The source code in the repository is licensed under a modified MIT License, which is why the badge reads MIT with restrictions and why the metadata records a custom licence that GitHub cannot classify. The icons are licensed separately, by the MPV team under GNU LGPL version 2.1. If you are auditing a distribution that includes the extension, both terms apply, and the modified MIT text in the LICENSE file is the one that governs the code. Anyone redistributing the extension should read that file rather than relying on the badge, since a modified MIT licence can add conditions that the plain text does not have, which is exactly the case that causes a scan to need a human read.
No release tags, and the homepage lives on the wiki
The repository has no GitHub releases, so there is no versioned artefact to point at and no changelog to consult, and the last push was on 2026-10-08 on the master branch. The project publishes itself through the browser extension stores instead, where the version that reaches users is decided by the store review and update cycle rather than by a tag in the repository. The homepage points at the AMO listing for the extension, and the operational documentation, including the per-platform installation pages, lives in the wiki rather than in the README. The two stores also version independently, so a user on Firefox and a user on Chrome can be on different extension versions at the same time, which puts the native host compatibility warning back in play for every update.
Editorial conclusion
Adopt ff2mpv if you already live in mpv and want one click in the browser to hand a URL to the player, on Firefox, Chrome or another Chromium-based browser. Skip it if you need a browser player instead of a separate process, or if your machine has no way to run a native messaging host, because the extension without that helper does nothing. Verify first that the native host version matches the extension version, since the README flags updating the addon without updating the host as the most common breakage, and that the manifest your browser reads matches the one you installed.
Frequently asked questions
How do I install ff2mpv?
Install the extension from AMO or the Chrome Web Store, then follow the wiki installation instructions for your platform, with separate pages for Linux, macOS and Windows. The native host is a separate program and must be installed too.
What happens when I click the ff2mpv toolbar icon?
mpv attempts to play the current URL of the page. To play a specific URL on a page instead, right click it and use the Play in MPV context menu button.
Why does ff2mpv stop working after an extension update?
Because the native host also needs updating. The README warns explicitly that updating the addon in your browser without updating the native host leaves the two halves mismatched.
Can I use a different native client with ff2mpv?
Yes. The README lists community-maintained native clients written in Rust and in Go alongside the bundled implementation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/woodruffw-ff2mpv)Was this useful?