macOSLinuxWindows

Where Does Volta Keep Node Versions and Pins?

Where Volta installs Node versions, package binaries, and project pins on Windows, macOS, and Linux.

Last updated

Volta roots everything at ~/.volta on Unix and %LOCALAPPDATA%\Volta on Windows. Runtimes and global packages live in tools/image, shims in bin, and a small cache keeps installs fast.

Pins are separate from installs. Each project declares its toolchain in package.json under the volta key, and Volta swaps to it on entry. That split is why reinstalling Volta never loses a project's pin: the pin lives in the repo. The list command shows installed runtimes with the default marked.

Where Volta stores this, by platform

macOS
~/.volta

tools/image/node for runtimes, tools/image/packages for globals, bin/ for shims. The Volta installer adds bin to PATH; a missing shim on PATH is the usual broken install symptom. Cache/ is safe to delete.

Linux
~/.volta

Same layout as macOS. VOLTA_HOME relocates the whole tree, but keep its bin on PATH afterward. Runs identically under WSL and native Linux once the feature paths match.

Windows
%LOCALAPPDATA%\Volta

Tools, shims, and cache mirror the Unix tree under LocalAppData. The installer sets PATH and the shim directory must stay on it. Project pins in package.json work unchanged across OSes.

Frequently asked questions

where does volta store version pins

In the volta key of package.json (node, npm, yarn versions). Volta reads it on every command and switches automatically. Commit it so the team runs the same toolchain without thinking about it.

where are volta node versions installed

Under the tools/ tree inside ~/.volta (or %LOCALAPPDATA%\Volta on Windows): image/node holds runtimes, image/packages holds global packages. volta list shows what is installed. Delete a version folder only via volta uninstall.

does volta handle global packages

Yes, through the shims in ~/.volta/bin on PATH. Global installs (volta install typescript) land in the image tree and their shims appear immediately. Project local binaries still resolve from node_modules first.

Notice an outdated path? Let us know.