Install nvm and Node.js on Ubuntu WSL with NVDA
Install Node Version Manager on Ubuntu running in WSL, then use it to install the latest Node.js LTS. Demonstrated with the NVDA screen reader.
In this guide we install nvm, the Node Version Manager, on Ubuntu running in WSL, and then use it to install the latest LTS version of Node.js. I approach it the way the task would land at work: someone asks you to set up nvm so you can manage different Node versions across different projects, you go perform the install, and you document it after.
I did this with the NVDA screen reader on Windows 11, so along the way I include the NVDA keys I used to navigate the install page and read the terminal output.
Watch the video
What you need
- Windows with WSL and an Ubuntu distribution already installed. If you have not done that yet, start with Install WSL and Ubuntu on Windows the Modern Way. In the video I am on Ubuntu 26.04.
- A terminal on Windows. I use Git Bash.
- NVDA, if you are following along with a screen reader.
Before we start, one definition: nvm is a version manager for Node.js. Instead of installing one system-wide Node, nvm lets you install several versions and switch between them, which matters once different projects need different Node versions.
Step 1: Get the install command from the nvm GitHub page
The install command lives in the README of the official nvm repository: https://github.com/nvm-sh/nvm.
What I did:
- On the GitHub page, I went to the top of the page and pressed H to move through the headings until I reached the heading called “Installing and updating”.
- Below that heading, the README explains you can either download the install script and
run it manually, or run it with
curlorwget. We are usingcurl. - I down arrowed past the heading to the
curlcommand. One more down arrow below the command there is a “copy code to clipboard” button. I pressed Enter on it and heard “Copied!”. - To confirm what is on the clipboard, press NVDA modifier plus C. NVDA reads the clipboard
content back, so I could hear the full
curlcommand before pasting it anywhere.
This is the command, as of nvm v0.40.5 at the time of the video:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
The version number is part of the URL, so copy the command from the README instead of typing this one from memory. It will point at the current release.
Step 2: Open your Ubuntu WSL terminal
I open Git Bash by pressing the Windows key, typing git ba with no spaces, and pressing
Enter on Git Bash when it comes up first.
From Git Bash, start your Ubuntu distribution with wsl -d followed by the distribution
name. Mine is named youtube-test, all lowercase with a dash, because WSL names cannot
contain spaces:
wsl -d youtube-test
If you forgot the name of your distro, list them first:
wsl --list --verbose
That output showed me my default Ubuntu running, Docker Desktop running because I have WSL
integration turned on, and my youtube-test distro stopped, which is the one I started.
When the distro starts, NVDA reads some profile information off the command line, and when you press Down Arrow at the prompt you hear the bash sound. That tells you that you are sitting at a Linux command line.
Side note: to read terminal output with NVDA, on a laptop keyboard use Caps Lock with the arrow keys. On a full keyboard I use the numpad: 7 moves up a line, 9 moves down a line, and 8 reads the current line.
Step 3: Run the install script
First, confirm Node is not already installed:
node --version
My screen reader read back that the command cannot be found, which is what we expect on a fresh distro.
Now paste the curl command you copied in Step 1 and press Enter. One thing I ran into:
in a plain bash window you can paste with Ctrl plus V, but in this Git Bash window into WSL
that did not work. Instead, press the Applications key, or Shift plus F10, and press Enter
on Paste in the context menu. Before running it, I read the current line with NVDA, Caps
Lock plus Up Arrow or numpad 8, to confirm the full curl command was on the line.
The script prints a lot of output while it runs. It clones the nvm repository into
~/.nvm and adds the lines that load nvm to your shell profile, which on Ubuntu’s default
bash setup is ~/.bashrc.
Step 4: Reload your shell and verify nvm
Your current terminal session has not read those new profile lines yet, so reload it:
source ~/.bashrc
The ~ character is Shift plus the grave key, which sits above Tab and to the left of the
1 key.
Now verify nvm:
nvm --version
I got 0.40.5.
Side note: my first instinct after the install was to run node --version again, and it
still said command not found. That is correct behavior. What we installed is nvm, the
version manager, not Node itself. That comes next.
Step 5: Install the latest Node.js LTS
LTS stands for long term support, the release line you generally want for project work. Install it with:
nvm install --lts
The output shows it downloading and installing, creating a default alias, and then
Now using node v24.16.0, which was the latest LTS at the time of the video.
Verify it:
node --version
And there it is. Node is installed on your Ubuntu WSL, managed by nvm, and you are ready to start using it in a real project.