Semantic Version Tool — Free Online Tool

Parse, compare, bump and range-test semantic versions in your browser. SemVer 2.0.0 precedence, caret/tilde/x-ranges and pre-release rules.

Use this free online Semantic Version Tool directly in your browser. No signup required, no data leaves your device. Part of Utilier — a collection of 139+ developer utilities.

What is Semantic Version Tool?

Semantic Versioning (SemVer) 2.0.0 gives a version number meaning: MAJOR.MINOR.PATCH, with optional pre-release and build metadata. This tool parses a version into those parts, compares two versions by the official precedence rules, bumps a version by any release type, and tests whether a version satisfies an npm-style range. Everything runs locally.

  • The four segments: 1.4.2-beta.1+build.7 breaks into major 1, minor 4, patch 2, a pre-release of beta.1, and build metadata build.7. Build metadata is ignored when comparing, exactly as the spec requires.
  • Precedence, not string order: SemVer comparison is numeric per field, and a pre-release version always ranks below the release it precedes, so 1.0.0-alpha is lower than 1.0.0. Comparing as plain strings gets this wrong; this tool applies the real rules.
  • Ranges the way tooling means them: It understands caret (^), tilde (~), x-ranges (1.x), comparator sets (>=1.2 <2.0), hyphen ranges and || for OR — the same practical subset a package manager resolves against.

Why use the SemVer tool?

Version math shows up constantly — cutting a release, reasoning about whether a dependency update is safe, or explaining why a range did or didn't pick up a new version — and doing it in your head is where mistakes creep in.

  • Decide the next version: Pick major, minor, patch or a pre-release bump and see the exact next number, including the fiddly pre-release rules where 1.2.3-beta.1 becomes 1.2.3-beta.2.
  • Answer 'will this range match?': Paste a version and a range like ^1.2.3 and get a straight yes/no, so you can predict what npm, yarn or pnpm will install before you run it.
  • Compare correctly: Confirm that 1.10.0 is higher than 1.9.0 (it is) and that 1.0.0-rc.1 is lower than 1.0.0 (it is) without second-guessing string sorting.

When to use the SemVer tool

Use it around releases, dependency work and changelog decisions.

  • Choosing the next version number when cutting a release, especially for pre-releases.
  • Checking whether a specific version satisfies a dependency range before upgrading.
  • Sorting or comparing versions correctly when string order would mislead you.
  • Explaining caret vs tilde to a teammate with concrete satisfy/not-satisfy examples.
  • Verifying that a CI or release script is producing the version bump you intended.

How to use the SemVer tool

Three sections: parse/bump, compare, and range test.

  1. Enter a version: Type a version at the top; it splits into major, minor, patch, pre-release and build.
  2. Bump it: Choose a bump type and an optional pre-release id (like beta) to see the next version.
  3. Compare two: Enter two versions in the Compare section for a <, > or = result explained in words.
  4. Test a range: Put a version and a range (^1.2.3, ~1.2, 1.x, >=1.2 <2.0, ||) to get a satisfy / does-not-satisfy answer.

Key features

  • Full SemVer 2.0.0 parsing: Major, minor, patch, dotted pre-release identifiers and build metadata, with leading-zero validation.
  • Spec-correct precedence: Numeric-vs-alphanumeric identifier rules and the pre-release-below-release rule are all applied.
  • Every bump type: major, minor, patch, premajor, preminor, prepatch and prerelease, with sensible pre-release id handling.
  • Practical range engine: Caret, tilde, x-ranges, comparators, hyphen ranges and OR — the subset you actually meet in package files.
  • Runs offline: No registry lookups; all parsing and range math happens in the page.

Common use cases

  • Release engineering: Decide and preview the next version number, pre-releases included.
  • Dependency upgrades: Predict whether a range will pick up a new version before installing.
  • Teaching: Demonstrate caret vs tilde and pre-release precedence with live examples.

Examples

Bump a pre-release

1.2.3-beta.1 (bump: prerelease, id: beta)
1.2.3-beta.2

A prerelease bump increments the trailing number of the matching identifier rather than the patch.

Caret range

version 2.0.0, range ^1.2.3
does not satisfy

Caret allows changes that do not modify the left-most non-zero element, so ^1.2.3 means >=1.2.3 <2.0.0.

Pre-release precedence

compare 1.0.0-alpha and 1.0.0
1.0.0-alpha < 1.0.0

Any pre-release version ranks below the release it precedes, which is easy to get wrong with string sorting.

Common mistakes to avoid

Comparing versions as strings

Why it happens: String comparison puts 1.10.0 before 1.9.0 because '1' sorts before '9', and it mishandles pre-releases entirely. That leads to picking the wrong 'latest' version or a broken sort.

How to avoid it: Compare field by field numerically and treat a pre-release as lower than its release — which is exactly what this tool's Compare section does.

Confusing caret and tilde

Why it happens: ^1.2.3 permits any 1.x.y at or above 1.2.3, while ~1.2.3 only permits 1.2.x. Assuming they are interchangeable can pull in a minor bump you did not want, or block one you did.

How to avoid it: Test the actual versions against both ranges here before committing a range to a package file.

Frequently asked questions

How does SemVer decide which version is higher?

It compares major, then minor, then patch numerically. If those are equal, a version without a pre-release outranks one with a pre-release. When both have pre-releases, their dot-separated identifiers are compared left to right, with numeric identifiers ranking below alphanumeric ones and compared as numbers. Build metadata is ignored entirely.

What is the difference between ^ and ~ ranges?

A caret range like ^1.2.3 allows any version that does not change the left-most non-zero part, so it means >=1.2.3 <2.0.0. A tilde range like ~1.2.3 allows only patch-level changes, so it means >=1.2.3 <1.3.0. For 0.x versions the caret behaves more conservatively, treating the first non-zero element as significant.

Does a pre-release count as lower or higher than the release?

Lower. 1.0.0-rc.1 comes before 1.0.0. This is why pre-releases are used to stage a release: they compare below the final version so they will not accidentally be chosen over it.

What version ranges does the tool support?

Exact versions, comparators (>, >=, <, <=, =), caret (^) and tilde (~) ranges, x-ranges such as 1.x or 1.2.*, hyphen ranges like 1.2.3 - 2.3.4, wildcards (* and empty), and OR via ||. Comparators separated by spaces are combined with AND.

References

Privacy and availability

  • Runs entirely in your browser — zero server processing
  • No signup or account required
  • Works offline once loaded
  • Fast, lightweight, no external dependencies
  • Available as a browser extension for Chrome and Firefox