Toolman 100% local

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.

Got a subnet mask instead? Every mask with its prefix, host count and wildcard — 255.255.255.0 is /24.

PrefixSubnet maskWildcardAddressesUsable
/00.0.0.0255.255.255.2554,294,967,2964,294,967,294
/1128.0.0.0127.255.255.2552,147,483,6482,147,483,646
/2192.0.0.063.255.255.2551,073,741,8241,073,741,822
/3224.0.0.031.255.255.255536,870,912536,870,910
/4240.0.0.015.255.255.255268,435,456268,435,454
/5248.0.0.07.255.255.255134,217,728134,217,726
/6252.0.0.03.255.255.25567,108,86467,108,862
/7254.0.0.01.255.255.25533,554,43233,554,430
/8255.0.0.00.255.255.25516,777,21616,777,214
/9255.128.0.00.127.255.2558,388,6088,388,606
/10255.192.0.00.63.255.2554,194,3044,194,302
/11255.224.0.00.31.255.2552,097,1522,097,150
/12255.240.0.00.15.255.2551,048,5761,048,574
/13255.248.0.00.7.255.255524,288524,286
/14255.252.0.00.3.255.255262,144262,142
/15255.254.0.00.1.255.255131,072131,070
/16255.255.0.00.0.255.25565,53665,534
/17255.255.128.00.0.127.25532,76832,766
/18255.255.192.00.0.63.25516,38416,382
/19255.255.224.00.0.31.2558,1928,190
/20255.255.240.00.0.15.2554,0964,094
/21255.255.248.00.0.7.2552,0482,046
/22255.255.252.00.0.3.2551,0241,022
/23255.255.254.00.0.1.255512510
/24255.255.255.00.0.0.255256254
/25255.255.255.1280.0.0.127128126
/26255.255.255.1920.0.0.636462
/27255.255.255.2240.0.0.313230
/28255.255.255.2400.0.0.151614
/29255.255.255.2480.0.0.786
/30255.255.255.2520.0.0.342
/31255.255.255.2540.0.0.122
/32255.255.255.2550.0.0.011

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

PrefixUsableTypical use
/816,777,21410.0.0.0/8, the largest private range, and the whole of loopback
/121,048,574172.16.0.0/12 — note it ends at 172.31
/1665,534192.168.0.0/16, and a common size for a whole cloud VPC
/204,094A generous cloud subnet
/24254One VLAN, one office, one home network — the default almost everywhere
/2814A small public block or a DMZ
/302The traditional point-to-point link
/312The modern point-to-point link, with nothing wasted
/321A 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:

BitsOctetBitsOctet
005248
11286252
21927254
32248255
4240

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.

Where a subnet is allowed to start

A prefix does not just set a size, it sets the boundaries. A /26 is 64 addresses, and the only valid /26 networks inside a /24 begin at .0, .64, .128 and .192 — a subnet must start on a multiple of its own size. 192.168.1.100/26 is not a network; it is a host inside the network that starts at .64.

That is the whole reason "the address is not on a network boundary" errors happen, and the check is arithmetic: divide the last octet by the block size and the remainder must be zero. It is also why the block size, rather than the prefix, is the number worth thinking in — /26 tells you little, 64 tells you where the edges are.

The private ranges, and why there are three

RFC 1918 reserves three blocks that no router on the public internet will forward:

RangePrefixAddressesWhere you meet it
10.0.0.0 – 10.255.255.255/816.7 millionCorporate networks and anything that expects to grow
172.16.0.0 – 172.31.255.255/121.05 millionDocker's default bridge, and the one people misremember as /16
192.168.0.0 – 192.168.255.255/1665,536Home routers, almost universally

The middle one is the trap. 172.16.0.0/12 covers 172.16 through 172.31, not 172.16 through 172.16 — so 172.20.x.x is private and 172.32.x.x is not, and a firewall rule written for /16 leaves fifteen sixteenths of the range treated as public.

169.254.0.0/16 is a fourth block worth recognising even though it is not RFC 1918: an address in it means DHCP failed and the machine assigned itself one. It never indicates a working network.