What it means: Your connection attempt got no reply at all: packets were dropped or the host is unreachable.
Free online tool — ping & port checker: instant results, no signup.
Pings your host from our server, so you see whether it answers from outside your network.
ETIMEDOUT is the system error «Connection timed out» (errno 110 on Linux). For a new connection, connect(2) returns it on a «Timeout while attempting connection»; on an established TCP connection, tcp(7) uses it when «The other end didn't acknowledge retransmitted data after some time.» In Node.js:
Error: connect ETIMEDOUT 203.0.113.10:443
{ errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '203.0.113.10', port: 443 }The Node.js docs describe it as «A connect or send request failed because the connected party did not properly respond after a period of time. Usually encountered by http or net.» The key word is no response. If the host had answered with a refusal you would get ECONNREFUSED immediately; a timeout means the SYN packets went unanswered.
How long it takes depends on who gives up first. The Linux kernel retransmits the initial SYN tcp_syn_retries times, 6 by default, «which corresponds to retrying for up to approximately 127 seconds» (tcp(7)). Libraries usually stop sooner: Node's built-in fetch() (undici) has a 10-second connect timeout and reports UND_ERR_CONNECT_TIMEOUT in error.cause.
| Cause | How to recognise it | Fix |
|---|---|---|
| Firewall drops the traffic | Timeout from outside, works from the server itself | Allow the port in iptables, nftables or the cloud firewall |
| Cloud security group or network ACL | New instance or new port; nothing in the server logs | Add an inbound rule for the port and source |
| Wrong or stale IP address | The address in the error is not the server's | Fix DNS or the configured address |
| Host down or unreachable | No ping, no ARP on the local network | Bring the host back; check routing |
| Outbound egress blocked | Fails from one network or container only | Allow egress to the port; check the proxy |
| Overloaded server, full backlog | Intermittent timeouts under load | Scale or raise the listen backlog |
| Idle connection silently dropped by NAT | ETIMEDOUT on long-lived, idle connections | Enable TCP keep-alive below the NAT idle timeout |
Drop versus reject explains most cases. A firewall rule that drops packets leaves the client waiting until it times out; a rule that rejects answers at once, and the client sees a refusal. If you control the firewall and want fast failures for blocked ports, reject instead of drop.
Node.js has several timeouts with different meanings. socket.setTimeout() only reports idleness: «When an idle timeout is triggered the socket will receive a 'timeout' event but the connection will not be severed. The user must manually call socket.end() or socket.destroy()» (net docs). Forgetting to destroy the socket in that handler leaves requests hanging forever instead of failing. For outgoing calls, bound the whole request:
const res = await fetch('https://api.example.com/v1/items', {
signal: AbortSignal.timeout(5000), // rejects with a TimeoutError after 5 s
});For long-lived connections through NAT gateways or load balancers, enable keep-alive probes so idle connections are not silently dropped: socket.setKeepAlive(true, 30_000).
nc -vz -w 5 203.0.113.10 443
curl -v --connect-timeout 5 https://api.example.com/dig +short api.example.com must return the IP in the error. An old IP in DNS or a hard-coded address sends traffic to a machine that is gone.iptables -S, nft list ruleset, ufw status) and the cloud security group or network ACL.traceroute -T -p 443 203.0.113.10 shows where packets stop.ss -ltn 'sport = :443'. A listening service behind a dropping firewall still times out.Chrome shows the same failure as ERR_CONNECTION_TIMED_OUT.
nc -vz -w 5 api.example.com 443
# Connection to api.example.com 443 port [tcp/https] succeeded!
curl -sS -o /dev/null -w 'connect %{time_connect}s total %{time_total}s\n' https://api.example.com/The connect time should be milliseconds, not seconds. The ping and port checker tests the host and port from our server, outside your network; the traceroute tool shows where the route stops.
Ping sends ICMP packets to a host and measures response time. Port scanning checks which TCP ports are open and accepting connections — helping diagnose serviceavailability issues.
Choose packet count (3, 4, 6, 10). Stats: min/avg/max latency and packet loss.
Check 14 key ports: HTTP, HTTPS, SSH, FTP, SMTP, MySQL, PostgreSQL, and more.
Testing from our server — see site availability from outside, not just your local network.
Need constant monitoring? Create a monitor — checks every minute with notifications.
availability diagnosis
TCP port scanning
connection debugging
basic health check
Ping check history, host availability monitoring and downtime alerts.
Sign up freeECONNREFUSED is an immediate answer that nothing listens on the port. ETIMEDOUT means no answer arrived at all, usually because a firewall drops the packets.
With the default tcp_syn_retries of 6, about 127 seconds. Most libraries and HTTP clients use a shorter connect timeout of their own.
The security group or network ACL usually has no inbound rule for the port yet. Add one for the port and the source addresses.
Yes. If the peer stops acknowledging data, for example after a NAT device drops an idle connection, the socket fails with ETIMEDOUT.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.