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.

