An FFmpeg TUI Control Panel
ffmpeg is one of the most capable pieces of software on Linux. It can cut, convert, transcode, normalize, stabilize, resize, concatenate, and generate media from scratch. It can also be genuinely hostile to use. The flag ordering matters. The argument syntax is non-obvious. Two-pass workflows require you to chain invocations manually.
fftool solves that without hiding ffmpeg. It's a terminal UI written in Go — a navigable menu that wraps the common operations and shows you the actual command it's going to run before it runs it. You pick the operation, fill in the fields, and see the ffmpeg invocation on a confirm screen. Execute it or go back and adjust. Either way, you're reading real ffmpeg commands, not abstractions.
Linux, x86-64. Requires ffmpeg and ffprobe on PATH.
fftool-source.tar.gz fftool-source.zip
Build: go mod tidy && go build -o fftool .
| Key | Action |
|---|---|
| ↑ / ↓ | Navigate / move between fields |
| Enter | Select / confirm |
| Esc | Back one level |
| Tab | Next form field |
| ← / → | Cycle select options |
| q | Quit |
| c | Copy command to clipboard |
| Ctrl+C | Cancel immediately |
Every operation goes through a confirm screen. Before anything executes, fftool renders the full ffmpeg command with all flags and arguments:
ffmpeg \ -i input.mp4 \ -ss 00:01:30 \ -to 00:02:45 \ -c copy \ output.mp4
You can review it, go back to adjust, or confirm and run. The command isn't generated behind the scenes — it's shown to you first. Over time, you stop needing the menus for the operations you use most.
Some ffmpeg workflows require more than one invocation. fftool handles these transparently:
fftool is written in Go and builds to a single static binary. You need Go 1.21 or later. The binary has no runtime dependencies beyond ffmpeg and ffprobe on PATH.
Uses bubbletea for the TUI framework and lipgloss for styling — open source libraries.
Build from source:
go mod tidy go build -o fftool .