cidr string required Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.
Parse, split and compare strict IPv4 CIDR blocks or test membership, with canonical unsigned boundaries, exact subnet counts and no truncation.
Authoritative reference data or standards computation
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
cidr
required
| string | allowed: 9 – 18 example: 192.0.2.10/24 | Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address. |
cidr string required Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: cidr,inputIp | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: usableHosts | 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 |
|---|---|---|---|
cidr | string | Canonical network address and prefix. | 192.0.2.0/24 |
inputIp | string (IPv4) | Canonical address portion supplied in cidr before network alignment. | 192.0.2.10 |
network | string (IPv4) | First address of the block. | 192.0.2.0 |
broadcast | string (IPv4) | Last address of the block. | 192.0.2.255 |
prefix | integer | CIDR prefix length from 0 through 32. | 24 |
netmask | string (IPv4) | Dotted-decimal subnet mask. | 255.255.255.0 |
wildcardMask | string (IPv4) | Inverse of the subnet mask. | 0.0.0.255 |
firstHost | string (IPv4) | First usable address under the documented /31 and /32 rules. | 192.0.2.1 |
lastHost | string (IPv4) | Last usable address under the documented /31 and /32 rules. | 192.0.2.254 |
totalAddresses | integer | Total number of addresses, including network and broadcast where applicable. | 256 |
usableHosts | integer | Usable host count: total minus two normally, two for /31, one for /32. | 254 |
cidr string Canonical network address and prefix.
example: 192.0.2.0/24
inputIp string (IPv4) Canonical address portion supplied in cidr before network alignment.
example: 192.0.2.10
network string (IPv4) First address of the block.
example: 192.0.2.0
broadcast string (IPv4) Last address of the block.
example: 192.0.2.255
prefix integer CIDR prefix length from 0 through 32.
example: 24
netmask string (IPv4) Dotted-decimal subnet mask.
example: 255.255.255.0
wildcardMask string (IPv4) Inverse of the subnet mask.
example: 0.0.0.255
firstHost string (IPv4) First usable address under the documented /31 and /32 rules.
example: 192.0.2.1
lastHost string (IPv4) Last usable address under the documented /31 and /32 rules.
example: 192.0.2.254
totalAddresses integer Total number of addresses, including network and broadcast where applicable.
example: 256
usableHosts integer Usable host count: total minus two normally, two for /31, one for /32.
example: 254
/api/ipv4-cidr/parse?cidr=192.0.2.10%2F24 {
"data": {
"cidr": "192.0.2.0/24",
"inputIp": "192.0.2.10",
"network": "192.0.2.0",
"broadcast": "192.0.2.255",
"prefix": 24,
"netmask": "255.255.255.0",
"wildcardMask": "0.0.0.255",
"firstHost": "192.0.2.1",
"lastHost": "192.0.2.254",
"totalAddresses": 256,
"usableHosts": 254
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/parse",
"params": {
"cidr": "192.0.2.0/24"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/parse?cidr=198.51.100.10%2F31 {
"data": {
"cidr": "198.51.100.10/31",
"inputIp": "198.51.100.10",
"network": "198.51.100.10",
"broadcast": "198.51.100.11",
"prefix": 31,
"netmask": "255.255.255.254",
"wildcardMask": "0.0.0.1",
"firstHost": "198.51.100.10",
"lastHost": "198.51.100.11",
"totalAddresses": 2,
"usableHosts": 2
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/parse",
"params": {
"cidr": "198.51.100.10/31"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/parse?cidr=203.0.113.9%2F0 {
"data": {
"cidr": "0.0.0.0/0",
"inputIp": "203.0.113.9",
"network": "0.0.0.0",
"broadcast": "255.255.255.255",
"prefix": 0,
"netmask": "0.0.0.0",
"wildcardMask": "255.255.255.255",
"firstHost": "0.0.0.1",
"lastHost": "255.255.255.254",
"totalAddresses": 4294967296,
"usableHosts": 4294967294
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/parse",
"params": {
"cidr": "0.0.0.0/0"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
cidr
required
| string | allowed: 9 – 18 example: 192.0.2.10/24 | Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address. |
ip
required
| string | allowed: 7 – 15 example: 192.0.2.42 | Strict dotted-decimal IPv4 address to test against the inclusive block boundaries. |
cidr string required Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.
ip string required Strict dotted-decimal IPv4 address to test against the inclusive block boundaries.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: cidr,ip | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: broadcast | 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 |
|---|---|---|---|
cidr | string | Canonical network address and prefix. | 192.0.2.0/24 |
ip | string (IPv4) | Canonical dotted-decimal address that was tested. | 192.0.2.42 |
contains | boolean | Whether ip lies inside the inclusive network-to-broadcast range. | true |
network | string (IPv4) | First address of the CIDR block. | 192.0.2.0 |
broadcast | string (IPv4) | Last address of the CIDR block. | 192.0.2.255 |
cidr string Canonical network address and prefix.
example: 192.0.2.0/24
ip string (IPv4) Canonical dotted-decimal address that was tested.
example: 192.0.2.42
contains boolean Whether ip lies inside the inclusive network-to-broadcast range.
example: true
network string (IPv4) First address of the CIDR block.
example: 192.0.2.0
broadcast string (IPv4) Last address of the CIDR block.
example: 192.0.2.255
/api/ipv4-cidr/contains?cidr=192.0.2.10%2F24&ip=192.0.2.42 {
"data": {
"cidr": "192.0.2.0/24",
"ip": "192.0.2.42",
"contains": true,
"network": "192.0.2.0",
"broadcast": "192.0.2.255"
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/contains",
"params": {
"cidr": "192.0.2.0/24",
"ip": "192.0.2.42"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/contains?cidr=192.0.2.0%2F24&ip=198.51.100.1 {
"data": {
"cidr": "192.0.2.0/24",
"ip": "198.51.100.1",
"contains": false,
"network": "192.0.2.0",
"broadcast": "192.0.2.255"
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/contains",
"params": {
"cidr": "192.0.2.0/24",
"ip": "198.51.100.1"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/contains?cidr=203.0.113.0%2F24&ip=203.0.113.255 {
"data": {
"cidr": "203.0.113.0/24",
"ip": "203.0.113.255",
"contains": true,
"network": "203.0.113.0",
"broadcast": "203.0.113.255"
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/contains",
"params": {
"cidr": "203.0.113.0/24",
"ip": "203.0.113.255"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
cidr
required
| string | allowed: 9 – 18 example: 192.0.2.10/24 | Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address. |
newPrefix
required
| int | allowed: 0 – 32 example: 26 | Child prefix; must be at least the canonical parent's prefix and produce no more than 256 children. |
cidr string required Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.
newPrefix int required Child prefix; must be at least the canonical parent's prefix and produce no more than 256 children.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: cidr,newPrefix | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: subnets | 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 |
|---|---|---|---|
cidr | string | Canonical parent network and prefix. | 192.0.2.0/24 |
newPrefix | integer | Requested aligned child prefix. | 26 |
subnetCount | integer | Exact number of children: 2^(newPrefix - parent prefix). | 4 |
addressesPerSubnet | integer | Exact address count in every child block. | 64 |
subnets | object[] | Complete ordered child list with canonical CIDR and inclusive boundaries; never truncated. | [{"cidr":"192.0.2.0/26","network":"192.0.2.0","broadcast":"192.0.2.63"}] |
cidr string Canonical parent network and prefix.
example: 192.0.2.0/24
newPrefix integer Requested aligned child prefix.
example: 26
subnetCount integer Exact number of children: 2^(newPrefix - parent prefix).
example: 4
addressesPerSubnet integer Exact address count in every child block.
example: 64
subnets object[] Complete ordered child list with canonical CIDR and inclusive boundaries; never truncated.
example: [{"cidr":"192.0.2.0/26","network":"192.0.2.0","broadcast":"192.0.2.63"}]
/api/ipv4-cidr/subnets?cidr=192.0.2.99%2F24&newPrefix=26 {
"data": {
"cidr": "192.0.2.0/24",
"newPrefix": 26,
"subnetCount": 4,
"addressesPerSubnet": 64,
"subnets": [
{
"cidr": "192.0.2.0/26",
"network": "192.0.2.0",
"broadcast": "192.0.2.63"
},
{
"cidr": "192.0.2.64/26",
"network": "192.0.2.64",
"broadcast": "192.0.2.127"
},
{
"cidr": "192.0.2.128/26",
"network": "192.0.2.128",
"broadcast": "192.0.2.191"
},
{
"cidr": "192.0.2.192/26",
"network": "192.0.2.192",
"broadcast": "192.0.2.255"
}
]
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/subnets",
"params": {
"cidr": "192.0.2.0/24",
"newPrefix": 26
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/subnets?cidr=198.51.100.0%2F24&newPrefix=32 {
"data": {
"cidr": "198.51.100.0/24",
"newPrefix": 32,
"subnetCount": 256,
"addressesPerSubnet": 1,
"subnets": [
{
"cidr": "198.51.100.0/32",
"network": "198.51.100.0",
"broadcast": "198.51.100.0"
},
{
"cidr": "198.51.100.1/32",
"network": "198.51.100.1",
"broadcast": "198.51.100.1"
},
{
"cidr": "198.51.100.2/32",
"network": "198.51.100.2",
"broadcast": "198.51.100.2"
},
{
"cidr": "198.51.100.3/32",
"network": "198.51.100.3",
"broadcast": "198.51.100.3"
},
{
"cidr": "198.51.100.4/32",
"network": "198.51.100.4",
"broadcast": "198.51.100.4"
},
{
"cidr": "198.51.100.5/32",
"network": "198.51.100.5",
"broadcast": "198.51.100.5"
},
{
"cidr": "198.51.100.6/32",
"network": "198.51.100.6",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/subnets?cidr=250.200.199.129%2F25&newPrefix=25 {
"data": {
"cidr": "250.200.199.128/25",
"newPrefix": 25,
"subnetCount": 1,
"addressesPerSubnet": 128,
"subnets": [
{
"cidr": "250.200.199.128/25",
"network": "250.200.199.128",
"broadcast": "250.200.199.255"
}
]
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/subnets",
"params": {
"cidr": "250.200.199.128/25",
"newPrefix": 25
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
a
required
| string | allowed: 9 – 18 example: 192.0.2.0/24 | First strict dotted-decimal IPv4 CIDR; canonicalized to its aligned network block. |
b
required
| string | allowed: 9 – 18 example: 192.0.2.128/25 | Second strict dotted-decimal IPv4 CIDR; canonicalized before comparison. |
a string required First strict dotted-decimal IPv4 CIDR; canonicalized to its aligned network block.
b string required Second strict dotted-decimal IPv4 CIDR; canonicalized before comparison.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: a,b | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: intersectionAddressCount | 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 |
|---|---|---|---|
a | string | Canonical first CIDR block. | 192.0.2.0/24 |
b | string | Canonical second CIDR block. | 192.0.2.128/25 |
overlap | boolean | Whether the inclusive address ranges intersect. | true |
relation | string | equal, aContainsB, bContainsA or disjoint. | aContainsB |
intersectionCidr nullable | string | Exact intersecting CIDR (the more specific block), or null when disjoint. | 192.0.2.128/25 |
intersectionNetwork nullable | string (IPv4) | First intersection address, or null when disjoint. | 192.0.2.128 |
intersectionBroadcast nullable | string (IPv4) | Last intersection address, or null when disjoint. | 192.0.2.255 |
intersectionAddressCount nullable | integer | Exact intersection size, or null when disjoint. | 128 |
a string Canonical first CIDR block.
example: 192.0.2.0/24
b string Canonical second CIDR block.
example: 192.0.2.128/25
overlap boolean Whether the inclusive address ranges intersect.
example: true
relation string equal, aContainsB, bContainsA or disjoint.
example: aContainsB
intersectionCidr string nullable Exact intersecting CIDR (the more specific block), or null when disjoint.
example: 192.0.2.128/25
intersectionNetwork string (IPv4) nullable First intersection address, or null when disjoint.
example: 192.0.2.128
intersectionBroadcast string (IPv4) nullable Last intersection address, or null when disjoint.
example: 192.0.2.255
intersectionAddressCount integer nullable Exact intersection size, or null when disjoint.
example: 128
/api/ipv4-cidr/overlaps?a=192.0.2.99%2F24&b=192.0.2.200%2F25 {
"data": {
"a": "192.0.2.0/24",
"b": "192.0.2.128/25",
"overlap": true,
"relation": "aContainsB",
"intersectionCidr": "192.0.2.128/25",
"intersectionNetwork": "192.0.2.128",
"intersectionBroadcast": "192.0.2.255",
"intersectionAddressCount": 128
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/overlaps",
"params": {
"a": "192.0.2.0/24",
"b": "192.0.2.128/25"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/overlaps?a=198.51.100.0%2F25&b=198.51.100.128%2F25 {
"data": {
"a": "198.51.100.0/25",
"b": "198.51.100.128/25",
"overlap": false,
"relation": "disjoint",
"intersectionCidr": null,
"intersectionNetwork": null,
"intersectionBroadcast": null,
"intersectionAddressCount": null
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/overlaps",
"params": {
"a": "198.51.100.0/25",
"b": "198.51.100.128/25"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ipv4-cidr/overlaps?a=255.255.255.255%2F0&b=250.200.199.129%2F25 {
"data": {
"a": "0.0.0.0/0",
"b": "250.200.199.128/25",
"overlap": true,
"relation": "aContainsB",
"intersectionCidr": "250.200.199.128/25",
"intersectionNetwork": "250.200.199.128",
"intersectionBroadcast": "250.200.199.255",
"intersectionAddressCount": 128
},
"meta": {
"endpoint": "ipv4-cidr",
"route": "/overlaps",
"params": {
"a": "0.0.0.0/0",
"b": "250.200.199.128/25"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Calculates IPv4 CIDR boundaries with exact unsigned arithmetic. Pass any address inside a block, such as 192.0.2.10/24, and the API canonicalizes it to 192.0.2.0/24 before returning its network, broadcast, masks and usable host range.
Input is deliberately strict: exactly four decimal octets and a prefix from 0 through 32. Shorthand, hexadecimal, leading-zero octets, trailing junk and IPv6 are rejected instead of being guessed.
For ordinary prefixes, the network and broadcast addresses are excluded from usableHosts. RFC 3021 semantics apply to /31: both addresses are usable on a point-to-point link. A /32 contains one host route.
/subnets splits a parent into every aligned child at newPrefix. Counts and address sizes are exact; requests producing more than 256 children return 400 rather than truncating a mathematically complete result. /overlaps canonicalizes two blocks and reports whether they are equal, one contains the other, or they are disjoint. Aligned CIDR blocks cannot partially overlap, so any intersection is exactly the more specific block.
Yes. 192.0.2.10/24 is resolved and echoed as the canonical block 192.0.2.0/24, while inputIp preserves the tested host address.
A /31 reports both addresses as usable point-to-point addresses under RFC 3021. A /32 reports its single address as the only usable host.
No. This endpoint is intentionally IPv4-only and requires four canonical decimal octets; unsupported or ambiguous forms return a 400 naming cidr or ip.
No. /subnets returns every child when the exact count is at most 256 and returns 400 when the requested split would produce 257 or more children.
No. Two canonical CIDR blocks are either disjoint, equal, or one completely contains the other; the intersection is therefore the more specific block.
Parse, split and compare IPv6 CIDRs with exact 128-bit arithmetic, RFC 5952 canonical output and correct /0 and /128 boundaries.
Browse IANA IPv4 and IPv6 special-purpose registries or classify an address with deterministic most-specific-prefix matching.
Generate safe DNS record fixtures with type-correct RDATA and coherent SRV RRsets, using reserved domains and documentation addresses only.
Random internet building blocks — valid IPv4/IPv6 addresses, locally-administered MACs, non-resolvable .test domains and URLs, slugs, ports and TLDs.