Semver Checker
Parse, compare, and validate Semantic Versioning strings. Check ranges, bump versions, sort lists. 100% client-side.
About Semver Checker
Semantic Versioning (semver) is a widely-adopted convention for versioning software: MAJOR.MINOR.PATCH. Major bumps mean breaking changes, minor bumps add functionality backward-compatibly, patch bumps fix bugs. Pre-release and build metadata add extra context (1.2.3-alpha.1+build.42). Semver is used by npm, yarn, pnpm, Cargo, pip, and most modern package managers. Working with semver manually is tricky: does "1.0.0" satisfy "^1.0.0"? Is "1.2.3-alpha" less than "1.2.3"? What comes after "1.2.3-rc.1"? This tool parses any version, compares two versions, checks range satisfaction, bumps versions, and sorts lists — all according to the official semver 2.0.0 spec.
How It Works
- Parse: enter a version (e.g., 1.2.3-alpha.1+build.5) to see its components.
- Compare: enter two versions to see which is higher.
- Satisfies: enter a version and a range (e.g., ^1.2.0) to check.
- Bump: enter a version and choose major/minor/patch/prerelease.
- Sort: paste a list of versions to sort them correctly.
✨ Key Features
- ✓Parse version into major, minor, patch, prerelease, build
- ✓Validate version against the semver 2.0.0 spec
- ✓Compare two versions (<, =, >)
- ✓Check if a version satisfies a range
- ✓Support all range operators: ^, ~, >, >=, <, <=, =, x, *, -, ||
- ✓Bump version (major, minor, patch, prerelease)
- ✓Sort a list of versions (ascending/descending)
- ✓Detailed error messages for invalid versions
- ✓Support for pre-release comparison rules
- ✓100% client-side — no data sent to any server
🎯 Common Use Cases
- →Checking whether a version satisfies a dependency range
- →Deciding whether to bump major, minor, or patch
- →Understanding npm/yarn range syntax (^, ~, etc.)
- →Comparing two versions of a library
- →Sorting a CHANGELOG list of versions
- →Debugging "peer dependency" errors from npm
- →Validating a version string from a user input
- →Learning semver rules with instant feedback
💡 Advanced Tips & Pro Insights
- ▸^1.2.3 (caret): allows changes that do not modify the left-most non-zero digit. So ^1.2.3 = >=1.2.3 <2.0.0. For 0.x.y, ^0.2.3 = >=0.2.3 <0.3.0 (since 0.x means the minor version is the breaking boundary).
- ▸~1.2.3 (tilde): allows patch-level changes only. ~1.2.3 = >=1.2.3 <1.3.0. ~1.2 = >=1.2.0 <1.3.0. ~1 = >=1.0.0 <2.0.0.
- ▸Pre-release comparison: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta < 1.0.0-rc.1 < 1.0.0.
- ▸Build metadata (1.2.3+build.5) is ignored in comparisons — 1.2.3+abc = 1.2.3+xyz.
- ▸X-ranges: 1.2.x = 1.2.* = >=1.2.0 <1.3.0. 1.x = 1.* = >=1.0.0 <2.0.0.
- ▸|| means OR: ">=1.2.3 <2.0.0 || >=3.0.0" matches either range.