junegunn

junegunn/fzf

Go MIT Dev Tools Single maintainer risk

:cherry_blossom: A command-line fuzzy finder

81.6k stars
2.8k forks
active
GitHub +144 / week

81.6k

Stars

2.8k

Forks

327

Open issues

100+

Contributors

v0.74.0 06 Jul 2026

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...

Dev Tools CLI Tool Discovery value: 1/10
Documentation 10/10
Activity 10/10
Community 10/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 10/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

fuzzy-search cli shell-integration interactive-tui terminal-toolkit
Actively maintained Well documented MIT licensed Community favorite Beginner friendly Production ready
Deep Analysis · Based on README and public signals
3w ago

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.

Origin

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

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.

In production

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.

Code analysis
Architecture

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.

Tests

not documented in README

Maintenance

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.

Honest verdict

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

Risks
  • 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.
Prediction

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.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Go
63.4%
Ruby
22.5%
Shell
7.6%
Vim Script
2.6%
Nushell
2.3%
Assembly
1%
Makefile
0.5%
PowerShell
0.1%

Information

Language
Go
License
MIT
Last updated
4d ago
Created
155mo ago
Analyzed with
anthropic/claude-sonnet-4-6

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

junegunn

junegunn/fzf-git.sh

fzf-git.sh provides fuzzy-finding key bindings for Git objects (branches,...

1.2k Shell Dev Tools
PatrickF1

PatrickF1/fzf.fish

fzf.fish is a Fish shell plugin that integrates fzf (fuzzy finder) with...

2.7k Shell Dev Tools
ibhagwan

ibhagwan/fzf-lua

fzf-lua is a Neovim plugin that reimplements fzf.vim in Lua, providing fuzzy...

4.3k Lua Dev Tools
bigH

bigH/git-fuzzy

git-fuzzy is a CLI wrapper around git that uses fzf to provide interactive...

2.4k Shell Dev Tools
wfxr

wfxr/forgit

forgit is a shell-based utility that enhances git workflows through interactive...

5k Shell Dev Tools
vs. alternatives
skim-rs/skim

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.

natecraddock/zf

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.

dmtrKovalenko/fff

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.

ffuf/ffuf

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.

antonmedv/fx

fx is an interactive JSON viewer for the terminal, not a fuzzy finder. Different problem domain entirely. No meaningful competition with fzf.