Special-Purpose IP Blocks
Every IANA-registered special-purpose address block for both IPv4 and IPv6, sourced from the IANA IPv4 Special-Purpose Address Registry and the IANA IPv6 Special-Purpose Address Registry. Each entry includes the CIDR block, its canonical name, the defining RFC, a human-readable scope description, and a boolean indicating whether the block is fully reserved (true) or has limited routable use (false).
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/ip-special-blocks.json
Or use as a typed import:
import { ipSpecialBlocks } from "https://staticdata.dev/v1/ip-special-blocks.ts"
Formats
- JSON 9.7 KB
/v1/ip-special-blocks.json
min: 7.9 KB · /v1/ip-special-blocks.min.json
- CSV 5.5 KB
/v1/ip-special-blocks.csv
- TypeScript 9.9 KB
/v1/ip-special-blocks.ts
export const ipSpecialBlocks
type SpecialIpBlock = (typeof ipSpecialBlocks)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| block | string | CIDR notation address block | 10.0.0.0/8 |
| name | string | Canonical IANA name for the block | Private-Use |
| rfc | string | Defining RFC or standard reference | RFC1918 |
| scope | string | Human-readable description of intended use and routing behaviour | Private network; used for local communications within an organization |
| reserved | boolean | True if the block is fully reserved and must not appear on the public Internet | true |
Preview
First 10 records.
| block | name | rfc | scope | reserved |
|---|---|---|---|---|
| 0.0.0.0/8 | This Network | RFC791 | Local network; source address only, not routable | true |
| 0.0.0.0/32 | This host on this network | RFC1122 | This host on this network; valid only as a source address (e.g. during DHCP) | true |
| 10.0.0.0/8 | Private-Use | RFC1918 | Private network; used for local communications within an organization | true |
| 100.64.0.0/10 | Shared Address Space | RFC6598 | Carrier-grade NAT; shared address space between ISP and subscribers | true |
| 127.0.0.0/8 | Loopback | RFC1122 | Loopback; traffic destined for the local host | true |
| 169.254.0.0/16 | Link Local | RFC3927 | Link-local; auto-configuration when DHCP is unavailable | true |
| 172.16.0.0/12 | Private-Use | RFC1918 | Private network; used for local communications within an organization | true |
| 192.0.0.0/24 | IETF Protocol Assignments | RFC6890 | Reserved for IETF protocol assignments | true |
| 192.0.0.0/29 | IPv4 Service Continuity Prefix | RFC7335 | IPv4 addresses for DS-Lite / 464XLAT translation endpoints; not globally routable | true |
| 192.0.0.8/32 | IPv4 dummy address | RFC7600 | Dummy source address for hosts without an IPv4 address (e.g. ICMP from IPv6-only nodes) | true |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/ip-special-blocks.json | jq '.[0]' import type { SpecialIpBlock } from "https://staticdata.dev/v1/ip-special-blocks.ts";
const res = await fetch("https://staticdata.dev/v1/ip-special-blocks.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const ipSpecialBlocks: SpecialIpBlock[] = await res.json();
console.log(ipSpecialBlocks[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/ip-special-blocks.min.json") as r:
ipSpecialBlocks = json.load(r)
print(ipSpecialBlocks[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/ip-special-blocks.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/ip-special-blocks.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
This dataset covers all special-purpose address blocks registered with IANA for both IPv4 and IPv6 as of October 2026 (the two 192.0.0.170/32 and 192.0.0.171/32 NAT64 discovery addresses are combined as 192.0.0.170/31), plus the IPv6 multicast range ff00::/8, which comes from the IPv6 address architecture (RFC 4291) rather than the special-purpose registry. The data was curated from the normative IANA IPv4 Special-Purpose Address Registry and the IANA IPv6 Special-Purpose Address Registry, cross-referenced with the defining RFCs. Entries include well-known ranges such as RFC1918 private-use blocks (10/8, 172.16/12, 192.168/16), the loopback range (127/8 and ::1/128), link-local ranges (169.254/16 and fe80::/10), documentation prefixes (192.0.2/24, 198.51.100/24, 203.0.113/24, and 2001:db8::/32), and various IETF-protocol and transition mechanism blocks.
The reserved field follows the IANA registry’s “Globally Reachable” attribute in reverse: blocks IANA marks as not globally reachable are reserved: true, and blocks marked globally reachable (anycast services such as AS112, AMT, PCP and TURN, the NAT64 well-known prefix 64:ff9b::/96, ORCHIDv2) are reserved: false. Blocks where IANA gives “N/A” (Teredo 2001::/32 and 6to4 2002::/16) are reserved: false. Unique-local fc00::/7 is reserved: true, consistent with the IPv4 private-use blocks it mirrors. The deprecated 6to4 relay anycast prefix 192.88.99/24 and the original ORCHID block 2001:10::/28 are included for completeness, clearly labelled as deprecated.
Developers should use this dataset when implementing firewall rules, validating user-supplied IP addresses, filtering out non-public addresses, or building network diagnostics tools. Note that the Shared Address Space block 100.64/10 (RFC6598) is frequently encountered in carrier-grade NAT deployments and should be treated similarly to private-use space in most application-layer contexts.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
ip-special-blocks changelog for this dataset's history.
Related datasets
More Web datasets
- aria-attributes
- aria-roles
- character-encodings
- csp-directives
- credit-card-types
- dom-events
- emoji
- emoji-shortcodes
- html-elements
- html-entities
- html-attributes
- input-types
- http-auth-schemes
- http-cache-directives
- http-content-codings
- http-headers
- http-methods
- http-status-codes
- http-versions
- iframe-sandbox-tokens
- keyboard-event-codes
- link-relations
- media-type-suffixes
- mime-types
- oauth-grant-types
- ports
- referrer-policies
- svg-elements
- tcp-flags
- tlds
- tls-cipher-suites
- tls-versions
- uri-schemes
- well-known-uris