Skip to content

Port Checker

A port check opens a real TCP connection from our server to the host and port you name. If the three-way handshake completes, something is listening and nothing in between is blocking it. This tool reports open, refused, or filtered — three genuinely different outcomes — plus the handshake time.

Open, refused, and filtered are not the same thing

Most port checkers collapse everything into "open" or "closed", which throws away the most useful piece of diagnostic information. TCP gives you three distinguishable answers, and knowing which one you got usually tells you where the problem is.

ResultWhat the network didWhat it means
OpenThe host replied SYN-ACK and the handshake completed.A service is listening and the whole path allows the port. Nothing to fix.
RefusedThe host replied with a TCP RST.The host is reachable and answering, but nothing is bound to that port — the daemon is stopped, or it is bound to 127.0.0.1 instead of 0.0.0.0.
FilteredNothing came back before the timeout.A firewall is dropping the packets silently — a cloud security group, a host firewall with a DROP rule, or an ISP block. The service may be running perfectly.

The distinction matters because the fix is different in each case. A refusal points at the service on the box. A timeout points at something between us and the box. If you are debugging "my site is down", a refused port 443 means nginx died; a filtered port 443 means the security group changed.

What this tool does and does not prove

The check runs from our server, over the public internet. That is exactly the perspective you want when the question is "can the outside world reach this?" — and exactly the wrong perspective when the question is "can my laptop reach this?". A port that is open here but times out from your office is being blocked by your office network, not by the host.

Read the full explanation of port checker results ↓

A completed handshake also says nothing about what is behind the port. Port 443 being open does not mean TLS is configured correctly, that the certificate is valid, or that the right site is being served. Follow up with the SSL certificate checker for the TLS layer and the HTTP headers checker for what the application actually returns.

This tool only probes public hosts. Requests for loopback, RFC 1918 private ranges, and link-local addresses are rejected with a 400 — and so is a public hostname that resolves to one of those addresses, because otherwise a DNS record could be used to make our server probe its own internal network.

UDP is not covered, and that is deliberate

This is a TCP checker. UDP has no handshake: a silent UDP port and a firewalled UDP port look identical from outside, so any tool claiming to tell you a UDP port is "open" is either guessing or relying on an application-layer response. If you need to test DNS on UDP/53, query it: dig @<host> example.com either answers or it does not. For other UDP services, use a protocol-specific probe rather than a generic port scan.

Ports worth knowing

  • 22 (SSH) — should be open only to the addresses that need it. Open to the world means constant credential-stuffing traffic in your logs.
  • 25 (SMTP) — server-to-server mail relay. Blocked outbound by most residential ISPs and by several cloud providers by default; see Is port 25 blocked?.
  • 465 / 587 (submission) — where mail clients hand messages to your server. 587 uses STARTTLS, 465 uses implicit TLS. Compare them in port 465 vs 587 vs 25.
  • 80 / 443 (HTTP/HTTPS) — 80 should stay open even on an HTTPS-only site, so redirects and ACME HTTP-01 challenges work.
  • 3306 (MySQL), 5432 (PostgreSQL), 6379 (Redis), 27017 (MongoDB), 11211 (Memcached), 9200 (Elasticsearch) — if any of these answer from the public internet, treat it as an incident. Every one of them has been the entry point for large-scale automated compromises.
  • 3389 (RDP), 445 (SMB) — never expose these directly. Put them behind a VPN.

The command-line equivalent

Anything this page does, you can do from a shell — and should, when you need to test from a specific network:

# netcat: -z scan only, -v verbose, -w timeout in seconds
nc -zvw3 cloudflare.com 443
# Connection to cloudflare.com port 443 [tcp/https] succeeded!

# nmap distinguishes open / closed / filtered explicitly
nmap -Pn -p 443,80,22 cloudflare.com

# Nothing installed? bash can open a TCP socket by itself:
timeout 3 bash -c "</dev/tcp/cloudflare.com/443" && echo open || echo "closed or filtered"

# Confirm what is listening locally, and on which interface:
ss -tlnp
Three ways to probe a TCP port

That last command is the one that solves most "refused" results. If ss -tlnp shows 127.0.0.1:5432 rather than 0.0.0.0:5432, the service is bound to loopback only and no firewall change will ever make it reachable — you need to change the daemon's bind address.

A troubleshooting order that works

  1. Confirm the hostname resolves to the address you expect with a DNS lookup. Half of "port closed" reports are DNS pointing at an old server.
  2. Check the port from here. Open means the problem is on your side of the network.
  3. If refused: on the server, run ss -tlnp and confirm the service is running and bound to a public interface.
  4. If filtered: check the cloud security group or firewall rules first, then the host firewall (ufw status, firewall-cmd --list-all, iptables -L -n).
  5. Still filtered with everything open? Ask your provider whether they block the port upstream — 25 and 445 are commonly filtered at the network edge.
  6. For mail specifically, use the SMTP connection test, which also reads the server greeting and STARTTLS support rather than just the handshake.
Ping Test
ICMP reachability and latency from our server

Frequently asked questions

The port shows as open here but I cannot connect from my office. Why?
Because the check runs from our server, not from your office. An open result proves the host and its firewall allow the port from the public internet; if you cannot reach it, the block is in your own network — a corporate firewall, a proxy requirement, or a VPN split-tunnel rule. Test from the same network you are having trouble on using the netcat command above.
What is the difference between "closed" and "filtered"?
Closed (refused) means the host actively answered with a TCP RST — it is up and reachable, but nothing is listening on that port. Filtered means nothing answered at all within the timeout, which is what a firewall configured to DROP packets looks like. Refused points at the service; filtered points at the network.
Can I check a port on my own computer or local network?
Not through this tool — loopback, private, and link-local targets are refused by design, and a public hostname that resolves to one of those addresses is refused too. That restriction exists to stop the server being used to scan networks it should not touch. Use nmap or netcat locally for internal addresses.
Is a port scan of my own server legal?
Scanning infrastructure you own or administer is routine and expected. Scanning hosts you do not control may violate your provider's acceptable use policy and, in some jurisdictions, computer-misuse law. This tool checks one port at a time and is rate-limited, but the responsibility for choosing the target is yours.
Why is port 25 open on my mail server but I still cannot send mail?
Reachability is only the first hop. Delivery also needs a valid PTR record on the sending IP (reverse DNS), passing SPF and DKIM, and an IP that is not on a blocklist (blacklist check). Many providers also block outbound port 25 from your server even when inbound 25 is fine.
What does the handshake time tell me?
It is roughly one network round trip between our server and yours, so it reflects distance and path quality more than server load. Compare it against a ping to the same host: a handshake time far above the ping RTT suggests the host is slow to accept connections, which often means the listen backlog is saturated.
Does an open port mean I have been hacked?
No, but an unexpectedly open port is worth investigating immediately. Find out what is bound to it with ss -tlnp, and if it is a database or cache exposed to the internet, firewall it now and then check its logs and contents — those services are scanned continuously by automated tooling.