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.
Link-Local Addresses
Addresses automatically assigned when no DHCP server is available, only valid on a single network segment.
Ranges in this category:
| Name | CIDR | Version | RFC |
|---|---|---|---|
| Link-Local | 169.254.0.0/16 | IPV4 | RFC 3927 |
| Link-Local | fe80::/10 | IPV6 | RFC 4291 |
Common Uses:
Automatic private IP addressing (APIPA), direct peer-to-peer connections
Special Notes:
Windows systems will automatically assign an address in this range when DHCP fails.
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
successboolean indicating whether the request was successful. - Error responses include an
errorfield 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))