Subnet Calculator
Network analysis and subnet enumeration for production environments.
Calculator Mode
Network Input
Network Details
Additional Information
Binary Representation
Subnet Enumeration
IPv6 Network Input
IPv6 Network Details
Additional Information
Binary Representation
Subnet Enumeration
Network and broadcast derivation
The network address is found with a bitwise AND between the IP address and the subnet mask. The broadcast address is found with a bitwise OR between the IP address and the inverse of the subnet mask. These are the same operations a router performs when determining whether a destination is local or remote.
Host addresses as input
You do not need to enter the network address itself. If you enter 192.168.10.37/26, the tool derives 192.168.10.0/26 automatically. This mirrors real-world troubleshooting, where you often have a host IP and mask and need to know the boundaries of the subnet it sits in.
Wildcard masks
The wildcard mask is the bitwise inverse of the subnet mask. It is used in Cisco ACLs (access-list 1 permit 192.168.10.0 0.0.0.255) and in OSPF network statements (network 192.168.10.0 0.0.0.255 area 0). The tool reports it prominently because it is required input in many IOS configurations.
/31 and /32 handling
A /31 prefix contains two addresses. By the classic formula, that yields zero usable hosts because the network and broadcast addresses consume the entire block. However, RFC 3021 permits both addresses to be used as host addresses on point-to-point links. The tool reports both addresses as usable and reflects that in the Usable Hosts count, with a note explaining why.
A /32 is a single host route. It contains one address and is valid input, commonly seen in loopback interfaces and specific BGP announcements.
Classful addressing
The tool reports legacy class (A, B, C, D, E) for historical context only. It never applies classful defaults to the calculation. A 10.0.0.0/24 network is calculated as a /24, not as a Class A /8. Classful boundaries have not governed routing decisions since CIDR was introduced in 1993.
Display limits
The subnet arithmetic is instant at any prefix length. The limits below apply only to DOM rendering, which becomes expensive when generating millions of table rows:
- 1 to 256 subnets: Full table rendered. This covers a /16 split into /24s (256 subnets) and essentially all production network designs.
- 257 to 1,024 subnets: Full table rendered with a performance notice.
- Over 1,024 subnets: Summary shown with a paginated range selector. No more than 256 rows are placed in the DOM at once.
If you genuinely need to enumerate an entire /8 into /30s (over four million subnets), a browser table is the wrong tool. Export the logic to a script or use a purpose-built IPAM system.
Accepted input ranges
| Field | Range |
|---|---|
| IPv4 octet | 0 to 255 |
| CIDR prefix | 0 to 32 |
| Split target prefix | Current prefix + 1 to 32 |
No broadcast address
IPv6 does not have a broadcast address. Multicast replaces it: instead of broadcasting to every host on a subnet, a node sends to a multicast group such as ff02::1 (all nodes on the local link). Because no address is reserved for broadcast — and the all-zeros/all-ones host distinctions of IPv4 do not apply — there is no "usable hosts = total − 2" subtraction in IPv6. Total Addresses is the meaningful figure, and this tool reports it directly, calculated with 128-bit integer arithmetic (JavaScript BigInt) so prefixes shorter than /76 never lose precision.
The /64 boundary and the interface ID
An IPv6 address splits into a network portion (the prefix) and an interface identifier (IID) — the last 64 bits. For end networks, /64 is the conventional subnet boundary: stateless address autoconfiguration (SLAAC, RFC 4862) requires a 64-bit interface identifier, and mechanisms like NDISC and some cryptographic address schemes assume it. When the prefix is /64 or shorter, this tool shows the Interface ID (the final 64 bits) as a separate row, because the network/IID split is one of the first things you check on a real interface. Prefixes longer than /64 (e.g. /127 on point-to-point links per RFC 6164) are valid — the tool simply reports the whole block as the address range in that case.
Address compression
IPv6 addresses are 128 bits written as eight 16-bit hexadecimal groups. Two compression rules keep them readable:
- Leading zero suppression: each group drops leading zeros (
00dbbecomesdb). - The double colon: one — and only one — run of consecutive all-zero groups may be replaced with
::. The longest run wins; ties go to the first run. This is why2001:0db8:0000:0000:0000:ff00:0042:8329compresses to2001:db8::ff00:42:8329, and an all-zeros address compresses to::.
The tool accepts full, compressed, or CIDR-inline notation (2001:db8::1/64) and shows both the expanded and compressed forms in the results.
Display limits
The subnet arithmetic is instant at any prefix length — even a /8 split into /64s produces a 36-digit subnet count that BigInt handles instantly. The limits below apply only to DOM rendering, which becomes expensive when generating thousands of table rows:
- 1 to 256 subnets: Full table rendered. This covers, for example, a /48 split into /56s (256 subnets) — a typical enterprise allocation.
- 257 to 1,024 subnets: Full table rendered with a performance notice.
- Over 1,024 subnets: Summary shown with a paginated range selector. No more than 256 rows are placed in the DOM at once.
Because IPv6 subnet counts grow astronomically fast (a /64 split into /80s is already 65,536 subnets), the "Split Into Equal Subnets" dropdown always labels every option with its exact subnet count so you can see the scale before you calculate. If you genuinely need to enumerate billions of prefixes, a browser table is the wrong tool — use a script or an IPAM system.
Address type detection
The badge in the results identifies the address scope: Global Unicast (2000::/3), Unique Local (fc00::/7, the IPv6 equivalent of RFC 1918 private space), Link-Local (fe80::/10), Multicast (ff00::/8), Loopback (::1), Unspecified (::), Documentation (2001:db8::/32), and IPv4-Mapped (::ffff:0:0/96). Detection runs in that precedence order, so 2001:db8::/32 is labeled Documentation even though it also falls inside 2000::/3.
Accepted input ranges
| Field | Range |
|---|---|
| IPv6 hextet | 0000 to ffff (1–4 hex digits per group) |
| CIDR prefix | 0 to 128 |
| Split target prefix | Current prefix + 1 to 128 |
