PyPI project name checker and rules
A brand claims its name on PyPI as a project name, pypi.org/project/yourname. Our check looks up that project. How our checks work
What can a PyPI project name contain?
ASCII letters, numbers, periods, underscores and hyphens, starting and ending with a letter or number.
| Character | Allowed? | Where |
|---|---|---|
| Letters a to z | Yes | Anywhere; capitals count as lowercase |
| Numbers 0 to 9 | Yes | Anywhere |
| Period, underscore, hyphen | Yes | Not first or last |
| Anything else | No |
Are hyphens and underscores the same in a PyPI name?
Yes. PyPI lowercases every name and turns each run of periods, hyphens and underscores into one hyphen. Friendly-Bard, friendly.bard, friendly_bard and FrIeNdLy-._.-bArD are all the same project as friendly-bard.[1, 2]
Why isn't my PyPI name available?
Another user may hold it, it may be too similar to an existing project, match a standard library module, or be blocked by PyPI. This can happen even when no project page shows, and our check, which looks for a published project, can miss it.
| Reason | What it means |
|---|---|
| Registered | Another user holds it, even with no releases yet |
| Too similar | It's close to an existing project, a typosquatting risk |
| Standard library | It matches a Python standard library module, from 2.6 on |
| Prohibited | PyPI's admins block it, such as requirements.txt |
Sources [3]
How do you claim a name on PyPI?
Register an account, then publish a first release under the name.
- Check the name above, with GitHub and the .com.
- Register on PyPI and turn on two-factor sign-in, which every account needs.
- Upload your first release, or publish it through a trusted publisher from GitHub Actions, GitLab CI/CD, Google Cloud or ActiveState.
A pending trusted publisher doesn't reserve the name. If someone registers the name first, the pending publisher stops working.[7, 8]
How much does PyPI cost?
Nothing for a personal account. Organization accounts are free for community projects and paid for companies, with the same features.
| Account | Price |
|---|---|
| Personal | Free |
| Community organization | Free |
| Corporate organization | $5 per member a month, invoiced monthly |
Can you get a PyPI name someone else holds?
Only if the project is abandoned or invalid, under PyPI's name retention policy, PEP 541. Empty projects with no function count as name squatting and can be removed.
| Abandoned means all of these | Detail |
|---|---|
| Owner can't be reached | PyPI tries at least three times over six weeks |
| No releases | In the past 12 months |
| No activity | On the project's home page, or no home page listed |
You must also show your own attempts to reach the owner and why a fork with another name won't do. Requests go to the pypa/pypi-support issue tracker on GitHub; trademark and other intellectual property complaints go to legal@python.org.[4]
Which platforms should you claim with PyPI?
GitHub, npm, Hugging Face, X and the .com.
Checks PyPI, GitHub, npm, Hugging Face, X and the .com in one search.
Sources (9)
- PrimaryPython Packaging User Guide: Names and normalization
- PrimaryPEP 503: Simple Repository API, Normalized Names
- PrimaryPyPI Docs: Choosing a project name
- PrimaryPyPI Docs: Name retention
- PrimaryPyPI Docs: Organization accounts
- PrimaryPyPI Docs: Pricing and payments
- PrimaryPyPI Docs: Two-factor authentication
- PrimaryPyPI Docs: Creating a PyPI project with a trusted publisher
- PrimaryZero To 1000's platform catalog: PyPI cost and rules