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. GitGenius tracking data shows junegunn with 2052 recorded events as the primary maintainer, followed by contributors LangLangBart with 166 events and bitraid with 59 events. The issue and pull request response latency shows a median of 4.8 hours across 720 tracked items, indicating responsive maintenance. The most active issue labels are bug reports with 72 items, questions with 58 items, and feature requests with 48 items, reflecting ongoing development and user support.
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 maintains connections with major repositories including microsoft/vscode, rust-lang/rust, and microsoft/typescript through overlapping contributors, indicating its significance within the broader developer ecosystem. The project is distributed under the MIT license and includes merchandise options for community supporters.