mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 27 Aug 2026

zoxide review

Zoxide is a command-line directory jumper that learns which folders you use and lets you reach them with a short query. It replaces repeated long `cd` paths with ranked matches and supports the major desktop shells.

+157 / 4dstars / 7d
Verdict

Our zoxide run installed 59 packages in 15 seconds and passed all 32 tests, making it an easy recommendation for developers who repeatedly cross a large directory tree. Use it if learned ranking sounds better than maintaining aliases. Keep fixed bookmarks or plain cd when choosing the wrong same-named folder would cost more time than zoxide saves.

We ran it

Lab card: what happened when we ran zoxideScreenshot of zoxide (crates.io/crates/zoxide)
Install✓ · 15s59 packages
Build✓ · 26s
Tests✓ · 27s32 passed · 0 failed of 32 (cargo test)
Repo74 files~3,584 lines of source · 0.9 MB · 5 CI workflows · tests dir

Answers from our run

Does zoxide build from source?

Dependencies installed in 15 seconds (59 packages), and the build succeeded in 26 seconds. We cloned commit 91be348 into a clean Debian container with 3 CPUs and no project-specific setup.

Do zoxide's tests pass?

Yes: 32 of 32 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use zoxide?

Users who need fixed bookmarks for identically named folders: issue 1014 still requests named bookmarks, while zoxide currently chooses from learned rank.

What are the alternatives to zoxide?

z, autojump, z.lua. Our zoxide run installed 59 packages in 15 seconds and passed all 32 tests, making it an easy recommendation for developers who repeatedly cross a large directory tree.

Setup5/515-second install and all 32 tests passed
Docs5/5Shell-specific setup, imports, and environment controls are explicit
Community5/538,938 stars with issue activity in August 2026
Maturity5/5v0.10.0 supports major shells and established migration paths

Discussed on

  1. hnZoxide: A Better CD Command324 points
  2. hnA smarter CD command. Supports all major shells33 points
  3. hnZoxide: Smarter CD command, inspired by z and autojump4 points
  4. hnZoxide – smart, fuzzy-matching cd alternative written in Rust3 points

Who it’s for

Developers who move among many repositories and remember project names better than full paths.
Shell users who want one learned directory history across routine terminal sessions.
People migrating from z, autojump, fasd, z.lua, or zsh-z who want to import existing data.
Bash, Fish, Zsh, Nushell, PowerShell, POSIX shell, Elvish, Tcsh, or Xonsh users willing to edit their shell startup file.

Who it’s NOT for

Users who need fixed bookmarks for identically named folders: issue 1014 still requests named bookmarks, while zoxide currently chooses from learned rank.
Developers who expect a parent directory to beat a frequently visited child: issue 1270 shows that a child can win the fuzzy match with no unique query left for the parent.
People who want searches restricted to descendants of the current directory: issue 1240 requests that scope because an exact match elsewhere can win today.
Debian or Ubuntu users who expect the distribution package to be the recommended current build: the README strikes out those packages and says they update slowly.
Anyone who wants the interactive zi experience without another program: it depends on fzf 0.51.0 or newer.

Setup reality

Our sandbox installed zoxide in 15 seconds with 59 packages. The build succeeded in 26 seconds, then all 32 tests passed in 27 seconds. The commit 91be348 checkout contained 74 files, about 3,584 source lines, and occupied 0.9 MB.

Zoxide needs no account, API key, server, or network service after installation. You do need to add the generated init command to the end of your shell configuration. Interactive selection and supported completions need fzf 0.51.0 or newer.

The runtime state is a local directory database under an OS-specific data path. Shell order matters: Zsh initialization belongs after compinit, and issue 1204 reports a doctor warning under Termius even though navigation still works. Nushell requires 0.106.0 or newer.

A 0.9 MB checkout replaces repeated path typing

Zoxide does one job: it remembers visited directories and ranks them so a fragment such as z foo can replace a long cd command. Our checkout was 0.9 MB with 74 files and about 3,584 lines of source, a small footprint for a tool that integrates with Bash, Fish, Zsh, Nushell, PowerShell, POSIX shells, Elvish, Tcsh, and Xonsh. The narrow scope is part of the appeal. There is no daemon to monitor and no hosted index of your filesystem.

The everyday interface is two commands. z selects the highest-ranked matching directory, while zi hands the candidates to fzf for interactive selection. Ordinary paths, .., and - still work, so the learned command does not force a separate mental model for basic navigation. Zoxide can also import histories from 6 named predecessors: atuin, autojump, fasd, z, z.lua, and zsh-z. That import path matters because a directory jumper feels worst on day one, before it has observed enough travel to become useful.

A 15-second install still needs one shell edit

Our sandbox installed zoxide in 15 seconds and pulled 59 packages while building from the checked-out Rust project. Most users will take a shorter route through a package manager or the published install script. The README covers Linux, macOS, Windows, BSD, and Android, then gives a separate initialization snippet for each supported shell. No credentials, database server, or background service are required. The persistent state lives in a local, OS-specific data directory.

Installation is only the first half of setup. The generated initialization command belongs at the end of the shell configuration, with an extra ordering rule for Zsh: it must come after compinit if completions should work. Nushell support starts at 0.106.0. The optional zi selector and interactive completions require fzf 0.51.0 or newer. Debian and Ubuntu package rows are struck out because the project says those repositories update slowly, so users on those systems must choose between the install script, Cargo, or another package source.

What happened when we ran it

Our run at commit 91be348 installed 59 packages in 15 seconds on 3 CPUs with 12 GB of RAM. The build completed successfully in 26 seconds. Cargo then finished the test step in 27 seconds with 32 passed and 0 failed out of 32. Nothing in those three steps required a secret or a privileged container, and none of the supplied logs ended in an error.

Those measurements describe a fresh Debian sandbox and the source checkout, not every package-manager build. The repository held 5 CI workflow files and a tests directory, while no Dockerfile was present. A Dockerfile would add little to a shell integration that has to run in the user's own interactive environment. The more useful production check is mundane: open a new terminal, confirm the init hook ran, visit several real paths, and verify that z records and retrieves them without changing the rest of the prompt.

All 32 tests passed, but ranking can still disagree with you

The 32 passing tests are good evidence for the checked-out command behavior. They cannot decide which of two human-meaningful folders should win a fuzzy query. Open issue 1270 gives a concrete failure mode: frequently visited child directories can outrank their parent, leaving the parent without an obvious unique fragment. Issue 1240 describes another: an exact directory name outside the current tree can beat a partial child match when the user wanted to stay under the present folder.

This tradeoff separates zoxide from a bookmark file. Issue 1014 asks for named bookmarks so several folders called src could receive stable aliases. That feature is still a request, so anyone who needs deterministic destinations should keep shell aliases, use full paths, or inspect the list through zi. Zoxide does expose useful controls: excluded-directory globs, a maximum database age of 10,000 entries by default, optional symlink resolution, and a custom command prefix. These controls shape the database, but they do not turn learned rank into an explicit bookmark map.

Five CI workflows support a project still moving in August 2026

The repository had 5 CI workflow files, and GitHub recorded its last push on August 24, 2026. Release v0.10.0 arrived on July 4, adding atuin imports, RISC-V Linux support, Windows POSIX work, and shell-specific fixes. GitHub listed 38,938 stars and 137 combined open issues and pull requests when fetched. Recent issue activity continued on August 26, so the combined count points to an active queue rather than a count of known bugs.

The closest alternatives make different compromises. rupa/z is the compact script that helped define this category. Autojump keeps its own learned-navigation conventions and may already be wired into an older workstation. z.lua is attractive where Lua is already available or its matching options are preferred. Zoxide is the strongest default for a new setup because our 27-second test run was clean, the shell matrix is unusually broad, and migration from 6 existing tools is documented. Its learned choices remain the one behavior to test against your directory layout before replacing old aliases.

Alternatives

ProjectWhat it isPick it when
zA small shell script that learns frequently used directories.pick this instead when you want the older, simpler script that inspired zoxide and your shell fits its setup.
autojumpA Python directory jumper with learned path weights.pick this instead when you already depend on autojump's commands or package integration and see no reason to migrate.
z.luaA Lua directory jumper designed for speed and broad shell use.pick this instead when Lua is already part of your shell setup or its path-matching controls suit you better.

What people are saying

  1. [github-trending] ajeetdsouza/zoxide

Sources

  1. Zoxide repository and README
  2. Zoxide v0.10.0 release
  3. Termius doctor warning report
  4. Parent directory ranking report
  5. Child-only search request
  6. Bookmark feature request

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →