:cherry_blossom: A command-line fuzzy finder
81.6k
Stars
2.8k
Forks
327
Open issues
100+
Contributors
AI Analysis
fzf is a general-purpose command-line fuzzy finder written in Go, distributed as a single portable binary that lets users interactively search and select from any list of items — files, command history, processes, hostnames, and more — with millisecond-level performance on millions of entries. It serves best as a productivity multiplier for shell workflows, offering an event-driven API for building custom terminal UIs and integrating natively with Bash, Zsh, Fish, Nushell, Vim, and Neovim. It...
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
fzf: the de facto standard fuzzy finder for terminal power users, now 12 years old and still gaining stars
fzf is a general-purpose interactive fuzzy selection tool that pipes any list of items through a fast, interactive terminal UI with real-time filtering. It targets shell users, DevOps engineers, Vim/Neovim users, and anyone who spends significant time in the terminal. Beyond simple selection, it has evolved into a lightweight terminal UI toolkit capable of building complex interactive workflows with event-driven bindings, preview windows, and dynamic list reloading. With 81k stars, first-class packaging in every major Linux distribution, Homebrew, and deep integration in the Neovim plugin ecosystem, it is one of the most widely adopted terminal utilities in the developer toolchain.
Created in October 2013 by Junegunn Choi, fzf predates most alternatives by years. It migrated from Ruby to Go for performance, and has grown steadily from a simple file picker into a general-purpose interactive terminal toolkit.
Growth was driven by the explosion of terminal-centric developer workflows, deep integration with shell frameworks (oh-my-zsh, prezto, fish), and widespread adoption in the Neovim ecosystem via telescope.nvim and fzf-lua. Consistent, high-quality maintenance by a single author with strong community trust compounded adoption over 12 years. Merchandise availability signals a mature fan community.
fzf is packaged in Alpine (APK), Debian/Ubuntu (APT), Homebrew, MacPorts, Mise, and Windows package managers — confirming broad distribution-level adoption. It is a declared dependency of major Neovim plugins (fzf-lua, fzf.vim), shell frameworks, and countless dotfile configurations publicly visible on GitHub. Merch store existence implies a sustained, loyal user base. Adoption is extensively documented at scale.
Likely a single Go binary with a custom terminal rendering engine. README describes an event-driven architecture supporting keybindings, dynamic list reloading, preview windows, and external process execution — suggesting a well-structured internal event loop rather than a simple filter pipe. Distributed as a statically linked binary with no runtime dependencies.
not documented in README
Last push was 2026-06-15, five days before the evaluation date. Activity is clearly active and ongoing. 147 stars gained in the past 7 days indicates continued organic discovery. The project has been consistently maintained for over 12 years, with no signs of abandonment.
ADOPT IF: you work regularly in the terminal and want a battle-tested, universally packaged fuzzy selection tool with deep shell and editor integration. AVOID IF: you need GUI-based search, work in purely non-terminal environments, or require structured query syntax beyond fuzzy/exact/regex matching. MONITOR IF: you are evaluating skim or zf for specific matching-quality or language-toolchain reasons — these may eventually close the gap in specific dimensions.
Independent dimensions
Mainstream potential
7/10
Technical importance
8/10
Adoption evidence
9/10
- Single primary maintainer (junegunn) — bus factor risk exists despite 12 years of consistent delivery.
- Feature scope has grown significantly; complexity of the event-driven binding system may steepen the learning curve for casual users.
- Rust-based alternatives (skim, fff) may attract users in ecosystems where Rust tooling is preferred, slowly fragmenting the niche.
- Terminal UI paradigms could shift if AI-assisted shell interfaces (natural language search) reduce demand for manual fuzzy selection workflows.
- No documented test coverage in the README, making it harder to assess regression risk from contributions.
fzf is likely to remain the default fuzzy finder in the terminal ecosystem for the foreseeable future. Slow, steady star growth and active maintenance suggest a mature project in a stable niche, not one approaching end-of-life.
Explore similar
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://junegunn.github.io/fzf/
- Language
- Go
- License
- MIT
- Last updated
- 4d ago
- Created
- 155mo ago
- Analyzed with
- anthropic/claude-sonnet-4-6
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Render "ghosting" / flickering of pointer when using --info=inline [or --info=inline:]
Preview should scroll through wrapped lines instead of actual ones
Create a clear AI Policy
Paste command to the command line on enter (using some action) instead of executing it (using `become`)
Error when wrapping fzf Ctrl+R picker
Top contributors
Similar repos
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
81.6k | +144 | Go | 10/10 | 4d ago |
|
|
1.2k | — | Shell | 8/10 | 4d ago |
|
|
2.7k | — | Shell | 8/10 | 3w ago |
|
|
4.3k | — | Lua | 8/10 | 2w ago |
|
|
2.4k | — | Shell | 7/10 | 3w ago |
|
|
5k | — | Shell | 8/10 | 14h ago |
Skim is a Rust-based fzf clone with a compatible interface, targeting users who prefer Rust toolchains. It has significantly fewer stars (6.8k vs 81k) and less ecosystem integration. A reasonable alternative for Rust-centric setups but has not displaced fzf in practice.
zf is a minimal Zig-based fuzzy finder focused on filename-aware matching quality. Very early-stage (605 stars), clearly a niche alternative rather than a general competitor. Serves users who prioritize matching precision over ecosystem breadth.
fff appears to be a Rust-based fuzzy finder alternative with 9k stars. Less ecosystem integration than fzf and newer. May appeal to users wanting Rust-native tooling but lacks fzf's shell integration depth and plugin ecosystem.
Not a direct competitor — ffuf is a web fuzzer for security testing, not a terminal selection UI. The overlap in the word 'fuzzy' is superficial; they solve entirely different problems for different audiences.
fx is an interactive JSON viewer for the terminal, not a fuzzy finder. Different problem domain entirely. No meaningful competition with fzf.
