fzf is a command-line fuzzy finder written in Go that serves as an interactive terminal toolkit for searching, filtering, and selecting from lists of data. The project, maintained by junegunn, provides a general-purpose solution for file selection, command history browsing, data preview, and navigation through complex datasets using fuzzy matching algorithms. It functions as a single portable binary that reads input from standard input and writes selected items to standard output, making it easily integrable into shell scripts and terminal workflows.
The core functionality of fzf centers on interactive filtering with fuzzy matching capabilities. Users can launch the finder to process lists of items in milliseconds, even when handling millions of entries. The tool supports multiple display modes including a height mode for inline operation and a popup mode for floating window presentation. It offers customizable search syntax, environment variables, and visual theming options to adapt to different user preferences and terminal environments.
fzf includes batteries-included integrations across multiple shells and editors. Shell integration is available for Bash, Zsh, Fish, and Nushell, providing key bindings and fuzzy completion functionality. The project offers a separate Vim plugin through junegunn/fzf that provides basic library functions, and a companion project junegunn/fzf.vim supplies additional useful commands. For Neovim users preferring Lua-based plugins, the fzf-lua project provides an alternative implementation.
The repository demonstrates substantial community engagement and active maintenance.
Installation options span multiple package managers and platforms. Users can install fzf via Homebrew, Mise, Linux package managers including APT, DNF, Pacman, and others, Windows package managers like Chocolatey and Scoop, or by cloning the repository and running the install script. The project also provides official binary releases for direct download.
The tool supports advanced features including external program execution, process reloading through keyboard shortcuts, and the ability to transform into different processes. Preview window functionality allows users to inspect data before selection, including image previewing capabilities. The repository includes comprehensive documentation covering customization for different input types, performance optimization, interactive ripgrep integration, and tips for respecting gitignore files.
fzf's classification spans command-line utilities, fuzzy search, interactive filtering, file finding, text search, shell integration, keyboard shortcuts, data exploration, and productivity tools. The project is distributed under the MIT license and includes merchandise options for community supporters.