Sseekdeploy

skim

A Rust fuzzy finder that follows fzf's model and most of its flags, and doubles as a library.

Open source · MITFree#cli#fuzzy-finder#rust#shell

What is skim?

skim is a command-line fuzzy finder written in Rust. Its binary, sk, reads a list of lines on standard input (or runs a command to get one), narrows it as you type and prints what you pick. It follows fzf closely: a preview window, multi-select, Ctrl-T, Ctrl-R and Alt-C shell bindings, plus an interactive mode that re-runs a command such as ripgrep on every keystroke. It is also a Rust crate that other programs embed.

Zhang Jinzhou started it in 2016; it is now developed under the skim-rs GitHub organisation, and its Cargo.toml lists Loric Andre and Zhang as authors. It is MIT-licensed, with no company or paid edition.

The current release is 5.9.0 (27 October 2026). 4.0.0 in March made the in-house arinae matcher the default and turned typo tolerance off unless you pass --typos; 5.0.0 in July recapped Windows support, image previews and tmux and Zellij popups. Its obvious comparison is fzf, whose flags it mostly, but not exactly, matches.

Our review

3.5

A capable fzf alternative with a real edge if you're embedding a picker in a Rust program, and a filter that matched or beat fzf in our run (50 vs 75 ms on a broad query over 97k paths). At the shell prompt fzf is still the safer pick: more tools expect it, and skim's fast release pace leaves its own README behind.

Pros

  • + Mostly fzf-compatible flags, a preview window and Ctrl-T, Ctrl-R and Alt-C bindings
  • + Usable as a Rust library as well as the sk binary
  • + Faster than fzf on a broad query and tied on a selective one in our 97k-path filter run

Cons

  • − Docs lag the code: the README still names the pre-4.0 default matcher
  • − Fewer integrations target skim than fzf, and its flags don't match fzf's exactly

Reviewed by SeekDeploy Editorial · updated 2026-11-15. Reviews are independent — we don’t accept payment for coverage or ratings.

Should you use skim?

A good fit if you're…

  • Rust developers who want a fuzzy picker inside their own program: skim is a crate as well as a CLI
  • fzf users who want interactive mode, where each keystroke re-runs a command like `rg` and you pick from its output
  • People who mistype paths and want typo-tolerant matching on demand (`--typos`)

Probably not for you if you're…

  • Anyone copying fzf recipes and plugin configs verbatim: the README says skim's flags may differ from fzf's
  • People who want a tool that rarely changes: 3.0.0, 4.0.0 and 5.0.0 all shipped between February and July 2026

Pick something else if…

  • you want the tool everything else expects: more editor plugins and tutorials target fzf's flags. In our 97k-path filter run they tied on a selective query (23.4 vs 23.2 ms) and skim was faster on a broad one (50 vs 75 ms) → fzf
  • you only need a minimal matcher in scripts: it filtered the same 97k paths about 3-4x faster than skim in our run, but has no preview window or shell bindings → fzy

Gotchas to know before you commit

  • Key bindings aren't on until you load them: `source <(sk --shell bash --shell-bindings)` (zsh and fish work too) adds Ctrl-T, Ctrl-R and Alt-C
  • The README's Algorithms section still calls skim_v2 the default; since 4.0.0 it is arinae (check `sk --help`), and typo tolerance is off unless you pass --typos or put it in SKIM_DEFAULT_OPTIONS
  • Homebrew's formula is `sk`, not `skim`; on Debian and Ubuntu the README points to the project's own APT repository rather than a distro package
  • Library users should pin a version: majors arrive every few months, and 5.0.0's notes say it is only non-breaking for the CLI and for library users on default features

skim pricing

Checked Nov 15, 2026 against the official pricing page

skim is free open-source software with no paid edition, hosted service or support plan from its maintainers. It never gets expensive; the only cost is your time configuring it.

Open source
$0
Everyone, including commercial use
  • The sk binary and shell bindings for bash, zsh and fish
  • The skim Rust crate and a Vim/Neovim plugin

What it costs in practice

Solo developer
$0
No licence fee, account or subscription.
Team of 50
$0
Same licence for every seat: MIT.

Estimates in USD from list prices. Your bill depends on usage, region, and discounts.

Health & activity

Updated Nov 15, 2026 · last 90 days
Actively developedFrequent commits or releases in the last 90 days.
GitHub stars
7k
263 forks
Commits
51
10 committers
Merged pull requests
43
Issues opened / closed
16 / 14
median 0.9 days to close
Last push
Nov 13, 2026
Open issues & PRs
7

From skim-rs/skim. Counts cover the last 90 days unless noted.

Downloads

Benchmarks

Our runs include the scripts in the repo, so you can reproduce them

Broad query over 97k paths

We ran this

Wall-clock time to fuzzy-filter and rank 97,371 file paths for the query "mm", no UI · ms, lower is better

  • fzy 1.017.8 ms
  • skim 5.9.050.1 ms
  • fzf 0.75.075.3 ms
How this was measured

benchmarks/fzf/run.sh. Input: git ls-files of the Linux kernel (commit aebb7274), fed on stdin via hyperfine --input. Commands: fzf --filter=mm | sk --filter=mm (default arinae matcher) | fzy -e mm. All three returned 42,570 matches. Measures matcher and ranking only, not interactive latency. Interleaved: 6 rounds of hyperfine (1 warmup + 2 timed runs per command per round, command order reversed every other round), pooled to n=12 per command; mean reported (stddev: fzf 7.5, skim 2.1, fzy 1.9 ms). Script refuses to start unless 1-minute load < 1.5. This run replaces the 14 Nov figures, which were on a different host (2.10 GHz Xeon) and kernel commit.

Environment: 4 vCPU Intel Xeon @ 2.30GHz (x86_64), 15 GB RAM, Ubuntu 24.04.5 container on Linux 6.18.44, shared host. Run 23:02-23:03 UTC. 1-minute load 0.34 at start and 0.63 at the end; a process snapshot every 15 s showed nothing else above 2% CPU.

Versions: fzf 0.75.0 (conda-forge build), skim 5.9.0 (conda-forge build), fzy 1.0 (Ubuntu apt), hyperfine 2.0.0

Run Nov 15, 2026

Selective query over 97k paths

We ran this

Wall-clock time to fuzzy-filter and rank 97,371 file paths for the query "drvnetethintel", no UI · ms, lower is better

  • fzy 1.06.2 ms
  • skim 5.9.023.2 ms
  • fzf 0.75.023.4 ms
How this was measured

benchmarks/fzf/run.sh. Input: git ls-files of the Linux kernel (commit aebb7274), fed on stdin via hyperfine --input. Commands: fzf --filter=drvnetethintel | sk --filter=drvnetethintel (default arinae matcher) | fzy -e drvnetethintel. All three returned 453 matches. Measures matcher and ranking only, not interactive latency. Interleaved: 6 rounds of hyperfine (1 warmup + 2 timed runs per command per round, command order reversed every other round), pooled to n=12 per command; mean reported (stddev: fzf 5.2, skim 0.9, fzy 0.3 ms). Script refuses to start unless 1-minute load < 1.5. This run replaces the 14 Nov figures, which were on a different host (2.10 GHz Xeon) and kernel commit.

Environment: 4 vCPU Intel Xeon @ 2.30GHz (x86_64), 15 GB RAM, Ubuntu 24.04.5 container on Linux 6.18.44, shared host. Run 23:02-23:03 UTC. 1-minute load 0.34 at start and 0.63 at the end; a process snapshot every 15 s showed nothing else above 2% CPU.

Versions: fzf 0.75.0 (conda-forge build), skim 5.9.0 (conda-forge build), fzy 1.0 (Ubuntu apt), hyperfine 2.0.0

Run Nov 15, 2026

What the community says

Hacker News & GitHub issues · Aug 17, 2026 – Nov 15, 2026

There wasn’t enough discussion in the last 90 days to summarise fairly. Here’s what there was.

Most-reacted new GitHub issues · 16 opened in the window

Alternatives to skim

Spotted something wrong or out of date? Flag a correction on GitHub. Health and community data refresh on the 1st and 15th of every month.