asdf vs rbenv
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 tool that switches between Ruby versions per project on Unix-like systems.
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 rbenv if you need…
- Developers who work on several Ruby projects that need different Ruby versions
- People on macOS or Linux who want Ruby versions installed under their home directory
- Teams that commit a .ruby-version file so everyone uses the same Ruby
- Users who want a small, simple tool and are willing to add plugins for extra features
Side-by-side
| asdf | rbenv | |
|---|---|---|
| Type | Dev tool | Dev tool |
| Price | Free and open source | Free and open source |
| Licence | MIT | MIT |
| GitHub stars | 25.6k | 16.7k |
| Setup difficulty | Beginner | Intermediate |
| How you get it | See the README | Install with a package manager |
| Main language | Go | Shell |
| Last code update | 5 days ago | 4 months 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.
rbenv
rbenv is a version manager for the Ruby programming language on Unix-like systems such as macOS and Linux. It lets one computer keep several Ruby versions installed and picks the right one for each project, based on a .ruby-version file in the project folder. It is used so each project runs on the Ruby version it expects.
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
rbenv
- Developers who work on several Ruby projects that need different Ruby versions
- People on macOS or Linux who want Ruby versions installed under their home directory
- Teams that commit a .ruby-version file so everyone uses the same Ruby
- Users who want a small, simple tool and are willing to add plugins for extra features
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
rbenv
- Switches Ruby versions automatically when you change project directories
- Installs under your home directory, so you can avoid using sudo for gems
- Customizable through bash plugins
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
rbenv
- Windows users, since the README says it is for Unix-like systems (use a Windows-specific tool instead)
- People who only ever use one Ruby version and do not need switching
- Users who want rbenv install to work out of the box, since it needs the separate ruby-build plugin
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
rbenv
- The README says its simplicity has downsides and points to a comparison of alternatives
- Debian and Ubuntu packages are out of date, so the README recommends a git install there
- Installing Ruby versions depends on the separate ruby-build plugin and your build environment
Getting started
asdf
Clone the repository
git clone https://github.com/asdf-vm/asdf.gitrbenv
Install with Homebrew (macOS or Linux)
brew install rbenvSet up your shell to load rbenv
rbenv initFrequently asked questions
What is the difference between asdf and rbenv?
asdf: A command-line tool that manages multiple versions of languages like Ruby, Node.js and Elixir, using plugins. rbenv: A tool that switches between Ruby versions per project on Unix-like systems. asdf suits developers who work on several projects that need different language versions, while rbenv suits developers who work on several ruby projects that need different ruby versions.
Are asdf and rbenv free?
asdf: Free and open source. rbenv: Free and open source.
Which is easier to set up, asdf or rbenv?
asdf is easier to get started with (rated beginner); rbenv is rated intermediate and usually needs more setup.
Is asdf or rbenv more popular?
asdf has more GitHub stars (25.6k) than rbenv (16.7k). Popularity isn't the same as fit — check which one matches your use case above.
What are other alternatives to asdf and rbenv?
Other options people compare them with include nvm, pyenv, mise, Oh My Posh, inshellisense.
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.