Don't like ads? Go Ad-Free Today

Semver Version Calculator & Range Tester

DataDeveloperText
ADVERTISEMENT · REMOVE?
Pick the semver operation. The form fields below adjust automatically.
Strict SemVer 2.0.0 syntax — major.minor.patch[-prerelease][+build].
Compared against Version A with strict SemVer precedence.
npm/composer-style range. Supports ^, ~, x, *, comparison operators, hyphen ranges, and ||.
Optional identifier for pre-* increments (e.g. alpha, beta, rc).
Each line is parsed as a version. Invalid lines are reported separately.
ADVERTISEMENT · REMOVE?

Guide

Semver Version Calculator & Range Tester

Semver Version Calculator & Range Tester

An all-in-one Semantic Versioning (SemVer 2.0.0) workbench for developers. Validate version strings, compare two versions with strict precedence, test whether a version satisfies an npm/Composer-style range expression (^, ~, x, hyphen, ||, comparison operators), bump a version with major/minor/patch/prerelease increments, and sort large lists of versions with full pre-release awareness — all client-side, with no installs required.

How to Use

  1. Pick the operation you need from the Operation dropdown — Validate, Compare, Satisfies range, Increment, or Sort.
  2. Fill in the version(s) and/or range field that the form reveals for that operation.
  3. Read the result instantly — the tool shows a status summary, a per-component breakdown, and the canonical output you can copy or download.
  4. For satisfies, the tool also shows how each comparator in your range was matched, so you can see exactly which clause accepted or rejected the version.

Features

  • Strict SemVer 2.0.0 validation – rejects leading zeros in pre-release identifiers, missing patches, malformed metadata, and other common slip-ups.
  • Two-version comparison – returns -1 / 0 / 1 with a human-readable verdict and a side-by-side breakdown of major, minor, patch, pre-release, and build.
  • Range satisfaction – supports caret (^1.2.3), tilde (~1.2.0), x-ranges (1.2.x), hyphen ranges (1.0.0 – 1.5.0), comparison operators (>=, <=, >, <, =), and OR (||).
  • Version increments – major, minor, patch, prepatch, preminor, premajor, and prerelease bumps with optional identifier (alpha, beta, rc).
  • Batch sort – paste one version per line, sort ascending or descending; invalid lines are reported separately so you can clean them up.
  • Pre-release precedence – follows the SemVer rule that pre-release versions are lower precedence than the associated normal version.
  • Build metadata aware – build metadata is parsed and displayed but ignored for precedence, exactly as the spec requires.
  • Copy and download – grab the result as text or a downloadable file with a single click.

FAQ

  1. What is Semantic Versioning (SemVer)?

    Semantic Versioning is a public specification (semver.org) that gives software releases a meaningful three-part version number — MAJOR.MINOR.PATCH. MAJOR is bumped for breaking changes, MINOR for backwards-compatible features, and PATCH for backwards-compatible bug fixes. Optional pre-release tags (-beta.1) and build metadata (+sha.abc123) can be appended.

  2. What does the caret (^) operator mean in a range?

    ^X.Y.Z accepts every version that does not change the leftmost non-zero component. ^1.2.3 means >=1.2.3 and =0.2.3 and =0.0.3 and <0.0.4. It is the default operator npm uses when you save a dependency.

  3. How does the tilde (~) operator differ from caret?

    ~X.Y.Z is more conservative than ^. It allows patch-level changes only when MINOR is specified — ~1.2.3 means >=1.2.3 and =1.0.0 and <2.0.0).

  4. How are pre-release versions compared?

    Pre-release versions have lower precedence than the same normal version (1.0.0-alpha < 1.0.0). Identifiers are compared from left to right: numeric identifiers are compared numerically, alphanumeric ones lexically, and a smaller set of fields has lower precedence than a larger one.

  5. Why is build metadata ignored when comparing versions?

    The SemVer 2.0.0 specification states that build metadata (the +abc.123 suffix) MUST be ignored when determining version precedence. Two versions that differ only in build metadata are considered equal in ordering, even though they are not literally the same string.

  6. Why does my pre-release version not satisfy ^1.2.0?

    By npm's range-matching convention, a pre-release like 1.5.0-beta.1 only satisfies a range if at least one comparator in that range explicitly mentions a pre-release for the same MAJOR.MINOR.PATCH. This prevents pre-releases from accidentally leaking into normal-version ranges.

Want To enjoy an ad-free experience? Go Ad-Free Today

Install Our Extensions

Add IO tools to your favorite browser for instant access and faster searching

Add to Chrome Extension Add to Edge Extension Add to Firefox Extension Add to Opera Extension

Scoreboard Has Arrived!

Scoreboard is a fun way to keep track of your games, all data is stored in your browser. More features are coming soon!

ADVERTISEMENT · REMOVE?
ADVERTISEMENT · REMOVE?
ADVERTISEMENT · REMOVE?

News Corner w/ Tech Highlights

Get Involved

Help us continue providing valuable free tools

Buy me a coffee
ADVERTISEMENT · REMOVE?