X Xerobit

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...

Mian Ali Khalid · · 5 min read
Use the tool
Subnet / CIDR Calculator
Calculate IPv4 subnets — network, broadcast, usable range, wildcard mask. Input CIDR (/24) or dotted mask (255.255.255.0). Binary visualization.
Open Subnet / CIDR Calculator →

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):

RangeCIDRClassTotal IPsCommon Use
10.0.0.010.255.255.25510.0.0.0/8A16,777,216Large enterprises, cloud VPCs
172.16.0.0172.31.255.255172.16.0.0/12B1,048,576Medium networks
192.168.0.0192.168.255.255192.168.0.0/16C65,536Home 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.

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 4193
  • fe80::/10 — Link-local addresses
  • ::1/128 — Loopback (equivalent to 127.0.0.1)

Related posts

Related tool

Subnet / CIDR Calculator

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.