Skip to content

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.

asdf

Open source · MIT

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

rbenv

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

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

rbenv

Install with Homebrew (macOS or Linux)

brew install rbenv

Set up your shell to load rbenv

rbenv init
Step-by-step guide: how to use rbenv

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