fzf vs gum
Which should you use? A side-by-side look at what each one does, who it suits, what it costs, how hard it is to set up, and where each falls short.
Open source · MIT
A fast command-line tool for picking items from any list by typing a few letters.
Open source · MIT
A command-line tool that gives shell scripts prompts, menus, spinners and styled text.
The short answer
Choose fzf if you need…
- Command-line users who often search file names or command history
- People who write shell scripts and want interactive menus
- Vim or Neovim users who want fuzzy selection inside the editor
- Developers who want a single portable binary with no runtime dependencies
Choose gum if you need…
- Developers who write bash scripts or dotfile aliases and want simple interactive prompts
- People building small personal command-line helpers that ask the user questions
- Anyone who wants a spinner or styled box around a long-running shell command
- Teams that want consistent prompts across scripts without building their own UI
Side-by-side
| fzf | gum | |
|---|---|---|
| Type | Dev tool | CLI |
| Price | Free and open source | Free and open source |
| Licence | MIT | MIT |
| GitHub stars | 83.9k | 24.6k |
| Setup difficulty | Beginner | Beginner |
| How you get it | Install with a package manager | Install with a package manager |
| Main language | Go | Go |
| Last code update | 8 days ago | 5 days ago |
What each one is
fzf
fzf is a fuzzy finder that runs in the terminal. You pipe a list into it, such as files, command history, or processes, type a few characters, and it narrows the list to matches so you can pick one. It also ships shell integrations for key bindings and fuzzy completion, and can be used as a building block in scripts.
gum
Gum is a command-line tool for adding interactive pieces to shell scripts and aliases, such as menus to pick an option, text prompts, confirmation questions, file pickers, spinners and styled output. It lets you do this without writing Go or any other program, since each feature is a single command you call from bash or a similar shell. The README shows it being used to build a guided Conventional Commits helper.
Best for
fzf
- Command-line users who often search file names or command history
- People who write shell scripts and want interactive menus
- Vim or Neovim users who want fuzzy selection inside the editor
- Developers who want a single portable binary with no runtime dependencies
gum
- Developers who write bash scripts or dotfile aliases and want simple interactive prompts
- People building small personal command-line helpers that ask the user questions
- Anyone who wants a spinner or styled box around a long-running shell command
- Teams that want consistent prompts across scripts without building their own UI
Strengths
fzf
- Distributed as a single binary for easy installation
- Designed to process large lists quickly, per the README
- Integrates with Bash, Zsh, Fish, Nushell, Vim, and Neovim
gum
- Adds interactive prompts to shell scripts with single commands and no Go code required
- Install options span many package managers and platforms, including Homebrew, apt, dnf, Nix and WinGet
- Customizable through command-line flags and environment variables
Not ideal for
fzf
- People who prefer graphical point-and-click file managers, since fzf is terminal-only
- Users on systems where they cannot install a binary or use a package manager, since setup relies on those routes
- Anyone wanting a full-featured search engine for large indexed corpora; fzf filters lists in memory
gum
- Projects that need a full graphical or web interface, since gum only works in the terminal
- Complex interactive applications, because gum is aimed at short prompts inside scripts rather than large programs
- Environments where you cannot install a binary, since gum is a separate program that must be present on the machine
Trade-offs
fzf
- Terminal-only, so it has no graphical interface
- Full value comes from shell integration, which requires editing your shell configuration
gum
- Only useful inside a terminal workflow, so it is not a general-purpose application
- Relies on the user's shell and environment; the README does not detail behavior across every shell
- Some features, such as table, show no demo GIF in the README, so their behavior is documented less fully
Getting started
fzf
Install with Homebrew (macOS or Linux)
brew install fzfInstall with Mise
mise use -g fzf@latestgum
macOS or Linux via Homebrew
brew install gumArch Linux
pacman -S gumFrequently asked questions
What is the difference between fzf and gum?
fzf: A fast command-line tool for picking items from any list by typing a few letters. gum: A command-line tool that gives shell scripts prompts, menus, spinners and styled text. fzf suits command-line users who often search file names or command history, while gum suits developers who write bash scripts or dotfile aliases and want simple interactive prompts.
Are fzf and gum free?
fzf: Free and open source. gum: Free and open source.
Is fzf or gum more popular?
fzf has more GitHub stars (83.9k) than gum (24.6k). Popularity isn't the same as fit — check which one matches your use case above.
What are other alternatives to fzf and gum?
Other options people compare them with include zoxide, Oh my tmux!.
Keep comparing
Built from our catalogue entries for both products: open-source details come from each project's README (AI-assisted, refreshed weekly) and GitHub data; AI-tool details are editorial. Spotted something wrong? Let us know from either product's page.