explaingit

schniz/fnm

25,575RustAudience · developerComplexity · 2/5MaintainedLicenseSetup · easy

TLDR

Fast command-line tool to install and switch between multiple Node.js versions instantly, with automatic detection of project requirements.

Mindmap

mindmap
  root((fnm))
    What it does
      Install Node versions
      Switch versions instantly
      Auto-detect from files
    Why use it
      Speed in Rust
      Multiple projects
      No conflicts
    How it works
      Reads .node-version
      Reads .nvmrc files
      Shell integration
    Supported platforms
      macOS
      Windows
      Linux
    Installation methods
      Homebrew
      Script
      Cargo

Things people build with this

USE CASE 1

Switch between Node.js versions when working on multiple projects with different requirements.

USE CASE 2

Automatically load the correct Node.js version when entering a project directory.

USE CASE 3

Replace slower version managers with a faster Rust-based alternative.

USE CASE 4

Manage Node.js versions across macOS, Windows, and Linux without conflicts.

Tech stack

RustNode.jsBashZshFishPowerShell

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

fnm (Fast Node Manager) is a command-line tool that lets you install and switch between multiple versions of Node.js on the same computer. Node.js is the runtime that lets you run JavaScript outside of a browser, and different projects often require different versions of it. Without a version manager, you can only have one version installed at a time, which causes conflicts when working across projects. fnm solves this by letting you install any version of Node.js and switch between them instantly from the terminal. It can automatically detect which version a project needs by reading a ".node-version" or ".nvmrc" file in the project's folder, so when you navigate into a project directory, fnm can switch to the right Node.js version automatically. This makes working on multiple projects with different Node.js requirements seamless. The main selling point over older alternatives is speed, fnm is built in Rust, a compiled systems programming language, making it significantly faster to start up and execute commands. It works on macOS, Windows, and Linux, and integrates with bash, zsh, fish, and PowerShell shells. You would use fnm if you are a JavaScript or Node.js developer who works on multiple projects and needs a fast, reliable way to manage Node.js versions. It is installed via a script, Homebrew, Winget, Scoop, Chocolatey, or Cargo.

Copy-paste prompts

Prompt 1
How do I install fnm and set it up to auto-switch Node.js versions when I cd into a project?
Prompt 2
Show me how to use fnm to install Node.js 18 and switch to it from the command line.
Prompt 3
How do I configure fnm to automatically detect and use the Node.js version specified in my project's .nvmrc file?
Prompt 4
What's the fastest way to migrate from nvm to fnm and keep my existing Node.js versions?
Prompt 5
How do I integrate fnm with my shell (bash/zsh/fish) so it auto-switches versions on directory change?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.