A clean desktop app for compressing and converting video on Windows, macOS, and Linux — running real FFmpeg locally, with no cloud, no upload, and no waiting.
FFmpeg is one of the best pieces of software ever written. It can convert, compress, and repair almost any video or audio file in existence, and it powers a huge share of the media you watch every day.
There's just one catch: it's a command-line tool. To make a video smaller, you're expected to know — and remember — something like:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4
For most people, that's a wall. So instead they upload their files to a random "free online converter," wait for a slow upload, hand a stranger's server a personal video, and hope there's no watermark or file-size cap at the end.
That trade-off never made sense. Your computer already has everything it needs to do this instantly, offline, and for free.
FFkit is FFmpeg with a front door. It bundles a real FFmpeg engine inside a small, native desktop app so that:
- Anyone can drop in a file, pick a quality, and click Convert — no flags to memorize.
- Power users still get full, raw command-line control when they want it.
- Everything stays on your machine. No uploads, no accounts, no tracking, no size limits.
FFkit has two modes, and you can switch between them at any time.
- Drop your video in (or click to browse).
- Pick a quality — Low, Medium, or Lossless.
- Click Convert.
That's it. FFkit picks sensible settings, uses your GPU when it can (NVENC, Apple VideoToolbox, QSV, AMF, VAAPI), and writes the result next to your original file.
Need precise control? Advanced mode gives you preset templates for common tasks plus a raw FFmpeg command editor, so you can tune exactly what happens. It even generates the finished command as copy-pasteable text — handy for scripts, CI pipelines, or just learning FFmpeg one click at a time.
- FFmpeg is built in. You don't need to install anything else.
- 200+ formats. If FFmpeg can read it, FFkit can read it — MP4, MKV, MOV, WebM, AVI, and far more.
- It's completely free. No premium tier, no trial, no catch.
Most people should just download FFkit from the official site. The rest of this README is for people who want to build it from source or contribute.
FFkit is a Tauri 2 app: a Rust backend with a React 19 + TypeScript + Tailwind v4 frontend. The FFmpeg binary ships as a sidecar, so it never interferes with any FFmpeg you may already have installed.
- Node.js 20+ and npm
- Rust (stable) — install via rustup.rs
- FFmpeg / ffprobe binaries in
src-tauri/binaries/(see Bundled binaries below — these are gitignored, so you supply your own) - On Windows, the MSVC build tools (included with Visual Studio 2019+)
npm install # use npm install, not npm ci (see note below)
npm run tauri dev # run in development
npm run tauri buildInstallers land in src-tauri/target/release/bundle/.
Why
npm installand notnpm ci? The@tailwindcss/oxideWASM build pulls in some@emnapioptional dependencies that npm prunes from the lockfile on Windows, which makesnpm ci's strict check fail.npm installhandles it gracefully.
FFkit ships FFmpeg and ffprobe as sidecars and never touches the system-installed version, by design. Drop the platform-specific binaries into src-tauri/binaries/, named with the exact target triple Tauri expects:
| Platform | Files |
|---|---|
| Windows x86-64 | ffmpeg-x86_64-pc-windows-msvc.exe · ffprobe-x86_64-pc-windows-msvc.exe |
| macOS ARM | ffmpeg-aarch64-apple-darwin · ffprobe-aarch64-apple-darwin |
| macOS Intel | ffmpeg-x86_64-apple-darwin · ffprobe-x86_64-apple-darwin |
| Linux x86-64 | ffmpeg-x86_64-unknown-linux-gnu · ffprobe-x86_64-unknown-linux-gnu |
Where the CI gets them (so you can match it):
- Windows — gyan.dev, the
essentials_build(GPL, pinned). Covers the codecs most people use — x264, x265, VP8/9, AAC, Opus. Swapessentials→fullfor the complete set. - Linux — BtbN/FFmpeg-Builds,
ffmpeg-master-latest-linux64-gpl - macOS — evermeet.cx, the static GPL build
The binaries/ directory is gitignored, so every developer and CI runner supplies its own — we don't commit ~100 MB executables to git.
ffkit/
├── src/ React frontend
│ ├── components/ UI components
│ ├── lib/ Tauri wrappers, presets, utilities
│ ├── App.tsx
│ └── main.tsx
├── src-tauri/
│ ├── binaries/ Bundled ffmpeg/ffprobe (gitignored — bring your own)
│ ├── src/
│ │ ├── commands/ Tauri IPC commands
│ │ ├── ffmpeg/ Process management, progress parsing, presets
│ │ ├── state.rs Shared app state
│ │ └── lib.rs
│ └── tauri.conf.json
└── .github/workflows/ ci.yml + release.yml
CI, releases, code signing, and the auto-updater are wired up in .github/workflows/ (ci.yml builds and verifies across all three platforms; release.yml builds, signs, and publishes on a v* tag). Both are commented for anyone forking the project.
FFkit is licensed under the GNU General Public License v3.0 (GPL-3.0-or-later).
This is a deliberate choice, not a formality. The GPL is a copyleft license: you are free to use FFkit for anything, study how it works, change it, and share your changes — but if you distribute a modified version, you must release your source code under the same license too.
That single rule is what keeps FFkit open forever. Nobody — no company, no fork, not even a future version of this project — can take the code, close it off, and sell a locked-down proprietary version built on your freedoms. Every improvement anyone ships has to stay available to everyone. The software, and any software descended from it, remains free for all its future users.
FFkit also inherits the GPL for a practical reason: it bundles GPL-licensed FFmpeg builds, and a combined work that includes GPL code must itself be GPL. The two align perfectly — which is exactly the point of the license.
Made by Paul Marchiset.
Official site: ffkit.paulmarchiset.me · Source: github.com/PaulMarchiset/ffkit