URI Schemes
Every URI scheme registered with the Internet Assigned Numbers Authority (IANA), covering all permanent schemes (such as http, https, ftp, mailto, and tel), provisional schemes awaiting full standardization, and historical schemes that have been deprecated or superseded. Each entry includes the scheme name, a human-readable description, its registration status, and the authoritative reference document or RFC.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/uri-schemes.json
Or use as a typed import:
import { uriSchemes } from "https://staticdata.dev/v1/uri-schemes.ts"
Formats
- JSON 59.4 KB
/v1/uri-schemes.json
min: 46.6 KB · /v1/uri-schemes.min.json
- CSV 24.2 KB
/v1/uri-schemes.csv
- TypeScript 59.6 KB
/v1/uri-schemes.ts
export const uriSchemes
type UriScheme = (typeof uriSchemes)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| scheme | string | The URI scheme name (e.g. http, ftp, mailto) | https |
| description | string | null | Human-readable description of the scheme's purpose | Hypertext Transfer Protocol Secure |
| status | string | null | Registration status: permanent, provisional, or historical | permanent |
| reference | string | null | Defining RFC or document reference from IANA | [RFC9110, Section 4.2.2] |
Preview
First 10 records.
| scheme | description | status | reference |
|---|---|---|---|
| aaa | Diameter Protocol | permanent | [RFC6733] |
| aaas | Diameter Protocol with Secure Transport | permanent | [RFC6733] |
| about | about | permanent | [RFC6694] |
| acap | application configuration access protocol | permanent | [RFC2244] |
| acct | acct | permanent | [RFC7565] |
| acd | acd | provisional | [Michael_Hedenus] |
| ace | ace | provisional | [Frank_Bryan] |
| acr | acr | provisional | [OMA-OMNA] |
| adiumxtra | adiumxtra | provisional | [Dave_Thaler] |
| adt | adt | provisional | [SAP_SE] |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/uri-schemes.json | jq '.[0]' import type { UriScheme } from "https://staticdata.dev/v1/uri-schemes.ts";
const res = await fetch("https://staticdata.dev/v1/uri-schemes.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const uriSchemes: UriScheme[] = await res.json();
console.log(uriSchemes[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/uri-schemes.min.json") as r:
uriSchemes = json.load(r)
print(uriSchemes[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/uri-schemes.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/uri-schemes.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
The dataset contains all 435 URI scheme entries in the IANA Uniform Resource Identifier (URI) Schemes registry as of October 2026, parsed directly from the official IANA CSV export. Schemes are sorted alphabetically. The three status values reflect the IANA registration track: permanent schemes have a stable, standardized specification; provisional schemes are registered but may not yet have a final specification; historical schemes have been deprecated, obsoleted, or superseded.
Well-known permanent schemes include http, https, ftp, mailto, tel, urn, file, and data. Provisional schemes span a wide range of application-specific protocols, including platform integrations (android, ms-excel), messaging systems (aim, irc, xmpp), and IoT or industry protocols. Several schemes reference individual registrants rather than RFCs, indicated by a person or organization identifier in the reference field.
Reference values are reproduced from the IANA registry (with RFC citations written without a space, e.g. [RFC3986], where IANA now writes [RFC 3986]) and may contain bracket-enclosed RFC numbers (e.g., [RFC3986]), named registrant identifiers (e.g., [Dave_Thaler]), or URLs to specification documents. A small number of entries carry null in the description field where the IANA registry provides no description text.
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
uri-schemes 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
- ip-protocol-numbers
- keyboard-event-codes
- link-relations
- media-type-suffixes
- mime-types
- oauth-grant-types
- ports
- referrer-policies
- ip-special-blocks
- svg-elements
- tcp-flags
- tlds
- tls-cipher-suites
- tls-versions
- well-known-uris