Reserved IP Address Checker

This tool checks whether an IP address (IPv4 or IPv6) falls within any of the IANA reserved ranges, such as private networks, loopback addresses, multicast ranges, and more.

Learn about the different reserved IP address ranges, their purposes, and the RFCs that define them.

Check a Single IP Address

Check Multiple IP Addresses

About Reserved IP Addresses

The Internet Assigned Numbers Authority (IANA) reserves certain IP address ranges for specific purposes. These reserved ranges are defined in various RFCs (Request for Comments) and serve important functions in networking and the Internet infrastructure.

IPv4 Address Space Visualization

The colored blocks represent reserved address ranges within the IPv4 address space. Hover over each block to see details.

Categories of Reserved IP Addresses

Private Networks

IP addresses reserved for use in private networks, not routable on the public Internet.

Ranges in this category:
Name CIDR Version RFC
Private Network - Class A 10.0.0.0/8 IPV4 RFC 1918
Private Network - Class B 172.16.0.0/12 IPV4 RFC 1918
Private Network - Class C 192.168.0.0/16 IPV4 RFC 1918
Unique Local Addresses fc00::/7 IPV6 RFC 4193
Common Uses:

Large enterprise networks, corporate intranets, VPNs

Special Notes:

Offers the largest address space for private use with approximately 16.7 million addresses.

Loopback Addresses

Addresses that direct traffic back to the same device, used for testing network services locally.

Ranges in this category:
Name CIDR Version RFC
Loopback 127.0.0.0/8 IPV4 RFC 1122
Loopback ::1/128 IPV6 RFC 4291
Common Uses:

Testing local services, interprocess communication, localhost references

Special Notes:

Any address in this range will loop back to the local machine, with 127.0.0.1 being the most commonly used.

Multicast Addresses

Addresses used to send packets to multiple destinations simultaneously.

Ranges in this category:
Name CIDR Version RFC
Multicast 224.0.0.0/4 IPV4 RFC 5771
Multicast ff00::/8 IPV6 RFC 4291
Common Uses:

Video streaming, IPTV, multicast DNS, routing protocols

Special Notes:

Further divided into various subranges for different purposes, such as local network control protocols or global multicast.

Broadcast Addresses

Addresses used to send packets to all devices on a network segment.

Ranges in this category:
Name CIDR Version RFC
Broadcast 255.255.255.255/32 IPV4 RFC 919
Common Uses:

DHCP discovery, network announcements

Special Notes:

Limited broadcast address that will not be forwarded by routers.

Reserved for Future Use

Address blocks reserved for future allocation or special uses.

Ranges in this category:
Name CIDR Version RFC
Reserved (Future) 240.0.0.0/4 IPV4 RFC 1112
Common Uses:

Experimental only, not for production use

Special Notes:

Most network equipment will not route these addresses as they are reserved.

Documentation Ranges

Addresses reserved for use in documentation, examples, and educational materials.

Ranges in this category:
Name CIDR Version RFC
Documentation (TEST-NET-1) 192.0.2.0/24 IPV4 RFC 5737
Documentation (TEST-NET-2) 198.51.100.0/24 IPV4 RFC 5737
Documentation (TEST-NET-3) 203.0.113.0/24 IPV4 RFC 5737
Documentation 2001:db8::/32 IPV6 RFC 3849
Common Uses:

Documentation, training materials, examples in RFCs

Special Notes:

Should never be used in production networks or publicly routed.

Carrier-Grade NAT

Address space used by service providers for large-scale NAT deployments.

Ranges in this category:
Name CIDR Version RFC
Carrier-Grade NAT 100.64.0.0/10 IPV4 RFC 6598
Common Uses:

ISP address sharing, large-scale NAT deployments

Special Notes:

Created to alleviate IPv4 address exhaustion while transitioning to IPv6.

Special Purpose Addresses

Addresses with specialized purposes that don't fit into other categories.

Ranges in this category:
Name CIDR Version RFC
IETF Protocol Assignments 192.0.0.0/24 IPV4 RFC 6890
Benchmarking 198.18.0.0/15 IPV4 RFC 2544
Unspecified 0.0.0.0/8 IPV4 RFC 1122
Unspecified ::/128 IPV6 RFC 4291
Discard 100::/64 IPV6 RFC 6666
ORCHID 2001:20::/28 IPV6 RFC 7343
Common Uses:

IETF protocol development

Special Notes:

Not for general usage.

IPv6 Transition Mechanisms

Addresses used in mechanisms to transition between IPv4 and IPv6.

Ranges in this category:
Name CIDR Version RFC
6to4 2002::/16 IPV6 RFC 3056
Teredo 2001::/32 IPV6 RFC 4380
IPv4-Mapped ::ffff:0:0/96 IPV6 RFC 4291
Common Uses:

IPv6 transition mechanism, legacy IPv6 tunneling

Special Notes:

Largely deprecated due to reliability issues, but still found in some networks.

Deprecated Ranges

Previously assigned ranges that are no longer recommended for use.

Ranges in this category:
Name CIDR Version RFC
IPv4-Compatible (Deprecated) ::/96 IPV6 RFC 4291
Common Uses:

Historical transition mechanism, no longer used

Special Notes:

Officially deprecated and should not be used in modern networks.

API Documentation

The Reserved IP Address Checker provides a RESTful API for programmatically checking if IP addresses fall within reserved ranges.

Endpoints

Check a Single IP Address

URL: https://test.showmyip.com/reserved-ip-api.php

Method: GET

Parameters:

  • ip (required) - The IP address to check
Example Request:
curl "https://test.showmyip.com/reserved-ip-api.php?ip=192.168.1.1"
Example Response:
{
  "success": true,
  "data": {
    "is_valid": true,
    "ip": "192.168.1.1",
    "normalized_ip": "192.168.1.1",
    "type": "ipv4",
    "is_reserved": true,
    "matched_ranges": [
      {
        "id": "private_192",
        "cidr": "192.168.0.0/16",
        "name": "Private Network - Class C",
        "title": "Private Network (Class C)",
        "category": "private",
        "description": "Most commonly used range for small private networks.",
        "rfc": "RFC 1918",
        "rfc_url": "https://tools.ietf.org/html/rfc1918"
      }
    ],
    "message": "IP address falls within reserved range(s): Private Network - Class C"
  }
}

Batch Check Multiple IP Addresses

URL: https://test.showmyip.com/reserved-ip-api.php

Method: POST

Parameters:

  • ips (required) - Array of IP addresses to check
Example Request:
curl -X POST "https://test.showmyip.com/reserved-ip-api.php" \
  -H "Content-Type: application/json" \
  -d '{"ips": ["192.168.1.1", "8.8.8.8", "127.0.0.1"]}'
Example Response:
{
  "success": true,
  "data": {
    "192.168.1.1": {
      "is_valid": true,
      "ip": "192.168.1.1",
      "normalized_ip": "192.168.1.1",
      "type": "ipv4",
      "is_reserved": true,
      "matched_ranges": [
        {
          "id": "private_192",
          "cidr": "192.168.0.0/16",
          "name": "Private Network - Class C",
          "title": "Private Network (Class C)",
          "category": "private",
          "description": "Most commonly used range for small private networks.",
          "rfc": "RFC 1918",
          "rfc_url": "https://tools.ietf.org/html/rfc1918"
        }
      ],
      "message": "IP address falls within reserved range(s): Private Network - Class C"
    },
    "8.8.8.8": {
      "is_valid": true,
      "ip": "8.8.8.8",
      "normalized_ip": "8.8.8.8",
      "type": "ipv4",
      "is_reserved": false,
      "matched_ranges": [],
      "message": "IP address is not within any known reserved range."
    },
    "127.0.0.1": {
      "is_valid": true,
      "ip": "127.0.0.1",
      "normalized_ip": "127.0.0.1",
      "type": "ipv4",
      "is_reserved": true,
      "matched_ranges": [
        {
          "id": "loopback",
          "cidr": "127.0.0.0/8",
          "name": "Loopback",
          "title": "Loopback Network",
          "category": "loopback",
          "description": "Reserved for loopback addresses, directing traffic to the local machine.",
          "rfc": "RFC 1122",
          "rfc_url": "https://tools.ietf.org/html/rfc1122"
        }
      ],
      "message": "IP address falls within reserved range(s): Loopback"
    }
  }
}

Usage Notes

  • The API enforces rate limiting to prevent abuse. Please do not exceed 100 requests per minute.
  • For batch operations, you can include up to 100 IP addresses in a single request.
  • All API responses include a success boolean indicating whether the request was successful.
  • Error responses include an error field with a message describing the issue.

Code Samples

// Using fetch API in JavaScript
// Single IP check
fetch('https://test.showmyip.com/reserved-ip-api.php?ip=192.168.1.1')
  .then(response => response.json())
  .then(data => {
    console.log(data);
    if (data.success) {
      console.log('Is reserved:', data.data.is_reserved);
      if (data.data.is_reserved) {
        console.log('Matched ranges:', data.data.matched_ranges);
      }
    }
  })
  .catch(error => console.error('Error:', error));

// Batch IP check
fetch('https://test.showmyip.com/reserved-ip-api.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    ips: ['192.168.1.1', '8.8.8.8', '127.0.0.1']
  }),
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
// Using cURL in PHP
// Single IP check
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://test.showmyip.com/reserved-ip-api.php?ip=192.168.1.1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if ($data['success']) {
    echo 'Is reserved: ' . ($data['data']['is_reserved'] ? 'Yes' : 'No') . "\n";
    if ($data['data']['is_reserved']) {
        echo 'Matched ranges: ' . print_r($data['data']['matched_ranges'], true);
    }
}

// Batch IP check
$postData = json_encode([
    'ips' => ['192.168.1.1', '8.8.8.8', '127.0.0.1']
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://test.showmyip.com/reserved-ip-api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($postData)
]);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
# Using requests in Python
import requests
import json

# Single IP check
response = requests.get('https://test.showmyip.com/reserved-ip-api.php?ip=192.168.1.1')
data = response.json()

if data['success']:
    print(f"Is reserved: {'Yes' if data['data']['is_reserved'] else 'No'}")
    if data['data']['is_reserved']:
        print("Matched ranges:", data['data']['matched_ranges'])

# Batch IP check
payload = {
    'ips': ['192.168.1.1', '8.8.8.8', '127.0.0.1']
}
response = requests.post(
    'https://test.showmyip.com/reserved-ip-api.php',
    json=payload
)
data = response.json()
print(json.dumps(data, indent=2))