Subnet Splitter
Split a network into equal subnets, or size each one by the hosts it has to hold.
The Subnet Splitter runs entirely in your browser. Internal addressing plans are calculated on your device and never leave it.
Open the CIDR calculator
About Subnet Splitter
Carving a network into smaller ones is easy to describe and fiddly to do by hand, because every child block has to start on a boundary its own size allows. This tool does it three ways. Give it a new prefix length and it lists the equal blocks that come out. Give it a number of subnets and it rounds up to the next power of two and does the same. Or list what each department actually needs and it lays out variable length subnets largest first, which is how VLSM avoids stranding address space. Every block comes with its mask, host range, broadcast address and usable count, ready to paste into an IPAM or a change ticket.
Features
- Splits by target prefix, by subnet count, or by host requirements
- Variable length subnet masking, allocated largest block first
- Network, netmask, first and last host, broadcast and usable count per subnet
- Normalises a host address to the network address of its block
- Reports the addresses left over and any requirement that did not fit
- Treats /31 as a point-to-point pair and /32 as a single host, per RFC 3021
- CSV export for an IPAM import or a spreadsheet
How to use the Subnet Splitter
- Enter the block you are dividing, such as 10.0.0.0/16
- Pick a new prefix, a number of subnets, or list the hosts each subnet needs
- Read the resulting blocks with their ranges and usable counts
- Copy the CIDR list or download the table as CSV
Example
Input
192.168.1.0/24 split into /26
Output
192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26, 192.168.1.192/26
Four equal blocks of 62 usable hosts each, on the boundaries a /26 is allowed to start at.
Common errors & troubleshooting
- The block you entered was silently corrected. — An address that is not the network address of its own block is normalised — 192.168.1.77/24 becomes 192.168.1.0/24. The notice above the results says when that happened.
- A VLSM request did not fit even though the maths looked fine. — Alignment costs space. A block has to start at a multiple of its own size, so a large request placed after several small ones can leave an unusable gap. Ordering largest first, as this tool does, minimises that.
- The usable host count is two lower than expected. — The network and broadcast addresses cannot be assigned to a host, so a /24 holds 254 usable addresses rather than 256. Only /31 and /32 break that rule.
- Only part of a very large split is listed. — Splitting a /8 into /24s produces 65,536 blocks, so the table shows the first 1,024 and says so. Split a smaller parent, or use a shorter prefix.
Frequently asked questions
- How many subnets do I get from splitting a /24 into /26s?
- Four, each with 64 addresses and 62 usable hosts. Every extra bit of prefix doubles the number of subnets and halves their size, so /25 gives two, /26 four, /27 eight and so on.
- What is VLSM and when do I need it?
- Variable length subnet masking gives each subnet a mask sized to its own host count rather than one mask for the whole network. It matters when your subnets differ in size — a 50-user office and a two-address router link should not both take a /24.
- Why must a subnet start on a boundary?
- Because the mask works by bits, not arithmetic. A /26 covers 64 addresses and its network address has to be a multiple of 64, so 192.168.1.64 is a valid start and 192.168.1.70 is not.
- Can I really use a /31 for a router link?
- Yes, and it is standard practice. RFC 3021 allows a /31 for point-to-point links, where both addresses are usable because there is nobody to broadcast to. It saves two addresses per link over a /30.
- Does this handle IPv6 prefixes?
- Not yet — the calculations here are IPv4. IPv6 subnetting rarely needs the same host-count arithmetic anyway, since the convention is to hand every segment a /64 regardless of how many devices sit on it.
Related tools
All ArrayKit tools