Skip to content
← Tools / Skills
ToolJunegunn Choi/10 trustMetrics-checked

fzf

The general-purpose command-line fuzzy finder that turns any list into an interactive picker.

Visit official site →

About

fzf is a command-line fuzzy finder by Junegunn Choi, written in Go and distributed as a single static binary. Pipe any list into it — files, command history, processes, git branches, hostnames, bookmarks — and it opens an interactive interface where your query matches results fuzzily in real time, tolerating omitted characters and typos. The matching is fast enough to chew through millions of items in milliseconds, per the project's own claim; no independent benchmark has been published, but the tool's ubiquity in shell workflows speaks to the performance in practice.

The shell integration is where fzf earns its keep: Ctrl-R fuzzy-searches command history, Ctrl-T finds files and inserts them at the cursor, and Alt-C jumps to directories, across Bash, Zsh, and Fish. Beyond that it is an event-driven toolkit: --bind maps keys to actions like execute, reload, and preview scrolling, --preview shows file contents alongside results (commonly paired with bat), and --tmux renders the finder as a tmux popup. It also ships a Vim/Neovim plugin and fuzzy auto-completion for supported commands. MIT-licensed and everywhere.

What it can do

  • Interactive fuzzy filtering of any piped list
  • Shell key bindings: Ctrl-R history, Ctrl-T files, Alt-C directories
  • Rich search syntax: exact, prefix-anchored, suffix-anchored, inverted, AND/OR terms
  • Live preview window for file contents and command output
  • Event-driven --bind keymaps for custom actions
  • Inline (--height) and tmux-popup (--tmux) layouts
  • Fuzzy auto-completion for bash and zsh
  • Vim and Neovim plugin included
  • Global defaults via FZF_DEFAULT_COMMAND and FZF_DEFAULT_OPTS
  • Single static binary, no dependencies

Setup

Install via Homebrew (brew install fzf), your distro package manager, or by cloning the repo and running its install script (~/.fzf/install), which sets up the shell key bindings. The git-clone route also installs the Vim plugin. Set FZF_DEFAULT_COMMAND and FZF_DEFAULT_OPTS to customize the default file source and options globally.

Prerequisites

Any Unix-like terminal; Bash, Zsh, or Fish for the key-binding integration.

Use cases

fuzzy-searchcommand-historyfile-selectiongit-workflowshell-scripting

Works with

developersdevopssysadminspower-users

Trust score — 9/10

/10 trustMetrics-checked

Scored 9/10 (metrics tier, metrics-v1). Evidence: ~83.6k GitHub stars with commits pushed October 15, 2026; the upstream README and independent skill writeups confirm the fuzzy matching, shell bindings, preview window, event-driven bindings, and Vim plugin. Strengths: the de facto standard fuzzy finder, rock-solid stability, single-maintainer project with a decade of consistent updates, excellent docs. Docked for: (1) the millions-of-items-in-milliseconds claim is provider-stated with no published independent benchmark; (2) the key-binding experience differs subtly across shells and needs the install script; (3) no real logo exists. License: MIT.

★ 83,596 GitHub stars

How the trust score is built

Full methodology →
Adoption · stars/downloads, log-scaled vs peers
10.0/10
Maintenance · recency, releases, issue load
9.0/10
Openness · license + docs
9.0/10
Manual review · sanity read + red-flag check
9.0/10
  • · ~83.6k GitHub stars (Oct 16, 2026 snapshot), commits pushed Oct 15, 2026; by Junegunn Choi; Go; single static binary
  • · Ctrl-R history, Ctrl-T files, Alt-C dirs; preview window; event-driven --bind; Vim plugin; --tmux popup mode
  • · Millions-of-items speed claim is provider-stated, no independent benchmark; no official logo

Sources

Every fact above was checked against these sources. Where a claim comes from the provider and couldn't be independently verified, the text says so.