mrkeyoor.com_
Tue 11 Aug 19:09 UTC
Dev Toolsevaluationupdated 11 Aug 2026

nvm-windows

NVM for Windows installs multiple Node.js versions on one Windows machine and switches the active version through a shared system path. It solves the common problem of testing or maintaining JavaScript projects that require different Node releases without repeatedly uninstalling Node.

Verdict

NVM for Windows still does its core job well on conventional x64 Windows machines, especially when you need a familiar manual switcher and can start from a clean Node setup. It is harder to recommend for a new team standard in 2026 because administrator rights, system-wide switching, old-version install bugs, and the slow release cadence are meaningful costs. Existing users can keep it, but new adopters should compare fnm or mise first.

Setup3/5Friendly installer, but cleanup, admin rights, and PATH conflicts matter
Docs4/5Candid README and issue wiki, though some guidance is dated
Community3/5Huge user base and live reports, with many long-running open items
Maturity3/5Long proven history, but 1.2.x regressions remain without a new release

Who it’s for

Windows developers who need to switch a whole machine between several Node.js releases.
Maintainers testing a package against current, LTS, and older Node versions.
Users who prefer a familiar command-line workflow plus a Windows installer.
Teams that can grant administrator rights for symlink changes and standardize install paths.

Who it’s NOT for

Developers without administrator access: the README says normal install and use usually require an elevated PowerShell or Command Prompt because switching changes a symlink.
Anyone expecting the Unix nvm project on Windows: this is separate software with different behavior, commands, and architecture.
Teams that must install older end-of-life Node versions reliably on the newest release: the README warns of a known 1.2.x bug, and active reports show npm archive failures with Node 14.
Windows on Arm teams that require native Arm64 Node management: support remains an open request, with related pull requests still unresolved.
Developers who need per-project automatic switching as the default workflow: nvm use changes the shared active version for all open consoles, and the README points .nvmrc users to a long-running issue rather than documenting built-in directory switching.

Setup reality

The installer is easy only on a clean Windows machine with administrator access. The README strongly recommends uninstalling an existing Node installation first, removing leftover directories, backing up npm configuration, and clearing global npm locations to prevent path and module conflicts. After installation, restart the shell and reinstall global tools separately for each Node version. Nonstandard drives, spaces in paths, locked-down corporate machines, and old Node releases all add failure modes that the one-click installer cannot hide.

A Windows-native answer to a recurring Node problem

NVM for Windows exists because the original nvm is a shell script for macOS and Linux, not a Windows application. Corey Butler's project is separate software written in Go. It downloads multiple Node.js releases, stores each in its own directory, and switches a single symlink that sits on the system PATH. The selected Node version then changes for every open console and survives reboots.

That machine-wide behavior is convenient when one developer controls the PC. Install an LTS release, add a current release for testing, then use short commands to move between them. The tool can list available versions, choose 32-bit or 64-bit builds, change download mirrors, and diagnose known path problems. It does not depend on an existing Node installation, which is exactly right for software responsible for installing Node.

The tradeoff is that this is not project isolation. Switching for one terminal changes what other terminals see because all of them resolve the same symlink. Global npm packages are also separate for each installed Node version. If you install Yarn or another command globally, you must install it again under every version that needs it. Teams expecting a repository to select its toolchain automatically should understand that difference before adopting the familiar nvm name.

The installer needs a clean runway

The download button suggests an ordinary Windows setup wizard, but the README gives unusually forceful preparation advice. Uninstall any existing Node.js installation first. Remove a leftover physical Node directory because the NVM symlink cannot replace it. Back up a global npm configuration, consider moving settings to the user-level file, and clear the previous global npm location to avoid conflicts. Then run the installer, reopen PowerShell or Command Prompt, and use an elevated shell.

Skipping cleanup can produce a confusing result: nvm use appears successful while node -v still finds the old executable earlier on PATH. Version 1.1.11 and newer provide nvm debug to detect this, which is useful, but the cause sits in Windows path resolution rather than a simple application toggle. Corporate machines with Group Policy, controlled uninstallers, or no local administrator rights are poor candidates.

The symlink design explains the repeated elevation requirement. It avoids rewriting PATH on every version change and keeps the chosen version consistent across shells, but creating or changing the link normally needs administrator permission. This is a deliberate architecture choice, not a temporary setup inconvenience. Developers who cannot elevate should choose a manager designed around user-scoped shell activation.

Current releases have awkward fault lines

The README distinguishes 1.1.12 as the stable line from 1.2.x as a transition line. It specifically warns that the newer branch may fail when installing some old end-of-life Node releases. That warning matches issue activity. Reports for version 1.2.2 show Node 14 downloading successfully, then failing because the expected npm archive cannot be found in a temporary directory. One issue has accumulated more than 60 comments, and a pull request intended to fix older Node installation remained open in July 2026.

A separate May 2026 report says installation of Node 26 announced success even though extraction produced no version directory, leaving nvm use unable to activate it. Another open report reproduces activation failure when the NVM root contains a space such as Program Files. These are not theoretical objections. They affect the central install and switch workflow, so test the exact Node versions and paths your team needs before rollout.

The project also has an open request for native Windows on Arm handling dating from 2020. Recent pull requests have attempted Arm64 detection and CI support, but open work should not be presented as shipped support. If Arm64 is a requirement, verify behavior on the target hardware or use a tool that documents it clearly.

Security controls are visible but imperfect

Releases normally use signed executables, and the 1.2.2 notes include an attestation link plus antivirus scan reports for its binaries. The README explains the historical signing gap around 1.1.8 and says 1.1.9 restored signing. This transparency is welcome for a tool that downloads runtimes and modifies a system path.

One command-line option deserves caution: nvm install accepts --insecure to bypass SSL validation. It can help in a broken proxy environment, but it weakens the protection on runtime downloads. Fix the certificate or proxy chain instead of normalizing that flag in team instructions. Enterprises should also distribute a reviewed installer and pin the chosen version rather than telling each developer to download whatever is latest.

Healthy user interest, slower delivery

The repository was last pushed on April 17, 2026. Issues and pull requests were still being updated in August, so the project is not abandoned. GitHub reported 83 open items, including 59 issues and the remaining pull requests. However, the latest release, 1.2.2, dates to January 1, 2025. Several open pull requests are marked stale, and the README directs attention toward Runtime, a successor under development, without providing a dependable shipped replacement.

NVM for Windows has earned its large audience by solving a real Windows problem with a simple mental model. On a clean x64 developer machine, it remains useful. For a fresh organizational standard, the limitations now weigh more heavily: elevation, global switching, path sensitivity, old-version bugs, and a long gap between releases. Compare fnm, mise, and Volta against your workflow before choosing the familiar option.

Alternatives

ProjectWhat it isPick it when
Fast Node ManagerA cross-platform Node version manager written in Rust with shell-based automatic switching.pick this instead when you want one tool across Windows, macOS, and Linux or automatic changes from project version files.
miseA cross-platform manager for Node.js and many other development runtimes, environment variables, and tasks.pick this instead when your team wants one project configuration for Node, Python, Go, and other tools rather than a Windows-only Node manager.
VoltaA JavaScript toolchain manager that pins Node and package-manager versions by project.pick this instead when reproducible per-project Node and npm or Yarn versions matter more than manually changing a machine-wide selection.

What people are saying

  1. [github-trending] coreybutler/nvm-windows

Sources

  1. NVM for Windows repository and README
  2. NVM for Windows 1.2.2 release
  3. Older Node.js npm installation failure
  4. Silent extraction failure report
  5. Path with spaces activation report
  6. Windows on Arm support request