staticdata.dev
Menu
Datasets About Contact

Port Numbers

A developer-focused cut of the IANA Service Name and Transport Protocol Port Number Registry — nearly every assigned port in the well-known range (0–1023) plus the registered ports developers reach for constantly, like 3306 for MySQL, 5432 for PostgreSQL, 6379 for Redis, and 27017 for MongoDB. Each entry gives the port number, transport protocol, IANA service name, and the registry's description.

v1.0.0 MIT 711 records Updated 2026-10-05 stable Source:  IANA Service Name and Transport Protocol Port Number Registry

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/ports.json

Or use as a typed import: import { ports } from "https://staticdata.dev/v1/ports.ts"

Formats

  • JSON 99.1 KB

    /v1/ports.json

    Open

    min: 74.1 KB · /v1/ports.min.json

  • CSV 31.8 KB

    /v1/ports.csv

    Open
  • TypeScript 99.3 KB

    /v1/ports.ts

    export const ports

    type Port = (typeof ports)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
port number Port number (0–65535) 443
protocol string Transport protocol: tcp, udp, or tcp/udp tcp/udp
service string IANA service name https
description string Service description from the registry http protocol over TLS/SSL
wellKnown boolean Whether the port is in the well-known range (0–1023) true

Preview

First 10 records.

Data preview
portprotocolservicedescriptionwellKnown
1tcp/udptcpmuxTCP Port Service Multiplexertrue
5tcp/udprjeRemote Job Entrytrue
7tcp/udpechoEchotrue
9tcp/udpdiscardDiscardtrue
11tcp/udpsystatActive Userstrue
13tcp/udpdaytimeDaytimetrue
17tcp/udpqotdQuote of the Daytrue
18tcp/udpmspMessage Send Protocol (historic)true
19tcp/udpchargenCharacter Generatortrue
20tcp/udpftp-dataFile Transfer [Default Data]true

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

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/ports.json | jq '.[0]'
JavaScript
import type { Port } from "https://staticdata.dev/v1/ports.ts";

const res = await fetch("https://staticdata.dev/v1/ports.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const ports: Port[] = await res.json();
console.log(ports[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/ports.min.json") as r:
    ports = json.load(r)

print(ports[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/ports.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/ports.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

The source is the IANA Service Name and Transport Protocol Port Number Registry. The full registry contains tens of thousands of rows, the vast majority unassigned or reserved; this dataset is a deliberate subset chosen for usefulness:

  • Assigned ports in the well-known range (0–1023) that have a description in the registry. These are wellKnown: true. About two dozen legacy well-known assignments that IANA lists with a service name but no description (for example 518 ntalk and 543 klogin) are not included.
  • A curated list of popular registered ports above 1023 that developers reference routinely — databases, message brokers, dev servers, and infrastructure tooling (e.g. 3306, 5432, 6379, 8080, 9200, 27017). These are wellKnown: false.

Rows IANA marks Reserved, Unassigned, or Deprecated are excluded. Where a single port number has separate TCP and UDP registrations, they are collapsed into one entry: protocol is set to tcp/udp when both transports are registered, and the service name and description are taken from the TCP registration when present. Ports outside the curated registered set are intentionally omitted, so a port not appearing here is not necessarily unassigned — consult the full IANA registry for the authoritative, complete list. Service names and descriptions are the registry’s own (as of October 2026), which is why, for example, 9200 is listed as wap-wsp rather than Elasticsearch.

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 ports changelog for this dataset's history.

Related datasets

More Web datasets