Skip to content

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.

fzf

Open source · MIT

A fast command-line tool for picking items from any list by typing a few letters.

gum

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

fzfgum
TypeDev toolCLI
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars83.9k24.6k
Setup difficultyBeginnerBeginner
How you get itInstall with a package managerInstall with a package manager
Main languageGoGo
Last code update8 days ago5 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 fzf

Install with Mise

mise use -g fzf@latest
Step-by-step guide: how to use fzf

gum

macOS or Linux via Homebrew

brew install gum

Arch Linux

pacman -S gum
Step-by-step guide: how to use gum

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