Skip to content

Uninstall Node.js on a Mac: installer, Homebrew and nvm

How to uninstall Node on a Mac: find which Node.js you have, remove the installer's files in Finder, let Homebrew or nvm remove theirs, and keep what still needs it.

Developer storage · Published · 20 min read
Detailed view of a circuit board highlighting electronic components.
Photo: Júlio Riccó on Pexels

To uninstall Node on a Mac, first find out which Node.js you have, because each kind comes off a different way. The installer from nodejs.org puts its files in /usr/local and has no uninstaller, so they come off in Finder, with an administrator's password.

Homebrew's Node comes off with Homebrew, and nvm's versions come off one folder at a time, or all together with nvm itself. Both tools are command-line only, so this post describes what their commands do rather than spelling them out. Many Macs used for programming have two or three kinds at once.

Before you remove anything, check what's built on it. Command-line tools you installed globally with npm, including several AI coding tools, live inside the Node.js that installed them and disappear with it. Your projects and their node_modules folders stay, but won't run until a Node.js is back.

npm's cache doesn't go with Node.js either. It sits in your home folder and can be larger than Node.js itself, so it's worth a look once Node.js is gone.

Which Node.js do you have?

Every way of installing Node.js puts it somewhere different, and none of them removes another. They sit side by side, and the one that runs when you type node is the first your shell finds in its list of folders.

Where it came fromWhere it livesHow it comes off
The nodejs.org installer/usr/local/bin and /usr/local/lib/node_modulesFinder, with an administrator's password
Homebrew/opt/homebrew/Cellar on Apple silicon, /usr/local/Cellar on IntelHomebrew's uninstall
nvm~/.nvm/versions/nodenvm, or one folder per version in Finder
fnm~/.fnm, or ~/Library/Application Support/fnmIts folder and its shell lines
Volta~/.voltaIts folder and its shell lines
mise and asdf~/.local/share/mise/installs/node, ~/.asdf/installs/nodejsThe version manager's own commands
Inside an appThe app's own bundleOnly by uninstalling the app

Why does a Mac end up with more than one?

Each route installs its own Node.js without asking about the others. Node.js's own download page for macOS now suggests nvm first, and offers the macOS Installer and a standalone binary below it. A tutorial may have sent you to the installer years ago, and a Homebrew package may have pulled Node.js in as a dependency.

In October 2026 that page listed Node.js 24.22.1 as the latest LTS release and 26.12.1 as the latest release. A Mac set up a few years ago may still carry an installer copy from version 16 or 18, next to a newer one from nvm.

How do you find each one in Finder?

Choose Go › Go to Folder in Finder, type a path from the table above, and press Return. Apple's guide notes that a tilde stands for your home folder, so ~/.nvm opens nvm's folder even though it's hidden. If a folder doesn't exist, Finder says so and you can move on.

  • /usr/local/bin: an item named node, with npm and npx next to it, usually means the installer, or Homebrew on an Intel Mac.
  • /opt/homebrew/Cellar: a folder called node, or node@22 or node@24 for an older line, is Homebrew's.
  • ~/.nvm/versions/node: one folder per version, such as v24.21.0.
  • ~/.volta and ~/.fnm: Volta's and fnm's folders.

Select any folder and choose File › Get Info to see its size. That tells you which removals are worth the effort.

Which one runs when you type node?

The first one your shell finds. Your shell looks through a list of folders in order, and nvm, fnm and Volta move their own folder to the front by adding lines to a hidden settings file such as .zshrc in your home folder.

So removing the Node.js that runs today usually hands the node command to the next one in line. That might be an old installer copy you'd forgotten, which is why a removal can seem to do nothing.

Is there a Node.js inside your apps?

Often, yes. Code editors and some AI apps include a Node.js of their own inside the app bundle. On one Mac measured in October 2026, ChatGPT's Mac app carried a 272 MB folder with Node.js 24 inside it, and Cursor carried 215 MB of its own.

Those copies belong to the apps. Removing your own Node.js doesn't touch them, and they go only when you uninstall the app. The post on what ChatGPT, Claude and Gemini keep on a Mac looks at those apps' folders.

Before you uninstall Node: what depends on it

Removing Node.js itself is quick. What takes thought is the software that was installed into it, or that expects it.

Which global packages will go with it?

npm's documentation explains where global packages go: into the folder where Node.js is installed, under lib/node_modules, with their commands linked into the bin folder next to node. So a global package belongs to one particular Node.js.

That means removing the installer's Node.js removes everything in /usr/local/lib/node_modules, and removing an nvm version removes the global packages installed while that version was active. Their commands stop working at the same moment.

Which AI coding tools does this affect?

Several AI coding tools offer npm as one way to install them. OpenAI's Codex CLI and Google's Gemini CLI both list a global npm install in their read-me files, next to Homebrew and other routes. Anthropic's documentation offers the same for Claude Code, with its own installer as the main route.

Anthropic notes that its npm package installs the same native program as its standalone installer, which doesn't use Node.js to run. But the package still lives in npm's global folder, so removing that Node.js removes the command. The post on the space AI coding tools take covers their own folders.

How do you see which global packages you have?

Open the global folder in Finder. For the installer, that's /usr/local/lib/node_modules. For nvm, it's lib/node_modules inside each version's folder. Every folder there is a global package; names starting with an at sign hold a group of related packages.

npm and corepack are always there, because they come with Node.js. Anything else is something you or a setup guide installed. Write the names down before you remove the Node.js, so you can install the ones you still use again.

Do your projects ask for a particular version?

Projects often name the Node.js version they need. Look in a project's folder for a file named .nvmrc or .node-version, or a .tool-versions file for mise and asdf, and for an engines entry in package.json.

If a project you still work on asks for Node.js 22, removing your last 22 means installing it again before the project runs. A version manager can do that in a minute, so it's an inconvenience, not a loss.

What's built on Node.jsWhere it livesAfter Node.js goesThe fix
Global command-line toolsThat Node.js's lib/node_modulesTheir commands stop workingInstall them again with the Node.js you keep
AI coding tools installed with npmSame, as global packagesThe command disappearsReinstall, or use the tool's own installer
Project dependenciesEach project's node_modulesThey stay, but can't runInstall Node.js again, then reinstall if versions differ
Your editorIts own Node.js inside the appUsually nothingPoint its settings at the Node.js you keep, if it asked for one
Shell settings.zshrc, .zprofile, .bash_profileErrors in new Terminal windowsRemove the tool's lines
npm's cache~/.npmIt staysKeep it, or move it to the Trash

Uninstall Node on a Mac when it came from nodejs.org

The installer asks for an administrator's password, because it installs Node.js for every account on the Mac. Node.js's build files show it's made of two parts, Node.js and npm, both installed into /usr/local, and it adds no uninstall app.

What did the installer put on your Mac?

  • The node program in /usr/local/bin, next to links named npm and npx, and corepack in versions that include it.
  • npm itself in /usr/local/lib/node_modules/npm, with corepack next to it where included. Your global packages land in the same folder.
  • Header files in /usr/local/include/node, used when packages compile native code.
  • Documentation in /usr/local/share/doc/node and a manual page, node.1, in /usr/local/share/man/man1.

The program, npm and the header files are nearly all of the space. In a Node.js 24 release measured on one Mac, the node program was 116 MB, the header files 64 MB and npm 17 MB.

How do you remove it in Finder?

  1. Quit your editor, Terminal and any app you started from Terminal, so nothing is running from Node.js.
  2. Note your global packages in /usr/local/lib/node_modules, as described above.
  3. Choose Go › Go to Folder, enter /usr/local/lib/node_modules and press Return. Move npm, corepack and your global packages to the Trash, entering an administrator's password when asked.
  4. Go to /usr/local/include and move the node folder to the Trash.
  5. Go to /usr/local/share/doc and move the node folder to the Trash, then node.1 from /usr/local/share/man/man1.
  6. Go to /usr/local/bin and move node to the Trash, then the npm, npx and corepack links and your global packages' links, as the next section explains.

Leave the Trash full for now. If something you need stops working, File › Put Back returns each item to its place.

Which items in /usr/local/bin are Node's?

The node program, and links. Finder treats the links there like aliases: select one and choose File › Show Original to see where it points. Links that point into /usr/local/lib/node_modules belong to npm or a global package and can go.

On an Intel Mac, Homebrew keeps its own links in the same folder, and other tools put programs there too. Never move /usr/local/bin itself, or anything you can't trace to Node.js. A link whose original is gone does nothing, so when in doubt, leave it.

Is there an uninstaller for Node.js?

No. The installer adds no uninstall app, and Node.js's site documents none. Scripts shared online read the installer's records and delete the files in Terminal, but they delete outright instead of using the Trash, so a wrong path can't be undone.

The Finder route takes a few more minutes and keeps every step reversible. It also lets you see what you're removing, which matters in a folder that other tools share.

What about the folders the installer leaves empty?

Moving Node.js's items out of /usr/local/lib, /usr/local/include and /usr/local/share can leave those folders empty. Leave them. They're part of a standard layout that other installers use, and an empty folder takes no space.

Removing Homebrew's Node

Homebrew's Node.js is often there because another Homebrew package needed it, not because you asked for it. Homebrew's formula page lists about twenty libraries it depends on, such as libuv, openssl and icu4c, which Homebrew installed alongside it.

How do you uninstall Homebrew's Node?

With Homebrew. It's a command-line tool, so there's no app or menu for this. Its uninstall removes the formula's folder from the Cellar along with the links it made in Homebrew's bin folder.

Homebrew's manual describes a separate cleanup for what's left: it removes formulae that were only installed as a dependency of another formula and aren't needed anymore. That's how Node.js's libraries go once nothing else uses them.

Why might Homebrew refuse?

Because other installed formulae depend on it. Homebrew won't uninstall a formula that another one needs, unless it's told to ignore dependencies, which leaves those formulae unable to start. Uninstall them first, or keep Node.js.

The catalog's entry for the Homebrew Cellar rates it Review first and leaves removal to Homebrew. Deleting a folder there in Finder leaves Homebrew's links pointing at nothing, and the packages that needed it fail with confusing errors. The Homebrew cleanup post explains what Homebrew removes on its own.

What happens to global packages installed with Homebrew's npm?

They live with Homebrew's Node.js, in /opt/homebrew/lib/node_modules on Apple silicon, following npm's rule that global packages go next to the Node.js that runs them. They aren't Homebrew formulae, so Homebrew doesn't track them.

Check that folder after uninstalling. If anything is left there, it's packages you installed with npm, and they can go to the Trash once you've noted the ones to install again.

What are node@22 and node@24?

Homebrew's formulae for older release lines, kept next to the main one, which follows the newest release. Each is a separate formula with its own folder in the Cellar, removed the same way. They don't replace each other, so a Mac can have several.

Removing nvm versions, or nvm itself

nvm is a set of shell scripts, so it has no app or menu either. It keeps each Node.js version in a folder of its own, which makes removing one version simple, and removing everything only slightly harder.

How do you remove one nvm version?

nvm has its own uninstall command for a version. You can also do it in Finder: choose Go › Go to Folder, enter ~/.nvm/versions/node, and move the folder named after the version, such as v22.14.0, to the Trash.

The catalog rates Node.js versions installed with nvm as Review first. The folder holds that version's global packages as well as Node.js, and if it's nvm's default version, node isn't available in new Terminal windows until another default is chosen.

How much space does an old nvm version take?

It depends on its global packages. On the Mac measured for this post, Node.js 24.21 with only npm and corepack took 200 MB. Node.js 22.14, with about ten global command-line tools installed into it, took 1.1 GB.

So an old version is worth removing if you've moved on, but only after moving its tools. nvm's read-me describes an option, when installing a new version, that reinstalls the global packages from an old one, which makes the move painless.

Close-up of an open hard drive showing internal components.
Each nvm version is a complete Node.js of its own, with its global packages packed inside. Photo: Nicolas Foster on Pexels

Can you delete nvm's download cache?

Yes. When nvm installs a version, it keeps the download in ~/.nvm/.cache. The catalog rates nvm download cache as Safe: installed versions don't depend on it, and reinstalling a version just downloads it again. nvm also has an option of its own to empty it.

How do you remove nvm completely?

nvm's read-me lists two parts. Remove its folder, ~/.nvm, which deletes every Node.js version it installed and their global packages. Then remove the lines nvm's installer added to your shell's startup file.

  1. Quit Terminal and your editor.
  2. In Finder, choose Go › Home, then press Shift-Command-Period to show hidden files. Move the .nvm folder to the Trash.
  3. In the same window, duplicate .zshrc as a backup, then open the original in TextEdit.
  4. Delete only the lines that mention NVM_DIR, nvm.sh and bash_completion, and save.
  5. Open a new Terminal window. It should start without errors.

nvm's installer may have used .bash_profile, .bashrc or .profile instead of .zshrc. Check each one that exists. Skip this step and every new Terminal window complains that nvm can't be found.

What if you installed nvm with Homebrew?

nvm's read-me says Homebrew installation isn't supported, and asks people with problems to uninstall Homebrew's nvm and use nvm's own installer. If you have it, uninstall it with Homebrew, then remove ~/.nvm and the shell lines as above.

fnm, Volta, mise and asdf

Other version managers work the same way: a folder of versions, plus lines in your shell's startup file. Removing one means removing both.

How do you remove fnm?

fnm's read-me says to delete the .fnm folder in your home folder and remove the references to fnm from your shell settings. On a Mac, fnm's install script defaults to ~/Library/Application Support/fnm instead, so check both places.

Its read-me also notes that Homebrew is fnm's default installation method on macOS. If that's how it came, uninstall fnm itself with Homebrew.

How do you remove Volta?

Volta's documentation lists two steps: remove the whole ~/.volta folder, which holds its Node.js versions and tools, and remove the two lines that mention Volta from your shell's profile files, such as .zshrc, .zshenv or .bash_profile. It adds that you may need a new Terminal window afterwards.

What about mise and asdf?

They manage many languages, not only Node.js, and keep records of what they installed. The catalog explains mise tool versions and asdf tool versions as Review first and leaves their removal to the tools' own commands, which remove one version at a time. Removing their folders in Finder leaves those records out of step.

The Python uninstall post walks through the same version managers for Python, if you're clearing out more than Node.js. Java is the other runtime developers' Macs tend to collect several of, and the post on uninstalling Java and old JDKs covers SDKMAN and the rest.

Version managerWhere versions liveRemove one versionRemove the tool
nvm~/.nvm/versions/nodenvm's uninstall, or its folder in FinderRemove ~/.nvm and its shell lines
fnm~/.fnm or ~/Library/Application Support/fnmfnm's own commandRemove its folder and shell lines
Volta~/.voltaVolta's own commandRemove ~/.volta and its two shell lines
mise~/.local/share/mise/installs/nodemise's own commandsmise's own steps
asdf~/.asdf/installs/nodejsasdf's own commandsasdf's own steps

npm's cache and the other package managers' caches

Uninstalling Node.js doesn't touch the package managers' caches. They live in your home folder, outside every Node.js installation, and on a developer's Mac they're often bigger than Node.js itself.

What's in the hidden .npm folder?

npm's documentation says its cache lives in ~/.npm on a Mac. Inside, _cacache holds every package npm has downloaded, _npx holds packages fetched to run one-off commands, and _logs holds npm's logs. On the Mac measured for this post, _cacache took 933 MB and _npx 1.0 GB, while the logs were tiny.

Is it safe to delete npm's cache?

Yes. The catalog rates npm cache as Safe: npm downloads anything it needs again, so projects that are already installed keep working. The next installs take longer and need an internet connection.

npm expects to manage _cacache itself, and has its own cache command for it. If you're removing Node.js for good, moving the whole .npm folder to the Trash is fine too, since no npm is left to use it.

What about the npx cache?

npx cache is Safe too. It holds the packages behind commands you ran with npx without installing them, such as project generators. Running one again downloads its package again. A tool that's running from that folder when it's removed can stop until it's started again.

And node-gyp, pnpm, Yarn and Bun?

  • node-gyp keeps Node.js header files for building native packages in ~/Library/Caches/node-gyp, one folder per version. The catalog rates the node-gyp headers cache as Safe.
  • pnpm keeps one shared store in ~/Library/pnpm/store. The pnpm store is Safe, with pnpm's own cleanup removing only what no project uses.
  • Yarn Classic caches packages in ~/Library/Caches/Yarn, rated Safe.
  • Bun keeps its cache in ~/.bun/install/cache, also Safe, emptied with Bun's own command.

The post on npm, Yarn, pnpm and Bun caches goes through each one in detail, with what it costs to clear them.

Node.js and its caches on one Mac
  • pnpm store3.9 GB · Safe
  • Node.js 22.14 with global tools, nvm1.1 GB · Review first
  • npx cache1 GB · Safe
  • npm cache0.9 GB · Safe
  • Node.js 24.21 alone, nvm0.2 GB · Review first

Measured on one developer's Mac in October 2026, by space used on disk. pnpm's store shares space with projects' node_modules folders, so clearing it frees less than its size. Yours will differ.

Do Node.js versions keep anything else?

A little. Node.js keeps the history of its interactive prompt in a file named .node_repl_history in your home folder, according to its documentation. npm keeps its settings in .npmrc, if you made one, which may also hold a sign-in token for a package registry. Both are small; remove them if you're done with Node.js for good.

Other language toolchains keep caches the same way, outside the runtime itself. If you also build mobile apps, the post on Flutter's pub cache covers Dart's.

What breaks after you remove Node.js

Most of it comes back with a reinstall. Knowing what to expect makes the first day after a removal less confusing.

Commands you installed globally

Any command from a global package stops working at once: a deploy tool, a project generator, an AI coding tool. The shell says the command can't be found. Install the ones you use again with the Node.js you kept, or with the tool's own installer where it has one.

Projects and their node_modules folders

They stay exactly as they were. A project won't run or build until a Node.js is available, and if you install a different major version, packages with native code may need to be installed again.

If you're leaving projects behind for good, their node_modules folders are where the space is. The post on deleting every node_modules folder explains how to find them and what's safe. The catalog rates node_modules as Usually safe.

Shell settings

Lines that nvm, fnm or Volta added to .zshrc keep running after the tool is gone. New Terminal windows then print errors, or a command not found message, every time. Removing the lines, as described above, stops it.

Editors and apps

Editors that run their own Node.js keep working. Editors set to use a particular Node.js for running or debugging your code ask you to pick another. Apps that carry their own Node.js, such as the ones measured above, aren't affected at all.

What if an app won't let you delete it?

That's an app question, not a Node.js one. Some apps refuse to go to the Trash while a helper is running, and the post on apps that won't delete covers each cause.

Intricate network of tangled power and communication cables outdoors.
Global tools, shell settings and editors all point at one Node.js, so check those links before you cut one. Photo: pipop kunachon on Pexels

A worked example

Say a Mac has the installer's Node.js 18 from an old tutorial, nvm with versions 22 and 24, and a pnpm store. Its owner wants one Node.js, managed by nvm.

What stays and what goes

nvm's version 24 stays and becomes the default. Version 22 holds ten global tools, two of them still in use. Its owner installs those two into version 24 first, then moves the v22 folder to the Trash.

The installer's Node.js 18 has no global packages of its own. Its node program, its npm, corepack and links, its header files and its documentation go to the Trash, with an administrator's password. Afterwards, node in a new Terminal window runs nvm's 24.

The caches

npm's cache and the npx folder stay, because nvm's Node.js still uses npm. The owner checks node-gyp's cache: it has folders for 18, 22 and 24, and the first two go. The pnpm store stays too, because pnpm's own cleanup handles it better than the Trash.

The order that avoids surprises

  1. List what you have, with the folders in the first table.
  2. Pick what stays: usually one version manager, or one installer copy.
  3. Note global packages in each Node.js you're removing.
  4. Reinstall the tools you use into the Node.js you keep.
  5. Remove from the top down: tools first, then Node.js, then its shell lines.
  6. Open a new Terminal window: it should start without errors. Then build or run a project the way you normally do.
  7. Empty the Trash after a day or two of normal use.

Mistakes to avoid

Most problems after uninstalling Node.js come from removing a little too much, or too little.

Moving whole shared folders

/usr/local/bin, /usr/local/lib, /usr/local/include and /usr/local/share hold other software too, Homebrew's among them on Intel Macs. Remove only Node.js's items inside them, never the folders.

Removing a Node.js that Homebrew packages need

Homebrew refuses for a reason. Forcing it leaves every package that needed Node.js broken until you reinstall it.

Forgetting the shell lines

Removing ~/.nvm or ~/.volta without its lines in .zshrc leaves errors in every new Terminal window. Remove both.

Expecting the space in the wrong place

Node.js itself is a couple of hundred megabytes. The gigabytes are usually in global tools, npm's and pnpm's caches, and node_modules folders, so check those before deciding a removal didn't help.

Pasting removal scripts from the web

Commands that delete files skip the Trash, so a typo in a path can't be undone. Everything in this post works in Finder and TextEdit, except where a tool only offers a command, and this post says where.

Emptying the Trash straight away

If a tool or project breaks a day later, File › Put Back fixes it while the Trash is still full. After it's emptied, only a backup can. If you're comparing ways to remove whole apps instead, the post on choosing an uninstaller covers that.

A simple workspace setup featuring a coffee cup, notebook, pen, and smartphone on a wooden desk.
With one Node.js left and its caches checked, the rest is a day of normal use before emptying the Trash. Photo: Markus Spiske on Pexels

How the app does it

Wombit explains Node.js's folders like everything else on the disk. Select one in the map or the list, and the inspector says what it is, how safe it is to remove and what removing it costs, from the catalog's entry. It reads only names, sizes and dates, and file names and paths never leave your Mac.

Cleanup lists them by level:

  • npm's cache, the npx cache, node-gyp's cache, nvm's download cache, Yarn Classic's cache, pnpm's store and Bun's cache are Safe and start checked.
  • Project node_modules folders are Usually safe and wait for you to check them.
  • nvm's Node.js versions are Review first, because each holds global packages.
  • Homebrew's Cellar and mise's and asdf's versions are Review first too, explained with each tool's own way to remove them. The app doesn't move them.

Folders go to the Trash, where Put Back works. For npm, pnpm and Bun, the app runs the tool's own cleanup after the review sheet instead. What a command removes can't be put back, and the sheet says so.

What the app runs, after you review itPRO

npm cache clean --force
npm's package cache
pnpm store prune
Packages in pnpm's store that no project on your Mac uses
bun pm cache rm
Bun's global install cache

The installer's files in /usr/local have no catalog entry, so they're never offered for removal. On a Mac with Apple Intelligence, the inspector can give a Best guess at what one is, labelled as a guess.

  • ~/.nvm/versions/node/*

    Node.js versions installed with nvm

    A version of Node.js installed with nvm, along with the global npm packages installed for it.

    Review first · Moves it to the Trash

  • ~/.nvm/.cache

    nvm download cache

    Node.js downloads nvm keeps after it installs a version.

    Safe · Moves it to the Trash

  • ~/.npm/_cacache

    npm cache

    Packages and package information npm has downloaded, kept so it doesn't download them again.

    Safe · Runs npm cache clean --force

  • ~/.npm/_npx

    npx cache

    Packages npx downloaded to run commands that aren't installed in a project.

    Safe · Moves it to the Trash

  • ~/Library/Caches/node-gyp

    node-gyp headers cache

    Node.js header files node-gyp downloads to build packages that include native code.

    Safe · Moves it to the Trash

  • /opt/homebrew/Cellar

    Homebrew Cellar

    Command-line tools and libraries installed with Homebrew, in one folder for each package and version.

    Review first · Explained only: never removed

Seeing all of this is free. Removing it is PRO, one $4.99 payment with lifetime access. Every Pro tool's review is free to open, so you see what would go and why before you buy.

Frequently asked questions

Does the Node.js installer for Mac have an uninstaller?

No. The macOS installer from nodejs.org puts Node.js and npm into folders under /usr/local and adds no uninstall app. You remove those items yourself in Finder, with an administrator's password, and move them to the Trash so you can put them back if something breaks.

Where is Node.js installed on a Mac?

It depends on how it was installed. The nodejs.org installer uses /usr/local/bin and /usr/local/lib/node_modules, Homebrew uses its Cellar in /opt/homebrew on Apple silicon or /usr/local on Intel, and nvm keeps each version in ~/.nvm/versions/node. Apps can also carry their own copy inside the app.

Does uninstalling Node.js remove my global npm packages?

Usually, yes. npm installs global packages next to the Node.js that ran it, so removing that Node.js, or that nvm version, takes its global packages and their commands with it. Note which ones you use before you remove anything, so you can install them again later.

How do I uninstall nvm on a Mac?

nvm's documentation describes two parts: remove its folder, ~/.nvm, which holds every Node.js version it installed, and remove the nvm lines it added to your shell's startup file, usually .zshrc. Both can be done in Finder and TextEdit. Open a new Terminal window afterwards.

Will uninstalling Node.js delete the npm cache?

No. npm keeps its cache in the hidden .npm folder in your home folder, outside every Node.js installation, so it stays after Node.js is gone. If you won't use npm again, you can move that folder to the Trash; everything in it downloads again if you ever need it.

Why is node still there after I uninstalled it?

Because a Mac often has more than one Node.js, and your shell runs the next one it finds. Common leftovers are a Homebrew copy, an nvm version or the nodejs.org installer's files. Open a new Terminal window after each removal, so the shell looks again.

Can I delete the copy of Node.js inside an app?

No. Some apps, such as code editors and AI apps, include their own Node.js inside the app and need it to work. It's removed when you uninstall the app, and removing your own Node.js doesn't affect it.

Sources

  1. Go directly to a specific folder on Mac · Apple
  2. Download Node.js · Node.js
  3. Makefile: the macOS installer (pkg) build · Node.js on GitHub
  4. Folders · npm Docs
  5. nvm: Uninstalling / Removal · nvm on GitHub
  6. brew(1) manual page · Homebrew