Documentation
Subnetsplit is a client-side CIDR subnet calculator. You enter a parent CIDR block and a list of subnet sizes — by host count or prefix length — and it produces a verified, non-overlapping allocation plan with network addresses, broadcast addresses, usable host counts, dotted-decimal masks, address ranges, and any leftover address space.
Everything runs in your browser. Nothing leaves your machine. No account, no sign-up, no uploads.
How to use Subnetsplit
- 1. Open the App. Navigate to the App page. You will see a two-column layout: an input panel on the left and a results area on the right.
-
2. Enter the parent block. In the "Parent CIDR block" field, type the address range you want to divide — for example
10.0.0.0/16or192.168.0.0/24. Press Enter to trigger validation. -
3. Add subnet requests. Click + Add subnet to add a row. Each row needs a name (e.g. "Engineering") and a size. Size can be a host count (e.g.
500) or a prefix length (e.g./24). Three example rows are pre-loaded — edit or remove them as needed. Use the × button on a row to delete it. - 4. Allocate. Click Allocate. The tool parses every row, converts host counts to the smallest prefix that fits, sorts requests by size (largest first), packs them sequentially within the parent block, and verifies each allocation against every other one. If a row has a validation error, it is flagged inline and allocation stops until corrected.
- 5. Review the results. The plan renders as a table with columns: Subnet name, CIDR notation, Network address, Broadcast address, Usable host count, Dotted-decimal mask, and Address range. A summary bar at the top shows total IPs allocated, percentage utilisation, and how many subnets (if any) overflow. Any leftover address space is listed in the "Remaining address space" section.
- 6. Export the plan. Use Copy plan to copy a monospace-formatted text table to your clipboard (paste into a ticket, document, or config). Use Download CSV to download a CSV file suitable for spreadsheets. Both exports include overflow information and remaining address space.
How allocations are computed
Parsing
Every input is validated before computation begins. The parent CIDR is parsed as a 32-bit unsigned integer base address and a prefix length (0–32). Each subnet request is either a literal prefix (−/24)) or a host count (e.g. 500) that gets converted to the smallest prefix providing at least N usable hosts.
Host-count to prefix conversion
| Requested hosts | Prefix assigned | Usable hosts | Notes |
|---|---|---|---|
| 1 | /32 | 1 | Loopback address |
| 2 | /31 | 2 | RFC 3021 point-to-point |
| >2 | Smallest p where 2^(32−p)−2 ≥ N | 2^(32−p)−2 | Standard formula |
Allocation algorithm
- Calculate the block size (2^(32−prefix)) for each request.
- Sort requests by block size descending (largest first). Ties preserve input order.
- Allocate sequentially: place each subnet at the current cursor within the parent block. If a subnet does not fit in the remaining space, it is marked as overflow (displayed with a red background and "OVERFLOW" badge), but the successful allocations still render.
- Compute gaps between allocated subnets, including the trailing gap after the last allocation.
Overlap detection
Every allocated subnet is a contiguous range of 32-bit addresses derived from its base and block size. Because the algorithm packs sequentially without revisiting earlier space, there is no overlap by construction. The result is still shown with the full table so you can verify each row.
Export formats
Clipboard copy (text table)
The Copy plan button generates a fixed-width text table with columns for Subnet, CIDR, Network, Broadcast, Usable, and Mask. If any subnets overflow or address space remains, those sections are appended below a separator line. The text is written to the system clipboard via the Clipboard API, with a document.execCommand('copy') fallback for non-HTTPS contexts.
CSV download
The Download CSV button generates a CSV file with the columns Subnet, CIDR, Network, Broadcast, Usable Hosts, Mask, and Status. Allocated subnets show "Allocated" in the Status column; overflow subnets show "Overflow - does not fit". The file is generated as a Blob and downloaded via URL.createObjectURL. Fields containing commas, quotes, or newlines are properly quoted per RFC 4180.
What Subnetsplit does not do
Subnetsplit is a calculator — it computes and verifies subnet allocations. The following are deliberately outside scope:
- No network reach — Subnetsplit does not connect to any network, query any device, or configure any router, switch, or firewall.
- No server-side storage — Plans exist only in browser memory and are lost when the tab is closed or refreshed. Export before navigating away.
- No API — The tool cannot be called programmatically. There are no HTTP endpoints for allocation or plan retrieval.
- No IPv6 — IPv4 CIDR only. IPv6 subnetting is not implemented and has no current timeline.
- No team sharing or workspaces — Every session is single-user. There is no multi-user collaboration, no shared plans, and no role management.
- No device configuration export — The export formats are text-table and CSV only. There is no vendor-specific config generation (Cisco, Juniper, AWS, etc.).
Honest limitations
Subnetsplit is a free tool with no paid tiers. The following are features that are not built or deliberately outside scope:
- No CSV import — Subnet requests must be entered manually. There is no CSV import feature.
- No saved plans — There is no mechanism to save or retrieve allocation plans across sessions. Everything is ephemeral by design. Export before closing the tab.
- No paid tiers — Subnetsplit is completely free. There are no subscriptions, no payments, and no feature gates. The full product is available to everyone.
Input reference
Parent CIDR block
A valid IPv4 CIDR notation: four decimal octets (0–255 each), a slash, and a prefix length (0–32). Examples: 10.0.0.0/16, 192.168.0.0/24, 172.16.0.0/12.
Subnet size
Two accepted formats:
- Prefix length: a slash followed by a number, e.g.
/24,/25,/31. - Host count: a bare integer, e.g.
500,100,10. The trailing word "hosts" or "host" is stripped if present.