staticdata.dev
Menu
Datasets About Contact

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

v1.0.0 MIT 51 records Updated 2026-10-05 stable Source:  IANA IPv4 Special-Purpose Address Registry, IANA IPv6 Special-Purpose Address Registry

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
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

    Open

    min: 7.9 KB · /v1/ip-special-blocks.min.json

  • CSV 5.5 KB

    /v1/ip-special-blocks.csv

    Open
  • TypeScript 9.9 KB

    /v1/ip-special-blocks.ts

    export const ipSpecialBlocks

    type SpecialIpBlock = (typeof ipSpecialBlocks)[number]

    Open

Schema

Each record in the dataset has the following shape.

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

Data preview
blocknamerfcscopereserved
0.0.0.0/8This NetworkRFC791Local network; source address only, not routabletrue
0.0.0.0/32This host on this networkRFC1122This host on this network; valid only as a source address (e.g. during DHCP)true
10.0.0.0/8Private-UseRFC1918Private network; used for local communications within an organizationtrue
100.64.0.0/10Shared Address SpaceRFC6598Carrier-grade NAT; shared address space between ISP and subscriberstrue
127.0.0.0/8LoopbackRFC1122Loopback; traffic destined for the local hosttrue
169.254.0.0/16Link LocalRFC3927Link-local; auto-configuration when DHCP is unavailabletrue
172.16.0.0/12Private-UseRFC1918Private network; used for local communications within an organizationtrue
192.0.0.0/24IETF Protocol AssignmentsRFC6890Reserved for IETF protocol assignmentstrue
192.0.0.0/29IPv4 Service Continuity PrefixRFC7335IPv4 addresses for DS-Lite / 464XLAT translation endpoints; not globally routabletrue
192.0.0.8/32IPv4 dummy addressRFC7600Dummy source address for hosts without an IPv4 address (e.g. ICMP from IPv6-only nodes)true

Showing 10 of 51. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/ip-special-blocks.json | jq '.[0]'
JavaScript
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]);
Python
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])
Go
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])
}
Rust
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