Unflick
unflick
A free, ad-free video player — for humans and AI.
unflick.app · MIT · Cross-platform · CLI + MCP first
unflick plays your video files and your YouTube / Bilibili / Twitch / Vimeo / 26 other streaming-site URLs, in a beautiful native window. Auto-skips YouTube sponsor segments via SponsorBlock. Finds subtitles on OpenSubtitles, or generates them locally with whisper.cpp when none exist.
What makes it different: MCP is a built-in control surface, not a third-party wrapper. Other players can be scripted from the outside; in unflick the CLI, the MCP server and the window share one player instance. Ask Claude to skip to the next chapter and the video you are watching skips — same mpv, same playback, no second hidden process. Every feature ships headless before it gets a button.
Install
One-line install:
# macOS — Homebrew
brew install --cask zhitongblog/tap/unflick
# macOS / Linux
curl -fsSL https://unflick.app/install.sh | bash
# Windows (PowerShell)
irm https://unflick.app/install.ps1 | iexOr pick an installer for your platform from the latest release:
Platform | File | Size |
Windows 10/11 (x64) |
| ~80 MB |
Windows 10/11 (x64), AI edition with bundled Whisper |
| ~150 MB |
macOS 11+ (Apple Silicon + Intel, signed + notarized) |
| ~15 MB |
Linux x86_64 (Debian / Ubuntu) |
| ~10 MB |
Linux x86_64 (Fedora / RHEL / openSUSE) |
| ~10 MB |
Linux x86_64 (distro-agnostic) |
| ~80 MB |
Related MCP server: CutPilot
Three interfaces, one core
unflick exposes the same playback engine through three surfaces:
GUI — modern player window with libmpv-quality playback, keyboard shortcuts, drag-and-drop, picture-in-picture, true fullscreen, chapters, bookmarks, A-B loop, frame stepping, subtitle timing and styling.
CLI — every feature is also a command.
unflick play <file-or-url>,unflick chapter next,unflick bookmark add --name "the good bit",unflick loop a,unflick subtitle auto,unflick subtitle bilingual on,unflick audio eq preset speech,unflick clip 0 5,unflick library scan. Output is JSON; pipe it tojqand automate. Started with--allow-dev,unflick dev snapshot/click/evaldrive and read the player's own window, which is how unflick is tested on all three platforms.MCP server —
unflick --mcpstarts a Model Context Protocol server over stdio. Add it to Claude Desktop / Cursor / Codex CLI's MCP config and your AI agent gets 101 tools (play, seek, chapter_seek, bookmark_goto, ab_loop, subtitle_delay, subtitle_bilingual, screenshot, clip, sponsor_segments, get_subtitles, equalizer_preset, generate_subtitles, library_search, …) plus live resources.
Claude Code users can install the skills and the MCP server in one step:
/plugin marketplace add zhitongblog/unflick
/plugin install unflickThat brings seven skills (play, navigate by what was said, clip/GIF, subtitles, library, screenshot, SponsorBlock) plus the MCP server — see marketplace/.
All three drive the same player. When the window is open it hosts the control port, so unflick pause from a terminal — or an agent calling pause over MCP — pauses the video on screen rather than some invisible second instance. With no window running, the CLI and MCP fall back to a headless daemon and everything still works.
What an agent can do that a wrapper can't
Because MCP talks to the player rather than at it, an agent gets tools that need the player's own state:
search_transcript/seek_to_text— "skip to where she explains the refund policy". Searches whatever subtitles are open: a loaded file, a sidecar.srt, an embedded track, or the ones you just generated with whisper.generate_chapters/set_chapters— give a file that shipped without chapters a real chapter list. It's not just data back: the chapters appear on the progress bar and respond tochapter_seekand PgUp/PgDn.describe_frame— hand the model the frame that's on screen right now, as an image. Same player, so it sees what you see.
Free, ad-free, local — by charter
unflick will never:
carry banner / pre-roll / "sponsored" ads
collect telemetry of any kind
require an account, login, or cloud connection
gate features behind a paid tier or trial countdown
bundle adware, browser hijackers, or "recommended" software at install time
Everything that matters runs on your machine. Library scans, subtitle transcription, AI rewriting — all local. Your files stay on your filesystem.
The SponsorBlock auto-skip for YouTube is the active form of "ad-free" — actively skipping ads in the content unflick plays, not just refusing to show its own.
License
unflick is released under the MIT License — see LICENSE.
unflick bundles, dynamically loads, or invokes the following third-party software at runtime. Each upstream license is enumerated in THIRD-PARTY-LICENSES.md, and the canonical license text for the LGPL/GPL/MPL-licensed components ships in the licenses/ directory of every installer:
libmpv — LGPL-2.1-or-later — dynamically loaded at runtime (source)
ffmpeg (Windows bundle) — GPL-3.0-or-later — invoked as a subprocess only (source)
yt-dlp — Unlicense (public domain) — invoked as a subprocess (source)
whisper.cpp (AI edition) — MIT — invoked as a subprocess (source)
Tauri + wry + mpv-player/mpv + glutin + objc2 + 590+ Rust crates — all MIT, Apache-2.0, ISC, BSD, MPL-2.0, or Unicode-3.0 (full breakdown)
React 18, Zustand, Framer Motion, Tailwind, Vite — MIT
See THIRD-PARTY-LICENSES.md for the complete attribution and compliance notes (subprocess invocation vs. dynamic linking, GPL aggregation, MPL file-level scope, etc.).
Build from source
git clone https://github.com/zhitongblog/unflick.git
cd unflick
pnpm install
pnpm tauri build
# Windows: ./scripts/fetch-windows-deps.sh fetches libmpv / ffmpeg / yt-dlp / whisper
# bash build-both.sh builds both Standard and AI editionsRequires Rust stable + Node 22 + pnpm 10 + the Tauri 2 platform prerequisites (WebView2 on Windows, WKWebView on macOS, webkit2gtk-4.1 on Linux). macOS and Linux load the system libmpv, so brew install mpv / apt install libmpv-dev first.
Releases are cut with ./scripts/release.sh <version> — see scripts/README.md for how the three platforms are built and why macOS is the one that is not built in CI.
Acknowledgments
unflick stands on the shoulders of mpv, ffmpeg, yt-dlp, whisper.cpp, Tauri, and a long list of MIT/Apache-licensed Rust and JavaScript libraries. None of this would exist without those projects.
The website at unflick.app and a sibling project (SoloMD) — also free, also MIT, also bundling MCP — are by the same author. If you like the design, that's where it comes from.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
AI-native video editing OS — timeline editing, generation, color, and export as MCP tools.
A real timeline video editor for AI agents: journaled edits, FFmpeg/MLT rendering, exports
Multimodal video analysis MCP — transcription, vision, and OCR for any video URL.
Related MCP Servers
- AlicenseAqualityBmaintenanceLet AI agents watch videos: local transcripts, speaker labels, scenes, chapters and exact-moment search from any video URL or file. Fully local, no API keys.42AGPL 3.0
- FlicenseNot gradedqualityBmaintenanceLocal-first AI video editing engine controlled by MCP-compatible AI hosts, enabling AI to inspect footage, propose edits, modify multitrack projects, and render locally while keeping user control.-
- AlicenseAqualityBmaintenanceGive any MCP client a real video editor — 32 typed tools over ffmpeg, Whisper and MediaPipe, plus an optional local UI with a drag-and-drop timeline.38MIT
- AlicenseBqualityAmaintenanceOpen-source local-first AI media workbench with Canvas, video editor, Assets, and MCP control.2768Apache 2.0