fzf
A fuzzy filter for any list: files, command history, processes, branches, anything you can pipe into it.
These buttons open the developer's own site, repository or store listing in a new tab. wares.gg does not host downloads.
3 more ways to get fzf
Package managers
- winget
winget install --id junegunn.fzf - Chocolatey
choco install fzf - Homebrew
brew install fzf
About fzf
fzf takes lines on standard input and lets you narrow them down by typing a few characters that appear anywhere in the line, in order. Pipe it a file list and it becomes a file picker; pipe it git branches and it becomes a branch switcher. It processes millions of items in milliseconds.
Shell integrations for Bash, Zsh, Fish and Nushell bind it to Ctrl-R for command history and Ctrl-T for files, which is how most people first meet it. Beyond that it is a toolkit: preview windows, key bindings and an event-driven model let you build real terminal interfaces out of shell scripts.
Strengths
- Filters any list at all, because it just reads standard input
- Shell integration gives instant fuzzy command history and file search
- Preview windows and key bindings turn scripts into real interfaces
- Single binary, with Vim and Neovim plugins included
Limitations
- Command line only, and its real power needs shell scripting
- Fuzzy matching sometimes surfaces a surprising first result
- Key binding setup differs per shell
- The manual is long because the option set is large
Details
- Pricing
- FreeFree and open source under the MIT licence.
- License
- MIT
- Developer
- junegunn
- Platforms
- Windows, macOS, Linux, Android, Command line
- How it runs
- Downloadable app
- Account
- Not required
- Works offline
- Yes
- Best suited for
- Picking one thing out of a list of thousands without scrolling
- Categories
- CLI tools
- Last verified
- Added
- Provenance
- Selected from the TechWalrus downloads catalog (Utilities); facts checked against the developer's own pages, 2 sources on file.
Alternatives to fzf
Compare allSoftware that can replace fzf for an important use case, and what changes if you switch.
Television
Search files and other data through a terminal fuzzy finder.
Television is a terminal fuzzy finder built around configurable channels for different data sources, rather than fzf's approach of filtering any piped standard input.
sig
Search streaming text interactively in your terminal.
sig searches streaming text interactively and updates matches as data arrives, but it is narrower than fzf's general list picker with previews and key bindings.
fzf as an alternative
Listings that name fzf as an alternative.
fd
Finds files by name without the argument soup that find requires, and it is much faster.
fzf filters any piped list interactively, so it can pick files by name, but it relies on another command to list them rather than traversing directories itself.
Similar software
Related functionality, not necessarily a direct replacement.
ripgrep
Searches a whole directory tree for a pattern in a fraction of the time grep takes, and skips what gitignore says to skip.
zoxide
Learns the directories you actually use, so changing to one takes a few letters instead of a full path.
Yazi
A terminal file manager where nothing blocks: every read, preview and copy happens asynchronously.
Atuin
Search shell history with command context and optional encrypted synchronization.
Gum
Drop-in prompts, menus, spinners and formatting for shell scripts, so a bash script can have a decent interface.