Runs in your browser
Semver Checker
Compare two semantic versions to see which is newer and what kind of change separates them, or check whether a version satisfies a range like ^1.2.3, ~1.2.3, or >=1.2.0 <2.0.0. Built on the same semver implementation npm uses, so pre-release precedence and caret behaviour below 1.0.0 match real dependency resolution.
Semantic Versioning 2.0.0
ReadyDeveloper UtilitiesFree · No account required
Related tools
Features
- Compare two versions, with the type of change identified
- Test any npm-style range, including caret, tilde, x-ranges, and unions
- Major, minor, patch, pre-release, and build metadata broken out
- Reference table of common ranges, clickable to try them
How to use
- Pick Compare versions or Check a range.
- Enter the versions or the version and range.
- Read the result and its explanation — both update as you type.
FAQ
- Why does ^0.2.3 behave differently from ^1.2.3?
- Below 1.0.0, semver treats every minor bump as potentially breaking, so ^0.2.3 resolves to >=0.2.3 <0.3.0 — patch updates only. From 1.0.0 onward, ^1.2.3 allows anything up to but excluding 2.0.0.
- Why doesn't my pre-release satisfy the range?
- By default npm excludes pre-releases unless the range itself names one. 1.3.0-beta.1 does not satisfy ^1.2.3, even though it sits numerically inside it — you'd need a range like >=1.3.0-beta.1.
- Does build metadata affect ordering?
- No. Per the spec, build metadata after a + is ignored entirely when comparing precedence, so 1.0.0+build.1 and 1.0.0+build.9 are the same version.
- Which implementation is this using?
- The semver package — the same one npm itself uses — rather than a hand-written parser, so the edge cases match real dependency resolution.