SemVer Validator and Calculator
Check a version against SemVer 2.0.0, see the next release numbers, compare another version, and test a simple caret or tilde range.
Example: ^1.4.0 or ~1.4.0.
SemVer 2.0.0 · up to 10,000 characters per field · processed locally
Next minor
Next major
Precedence comparison
Leave blank to skip comparison.
Range match
Example: ^1.4.0 or ~1.4.0.
A QUICK WALKTHROUGH
How to use this tool
- Enter a complete X.Y.Z version, optionally with a pre-release or build label.
- Select Calculate to validate it and see patch, minor, and major increments.
- Optionally enter a second version to compare precedence, or a ^ / ~ range to check a version.
SemVer 2.0.0 validation
Requires three numeric core fields without leading zeroes. Supports dot-separated ASCII pre-release and build identifiers; numeric pre-release identifiers cannot have leading zeroes. A leading v is not part of a SemVer version.
Precedence and release increments
Major, minor, and patch fields compare numerically; pre-release identifiers follow SemVer precedence; build metadata is ignored. Each suggested bump increments its core field, resets lower fields to zero, and removes pre-release/build labels.
Caret and tilde ranges
The range checker accepts one complete version prefixed by ^ or ~. It checks the inclusive lower bound and exclusive upper bound; caret follows the first non-zero core field, while tilde advances the minor field. For pre-release candidates, it only matches when the range base is also a pre-release with the same core version. Wildcards, comparator sets, hyphen ranges, and package-manager-specific range syntax are not supported.
Local and bounded
Validation and calculations run in this browser. Version fields are limited to 10,000 characters; no package registry or server is contacted.
GOOD TO KNOW
Common questions
Is 1.2.3 the same precedence as 1.2.3+build.7?
Yes. SemVer build metadata is ignored when versions are ordered.
Does a pre-release version rank above a stable version?
No. For the same major, minor, and patch fields, the pre-release has lower precedence.
Does the range checker implement npm range syntax?
It only supports a single complete version with ^ or ~. It does not parse wildcards, comparator sets, or the full npm range grammar.
Does this tool use a package service?
No. It validates and calculates locally without contacting a registry or server.