version string required Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.
Bounded SemVer 2.0.0 parsing, precedence comparison and major/minor/patch bumps, with explicit size limits instead of precision loss.
Authoritative reference data or standards computation
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
version
required
| string | allowed: 5 – 256 example: 1.4.0-beta.2+build.7 | Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range. |
version string required Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: version,major | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: isPrerelease | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
version | string | Validated SemVer string, unchanged because the accepted grammar is already canonical. | 1.4.0-beta.2+build.7 |
major | integer | Major version component. | 1 |
minor | integer | Minor version component. | 4 |
patch | integer | Patch version component. | 0 |
prerelease | string[] | Ordered prerelease identifiers; empty for a stable release. | ["beta","2"] |
build | string[] | Ordered build-metadata identifiers, which do not affect precedence. | ["build","7"] |
isPrerelease | boolean | True when the version has one or more prerelease identifiers. | true |
version string Validated SemVer string, unchanged because the accepted grammar is already canonical.
example: 1.4.0-beta.2+build.7
major integer Major version component.
example: 1
minor integer Minor version component.
example: 4
patch integer Patch version component.
example: 0
prerelease string[] Ordered prerelease identifiers; empty for a stable release.
example: ["beta","2"]
build string[] Ordered build-metadata identifiers, which do not affect precedence.
example: ["build","7"]
isPrerelease boolean True when the version has one or more prerelease identifiers.
example: true
/api/semver/parse?version=1.4.0-beta.2%2Bbuild.7 {
"data": {
"version": "1.4.0-beta.2+build.7",
"major": 1,
"minor": 4,
"patch": 0,
"prerelease": [
"beta",
"2"
],
"build": [
"build",
"7"
],
"isPrerelease": true
},
"meta": {
"endpoint": "semver",
"route": "/parse",
"params": {
"version": "1.4.0-beta.2+build.7"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/semver/parse?version=3.12.0 {
"data": {
"version": "3.12.0",
"major": 3,
"minor": 12,
"patch": 0,
"prerelease": [],
"build": [],
"isPrerelease": false
},
"meta": {
"endpoint": "semver",
"route": "/parse",
"params": {
"version": "3.12.0"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
left
required
| string | allowed: 5 – 256 example: 1.9.0 | Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range. |
right
required
| string | allowed: 5 – 256 example: 1.10.0 | Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range. |
left string required Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.
right string required Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: left,right | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: relation | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
left | string | Validated left-hand version, including metadata. | 1.9.0 |
right | string | Validated right-hand version, including metadata. | 1.10.0 |
comparison | integer (-1 | 0 | 1) | -1 when left is lower, 0 when precedence is equal, 1 when left is higher. | -1 |
relation | string | less-than | equal | greater-than. | less-than |
left string Validated left-hand version, including metadata.
example: 1.9.0
right string Validated right-hand version, including metadata.
example: 1.10.0
comparison integer (-1 | 0 | 1) -1 when left is lower, 0 when precedence is equal, 1 when left is higher.
example: -1
relation string less-than | equal | greater-than.
example: less-than
/api/semver/compare?left=1.9.0&right=1.10.0 {
"data": {
"left": "1.9.0",
"right": "1.10.0",
"comparison": -1,
"relation": "less-than"
},
"meta": {
"endpoint": "semver",
"route": "/compare",
"params": {
"left": "1.9.0",
"right": "1.10.0"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/semver/compare?left=2.0.0&right=2.0.0-rc.1 {
"data": {
"left": "2.0.0",
"right": "2.0.0-rc.1",
"comparison": 1,
"relation": "greater-than"
},
"meta": {
"endpoint": "semver",
"route": "/compare",
"params": {
"left": "2.0.0",
"right": "2.0.0-rc.1"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/semver/compare?left=1.0.0%2Blinux&right=1.0.0%2Bmacos {
"data": {
"left": "1.0.0+linux",
"right": "1.0.0+macos",
"comparison": 0,
"relation": "equal"
},
"meta": {
"endpoint": "semver",
"route": "/compare",
"params": {
"left": "1.0.0+linux",
"right": "1.0.0+macos"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Drops prerelease and build metadata, increments the selected core component, and resets every lower component to zero.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
version
required
| string | allowed: 5 – 256 example: 1.2.3-beta.1+build.5 | Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range. |
type
required
| enum | allowed: major | minor | patch example: minor | Core component to increment; lower components are reset to zero. |
version string required Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.
type enum required Core component to increment; lower components are reset to zero.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: input,type | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: patch | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
input | string | Validated input version before metadata removal. | 1.2.3-beta.1+build.5 |
type | string | Requested bump type: major, minor or patch. | minor |
version | string | Stable bumped version with no prerelease or build metadata. | 1.3.0 |
major | integer | Resulting major component. | 1 |
minor | integer | Resulting minor component. | 3 |
patch | integer | Resulting patch component. | 0 |
input string Validated input version before metadata removal.
example: 1.2.3-beta.1+build.5
type string Requested bump type: major, minor or patch.
example: minor
version string Stable bumped version with no prerelease or build metadata.
example: 1.3.0
major integer Resulting major component.
example: 1
minor integer Resulting minor component.
example: 3
patch integer Resulting patch component.
example: 0
/api/semver/bump?version=1.2.3&type=minor {
"data": {
"input": "1.2.3",
"type": "minor",
"version": "1.3.0",
"major": 1,
"minor": 3,
"patch": 0
},
"meta": {
"endpoint": "semver",
"route": "/bump",
"params": {
"version": "1.2.3",
"type": "minor"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/semver/bump?version=1.2.3-beta.1%2Bbuild.5&type=patch {
"data": {
"input": "1.2.3-beta.1+build.5",
"type": "patch",
"version": "1.2.4",
"major": 1,
"minor": 2,
"patch": 4
},
"meta": {
"endpoint": "semver",
"route": "/bump",
"params": {
"version": "1.2.3-beta.1+build.5",
"type": "patch"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/semver/bump?version=4.8.2&type=major {
"data": {
"input": "4.8.2",
"type": "major",
"version": "5.0.0",
"major": 5,
"minor": 0,
"patch": 0
},
"meta": {
"endpoint": "semver",
"route": "/bump",
"params": {
"version": "4.8.2",
"type": "major"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Implements a deliberately bounded SemVer 2.0.0 parser and comparator as pure computations. Inputs may be at most 256 characters, and core plus numeric prerelease identifiers must fit JavaScript's exact safe-integer range. Within those limits, versions must use the exact major.minor.patch form; whitespace, a leading v, omitted components and leading zeroes are rejected rather than coerced.
/compare follows the official precedence chain: core numbers first, a stable release after its prereleases, numeric prerelease identifiers below non-numeric identifiers, then ASCII lexical ordering. Build metadata is parsed and returned but ignored for precedence, exactly as the specification requires.
/bump deliberately has a small contract: major, minor or patch. It always removes prerelease and build metadata, increments the requested core component, and zeroes lower components. It does not implement package-manager range syntax. Numeric identifiers beyond JavaScript's safe integer limit return 400 instead of being rounded.
Yes. 1.0.0+build.1 and 1.0.0+build.2 have equal precedence under SemVer 2.0.0, although each complete input string is preserved in the response.
No. This endpoint uses its bounded strict SemVer form, so v1.2.3 returns 400 rather than being silently coerced to 1.2.3.
Both are removed first, then the selected core component is incremented and lower components are reset; 1.2.3-beta+7 with type=patch becomes 1.2.4.
No. Range syntax differs between package managers; this endpoint intentionally provides only a bounded SemVer 2.0.0 version parser and precedence comparison.
Fake git commits — Conventional Commits or plain messages, 40-char hashes, safe author emails, dates in your range and realistic diff stats. Fully seedable.
Parse any 5-field cron expression into plain English and its next run times (UTC) — full syntax support, month/weekday names, and honest errors.
The complete IANA HTTP status code registry with practical descriptions, defining RFCs and a retryable flag — list by category or look up a single code.
Clearly fake API keys, JWTs and hex/base64 secrets — structurally valid enough to exercise parsers and middleware, cryptographically meaningless by design.