title: Semver Ranges description: Learn how to use semver ranges to filter package versions on npmx.dev navigation: icon: i-lucide-filter#
npm uses semantic versioning (semver) to manage package versions. A semver range is a string that describes a set of version numbers. On npmx, you can type a semver range into the version filter input on any package page to quickly find matching versions.
Version format#
Every npm version follows the format MAJOR.MINOR.PATCH, for example 3.2.1:
- MAJOR - incremented for breaking changes
- MINOR - incremented for new features (backwards-compatible)
- PATCH - incremented for bug fixes (backwards-compatible)
Some versions also include a prerelease tag, such as 4.0.0-beta.1.
Common range syntax#
| Range | Meaning | Example matches |
|---|---|---|
* |
Any version | 0.0.2, 3.1.0, 3.2.6 |
^3.0.0 |
Compatible with 3.x (same major) | 3.0.0, 3.1.0, 3.9.5 |
~3.2.0 |
At least 3.2.0, same major.minor | 3.2.0, 3.2.1, 3.2.99 |
3.2.x |
At least 3.2.0, same major.minor | 3.2.0, 3.2.1, 3.2.99 |
>=2.0.0 <3.0.0 |
At least 2.0.0 but below 3.0.0 | 2.0.0, 2.5.3, 2.99.0 |
1.2.3 |
Exactly this version | 1.2.3 |
=1.2.3 |
Exactly this version | 1.2.3 |
^0.3.1 |
At least 0.3.1, same major.minor (0.x is special) | 0.3.1, 0.3.2 |
^0.0.4 |
Exactly 0.0.4 (0.0.x is special) | 0.0.4 (only) |
Examples#
Find all 3.x versions#
Type ^3.0.0 to see every version compatible with major version 3.
Find patch releases for a specific minor#
Type ~2.4.0 to see only 2.4.x patch releases (2.4.0, 2.4.1, 2.4.2, etc.).
Find versions in a specific range#
Type >=1.0.0 <2.0.0 to see all 1.x stable releases.
Find a specific version#
Type the exact version number, like 5.3.1, to check if it exists.
Find prerelease versions#
Type >=3.0.0-alpha.0 to find alpha, beta, and release candidate versions for a major release.
Learn more#
The full semver range specification is documented at node-semver.