Skip to content
ZeroServer.tools

IP Range Expander

Expand IPv4 ranges, wildcards or CIDR blocks into a paginated address list with subnet statistics.

IP Input Configuration

Formats accepted: 192.168.1.0/24, 10.0.0.5-25, or 172.16.*.*

Statistics (CIDR block)

Network address192.168.1.0
Broadcast address192.168.1.255
Subnet mask255.255.255.0
CIDR block192.168.1.0/24
Total addresses256
Usable hosts192.168.1.1 – 192.168.1.254 (254 hosts)

Expanded IP Addresses

Showing 256 matching IPs
192.168.1.0192.168.1.1192.168.1.2192.168.1.3192.168.1.4192.168.1.5192.168.1.6192.168.1.7192.168.1.8192.168.1.9192.168.1.10192.168.1.11192.168.1.12192.168.1.13192.168.1.14192.168.1.15192.168.1.16192.168.1.17192.168.1.18192.168.1.19192.168.1.20192.168.1.21192.168.1.22192.168.1.23192.168.1.24192.168.1.25192.168.1.26192.168.1.27192.168.1.28192.168.1.29192.168.1.30192.168.1.31192.168.1.32192.168.1.33192.168.1.34192.168.1.35192.168.1.36192.168.1.37192.168.1.38192.168.1.39192.168.1.40192.168.1.41192.168.1.42192.168.1.43192.168.1.44192.168.1.45192.168.1.46192.168.1.47192.168.1.48192.168.1.49192.168.1.50192.168.1.51192.168.1.52192.168.1.53192.168.1.54192.168.1.55192.168.1.56192.168.1.57192.168.1.58192.168.1.59192.168.1.60192.168.1.61192.168.1.62192.168.1.63192.168.1.64192.168.1.65192.168.1.66192.168.1.67192.168.1.68192.168.1.69192.168.1.70192.168.1.71192.168.1.72192.168.1.73192.168.1.74192.168.1.75192.168.1.76192.168.1.77192.168.1.78192.168.1.79192.168.1.80192.168.1.81192.168.1.82192.168.1.83192.168.1.84192.168.1.85192.168.1.86192.168.1.87192.168.1.88192.168.1.89192.168.1.90192.168.1.91192.168.1.92192.168.1.93192.168.1.94192.168.1.95192.168.1.96192.168.1.97192.168.1.98192.168.1.99
Page 1 of 3

Expanding Subnets, Wildcards, and Ranges

This IP Range Expander lists every IPv4 address in a CIDR block (like /24 or /28), a wildcard whose stars fill the last octets (such as 192.168.1.*), or a range separated by a hyphen (e.g. 10.0.0.100 - 150). Addresses are read strictly: four decimal octets with no leading zeros, so a typo is reported instead of quietly becoming a different address, and a pattern such as 192.168.*.5, which is 256 separate addresses rather than a range, is refused.

For a block it shows the network and broadcast addresses, the mask and the usable hosts; for a range, its first and last address and the smallest block that encloses it. The list is paginated and exports as plain text, CSV with one address per row, or JSON, for up to 262,144 addresses (a /14).

Built and maintained by Meet Shah · Last updated

What this tool is used for

  • Expanding a CIDR block into individual addresses for an allowlist.
  • Producing a list for a tool that will not accept CIDR notation.
  • Checking exactly how many addresses a block contains.
  • Exporting a range as CSV or JSON for a spreadsheet.
  • Confirming the first and last address of a block.

How it works in practice

A worked example

A firewall admin is handed a ticket that says to allow 192.168.1.77/29 on an appliance that only accepts single addresses, and needs the exact list to paste in.

Input
192.168.1.77/29
Output
Statistics (CIDR block)
192.168.1.77 is not the start of a /29: the block it falls in is 192.168.1.72/29, listed below. Check that this is the block you meant.
Network address    192.168.1.72
Broadcast address  192.168.1.79
Subnet mask        255.255.255.248
CIDR block         192.168.1.72/29
Total addresses    8
Usable hosts       192.168.1.73 – 192.168.1.78 (6 hosts)

Expanded IP Addresses
192.168.1.72
192.168.1.73
192.168.1.74
192.168.1.75
192.168.1.76
192.168.1.77
192.168.1.78
192.168.1.79

A /29 fixes the first 29 bits of the address and leaves the last three free, so the block holds eight addresses and the mask's final octet is 248. The tool clears those three free bits in the address you typed: 77 is 01001101 in binary, and zeroing the low three bits gives 01001000, which is 72. The block therefore runs from .72 to .79, with .72 as the network address and .79 as the broadcast address, leaving six assignable hosts. The copied list still carries all eight; the usable count only describes which of them a router would hand to a machine.

The edge case that catches people

The address in the ticket, .77, is not where the list starts, and the warning above the statistics exists for exactly this. Whoever wrote the ticket may have meant eight addresses starting at .77, which is .77 to .84 and not a /29 at all, and the page cannot tell which was intended. Python's ipaddress module goes further and refuses 192.168.1.77/29 outright under its default strict checking, because the address has host bits set. Read the warning back against the ticket before pasting anything.

When not to use this tool

Expanding a block only makes sense when the destination genuinely cannot take CIDR. Linux ipset hash:net sets, nftables interval sets and AWS security groups all accept 192.168.1.72/29 directly, and one prefix is easier to audit than eight lines. The page handles IPv4 only. To turn an arbitrary start-to-end range into the exact prefixes that cover it, use Python's ipaddress.summarize_address_range, which needs five prefixes for 10.0.0.5 to 10.0.0.25, rather than the single wider block reported here.

Frequently Asked Questions

Which range notations does it accept?
CIDR blocks, start-end ranges with a hyphen or an en dash, the shorthand 192.168.1.10-20 where only the last octet is given, wildcards such as 192.168.1.* whose stars fill the last octets, and a single address. A star in the middle, as in 192.168.*.5, is refused: it names 256 separate addresses, not a range.
What is the enclosing CIDR it reports?
For a range, the smallest single block that contains it, shown as network/prefix: 192.168.1.200 to 192.168.2.10 sits in 192.168.0.0/22, found by XOR-ing the endpoints. It is usually larger than the range itself, so do not paste it into a firewall rule expecting an exact match.
Why is there a limit on how many addresses it lists?
Listing is capped at 262,144 addresses, exactly a /14. Only one page is drawn at a time, but every address is generated for filtering, copying and download, and beyond a /14 that work stalls the tab. The statistics are still computed for a block of any size.
Does the expanded list include network and broadcast?
Yes — it enumerates every address in the range, which is what you want for scanning or allow-listing. If you need only assignable hosts, drop the first and last entries for any prefix shorter than /31.
Is a reversed range accepted?
No. A range whose start is above its end is rejected rather than silently swapped, because the usual cause is a typo in one octet and quietly reordering it would hide the mistake behind a plausible-looking result.
Can I get the output as CSV or JSON?
Yes. CSV writes one address per row under an ip header, so it opens as a single column in a spreadsheet; JSON suits a script; and the plain list pastes into most firewall and scanner configuration files, which expect one address per line.

Common errors and gotchas

  • Expanding a large block, where a /16 is 65,536 addresses and a /8 is millions.
  • Including the network and broadcast addresses in a host list where they do not belong.
  • Expanding an IPv6 block, which is almost never finite enough to enumerate.
  • Pasting a very long list into a config that has a size limit.
  • Assuming every address in the block is in use, which a scan would establish.

Related Developer Utilities tools

Private & free — this tool runs entirely in your browser.

IndieKit — Ship your Next.js startup in days.affiliate