FREEDOM251

Freedom251 › Runtime Version Managers

nvm

Free plan Open source LinuxMacSelf-hostedWindows

Visit nvm Alternatives Pricing

nvm's own site

What nvm is

nvm is a free command-line tool for installing and switching among Node.js versions. It is installed per user and invoked per shell, and supports POSIX-compliant shells such as sh, dash, ksh, zsh, and bash. Users can select specific versions, set aliases including a default, and install or list long-term support releases using LTS commands and aliases. A project's .nvmrc file can specify its Node.js version, with documented shell snippets for automatic switching. During installation, nvm can reinstall global npm packages from another installed Node.js version. It can install a previously downloaded or cached version without network access using the --offline flag. The project documents Docker use, including an example for CI/CD jobs. 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. It is MIT licensed.

Who it suits

nvm suits developers who need different Node.js versions for projects or want to pin a project's version with .nvmrc. It is intended for users working in supported shells, including Windows users using WSL.

What it does well

  • Free and MIT licensed
  • Supports Node.js LTS versions
  • Project versions can be specified in .nvmrc
  • Can install cached versions offline
  • Documented Docker and CI/CD use

What to know first

  • Fish shell is not supported
  • Windows support depends on the environment
  • Only the latest nvm version is supported

Limits

The project supports only the latest nvm version, and Fish shell is unsupported. Windows use is through WSL or may work with Git Bash or Cygwin depending on the environment.

Plans

PlanBilled and limitsPrice
nvmNode.js version installation · version switching · aliases · .nvmrc project selection · shell integrationFree

As github.com lists them, read 15 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the nvm GitHub project.
  2. Install nvm for your user and invoke it from a supported POSIX-compliant shell.
  3. Install the Node.js versions your projects require.
  4. Set a version alias, such as a default, or use an .nvmrc file for a project.
  5. Use documented shell snippets if you want automatic switching.
  6. For Windows, use WSL; Git Bash or Cygwin may work depending on the environment.

nvm is a free command-line tool for installing and managing Node.js versions within an individual user account. It is best suited to developers moving among projects with different Node.js requirements. Its focused version controls and project pinning are compelling, provided your shell and Windows setup are compatible.

Overview

Installed per user and invoked per shell, nvm lets you install specific Node.js versions, switch between them, and set aliases such as a default. That scope keeps runtime choices close to a developer’s work, but nvm is for Node.js alone, not a multi-language version manager.

An .nvmrc file can record the Node.js version a project expects. Documented shell snippets support automatic switching, which can reduce manual version changes between projects, though it requires shell configuration. nvm can also reinstall global npm packages from another installed version during installation—a useful way to carry those packages forward when changing runtimes.

Key features

  • Version selection and aliases: Install particular releases, switch as needed, and choose a default. This suits developers who need different Node.js versions without changing their project workflow around one runtime.
  • LTS management: Commands and aliases support installing, using, and listing long-term support releases. That gives users who prefer LTS versions a direct way to select them.
  • Project pinning and automatic switching: An .nvmrc names a project’s intended version, while documented shell snippets can automate switching. The file provides a project-level cue; automatic behavior depends on configuring the shell.
  • Offline installation: The --offline flag can install a previously downloaded or cached Node.js version without network access. It helps when connectivity is unavailable, but only for versions already cached.
  • Docker and CI: The project README documents Docker use, including an example for CI/CD jobs, making nvm relevant beyond interactive development shells.

Pricing

nvm is open-source software under the MIT license, with one free plan: free. The plan is the Node.js version manager itself; there is no paid tier or free-trial decision to weigh. It is a focused, single-language option for individuals who need Node.js version management rather than broader runtime coverage.

Platforms

nvm supports POSIX-compliant shells, including sh, dash, ksh, zsh, and bash, on Linux and macOS. Its per-shell design makes compatibility central: the project does not support Fish, though it points users to community alternatives. Windows use is possible through WSL; Git Bash or Cygwin may work depending on the environment, so Windows users outside WSL should not assume a consistent fit.

Who it's for

nvm is a strong fit for Node.js developers who work across projects with different runtime requirements, want to pin a project version, or prefer LTS releases. Cached-version installation and documented Docker and CI examples also suit workflows that need to reuse Node.js versions offline or in build jobs. It is less suitable for people who need one manager for several languages, use Fish, or need straightforward Windows support outside WSL.

Pros and cons

  • Pro — project-level version pinning: .nvmrc gives projects a way to state their expected Node.js version, with shell snippets documented for automatic switching.
  • Pro — useful runtime controls: Specific versions, default aliases, and LTS commands cover common choices without broadening the tool beyond Node.js.
  • Pro — offline and CI options: Cached versions can be installed offline, and Docker use is documented with a CI/CD example.
  • Con — narrow language scope: nvm manages Node.js, so developers seeking one tool for multiple language runtimes need another approach.
  • Con — shell and Windows caveats: Fish is unsupported, and Windows compatibility beyond WSL depends on the environment.
  • Con — support follows the current release: Only the latest nvm version is supported, which matters to users who need support for older releases.

Alternatives

For other runtime-management choices, see Runtime Version Managers and Development Environment Managers. nvm’s own scope is specifically Node.js version management, so readers comparing tools should consider whether they need that focus or broader coverage.

The listed alternatives are disk diagnostic tools rather than Node.js version managers, so they do not serve the same purpose as nvm. GSmartControl is a free drive-health inspection option for Linux, macOS, and Windows; smartmontools is a free Linux, macOS, and Windows option built around the smartctl and smartd utilities. DiskMaster is a free disk tool for Linux, macOS, and Windows. Hard Disk Sentinel offers a limited trial and Linux and Windows versions, while Active@ Hard Disk Monitor has personal-use freeware for Windows and a custom-priced Professional plan for business use. Ariolic Disk Scanner is a free Windows disk-scanning utility. CrystalDiskMark offers a free Windows desktop edition and a Microsoft Store edition priced at $9.99, paid once. DRevitalize has an older free DOS version for Windows.

Verdict

Choose nvm if you work primarily with Node.js and want per-user version switching, project pinning, and LTS controls without a license cost. Its main reason to look elsewhere is compatibility or scope: Fish is unsupported, Windows outside WSL is uncertain, and the tool does not manage other languages.

Verdict

nvm provides per-user Node.js version management with project pinning and offline installation options. Check shell compatibility, particularly if using Fish or a Windows environment outside WSL.

Questions

How much does nvm cost?

nvm is free; its listed plan costs nothing.

Is nvm open source?

Yes. The repository identifies nvm as MIT licensed.

Which shells does it support?

It works with POSIX-compliant shells including sh, dash, ksh, zsh, and bash. Fish shell is not supported.

Does nvm work on Windows?

The project says it can work through WSL and may work with Git Bash or Cygwin, depending on the environment.

Can I set a Node.js version for a project?

Yes. nvm can use an .nvmrc file to specify a project version, with documented shell snippets for automatic switching.

Can I use nvm offline?

Yes. The --offline flag can install a previously downloaded or cached Node.js version without network access.

Facts from nvm's own pages

Aliases
Users can create aliases such as default or custom names for Node versions. · github.com, 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. · github.com, 15 Oct 2026
Automatic switching
Automatic directory switching is documented as user-added bash or zsh hooks rather than built into the core command. · github.com, 15 Oct 2026
Core installation
Users can install the latest Node release, a specific version, or source builds with nvm install. · github.com, 15 Oct 2026
Docker and CI
The documentation provides Dockerfile patterns using BASH_ENV and a separate CI/CD container example. · github.com, 15 Oct 2026
Documentation depth
The README includes installation, Docker, CI/CD, shell hooks, mirrors, offline mode, environment variables, testing, troubleshooting and uninstall guidance. · github.com, 15 Oct 2026
Execution helpers
nvm run and nvm exec run commands with a selected Node version without permanently changing the surrounding shell. · github.com, 15 Oct 2026
Extensibility
Mirror URLs, authorization headers and several NVM_* environment variables can customize downloads and installation behavior. · github.com, 15 Oct 2026
Fish limitation
The project does not natively support Fish and suggests wrappers or alternative managers. · cobalt.googlesource.com, 15 Oct 2026
Independent mirror status
SourceForge identifies its nvm page as an exact mirror and states it is not affiliated with the project. · sourceforge.net, 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. · hysenlabs.com, 15 Oct 2026
Installation model
It is designed to be installed per user and invoked per shell. · github.com, 29 Sept 2026
Integrations
Documented integrations include Docker, Ansible, zsh plugins, bash completion and optional nvshim shims. · github.com, 15 Oct 2026
Latest release
The release page lists v0.40.7 as a signed release adding concurrent-install serialization and safer download handling. · github.com, 15 Oct 2026
License
nvm is distributed under the MIT License, permitting use, modification, distribution and sale subject to retaining notices. · github.com, 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. · stackoverflow.com, 15 Oct 2026
Limit: native Windows
Independent comparison coverage says the original nvm does not work natively on Windows and requires the separate nvm-windows project. · ortamarco.me, 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. · learn.microsoft.com, 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. · ortamarco.me, 15 Oct 2026
LTS support
The command set includes aliases and workflows for installing and selecting Node.js long-term-support releases. · github.com, 15 Oct 2026
Offline installation
Recent releases add nvm install --offline to install a version from the local cache without network access. · github.com, 15 Oct 2026
Offline use
It can install a previously downloaded or cached Node.js version without network access using the --offline flag. · github.com, 29 Sept 2026
Package migration
Installation can migrate global npm packages from another installed Node version. · github.com, 15 Oct 2026
Platform limitation
The project does not support the Fish shell and points users to community alternatives. · github.com, 29 Sept 2026

Where nvm stands on Freedom251

Look at these too