Fuzzy search any list
Pipe files, processes, git branches or hostnames into fzf and filter by typing a few letters. The fuzzy match finds it even with characters skipped.
any STDIN listfzf is a fast command-line fuzzy finder. Filter files, shell history and git branches by typing a few letters. Free, open source and cross-platform.
fzf filters any list you throw at it, then hands the pick back to your shell, editor or script.
Pipe files, processes, git branches or hostnames into fzf and filter by typing a few letters. The fuzzy match finds it even with characters skipped.
any STDIN listCTRL-T finds files, CTRL-R searches history and ALT-C jumps into a folder. The fzf zsh, bash and fish integration wires them up in one line.
CTRL-T · CTRL-R · ALT-CUse fzf to find files in a huge tree without typing a path. Pair it with fd or ripgrep and even a giant repo opens in a keystroke.
fzf find filesHit CTRL-R and fuzzy search every command you have run. No more mashing the up arrow to find that long docker line from last week.
CTRL-R historyThe fzf.vim plugin drops the same finder into your editor. Jump to files, buffers and grep hits without leaving the keyboard.
fzf.vimfzf is a single portable binary written in Go, so it filters millions of items fast with zero dependencies. Open source and free on every platform.
Go · MITInstall the binary with Homebrew, then add one line to your shell config for the key bindings.
$ brew install fzf
$ source <(fzf --zsh)
Press ⌘+Space, type Terminal, then hit Return. A fresh window opens ready for the command above.
Run the brew line, then add the integration line to ~/.zshrc and reload. CTRL-T and CTRL-R start working right away.
On Windows use choco, scoop or winget. Linux distros ship fzf in apt, dnf and pacman too.
Download BinaryInstall once, then filter anything from your keyboard.
Run brew install fzf, then add the shell integration line so the key bindings load with every new terminal.
Press CTRL-T for files or CTRL-R for history. You can also pipe any command output straight into fzf.
Type a few letters to narrow the list, use the arrows to move, then press Enter. Your pick drops back onto the command line.
Type a rough pattern, watch the list narrow live, then hit Enter. The match count and highlights update on every keystroke.
Notes from people who put fzf in their dotfiles and never looked back.
fzf changed how I use the terminal. CTRL-R for history and CTRL-T for files, I never type a full path anymore. Fastest tool on my Mac.
Set up fzf in zsh in about a minute and my whole shell got smarter. The fuzzy history search alone is worth the install.
I pipe everything into fzf now. Git branches, docker containers, kubectl pods. One tiny binary filters any list I throw at it.
The fzf Vim plugin is glued to my editor. Files and grep across a huge repo return instantly. I could not code without it now.
Took me a day to learn the keybindings, and the docs assume some shell knowledge. Once it clicked though, fzf is unbeatable.
Installed with one brew line on Mac and it just worked. No config needed to start finding files fast. Exactly what a tool should be.
Millions of lines and fzf still filters instantly. Written in Go and it shows. This is the gold standard for a fuzzy finder.
Open source, MIT, single binary, zero dependencies. I drop fzf on every server I touch. It belongs in everyone's dotfiles.
CTRL-R replaced my messy reverse-search habit overnight. fzf makes my shell history actually usable for the first time.
Everything worth knowing before you install fzf.
brew install fzf in the Terminal. Homebrew works on both macOS and Linux. After that, add the shell integration line so the CTRL-T and CTRL-R key bindings load automatically.brew install fzf, and the shell integration works the same in the default zsh shell on modern Macs.fzf to filter files under the current folder, or pipe a command into it like history | fzf. With shell integration on, press CTRL-T for files or CTRL-R for history from any prompt.source <(fzf --zsh) to your ~/.zshrc and it wires up the CTRL-T, CTRL-R and ALT-C key bindings plus fuzzy tab completion.FZF_DEFAULT_OPTS environment variable for layout, colors and key bindings, and FZF_DEFAULT_COMMAND for the default source. Drop these in your shell config so every fzf session uses them.Install fzf free and find any file, command or branch by typing a few letters. Mac, Linux and Windows, one small binary.