Overview
Expands a CIDR block such as 192.168.1.0/29 into its full anatomy: network address, broadcast address, subnet mask, first and last usable hosts, and the total address count, plus a scrollable list of the individual addresses. All arithmetic runs in the page as you type the block.
How It Works
Type a CIDR block - the default is 192.168.1.0/29 - and the summary cards update immediately: network IP, broadcast IP, subnet mask, first host, last host, total addresses and usable hosts. An expanded list shows the individual addresses up to a display cap, with the shown-versus-total count labeled. Click the list to copy every displayed address. Malformed blocks - bad mask length, non-numeric octets, values over 255 - produce no cards rather than wrong ones.
Step-by-Step Usage Guide
- Type the CIDR block, including the slash and prefix length. Prefixes from /0 to /32 are accepted.
- Read the summary cards for network, broadcast, mask and host boundaries - these are the values your DHCP pool and firewall rules need.
- Check Total versus Usable: blocks below /31 always exclude network and broadcast addresses from the usable count.
- Copy the expanded list when the block is small, or note the cap and generate the full list programmatically for large ones.
Technical Specifications & Standards
The math is classic bit surgery on a 32-bit unsigned integer. The mask is a run of 1-bits for the prefix length, the network is the address ANDed with the mask, and the broadcast is the network ORed with the inverted mask. For any prefix below 31, first and last hosts skip the network and broadcast addresses, and the usable count is 2^(32-prefix) minus 2; for /31 and /32 the tool follows the point-to-point convention of RFC 3021 territory, treating all addresses as usable and setting first and last host to the network and broadcast values themselves. Two display details are deliberate: the list caps at 256 addresses regardless of block size, so a /16 still reports its 65,536 total while the textarea shows the first 256 with an explicit shown-of-total count - expanding a /16 into a textarea would be hostile to the page and to you; and the host boundaries are computed arithmetically, not by enumerating, so a /8 computes instantly. The display cap also means copy gives you the visible 256, not the whole block - for bulk address lists of large blocks, generate them in code.
Targeted Use Cases
- Sizing a subnet before allocating it: total and usable counts, first and last host, in one glance.
- Producing an explicit address list from a small block for firewall rules, DNS records or test fixtures.
- Verifying hand-computed ranges - the classic source of off-by-one errors around network and broadcast addresses.
- Checking a /31 or /32 assignment, where the usual network-and-broadcast exclusion does not apply.
Notes & Gotchas
- Remember usable excludes network and broadcast for normal prefixes; planning DHCP ranges across those bounds wastes two addresses worth of confusion.
- For blocks larger than /24, use the summary cards and counts - the visible list caps at 256 addresses by design.
- Copy large address lists from real tooling, not the display cap; the copied range is exactly what is shown, not the full block.
- Validate the prefix length when importing CIDR strings - the tool rejects 33-and-up, and your importer should too.
Frequently Asked Questions
Why does the list show fewer addresses than the total?
The display caps at 256 rows so a /16 or /8 does not flood the page. The header above the list states exactly how many of the true total are shown, and the summary cards always carry the full arithmetic.
How are first and last host computed?
For prefixes of 30 or shorter, first host is network plus one and last host is broadcast minus one, excluding the reserved network and broadcast addresses. For /31 and /32, all addresses in the block count as usable, matching point-to-point conventions.
Can it handle very large blocks like /8?
Yes for the numbers - the network, broadcast, mask and counts are computed arithmetically, not by enumeration, so a /8 with over sixteen million addresses reports instantly. Only the visible list is capped.
Why did nothing appear when I typed my block?
The parser requires four numeric octets within 0-255 and a prefix length from 0 to 32 after the slash. Anything outside that - a mask of 33, a 256 octet, a missing slash - is treated as invalid input rather than producing wrong output.