IPv4 Range CIDR Cover
Cover an arbitrary inclusive IPv4 range by a minimal disjoint aligned CIDR sequence; no network/broadcast address subtraction.
Description
Cover an arbitrary inclusive IPv4 range by a minimal disjoint aligned CIDR sequence; no network/broadcast address subtraction.
A CIDR cover can represent an arbitrary inclusive IPv4 range without expanding it into addresses.
When to use this tool
Cover an arbitrary inclusive IPv4 range by a minimal disjoint aligned CIDR sequence; no network/broadcast address subtraction.
- Prepare the supplied start, end fields for this operation.
- Compare the complete example with the representation used by your own input before carrying the result into another step.
How to use the tool and how it works
- Enter start, end. Use the exact text syntax, units and index conventions explained below.
- Run the tool. If input validation fails, correct the supplied fields before interpreting any result.
- Read result.cidrs. Interpret false, null and empty lists using the distinctions below; they can be valid outputs.
Starting at the range start, repeatedly choose the largest aligned power-of-two block whose end stays within the range. Emit its address/prefix and advance by its size until the end is covered.1
| Input field | Meaning and representation | Accepted input |
|---|---|---|
| start | Address text for the family named by this tool. Prefix lengths are separate fields where shown. | Text; at most 8,192 UTF-16 code units, subject to the grammar above |
| end | Address text for the family named by this tool. Prefix lengths are separate fields where shown. | Text; at most 8,192 UTF-16 code units, subject to the grammar above |
| Output field | Interpretation |
|---|---|
| result | Object containing the named outputs below. |
| result.cidrs | The cidrs list in the ordering and representation described above. |
{
"input": {
"start": "10.0.0.1",
"end": "10.0.0.6"
},
"output": {
"result": {
"cidrs": [
{
"address": "10.0.0.1",
"prefix": 32
},
{
"address": "10.0.0.2",
"prefix": 31
},
{
"address": "10.0.0.4",
"prefix": 31
},
{
"address": "10.0.0.6",
"prefix": 32
}
]
}
}
} Limitations and assumptions
- The blocks describe exact address coverage, without routing attributes, usable-host exclusions or allocation policy.
- IPv4 input uses strict dotted-decimal octets without leading zeros or surrounding whitespace. IPv6 accepts its supported compressed or full spellings and trims surrounding whitespace, but rejects zone identifiers; embedded dotted IPv4 uses the strict IPv4 spelling. IPv6 address outputs are fully expanded unless stated otherwise.
- All declared input fields are required and unexpected top-level fields are rejected. Numbers must be finite; lists are limited to 128 entries and ordinary text fields to 8,192 UTF-16 code units, with tighter limits where stated.
- JSON text inputs must parse within bounded nesting and size limits. Numeric outputs outside the safe finite range are rejected; large exact integer results use decimal strings. Indexes and half-open spans are zero-based unless a rank is explicitly described as one-based.
Alternative or Complementary methods
Use address-set arithmetic for prefix planning and a routing or interface inspection for deployed configuration. Membership and overlap do not establish reachability, ownership or route preference.
References
Similar or alternative tools
- IPv4 Range Address Count
Count every address in an arbitrary inclusive IPv4 range, not a prefix’s usable-host count; entire 32-bit space remains exact.
- IPv4 Range Intersection
Intersect arbitrary inclusive IPv4 ranges exactly and return null for disjoint ranges; all addresses count, not only assignable hosts.