CIDR prefix lengths
Every IPv4 prefix length, its mask and how many hosts it holds. Use the subnet calculator to work out a specific network's range.
| Prefix | Subnet mask | Wildcard | Addresses | Usable |
|---|---|---|---|---|
| /0 | 0.0.0.0 | 255.255.255.255 | 4,294,967,296 | 4,294,967,294 |
| /1 | 128.0.0.0 | 127.255.255.255 | 2,147,483,648 | 2,147,483,646 |
| /2 | 192.0.0.0 | 63.255.255.255 | 1,073,741,824 | 1,073,741,822 |
| /3 | 224.0.0.0 | 31.255.255.255 | 536,870,912 | 536,870,910 |
| /4 | 240.0.0.0 | 15.255.255.255 | 268,435,456 | 268,435,454 |
| /5 | 248.0.0.0 | 7.255.255.255 | 134,217,728 | 134,217,726 |
| /6 | 252.0.0.0 | 3.255.255.255 | 67,108,864 | 67,108,862 |
| /7 | 254.0.0.0 | 1.255.255.255 | 33,554,432 | 33,554,430 |
| /8 | 255.0.0.0 | 0.255.255.255 | 16,777,216 | 16,777,214 |
| /9 | 255.128.0.0 | 0.127.255.255 | 8,388,608 | 8,388,606 |
| /10 | 255.192.0.0 | 0.63.255.255 | 4,194,304 | 4,194,302 |
| /11 | 255.224.0.0 | 0.31.255.255 | 2,097,152 | 2,097,150 |
| /12 | 255.240.0.0 | 0.15.255.255 | 1,048,576 | 1,048,574 |
| /13 | 255.248.0.0 | 0.7.255.255 | 524,288 | 524,286 |
| /14 | 255.252.0.0 | 0.3.255.255 | 262,144 | 262,142 |
| /15 | 255.254.0.0 | 0.1.255.255 | 131,072 | 131,070 |
| /16 | 255.255.0.0 | 0.0.255.255 | 65,536 | 65,534 |
| /17 | 255.255.128.0 | 0.0.127.255 | 32,768 | 32,766 |
| /18 | 255.255.192.0 | 0.0.63.255 | 16,384 | 16,382 |
| /19 | 255.255.224.0 | 0.0.31.255 | 8,192 | 8,190 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4,096 | 4,094 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2,048 | 2,046 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1,024 | 1,022 |
| /23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 |
| /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2 | 2 |
| /32 | 255.255.255.255 | 0.0.0.0 | 1 | 1 |
Reading a prefix length
An IPv4 address is 32 bits. The prefix says how many of the leading bits identify the network; whatever is left identifies a host inside it. The counter-intuitive part is that a smaller number means a larger network, because fewer network bits leaves more host bits. A /16 is 256 times the size of a /24.
Every step of one bit doubles or halves the network, which is why subnet sizes are always powers of two. There is no way to allocate a network of exactly 300 addresses: you take a /23, which holds 512, and leave the remainder unused.
The two lost addresses
In any subnet of /30 or larger, two addresses cannot be assigned to a machine. The lowest — all host bits zero — is the network address and names the subnet itself. The highest — all host bits one — is the broadcast address. A /24 therefore holds 256 addresses but only 254 hosts.
The waste is negligible at /16 and severe at /30, where half the block is lost. That is exactly why /31 exists: RFC 3021 removes the broadcast address on point-to-point links, making both addresses usable and halving the waste on router-to-router connections.
The sizes you will actually meet
| Prefix | Usable | Typical use |
|---|---|---|
/8 | 16,777,214 | 10.0.0.0/8, the largest private range, and the whole of loopback |
/12 | 1,048,574 | 172.16.0.0/12 — note it ends at 172.31 |
/16 | 65,534 | 192.168.0.0/16, and a common size for a whole cloud VPC |
/20 | 4,094 | A generous cloud subnet |
/24 | 254 | One VLAN, one office, one home network — the default almost everywhere |
/28 | 14 | A small public block or a DMZ |
/30 | 2 | The traditional point-to-point link |
/31 | 2 | The modern point-to-point link, with nothing wasted |
/32 | 1 | A host route or a single-address firewall rule |
Working out a mask without a calculator
Only nine values can appear in an octet of a subnet mask, because each is a run of leading ones:
| Bits | Octet | Bits | Octet |
|---|---|---|---|
| 0 | 0 | 5 | 248 |
| 1 | 128 | 6 | 252 |
| 2 | 192 | 7 | 254 |
| 3 | 224 | 8 | 255 |
| 4 | 240 |
Divide the prefix by 8 to get the number of complete 255 octets, and the remainder picks the next octet from this table. A /26 is three complete octets and a remainder of 2, giving 255.255.255.192. If a mask contains any other number, it is wrong.