mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Dev Toolsevaluationupdated 25 Aug 2026

nvm review

NVM for Windows installs multiple Node.js versions on one Windows machine and switches the active version through a system symlink. It solves a common Windows development problem without depending on Node itself, since the command-line program is written in Go.

+42stars / 7d
Verdict

Our Linux build completed in 48 seconds, but all 13 Go test targets failed during setup or compilation, so the source builds while its test path is not portable to our sandbox. On Windows, NVM for Windows remains a practical choice when you can give it administrator rights and a clean Node installation path. New teams should compare fnm or Volta before committing, especially because the README places the project in transition toward Runtime.

We ran it

Lab card: what happened when we ran nvmScreenshot of nvm (github.com/nvm-windows/nvm)
Install✓ · 35s32 packages
Build✓ · 48s
Tests✗ · 19s0 passed · 13 failed of 13 (go test)
Repo59 files~5,334 lines of source · 7.6 MB · 5 CI workflows

Answers from our run

Does nvm build from source?

Dependencies installed in 35 seconds (32 packages), and the build succeeded in 48 seconds. We cloned commit 53bba76 into a clean Debian container with 3 CPUs and no project-specific setup.

Do nvm's tests pass?

Not all of them: 0 of 13 passed and 13 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use nvm?

macOS or Linux users: the README says this is a separate Windows-only project, not a port of nvm-sh/nvm.

What are the alternatives to nvm?

fnm, Volta, mise. Our Linux build completed in 48 seconds, but all 13 Go test targets failed during setup or compilation, so the source builds while its test path is not portable to our sandbox.

Setup3/5Friendly installer, offset by admin, PATH, and migration work
Docs4/5Detailed Windows warnings, commands, upgrades, and source steps
Community4/5Current repository activity and an active issue and PR queue
Maturity4/5Long-used tool, now in a documented successor transition

Who it’s for

Windows developers who test projects against several supported Node.js releases.
Teams that want an installer and a familiar nvm install and nvm use workflow.
Administrators who can manage PATH entries, symlinks, and elevated shells on developer PCs.
Existing users who need to keep a known NVM for Windows setup working while evaluating its Runtime successor.

Who it’s NOT for

macOS or Linux users: the README says this is a separate Windows-only project, not a port of nvm-sh/nvm.
Locked-down Windows users without administrator access: nvm use normally needs elevation to change the symlink.
Machines where the existing Node installation cannot be removed or its PATH changed: the README warns that physical install directories and duplicate PATH entries can make switching appear to do nothing.
Developers relying on old Node releases without testing first: the README flags a 1.2.x bug affecting some end-of-life versions, and an open issue covers npm failing on older Node versions.
Teams that need global npm tools shared across every Node version: the README says each version keeps its own global modules.

Setup reality

Our run installed 32 Go packages in 35 seconds and built successfully in 48 seconds. The test step failed after 19 seconds with exit 1: go test reported 0 passed and 13 failed, with setup failures in the root, author, and upgrade packages and build failures in node, utility, and web. The supplied log tail did not state a cause.

Normal users should take the signed Windows installer, remove an existing Node installation first, preserve any global npm configuration, and reopen their terminal. Switching usually requires an Administrator PowerShell or Command Prompt because NVM for Windows changes a system symlink.

We tested commit 53bba76 in an unprivileged Go 1.24 Debian container with 3 CPUs and 8 GB of RAM. That checks dependency resolution and compilation, but it is not the Windows environment this tool manages. The repository has no Dockerfile and no tests directory.

The symlink design makes Node switching system-wide

NVM for Windows stores several Node.js installations and keeps one symlink on the system PATH. nvm use changes that symlink's target, so new and already-open terminals see the selected runtime. This differs from tools that rewrite shell state for each session. It also explains the project's central constraint: Windows normally requires an elevated shell to create or change the link.

The command set covers the expected jobs. Users can install a specific version, the latest release, or the current LTS; list local and downloadable versions; switch architecture; select download mirrors; change the storage root; and inspect common problems with nvm debug. Node 4 and newer are supported, while the README explicitly excludes the old io.js line.

A clean Windows install matters more than the installer wizard

The project recommends uninstalling an existing Node.js installation before adding NVM for Windows. That advice is operational, not cosmetic. A physical C:\Program Files\nodejs directory prevents the manager from creating its symlink there. Duplicate Node entries in PATH can leave the old executable first, making nvm use appear successful while node -v keeps reporting the previous version.

Migration also has state to preserve. The README tells users to back up a global npmrc and remove the old global npm directory to avoid conflicts. Global utilities such as Yarn are installed separately for each Node version, so a switch can make a familiar command disappear until it is installed again. On a managed corporate PC, group policy and lack of administrator rights may stop the recommended cleanup entirely.

These are fair costs for a system-level version manager, but they make rollout across a company more involved than clicking an installer. Pilot the chosen NVM root and symlink locations on the same Windows policy used by developers. Document which global tools are recreated per Node release, and run nvm debug when PATH behavior differs between machines.

What happened when we ran it

Our sandbox installed 32 Go packages in 35 seconds, then built the project successfully in 48 seconds. The checkout at commit 53bba76 contained 59 files, about 5,334 source lines, and occupied 7.6 MB. Those results show the Go source is compact and compilable in the supplied Linux environment.

Tests failed after 19 seconds with exit 1. The Go summary reported 0 passed and 13 failed out of 13. It listed setup failures for nvm, nvm/author, and nvm/upgrade, plus build failures for nvm/node, nvm/utility, and nvm/web. The log tail contained no deeper error, so assigning the failures to Windows-only calls or a missing package would be speculation.

We ran the checkout in an unprivileged Debian container using Go 1.24, 3 CPUs, 8 GB of RAM, and no secrets. The repository includes 5 CI workflow files but has no Dockerfile and no tests directory. Since the product exists to alter Windows installations and symlinks, a Linux build cannot validate the installer, UAC prompts, PATH changes, antivirus behavior, or actual Node switching.

Old Node support is the sharpest release choice

The README separates the latest 1.2.x line from version 1.1.12, which it calls stable. It says 1.2.x is a transition release and warns of a known problem when installing some end-of-life Node.js versions. The latest GitHub release, 1.2.2 from January 1, 2025, fixes installation on drives other than C: and includes build provenance plus antivirus reports.

That choice deserves attention in build environments tied to old applications. An open issue updated in August 2026 reports npm installation failing on older Node versions, while another reports an install claiming success even though file extraction failed. A separate open report says paths with spaces are unsupported in a failing case. These reports do not mean every install breaks, but they map directly to common Windows layouts.

The repository itself is active. GitHub records a push on August 25, 2026, with dependency pull requests updated that day and 86 open issues and pull requests combined. A 2025 release tag alone therefore does not show abandonment. Still, users waiting for fixes need to distinguish work on NVM for Windows from work on Runtime, the successor promoted at the top of the README.

Runtime makes this a maintenance choice for new teams

The project says the maintainers are working full time on Author and Runtime, the intended successor. It asks users for feedback and describes NVM for Windows 1.2.x as transitional. That is more candid than pretending the current architecture will remain the sole focus, but it changes the buying decision. Existing installations have a clear reason to stay; a new fleet should compare the successor direction and other managers first.

NVM for Windows still does its core job with an understandable mechanism and a mature troubleshooting guide. Choose it when Windows-only administration, system-wide switching, and familiar commands suit the team. If developers work across operating systems, cannot elevate shells, or want automatic project pins, fnm, Volta, or mise avoids several of the 1.2.x path and privilege constraints.

Alternatives

ProjectWhat it isPick it when
fnmA cross-platform Node.js version manager written in Rust.pick this instead when you want one version manager across Windows, macOS, and Linux with shell-based switching.
VoltaA cross-platform toolchain manager that pins Node and package tools by project.pick this instead when automatic per-project tool selection matters more than manually changing a system-wide symlink.
mise gh↗A polyglot version manager for Node.js and many other developer tools.pick this instead when the same team must pin Node, Python, Go, and other runtimes from one configuration.

What people are saying

  1. [velocity-scout] nvm-windows/nvm
  2. [github-trending] coreybutler/nvm-windows
  3. [github-trending] nvm-sh/nvm

Sources

  1. NVM for Windows README
  2. NVM for Windows 1.2.2 release
  3. Silent extraction failure issue
  4. Older Node.js npm issue
  5. Paths with spaces issue

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →