asdf vs zoxide
Which should you use? A side-by-side look at what each one does, who it suits, what it costs, how hard it is to set up, and where each falls short.
Open source · MIT
A command-line tool that manages multiple versions of languages like Ruby, Node.js and Elixir, using plugins.
Open source · MIT
A faster way to change directories that learns the folders you visit most.
The short answer
Choose asdf if you need…
- Developers who work on several projects that need different language versions
- Teams that want one version config file per project
- People moving from nvm, rbenv or pyenv who want to reuse their existing version files
Choose zoxide if you need…
- Developers who move between many project folders in a terminal
- People who regularly type long paths and want shorter jumps
- Users of bash, zsh, fish, PowerShell, or xonsh who want one tool across shells
- People who want an interactive picker for folders via fzf
Side-by-side
| asdf | zoxide | |
|---|---|---|
| Type | Dev tool | Dev tool |
| Price | Free and open source | Free and open source |
| Licence | MIT | MIT |
| GitHub stars | 25.6k | 40.4k |
| Setup difficulty | Beginner | Beginner |
| How you get it | See the README | Install with a package manager |
| Main language | Go | Rust |
| Last code update | 5 days ago | 4 days ago |
What each one is
asdf
asdf is a command-line tool that lets you install and switch between different versions of programming languages and runtimes on a per-project basis. You add support for each language by installing a plugin. The README says it works like tools such as nvm, rbenv and pyenv, but in one tool with one set of commands.
zoxide
zoxide is a replacement for the cd command that remembers which directories you use most often. You type a few letters of a folder name and it jumps there, instead of typing the full path. It is inspired by the tools z and autojump and works with all major shells, according to the project's description.
Best for
asdf
- Developers who work on several projects that need different language versions
- Teams that want one version config file per project
- People moving from nvm, rbenv or pyenv who want to reuse their existing version files
zoxide
- Developers who move between many project folders in a terminal
- People who regularly type long paths and want shorter jumps
- Users of bash, zsh, fish, PowerShell, or xonsh who want one tool across shells
- People who want an interactive picker for folders via fzf
Strengths
asdf
- One command set covers multiple languages through plugins
- Reads existing files such as .nvmrc and .ruby-version, which eases migration
- Supports shell completion for Bash, Zsh, Fish and Elvish
zoxide
- Installs as a single binary and is available through many package managers, including winget, Homebrew, and cargo
- Supports many shells, as stated in the README
- Has an optional interactive selection mode using fzf
Not ideal for
asdf
- People who only use one language and one version, since a single-language version manager may be simpler
- Users who need a graphical interface, because the README describes a CLI tool only
zoxide
- People who rarely use the terminal, since the benefit comes from repeated use and the directory history it builds
- Users who need a cd replacement that behaves exactly like the built-in command in every edge case, since it ranks directories by frequency and recency rather than by typed path
Trade-offs
asdf
- Each language depends on its own plugin, so support quality varies by plugin (inferred from the plugin model described)
- The README is short and points to external docs for setup details, so the entry relies on those docs
zoxide
- Its jumps depend on a history it builds over time, so results are less predictable when you are new to it
- Some features, such as tab completion, are limited to specific shells (bash 4.4+, fish, and zsh, per the README)
- The README is truncated here, so setup details for each shell were not fully verified
Getting started
asdf
Clone the repository
git clone https://github.com/asdf-vm/asdf.gitzoxide
Install via Cargo (any platform with Rust)
cargo install zoxide --lockedInstall via Homebrew (macOS/Linux)
brew install zoxideFrequently asked questions
What is the difference between asdf and zoxide?
asdf: A command-line tool that manages multiple versions of languages like Ruby, Node.js and Elixir, using plugins. zoxide: A faster way to change directories that learns the folders you visit most. asdf suits developers who work on several projects that need different language versions, while zoxide suits developers who move between many project folders in a terminal.
Are asdf and zoxide free?
asdf: Free and open source. zoxide: Free and open source.
Is asdf or zoxide more popular?
zoxide has more GitHub stars (40.4k) than asdf (25.6k). Popularity isn't the same as fit — check which one matches your use case above.
What are other alternatives to asdf and zoxide?
Other options people compare them with include nvm, rbenv, pyenv, mise, Oh My Posh.
Keep comparing
Built from our catalogue entries for both products: open-source details come from each project's README (AI-assisted, refreshed weekly) and GitHub data; AI-tool details are editorial. Spotted something wrong? Let us know from either product's page.