ajeetdsouza /zoxide
A smarter cd command. Supports all major shells.
★ 40,536⑂ 942👁 76⑃ 466● 758▤ 38◈ 108
40,536
stars
+14
942
forks
76
watchers
466
prs
758
issues
38
releases
108
discussions
README
Special thanks to:
Warp, built for coding with multiple AI agents.
Available for macOS, Linux, and Windows.
Visit
warp.dev
to learn more.
Processing over 3TB/s of video at peak load,
now hiring in SF.
zoxide
[![crates.io][crates.io-badge]][crates.io]
[![Downloads][downloads-badge]][releases]
[![Built with Nix][builtwithnix-badge]][builtwithnix]
zoxide is a smarter cd command, inspired by z and autojump.
It remembers which directories you use most frequently, so you can "jump" to
them in just a few keystrokes.
zoxide works on all major shells.
Getting started •
Installation •
Configuration •
Integrations
Getting started
![Tutorial][tutorial]
sh
z foo cd into highest ranked directory matching foo
z foo bar cd into highest ranked directory matching foo and bar
z foo / cd into a subdirectory starting with foo
z ~/foo z also works like a regular cd command
z foo/ cd into relative path
z .. cd one level up
z - cd into previous directory
zi foo cd with interactive selection (using fzf)
z foo show interactive completions (bash 4.4+/fish/zsh only)
Read more about the matching algorithm [here][algorithm-matching].
Installation
zoxide can be installed in 4 easy steps:
1. Install binary
zoxide runs on most major platforms. If your platform isn't listed below,
please [open an issue][issues].
Linux / WSL
The recommended way to install zoxide is via the install script:
sh
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
Or, you can use a package manager:
| Distribution | Repository | Instructions |
| ------------------- | ----------------------- | ----------------------------------------------------------------- |
| _Any_ | [crates.io] | cargo install zoxide --locked |
| _Any_ | [conda-forge] | conda install -c conda-forge zoxide |
| _Any_ | [guix] | guix install zoxide |
| _Any_ | [Linuxbrew] | brew install zoxide |
| _Any_ | [nixpkgs] | nix-env -iA nixpkgs.zoxide |
| Alpine Linux 3.13+ | [Alpine Linux Packages] | apk add zoxide |
| Arch Linux | [Arch Linux Extra] | pacman -S zoxide |
| ~~Debian~~[^1] | ~~[Debian Packages]~~ | ~~apt install zoxide~~ Top issues
#471Can't setup completions on ZSH17 comments · 2022-10-21#218Support for cmd.exe17 comments · 2021-06-01#247favour exact match over more frequent partial match14 comments · 2021-08-08#224Smart case search13 comments · 2021-06-06#260The search string should be used in determining the score11 comments · 2021-09-07#626zi no longer uses fzf for completion10 comments · 2023-09-28#1087Add these 2 features in zoxide, 1. Add multiple directories path, 2. Remove multiple paths9 comments · 2025-07-10#485Clap completion not installed9 comments · 2022-11-13
Discussions
#1269I ran an autoresearch loop to optimize the executable size of zoxide. ~ 40.2% reduction1 comments · 2026-07-20#1244I made these functions that integrate into the dirstack in zsh to make a harpoon like functionality0 comments · 2026-05-24#1243Can we hardcode paths?2 comments · 2026-05-23#1214zoxide refuses to go away2 comments · 2026-04-06#1195frecency scoring: full visit history vs aggregate rank+timestamp — tradeoffs0 comments · 2026-03-12#1194Move to the same folder as another terminal0 comments · 2026-03-09#1184Do I actually need zoxide in fish1 comments · 2026-02-20#1163Statistics for visited file paths0 comments · 2026-01-23
Latest release
0.10.0 v0.10.0 2026-07-04Added - import now supports fetching entries from atuin. - import now auto-detects database files. - import now skips directories matching $_ZO_EXCLUDE_DIRS. - POSIX: support for non-Cygwin Windows environments (e.g. Busybox). - Fish: Space-Tab completions now display and run the selected command. - Bash/POSIX/Zsh: z now honors $CDPATH. - Bash: don't add to the database when history is disabled (set +o history). - Nushell: export commands so the init script can be imported with use. - Support for RISC-V (riscv64) Linux. Changed - import now takes a subcommand instead of the -