EVERYTHING XIAOMI
Get listed

nvm

nvm is a free, MIT-licensed command-line tool for installing and using different Node.js versions.

Place
#1 of 30
Score
7.4
nvm's website

What nvm is

nvm is a free, MIT-licensed command-line tool for installing and using different Node.js versions. It is installed per user and invoked per shell, and works in POSIX-compliant shells including sh, dash, ksh, zsh, and bash. Users can install versions, switch between them, set aliases such as a default, and select long-term support releases with LTS aliases and commands. Projects can specify a version in an .nvmrc file, with documented shell snippets for automatic switching. nvm can also reinstall global npm packages from another installed Node.js version, or install a previously downloaded version offline with the --offline flag. The project documents Docker and CI/CD use. On Windows, it can work through WSL and may work with Git Bash or Cygwin depending on the environment. Fish shell is not supported, and the project says only the latest nvm version is supported.

Good

  • Free and MIT licensed.
  • Supports version aliases and LTS releases.
  • Project versions can be specified with .nvmrc.
  • Can install cached versions offline.

Watch out

  • Fish shell is not supported.
  • Windows use depends on WSL or other environments.
  • Only the latest nvm version is supported.

Who it suits

nvm suits developers who need to manage Node.js versions from the command line, including per-project version selection and CI/CD use. It is intended for per-user, per-shell installation.

Verdict

nvm provides command-line Node.js version management, including project configuration and offline installation from a cache. Check its shell support and Windows environment requirements before choosing it.

Plans and prices

From nvm's own pricing page, checked 15 Oct 2026.

All about pricing
PlanPriceWhat it gives you
nvmFreeNode.js version installation · version switching · aliases · .nvmrc project selection · shell integration

The facts

Each one read from nvm's own pages, with the date it was checked.

What it does

Aliases
Users can create aliases such as default or custom names for Node versions.checked 15 Oct 2026
API and SDKs
The README documents a sourced shell command interface and environment variables; it does not describe a hosted HTTP API or SDK.checked 15 Oct 2026
Automatic switching
Automatic directory switching is documented as user-added bash or zsh hooks rather than built into the core command.checked 15 Oct 2026
Core installation
Users can install the latest Node release, a specific version, or source builds with nvm install.checked 15 Oct 2026
Docker and CI
The documentation provides Dockerfile patterns using BASH_ENV and a separate CI/CD container example.checked 15 Oct 2026
Documentation depth
The README includes installation, Docker, CI/CD, shell hooks, mirrors, offline mode, environment variables, testing, troubleshooting and uninstall guidance.checked 15 Oct 2026
Execution helpers
nvm run and nvm exec run commands with a selected Node version without permanently changing the surrounding shell.checked 15 Oct 2026
Extensibility
Mirror URLs, authorization headers and several NVM_* environment variables can customize downloads and installation behavior.checked 15 Oct 2026
Fish limitation
The project does not natively support Fish and suggests wrappers or alternative managers.checked 15 Oct 2026
Independent mirror status
SourceForge identifies its nvm page as an exact mirror and states it is not affiliated with the project.checked 15 Oct 2026
Independent project snapshot
Hysen Labs recorded 95,544 GitHub stars, 10,530 forks, Shell as the main language and MIT licensing on October 15, 2026.checked 15 Oct 2026
Installation model
It is designed to be installed per user and invoked per shell.checked 29 Sep 2026
Integrations
Documented integrations include Docker, Ansible, zsh plugins, bash completion and optional nvshim shims.checked 15 Oct 2026
Latest release
The release page lists v0.40.7 as a signed release adding concurrent-install serialization and safer download handling.checked 15 Oct 2026
License
nvm is distributed under the MIT License, permitting use, modification, distribution and sale subject to retaining notices.checked 15 Oct 2026
Limit: Fish shell
A Stack Overflow answer explains that nvm.sh cannot be sourced directly by Fish because Fish is not POSIX-compatible.checked 15 Oct 2026
Limit: shell startup speed
Marco Orta measured about 405 ms to load nvm and about 1,003 ms to switch versions in his six-version WSL2 test.checked 15 Oct 2026
LTS support
The command set includes aliases and workflows for installing and selecting Node.js long-term-support releases.checked 15 Oct 2026
Offline installation
Recent releases add nvm install --offline to install a version from the local cache without network access.checked 15 Oct 2026
Offline use
It can install a previously downloaded or cached Node.js version without network access using the --offline flag.checked 29 Sep 2026
Package migration
Installation can migrate global npm packages from another installed Node version.checked 15 Oct 2026

Where it runs

Limit: native Windows
Independent comparison coverage says the original nvm does not work natively on Windows and requires the separate nvm-windows project.checked 15 Oct 2026
Limit: shared machines
Microsoft warns that per-user symbolic-link behavior can make nvm unsuitable for shared developer boxes and multi-agent build servers.checked 15 Oct 2026
Platform limitation
The project does not support the Fish shell and points users to community alternatives.checked 29 Sep 2026
The full review of nvm

nvm is a free command-line manager for installing and selecting Node.js versions. It suits developers who need different runtimes across projects, especially those working in compatible shells. Its focused project and LTS controls are useful, but its shell requirements and indirect Windows support narrow the fit.

Overview

Installed for an individual user and invoked in each shell, nvm keeps Node.js version management close to a developer’s command-line workflow. You can install specific releases, switch between them, and set an alias for a preferred default. That is a practical fit for people maintaining projects with different runtime needs, but nvm manages Node.js rather than several languages.

A project’s .nvmrc can identify the Node.js version it expects. Documented shell snippets can make switching automatic, but that behavior depends on configuring the shell; the project file alone does not eliminate setup. nvm can also reinstall global npm packages from another installed Node.js version during installation, which can ease a version change for users who rely on global tools.

Key features

  • Version selection and aliases: Install particular Node.js versions, switch when needed, and set a default. This gives developers a direct way to maintain separate runtime choices without relying on a system-wide Node.js version.
  • LTS management: Commands and aliases let users install, use, and list long-term support releases. That is helpful for developers who prefer LTS versions, while still leaving them free to select specific releases.
  • Project pinning and automatic switching: An .nvmrc identifies the intended version for a project, and documented shell snippets can automate switching. The trade-off is that automatic behavior requires shell configuration.
  • Offline installation: The --offline flag can install a previously downloaded or cached Node.js version without network access. This helps when connectivity is unavailable, but only for versions already in the cache.
  • Docker and CI: The project documents Docker use, including an example for CI/CD jobs, making nvm a candidate for teams that want to apply its Node.js version workflow in those environments.

Pricing

nvm is open-source software under the MIT license, with a single free plan: free. There is no paid tier to unlock its version management features, so it suits individual developers and teams comfortable using a command-line tool. The free plan does not add paid support terms; the project supports only its latest nvm version, so users should keep current if they want supported releases.

Platforms

nvm supports Linux and macOS, as well as self-hosted environments. It works on POSIX-compliant shells including sh, dash, ksh, zsh, and bash, but not Fish; Fish users should look to community alternatives. Windows use is through WSL, and it may work with Git Bash or Cygwin depending on the environment, so it is a less straightforward choice for people who need native Windows support.

Who it's for

Choose nvm if you work on Node.js projects that require different versions, want project-level version pinning, or prefer LTS aliases and commands. It is also a sensible fit when offline installation from a cache or documented Docker and CI workflows matter. Look elsewhere if you need multi-language runtime management, use Fish, or want Windows support without relying on WSL or an environment-dependent shell setup.

Pros and cons

  • Pro — Project-specific versions: An .nvmrc can record the Node.js version a project expects, while configured shell snippets can automate switching.
  • Pro — Useful version coverage: Specific releases, default aliases, LTS commands, and migration of global npm packages address several common version-change needs.
  • Pro — Cached offline installs: The --offline option can install versions already downloaded, even without network access.
  • Con — Narrow language scope: nvm handles Node.js versions, not several languages, so it is not the right manager for a mixed-language toolchain.
  • Con — Shell constraints: Fish is unsupported, and automatic project switching requires shell configuration.
  • Con — Windows qualification: Windows use depends on WSL or may work through Git Bash or Cygwin depending on the environment, rather than being a uniform native workflow.

Alternatives

For another Node.js version manager, compare fnm, which is free and supports Linux, macOS, and Windows, or nodenv, a free Node.js manager for Linux and macOS. Consider mise if you want a free, MIT-licensed option described as available for macOS, Linux, and Windows. For other languages, rustup is a free option for Linux, macOS, and Windows; elan offers free Lean version management under Apache-2.0 and MIT licenses; GVM is free Go version management for Linux and macOS; PHPBrew is a free option for PHP on Linux, macOS, and self-hosted systems, though building PHP requires development packages and unsupported older PHP versions may fail; and plenv is a free Perl binary manager for Linux and macOS. Browse Runtime Version Managers or Development Environment Managers for the broader category.

Verdict

Choose nvm if Node.js is your focus and you want free, per-user version control with project pinning, LTS support, and cached offline installs. Its main advantage is a workflow centered on the shell and project version; look elsewhere if Fish compatibility, broader language coverage, or more direct Windows support matters more.

Alternatives to nvm

All alternatives
  1. 1

    GHCup

    Free planWebLinuxmacOSSelf-hosted
    7.0Free plan
  2. 2

    Jabba

    Free planLinuxmacOSWindows
    6.6Free plan
  3. 3rustup logo

    rustup

    Free planLinuxmacOSWindows
    6.6Free plan
  4. 4

    axe-playwright

    Free planWebLinux
    6.4Free plan
  5. 5

    asdf

    Free planLinuxmacOS
    6.2Free plan
  6. 6mise logo

    mise

    Free planLinuxmacOSWindows
    6.2Free plan