Private IP Address Ranges — RFC 1918 and Reserved IP Blocks
Private IP address ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) are not routable on the public internet. Here's a complete guide to private, loopback, link-local, and...
Private IP address ranges are blocks reserved for use within private networks. Traffic to these addresses is not forwarded by internet routers — they can be reused freely in any private network.
Use the Subnet Calculator to calculate subnet ranges and host counts.
RFC 1918 private address ranges
Three blocks are reserved for private use (RFC 1918):
| Range | CIDR | Class | Total IPs | Common Use |
|---|---|---|---|---|
10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | A | 16,777,216 | Large enterprises, cloud VPCs |
172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | B | 1,048,576 | Medium networks |
192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | C | 65,536 | Home networks, small offices |
Checking if an IP is private
import ipaddress
def is_private(ip_str: str) -> bool:
ip = ipaddress.ip_address(ip_str)
return ip.is_private
is_private('192.168.1.100') # True
is_private('10.0.0.1') # True
is_private('8.8.8.8') # False
is_private('172.16.5.1') # True
is_private('172.32.0.1') # False (outside 172.16.0.0/12)
function isPrivateIp(ip) {
const parts = ip.split('.').map(Number);
if (parts.length !== 4 || parts.some(p => isNaN(p) || p < 0 || p > 255)) {
return false;
}
const [a, b, c, d] = parts;
return (
a === 10 || // 10.0.0.0/8
(a === 172 && b >= 16 && b <= 31) || // 172.16.0.0/12
(a === 192 && b === 168) // 192.168.0.0/16
);
}
All reserved IP ranges
Beyond RFC 1918, other ranges are reserved for special purposes:
Loopback (127.0.0.0/8)
127.0.0.0 – 127.255.255.255
Most common: 127.0.0.1 = localhost
Traffic to loopback never leaves the host. Used for local development and inter-process communication.
Link-local (169.254.0.0/16)
169.254.0.0 – 169.254.255.255 (APIPA)
Automatically assigned when DHCP fails. Windows calls these APIPA addresses. If you see 169.254.x.x, the device can’t reach a DHCP server.
Documentation (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Reserved for use in documentation and examples. Never route these — used when you need “example IP addresses” in tutorials (like this one).
Multicast (224.0.0.0/4)
224.0.0.0 – 239.255.255.255
One-to-many delivery. Used for streaming, network discovery (mDNS, OSPF).
Broadcast
255.255.255.255 - limited broadcast
x.x.x.255 - directed broadcast to subnet
Carrier-grade NAT (100.64.0.0/10)
100.64.0.0 – 100.127.255.255 (RFC 6598)
Used by ISPs for carrier-grade NAT (CGNAT) — a second layer of NAT between customers and the internet. Common with mobile carriers.
Cloud networking private ranges
AWS VPC
Default VPC: 172.31.0.0/16
Common choices:
10.0.0.0/16 (65,534 addresses)
10.0.0.0/24 (254 addresses, small subnets)
192.168.0.0/16 (65,534 addresses, for lab environments)
AWS reserves 5 IPs per subnet:
.0— Network address.1— VPC router.2— Amazon DNS.3— Reserved for future.255— Broadcast
GCP VPC
10.0.0.0/8 range — used for GCP VPC subnets
Default auto-mode subnets: 10.128.0.0/9 (10.128.x.x – 10.255.x.x)
Azure VNet
Common ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
Default: 10.0.0.0/16
Choosing a private range for your network
Small home/office (< 254 devices):
192.168.1.0/24 → 254 usable hosts
192.168.0.0/24 → 254 usable hosts
Medium business (< 1000 devices):
10.0.0.0/22 → 1,022 usable hosts
172.16.0.0/22 → 1,022 usable hosts
Enterprise or VPC:
10.0.0.0/8 → 16+ million addresses, subdivide into subnets
10.0.0.0/16 → 65,534 addresses
Avoid: 192.168.x.x for VPCs — it overlaps with common home router ranges and causes VPN conflicts.
IPv6 private addresses
IPv6 equivalent of private addresses:
fc00::/7(FC00:: to FDFF:…) — Unique Local Addresses (ULA), RFC 4193fe80::/10— Link-local addresses::1/128— Loopback (equivalent to 127.0.0.1)
Related tools
- Subnet Calculator — calculate subnet ranges
- Subnet Mask Explained — how subnet masks work
- CIDR Notation Explained — prefix length guide
Related posts
- Private IP Address Ranges, Subnets, and CIDR Notation Explained — The three RFC 1918 private ranges, what CIDR notation actually means, subnet mas…
- CIDR Notation Explained — What /24, /16, /8 Mean in IP Addresses — CIDR notation is the slash number after an IP address — /24, /16, /8. It specifi…
- DHCP IP Allocation — How Dynamic IP Assignment Works — DHCP (Dynamic Host Configuration Protocol) automatically assigns IP addresses, s…
- IP Address Calculator — Calculate Network and Host Ranges — An IP address calculator finds the network address, broadcast address, and usabl…
- Subnet Mask Explained — How Subnetting and Network Masks Work — A subnet mask separates the network portion from the host portion of an IP addre…
Related tool
Calculate IPv4 subnets — network, broadcast, usable range, wildcard mask. Input CIDR (/24) or dotted mask (255.255.255.0). Binary visualization.
Written by Mian Ali Khalid. Part of the Dev Productivity pillar.