fzf

Interactive command-line fuzzy finder for filtering lists like files, history and git branches.

Loved for fuzzy Ctrl-R shell history search123 and as a general picker you can pipe anything into, from git branches to files4567, with plenty of plugins and tools built on top of it.8910 Complaints are scattered rather than common: one commenter says its history search doesn't always sync across open tabs11, and another wanted a sturdier way to embed it in their own apps than calling it through a shell.12
The HN verdict, written from 12 cited comments
16recommend
0warn against
Dec 13, 2025first mention
Oct 19, 2026latest mention
Nov 25 – Oct 26
Used forfor shell usersfor zsh usersfor git workflowsfor shell scriptingfor Vim usersfuzzy findingshell history search

Why people recommend it

History search · 3

Commenters bind it to Ctrl-R to interactively fuzzy-filter shell history.

“I always install fzf now, including the shell integrations like fuzzy history search bound to ctrl-r.”

“It's easy to setup an interface that makes search a bit easier still, including showing you a list as you interactively filter history, with fzf”

Show 1 more

“before that history | fzf. Which is bound to ctrl+r for me.”

Pipeable picker · 3

Any list can be piped into it, which makes it easy to add interactive selection to scripts.

“Now I rely on standard input and standard output, and `fzf` for all the rest.”

pxcDec 13, 2025recommends

“Polished interactivity is easy to build by just embedding a copy of `fzf`.”

Show 1 more

“query your notes, pick the hits with fzf, bulk-tag them”

Git workflows · 3

Popular for fuzzy-selecting git branches, tags and commits.

“The best upgrade to these kinds of git branch scripts is piping them to fzf.”

“I love this little fzf bash function that I wrote a few years ago”

Show 1 more

“for fuzzy search. Great for easily searching and selecting git branches + tags + commits, commands from shell history, files, shell jobs, processes, etc.”

Extensibility · 3

Called just a picker but with many extensions, and other tools build on it.

“FZF is just a picker, but it has a ton of extensions.”

“But I still use fzf to find files.”

Show 1 more

File finding · 2

Used to find files from the shell and from Vim.

“But I still use fzf to find files.”

“Hell, I use fzf most times (`:GFiles`).”

TUI toolkit · 3

A staple alongside tools like yazi, zellij and neovim in terminal setups.

“fzf left and right for a bunch of utils”

“particularly when combined with TUI applications like yazi, lsd, fzf , neovim etc”

Show 1 more

“just fake the layout using zellij, fzf and a little scripting”

Caveats and dissent

Tab history sync · 1

One user switched history search to atuin because fzf didn't always pick up commands from other open tabs.

“But I still use fzf to find files.”

Embedding in apps · 1

One developer wanted a more robust way to use it inside their own applications than calling it as a shell command.

Not default · 2

Its key bindings need to be installed and configured; they are not there by default.

“before that history | fzf. Which is bound to ctrl+r for me.”

“fzf gets installed with all the proper key bindings”

Limited context · 1

One tool author built a history wrapper because plain fzf shows less context.

Vim compatibility · 1

One user's fzf setup needed a fix after switching to vim-classic.

“fzf needed a fix”

Often compared with

Who recommends it in their own words

All comments 23

“It's easy to setup an interface that makes search a bit easier still, including showing you a list as you interactively filter history, with fzf”

“I always install fzf now, including the shell integrations like fuzzy history search bound to ctrl-r.”

“fzf gets installed with all the proper key bindings”

“Hell, I use fzf most times (`:GFiles`).”

“The best upgrade to these kinds of git branch scripts is piping them to fzf.”

“I love this little fzf bash function that I wrote a few years ago”

“just fake the layout using zellij, fzf and a little scripting”

“fzf left and right for a bunch of utils”

“particularly when combined with TUI applications like yazi, lsd, fzf , neovim etc”

“before that history | fzf. Which is bound to ctrl+r for me.”

“FZF is just a picker, but it has a ton of extensions.”

“Now I rely on standard input and standard output, and `fzf` for all the rest.”

“fzf needed a fix”

“query your notes, pick the hits with fzf, bulk-tag them”

“for fuzzy search. Great for easily searching and selecting git branches + tags + commits, commands from shell history, files, shell jobs, processes, etc.”

“Most recently I pointed it at fzf and was able to pull the insensitive SIMD matching it uses”

“using vifm with some zoxide/fzf extra commands”

“Also another plugin to show zsh's tab complete in fzf instead of zsh's window.”

“But I still use fzf to find files.”

pxcDec 13, 2025recommends

“Polished interactivity is easy to build by just embedding a copy of `fzf`.”

Threads where it came up

Data: fzf.json. Quotes are verbatim; the verdict and theme labels are written by a model from these comments, and every clause links to its sources.

Keyboard shortcuts
j / kNext / previous item
o or EnterOpen selected item
/Search
g hHome
g tTop
g rRising
g cCategories
tToggle dark mode
?This help