Live npm registry

npm Package Name Checker

See whether a package name is free on the npm registry before you publish, including the look-alike rule that makes npm reject names that differ only by punctuation.

npm package naming rules

What the registry accepts for a new package, and what it rejects.

RuleAllowedRejected
Lowercasemy-toolMy-Tool
URL-safe charactersmy_tool.jsmy tool, my~tool
No leading . or _tool.tool, _tool
Not a core modulefs-extrafs, http, path
Not a punctuation twinmytool2my-tool (if mytool exists)
Max length214 characters215+

Picking an npm package name people can find

npm package names are first come, first served, and with millions of packages published, most short, obvious names went years ago. This npm name checker asks the registry directly whether a name is taken, so you know before you write a README around it.

Being unused isn't always enough. To stop typosquatting, npm rejects a new name that matches an existing package once periods, hyphens and underscores are removed. That's why "react-dom" can't be registered by someone else as "reactdom". The checker tests that punctuation-free twin too and tells you when npm is likely to refuse your name, which saves a failed npm publish.

If the name is gone, scopes are the easy answer. A scoped package like @yourname/tool only has to be unique inside your scope, and installs work exactly the same way. Many well-known projects publish under an organization scope for exactly this reason.

For a project you want people to adopt, the package name is one part of the identity. A matching GitHub organization, a short .dev or .io domain for the docs and the same handle on social media make the project easier to trust. The links after each check take you straight to those.

npm name checker FAQ

Quick answers to the most common questions.

Type the name into the checker above. It validates the name against npm's naming rules as you type, then asks the npm registry whether a package with that name exists. If it doesn't, the name is free to publish.

npm blocks new names that match an existing package once punctuation is removed, to stop typosquatting. If "reactdom" exists, you can't publish "react-dom" or "react.dom". The checker tests the punctuation-free version of your name and warns you when it's taken.

Names must be 214 characters or fewer, lowercase, URL-safe (letters, numbers, hyphens, periods and underscores), can't start with a period or underscore, and can't be the name of a Node.js core module such as http or fs.

Publish it under a scope instead, such as @yourname/package. Scoped names only have to be unique within your scope, so they're almost always available. You can also add a short prefix or suffix that describes what the package does.

Sometimes. npm's dispute policy lets you ask the owner to transfer an unused name, and npm support may step in if the owner doesn't respond. Squatted names with no real code are the most likely to be released.

Yes, for anything you want people to find. A matching GitHub organization and a .dev or .io domain make an open-source project easier to trust and remember. The checker links to both.

More free naming tools

Related searches

npm package name checkernpm name availabilitycheck npm package namenpm package name rulesis npm package name takengithub username checker