Skip to main content
CodeLint.Dev Dev Tools

TCP & UDP Port Numbers Reference

Well-known and registered ports with the service on each and its transport protocol.

61 ports
PortProtocolServiceCategoryDescription
20TCPFTPWell-knownFile Transfer Protocol — data transfer
21TCPFTPWell-knownFile Transfer Protocol — control
22TCPSSHWell-knownSecure Shell — encrypted remote login and tunneling
23TCPTelnetWell-knownTelnet — unencrypted remote terminal (legacy)
25TCPSMTPWell-knownSimple Mail Transfer Protocol — email sending
53TCP/UDPDNSWell-knownDomain Name System — hostname to IP resolution
67UDPDHCPWell-knownDynamic Host Configuration Protocol — server
68UDPDHCPWell-knownDynamic Host Configuration Protocol — client
69UDPTFTPWell-knownTrivial File Transfer Protocol
80TCPHTTPWell-knownHypertext Transfer Protocol — unencrypted web traffic
110TCPPOP3Well-knownPost Office Protocol v3 — email retrieval
119TCPNNTPWell-knownNetwork News Transfer Protocol
123UDPNTPWell-knownNetwork Time Protocol — clock synchronization
143TCPIMAPWell-knownInternet Message Access Protocol — email retrieval
161UDPSNMPWell-knownSimple Network Management Protocol
194TCPIRCWell-knownInternet Relay Chat
389TCP/UDPLDAPWell-knownLightweight Directory Access Protocol
443TCPHTTPSWell-knownHTTP Secure — encrypted web traffic (TLS)
445TCPSMBWell-knownServer Message Block — Windows file sharing
465TCPSMTPSWell-knownSMTP over TLS — secure email sending
514UDPSyslogWell-knownSystem Logging Protocol
587TCPSMTPWell-knownSMTP submission — email sending (STARTTLS)
636TCPLDAPSWell-knownLDAP over TLS
993TCPIMAPSWell-knownIMAP over TLS — secure email retrieval
995TCPPOP3SWell-knownPOP3 over TLS
1080TCPSOCKSRegisteredSOCKS proxy protocol
1194TCP/UDPOpenVPNRegisteredOpenVPN
1433TCPMSSQLRegisteredMicrosoft SQL Server database
1521TCPOracle DBRegisteredOracle Database default listener
1883TCPMQTTRegisteredMessage Queuing Telemetry Transport (IoT)
2181TCPZooKeeperRegisteredApache ZooKeeper client port
2375TCPDockerRegisteredDocker daemon API (unencrypted)
2376TCPDockerRegisteredDocker daemon API (TLS)
3000TCPDev ServerRegisteredCommon dev server port (React, Next.js, etc.)
3306TCPMySQLRegisteredMySQL and MariaDB database
3389TCPRDPRegisteredRemote Desktop Protocol — Windows
4200TCPAngularRegisteredAngular CLI dev server default
4443TCPHTTPS AltRegisteredAlternate HTTPS port
5000TCPFlask / UPnPRegisteredFlask dev server / UPnP
5432TCPPostgreSQLRegisteredPostgreSQL database
5601TCPKibanaRegisteredKibana web interface (ELK stack)
5672TCPRabbitMQRegisteredRabbitMQ AMQP messaging
5900TCPVNCRegisteredVirtual Network Computing remote desktop
6379TCPRedisRegisteredRedis key-value data store
6443TCPKubernetesRegisteredKubernetes API server
7700TCPMeilisearchRegisteredMeilisearch search engine
8000TCPHTTP AltRegisteredCommon alternative HTTP / Django dev server
8080TCPHTTP AltRegisteredCommon HTTP proxy / Tomcat / Spring Boot
8086TCPInfluxDBRegisteredInfluxDB time-series database HTTP API
8443TCPHTTPS AltRegisteredCommon alternative HTTPS port
8888TCPJupyterRegisteredJupyter Notebook web interface
9000TCPPHP-FPMRegisteredPHP-FPM / SonarQube / MinIO API
9090TCPPrometheusRegisteredPrometheus metrics server
9092TCPKafkaRegisteredApache Kafka broker
9200TCPElasticsearchRegisteredElasticsearch REST API
9300TCPElasticsearchRegisteredElasticsearch inter-node communication
9418TCPGitRegisteredGit protocol
10250TCPKubeletRegisteredKubernetes Kubelet API
15672TCPRabbitMQRegisteredRabbitMQ management web UI
27017TCPMongoDBRegisteredMongoDB document database
50051TCPgRPCRegisteredgRPC default port

The three port ranges

RangeNameAssignmentNotes
0–1023Well-knownIANABinding requires root on Unix — the origin of privilege-dropping in daemons
1024–49151RegisteredIANA on requestWhere most application services live
49152–65535Dynamic / ephemeralUnassignedSource ports for outbound connections, allocated by the OS

Linux defaults its ephemeral range to 32768–60999 rather than the IANA range, which is why a service bound to 40000 can intermittently conflict with an outbound connection. Check /proc/sys/net/ipv4/ip_local_port_range before choosing a fixed port in that region.

Ports worth knowing by heart

PortServiceNote
22SSHAlso used by SFTP and git over SSH
53DNSUDP for queries, TCP for large responses and zone transfers
80 / 443HTTP / HTTPS443 also carries HTTP/3 over QUIC, which is UDP
3306MySQL / MariaDBShould never be exposed publicly
5432PostgreSQLShould never be exposed publicly
6379RedisHistorically no authentication by default — a long-running source of breaches
27017MongoDBSame history as Redis; bind to localhost
9200 / 9300ElasticsearchHTTP API and transport. Frequently found exposed
3000 / 5173 / 8080Dev serversNode, Vite, and the common alternate HTTP port
25 / 587 / 465SMTP25 for server-to-server, 587 for submission with STARTTLS, 465 for implicit TLS

Port problems

EADDRINUSE — address already in use

Cause:Another process holds the port, or a previous instance did not release it.

Fix:Find it with `lsof -i :3000` on macOS/Linux or `netstat -ano | findstr :3000` on Windows. If the old process is gone but the port is held, it is in TIME_WAIT; SO_REUSEADDR lets you rebind immediately.

EACCES binding to port 80 or 443

Cause:Ports below 1024 require elevated privileges on Unix.

Fix:Do not run the application as root. Put a reverse proxy in front, use setcap to grant CAP_NET_BIND_SERVICE, or bind high and redirect with a firewall rule.

Service works locally but not from another machine

Cause:Bound to 127.0.0.1 rather than 0.0.0.0, so it only accepts loopback connections.

Fix:Bind to 0.0.0.0 to listen on all interfaces — and make sure a firewall is in front, because this exposes it to the whole network.

Intermittent connection failures under load

Cause:Ephemeral port exhaustion. Each outbound connection consumes a source port, and ports in TIME_WAIT are held for up to two minutes.

Fix:Use connection pooling and keep-alive so connections are reused rather than reopened. Widening the ephemeral range treats the symptom.

About

The Port Numbers Reference lists well-known (0–1023) and registered (1024–49151) TCP and UDP ports used by common network services and protocols. It covers HTTP (80), HTTPS (443), SSH (22), FTP (21), DNS (53), SMTP (25), MySQL (3306), PostgreSQL (5432), Redis (6379), and many more — useful for firewall rules, server configuration, and network debugging.

How to use

  1. 1 Browse the list or search by service name or port number.
  2. 2 Filter between Well-known (0–1023) and Registered (1024–49151) ports.
  3. 3 Click any row to copy the port number.
What is the difference between well-known ports and registered ports?
Well-known ports (0–1023) are assigned by IANA to fundamental internet services — HTTP uses port 80, HTTPS uses 443, SSH uses 22, DNS uses 53. They typically require root/admin privileges to bind. Registered ports (1024–49151) are assigned to specific applications by IANA request — MySQL uses 3306, PostgreSQL uses 5432, Redis uses 6379 — and can be bound by any user.
What are ephemeral or dynamic ports?
Ephemeral ports (49152–65535) are temporary ports automatically assigned by the operating system to client-side connections. When your browser makes an HTTP request, the OS assigns an ephemeral port for the client side of the connection. These ports are not assigned to specific services and are recycled after each connection closes.
Why do some services use both TCP and UDP on the same port?
Some protocols are designed to run over both transport layers. DNS uses UDP port 53 for fast query/response (queries fit in a single datagram) and TCP port 53 for large responses (zone transfers, DNSSEC). The same port number is used in both cases but they are separate sockets — the OS distinguishes them by protocol.