Short names work best for places you already visit
Type z client api and zoxide chooses the highest-ranked remembered directory matching those words in that order. You can leave a deeply nested project and return without recalling its full path. That's the reason to use it: a working week spent revisiting familiar repositories. A newly cloned project still needs an ordinary visit or imported history before learned shortcuts become useful. Keep cd for explicit paths while you learn what zoxide remembers.
The Rust checkout in our lab contained 74 files and roughly 3,655 lines of source. That is a manageable amount of code for a developer considering a contribution or investigating a shell integration. The limited scope also helps explain the appeal: this tool remembers destinations and chooses among them. It doesn't ask you to reorganize your projects or adopt a file manager to shorten a repeated trip.
What happened when we ran it
Our run installed zoxide at commit 86b443c in 6 seconds, adding 59 packages. The build succeeded in 24 seconds, and cargo test finished in another 24 seconds with 32 passed and 0 failed. Those results support recommending the source route to someone comfortable with Rust tooling. They establish that the measured checkout installed, compiled, and passed its suite in our environment.
Our measurement setup used a fresh Debian sandbox with 3 CPUs and 12 GB of RAM, running image lab-rust:1. We ran the checkout there on October 5, 2026. The container was unprivileged and held no secrets. The run gives us no shell-startup timing or navigation benchmark. It also doesn't establish that every supported shell behaves identically. Treat the passing suite as evidence about this commit and environment when deciding how much confidence to place in it.
Zsh initialization belongs after compinit
Bash users append eval "$(zoxide init bash)" to their shell configuration. Zsh users put its corresponding initialization after compinit. The shell setup instructions also cover PowerShell and Nushell, whose current minimum is v0.106.0. Basic navigation needs no account, API credential, or hosted service. Interactive selection through zi requires fzf v0.51.0 or newer, so the optional dependency becomes necessary if you want a menu when a query is ambiguous.
The 6-second installation in our sandbox doesn't remove that configuration work. Environment settings must precede initialization, and existing completion behavior matters. Warp supplies its own completions and doesn't support zoxide's Space+Tab completion. The README also warns that Debian and Ubuntu packages can lag upstream. Check the package version before copying current instructions, particularly for Nushell. I'd keep the default z command initially, rather than replacing cd through the available initialization flag.
Similar project paths can send you to the wrong workspace
Zoxide's matching algorithm checks query terms without regard to case and requires them in path order. It ranks matches using visit frequency and recency. That makes a short query convenient when you have a clear favorite, but switching between clients with matching directory layouts changes what the favorite should be. Add a distinguishing project name to the query, or use zi to inspect the candidates before choosing.
Our 32 passing tests don't resolve that workflow choice. In issue 1325, a user describes separate tmux projects with similar subdirectories and asks for a session-scoped default base directory. The request remained open on October 16. Someone who must stay inside the current client's tree has a concrete reason to prefer an explicit path or a directory picker scoped to that tree. A successful jump can still land in an unwanted workspace.
Exclude private paths before initializing zoxide
On Linux, the default database lives under $XDG_DATA_HOME/zoxide or ~/.local/share/zoxide. Set _ZO_EXCLUDE_DIRS before initialization to keep selected paths out, and use _ZO_DATA_DIR to choose another database location. These settings matter on shared accounts or machines containing client directories whose names you don't want retained. _ZO_RESOLVE_SYMLINKS changes how paths enter the history, so decide whether your working names or their resolved targets should be remembered.
The checkout occupied 0.9 MB before installation. That figure doesn't measure the installed binary or your eventual history database, and the 59 packages belong to our sandbox installation result. There's no basis here for a runtime memory claim. The lab also found 5 CI workflow files, a tests directory, and no Dockerfile. For a local shell utility, the absent container recipe doesn't change my recommendation. The initialization behavior is the part you'll live with.
October activity supports trying it, while alternatives serve different habits
The repository's last push was October 14, 2026. GitHub listed 40,130 stars and 152 open issues and PRs when checked on October 16. Release v0.10.0 shipped on July 4 with Atuin import support and shell fixes. Current issue activity includes the workspace-scoping request and a Nushell startup-hook report. Together, the push and discussion show ongoing development, while the reports give you specific behavior to check in your own shell.
Choose rupa/z if Bash or Zsh and its script-based approach already fit your habits. Autojump adds shortcuts for opening directories in a file manager. For finding unfamiliar directories, fzf's Alt-C picker is a better starting point than learned history. Zoxide earns a place when repeated navigation is the annoyance: our build passed in 24 seconds, and the configuration is small enough to inspect. Leave cd available for the destination that must be exact.

