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

z foo # cd into highest ranked directory matching foo
z foo bar # cd into highest ranked directory matching foo and bar
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<SPACE><TAB> # show interactive completions (zoxide v0.7.10+, bash/fish/zsh only)
Read more about the matching algorithm here.
zoxide runs on most major platforms. If your platform isn't listed below, please open an issue.
To install zoxide, run this command in your terminal:
curl -sS https://webinstall.dev/zoxide | bash
Alternatively, 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 | Linuxbrew | brew install zoxide |
| Alpine Linux 3.13+ | Alpine Linux Packages | apk add zoxide |
| Arch Linux | Arch Linux Community | pacman -S zoxide |
| CentOS 7+ | Copr | dnf copr enable atim/zoxide dnf install zoxide |
| Debian 11+ | Debian Packages | apt install zoxide |
| Devuan 4.0+ | Devuan Packages | apt install zoxide |
| Fedora 32+ | Fedora Packages | dnf install zoxide |
| Gentoo | GURU Overlay | eselect repository enable guru emerge --sync guru emerge app-shells/zoxide |
| Manjaro | pacman -S zoxide | |
| NixOS | nixpkgs | nix-env -iA nixpkgs.zoxide |
| Parrot OS | apt install zoxide | |
| Raspbian 11+ | Raspbian Packages | apt install zoxide |
| Ubuntu 21.04+ | Ubuntu Packages | apt install zoxide |
| Void Linux | Void Linux Packages | xbps-install -S zoxide |
To install zoxide, use a package manager:
| Repository | Instructions |
|---|---|
| crates.io | cargo install zoxide --locked |
| conda-forge | conda install -c conda-forge zoxide |
| Homebrew | brew install zoxide |
| MacPorts | port install zoxide |
To install zoxide, run this command in your command prompt:
curl.exe -A "MS" https://webinstall.dev/zoxide | powershell
Alternatively, you can use a package manager:
| Repository | Instructions |
|---|---|
| crates.io | cargo install zoxide --locked |
| Chocolatey | choco install zoxide |
| conda-forge | conda install -c conda-forge zoxide |
| Scoop | scoop install zoxide |
To install zoxide, use a package manager:
| Distribution | Repository | Instructions |
|---|---|---|
| Any | crates.io | cargo install zoxide --locked |
| DragonFly BSD | DPorts | pkg install zoxide |
| FreeBSD | FreshPorts | pkg install zoxide |
| NetBSD | pkgsrc | pkgin install zoxide |
To start using zoxide, add it to your shell.
Add this to your configuration (usually ~/.bashrc):
eval "$(zoxide init bash)"
Add this to your configuration (usually ~/.elvish/rc.elv):
eval (zoxide init elvish | slurp)
Note: zoxide only supports elvish v0.16.0 and above.
Add this to your configuration (usually ~/.config/fish/config.fish):
zoxide init fish | source
Add this to your configuration (find it by running config path in Nushell):
startup = ["zoxide init nushell --hook prompt | save ~/.zoxide.nu", "source ~/.zoxide.nu"]
Note: zoxide only supports Nushell v0.37.0 and above.
Add this to your configuration (find it by running echo $profile in
PowerShell):
# For zoxide v0.8.0+
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell | Out-String)
})
# For older versions of zoxide
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell) -join "`n"
})
Add this to your configuration (usually ~/.xonshrc):
execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
Add this to your configuration (usually ~/.zshrc):
eval "$(zoxide init zsh)"
For completions to work, this line must be added after calling compinit.
Add this to your configuration:
eval "$(zoxide init posix --hook prompt)"
fzf is a command-line fuzzy finder, used by zoxide for interactive selection. It can be installed from here.
If you currently use any of the following utilities, you may want to import your data into zoxide:
zoxide import --from autojump path/to/db
zoxide import --from z path/to/db
When calling zoxide init, the following flags are available:
--cmd
z, zi).--cmd j would change the aliases to (j, ji).--cmd cd would replace the cd command (doesn't work on Nushell / POSIX shells).--hook <HOOK>
| Hook | Description |
|---|---|
none | Never |
prompt | At every shell prompt |
pwd | Whenever the directory is changed |
--no-aliases
z, zi).__zoxide_z and
__zoxide_zi, should you choose to redefine them.Environment variables? can be used for configuration.
They must be set before zoxide init is called.
_ZO_DATA_DIR
| OS | Path | Example |
|---|---|---|
| Linux / BSD | $XDG_DATA_HOME or $HOME/.local/share | /home/alice/.local/share |
| macOS | $HOME/Library/Application Support | /Users/Alice/Library/Application Support |
| Windows | {FOLDERID_RoamingAppData} | C:\Users\Alice\AppData\Roaming |
_ZO_ECHO
z will print the matched directory before navigating to
it._ZO_EXCLUDE_DIRS
| OS | Separator | Example |
|---|---|---|
| Linux / macOS / BSD | : | $HOME:$HOME/private/* |
| Windows | ; | $HOME;$HOME/private/* |
"$HOME"._ZO_FZF_OPTS
_ZO_MAXAGE
_ZO_RESOLVE_SYMLINKS
z will resolve symlinks before adding directories to the
database.| Application | Description | Plugin |
|---|---|---|
| emacs | Text editor | zoxide.el |
| nnn | File manager | nnn-autojump |
| ranger | File manager | ranger-zoxide |
| telescope.nvim | Fuzzy finder for Neovim | telescope-zoxide |
| vim | Text editor | zoxide.vim |
| xplr | File manager | zoxide.xplr |
| xxh | Transports shell configuration over SSH | xxh-plugin-prerun-zoxide |
| zsh-autocomplete | Realtime completions for zsh | Supported by default |
(top 30 of 37)
Rust
98.2%
Nix
1.3%
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

z foo # cd into highest ranked directory matching foo
z foo bar # cd into highest ranked directory matching foo and bar
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<SPACE><TAB> # show interactive completions (zoxide v0.7.10+, bash/fish/zsh only)
Read more about the matching algorithm here.
zoxide runs on most major platforms. If your platform isn't listed below, please open an issue.
To install zoxide, run this command in your terminal:
curl -sS https://webinstall.dev/zoxide | bash
Alternatively, 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 | Linuxbrew | brew install zoxide |
| Alpine Linux 3.13+ | Alpine Linux Packages | apk add zoxide |
| Arch Linux | Arch Linux Community | pacman -S zoxide |
| CentOS 7+ | Copr | dnf copr enable atim/zoxide dnf install zoxide |
| Debian 11+ | Debian Packages | apt install zoxide |
| Devuan 4.0+ | Devuan Packages | apt install zoxide |
| Fedora 32+ | Fedora Packages | dnf install zoxide |
| Gentoo | GURU Overlay | eselect repository enable guru emerge --sync guru emerge app-shells/zoxide |
| Manjaro | pacman -S zoxide | |
| NixOS | nixpkgs | nix-env -iA nixpkgs.zoxide |
| Parrot OS | apt install zoxide | |
| Raspbian 11+ | Raspbian Packages | apt install zoxide |
| Ubuntu 21.04+ | Ubuntu Packages | apt install zoxide |
| Void Linux | Void Linux Packages | xbps-install -S zoxide |
To install zoxide, use a package manager:
| Repository | Instructions |
|---|---|
| crates.io | cargo install zoxide --locked |
| conda-forge | conda install -c conda-forge zoxide |
| Homebrew | brew install zoxide |
| MacPorts | port install zoxide |
To install zoxide, run this command in your command prompt:
curl.exe -A "MS" https://webinstall.dev/zoxide | powershell
Alternatively, you can use a package manager:
| Repository | Instructions |
|---|---|
| crates.io | cargo install zoxide --locked |
| Chocolatey | choco install zoxide |
| conda-forge | conda install -c conda-forge zoxide |
| Scoop | scoop install zoxide |
To install zoxide, use a package manager:
| Distribution | Repository | Instructions |
|---|---|---|
| Any | crates.io | cargo install zoxide --locked |
| DragonFly BSD | DPorts | pkg install zoxide |
| FreeBSD | FreshPorts | pkg install zoxide |
| NetBSD | pkgsrc | pkgin install zoxide |
To start using zoxide, add it to your shell.
Add this to your configuration (usually ~/.bashrc):
eval "$(zoxide init bash)"
Add this to your configuration (usually ~/.elvish/rc.elv):
eval (zoxide init elvish | slurp)
Note: zoxide only supports elvish v0.16.0 and above.
Add this to your configuration (usually ~/.config/fish/config.fish):
zoxide init fish | source
Add this to your configuration (find it by running config path in Nushell):
startup = ["zoxide init nushell --hook prompt | save ~/.zoxide.nu", "source ~/.zoxide.nu"]
Note: zoxide only supports Nushell v0.37.0 and above.
Add this to your configuration (find it by running echo $profile in
PowerShell):
# For zoxide v0.8.0+
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell | Out-String)
})
# For older versions of zoxide
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell) -join "`n"
})
Add this to your configuration (usually ~/.xonshrc):
execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
Add this to your configuration (usually ~/.zshrc):
eval "$(zoxide init zsh)"
For completions to work, this line must be added after calling compinit.
Add this to your configuration:
eval "$(zoxide init posix --hook prompt)"
fzf is a command-line fuzzy finder, used by zoxide for interactive selection. It can be installed from here.
If you currently use any of the following utilities, you may want to import your data into zoxide:
zoxide import --from autojump path/to/db
zoxide import --from z path/to/db
When calling zoxide init, the following flags are available:
--cmd
z, zi).--cmd j would change the aliases to (j, ji).--cmd cd would replace the cd command (doesn't work on Nushell / POSIX shells).--hook <HOOK>
| Hook | Description |
|---|---|
none | Never |
prompt | At every shell prompt |
pwd | Whenever the directory is changed |
--no-aliases
z, zi).__zoxide_z and
__zoxide_zi, should you choose to redefine them.Environment variables? can be used for configuration.
They must be set before zoxide init is called.
_ZO_DATA_DIR
| OS | Path | Example |
|---|---|---|
| Linux / BSD | $XDG_DATA_HOME or $HOME/.local/share | /home/alice/.local/share |
| macOS | $HOME/Library/Application Support | /Users/Alice/Library/Application Support |
| Windows | {FOLDERID_RoamingAppData} | C:\Users\Alice\AppData\Roaming |
_ZO_ECHO
z will print the matched directory before navigating to
it._ZO_EXCLUDE_DIRS
| OS | Separator | Example |
|---|---|---|
| Linux / macOS / BSD | : | $HOME:$HOME/private/* |
| Windows | ; | $HOME;$HOME/private/* |
"$HOME"._ZO_FZF_OPTS
_ZO_MAXAGE
_ZO_RESOLVE_SYMLINKS
z will resolve symlinks before adding directories to the
database.| Application | Description | Plugin |
|---|---|---|
| emacs | Text editor | zoxide.el |
| nnn | File manager | nnn-autojump |
| ranger | File manager | ranger-zoxide |
| telescope.nvim | Fuzzy finder for Neovim | telescope-zoxide |
| vim | Text editor | zoxide.vim |
| xplr | File manager | zoxide.xplr |
| xxh | Transports shell configuration over SSH | xxh-plugin-prerun-zoxide |
| zsh-autocomplete | Realtime completions for zsh | Supported by default |
(top 30 of 37)
Rust
98.2%
Nix
1.3%