Skip to content

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.

asdf

Open source · MIT

A command-line tool that manages multiple versions of languages like Ruby, Node.js and Elixir, using plugins.

zoxide

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

asdfzoxide
TypeDev toolDev tool
PriceFree and open sourceFree and open source
LicenceMITMIT
GitHub stars25.6k40.4k
Setup difficultyBeginnerBeginner
How you get itSee the READMEInstall with a package manager
Main languageGoRust
Last code update5 days ago5 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.git
Step-by-step guide: how to use asdf

zoxide

Install via Cargo (any platform with Rust)

cargo install zoxide --locked

Install via Homebrew (macOS/Linux)

brew install zoxide
Step-by-step guide: how to use zoxide

Frequently 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.