Skip to content

PaulMarchiset/ffkit

Repository files navigation

FFkit

FFmpeg, finally clickable.

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.

→ Download & learn more at ffkit.paulmarchiset.me


Why FFkit exists

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.

How to use it

FFkit has two modes, and you can switch between them at any time.

Simple mode — for everyone

  1. Drop your video in (or click to browse).
  2. Pick a quality — Low, Medium, or Lossless.
  3. 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.

Advanced mode — for everyone else

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.

Good to know

  • 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.


Building from source

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.

Prerequisites

  • 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+)

Install, run, build

npm install        # use npm install, not npm ci (see note below)
npm run tauri dev  # run in development
npm run tauri build

Installers land in src-tauri/target/release/bundle/.

Why npm install and not npm ci? The @tailwindcss/oxide WASM build pulls in some @emnapi optional dependencies that npm prunes from the lockfile on Windows, which makes npm ci's strict check fail. npm install handles it gracefully.

Bundled binaries

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):

  • Windowsgyan.dev, the essentials_build (GPL, pinned). Covers the codecs most people use — x264, x265, VP8/9, AAC, Opus. Swap essentialsfull for the complete set.
  • LinuxBtbN/FFmpeg-Builds, ffmpeg-master-latest-linux64-gpl
  • macOSevermeet.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.

Project structure

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.


License

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.


Author

Made by Paul Marchiset.

Official site: ffkit.paulmarchiset.me · Source: github.com/PaulMarchiset/ffkit

About

FFkit - FFmpeg, finally clickable.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors