1. Tell a Failed Latency Test from a Failed Connection

Clash clients typically test latency by having the kernel request a test URL through a selected node, then measuring how long the request takes. This is not a simple ICMP ping or a download speed test. If every entry shows timeout, it only means the tests did not finish within the time limit—it does not prove that every server is offline.

An unreachable test URL, failed node hostname lookup, TLS handshake failure, or incorrect authentication settings can all produce similar results. Keep your current configuration, select one node, check the kernel logs for the relevant time, then try loading a webpage through that same node.

  1. Note the subscription name, selected node, test time, and the kernel name and version shown by the client.
  2. Pause automatic switching and temporarily pin one node in a manually selectable proxy group. Confirm that your browser request actually uses it.
  3. Run one latency test and make one webpage request. Check the rules, proxy group, and outbound route in the connection log.
  4. If webpages load but the latency test fails, check the test URL, timeout setting, and whether the server limits test requests. Don’t reinstall the client as a first step.

2. Check Subscription Status, Traffic, and Active Configuration

A successful subscription update does not mean your account still has traffic available. Likewise, a failed update does not mean every node in your local cache is unusable. Subscription downloads and node connections use separate paths, so check them independently.

Check service and local status in this order

  • Account status: Sign in to your provider’s account page and check the plan expiration date, remaining traffic, device or concurrent connection limits, and maintenance notices. The usage shown in the client may be cached from the last update.
  • Update results: Check the subscription update log and the last successful update time. HTTP 401 or 403 indicates an authentication or access restriction; check with your provider for the specific reason rather than assuming the plan has expired.
  • Response content: An HTTP 200 response may still contain a login page or error text. A successful configuration parse, a normal node count, and an active configuration together indicate that the content reached the kernel loading process.
  • Configuration source: Make sure you aren’t using an outdated local copy. If you use proxy-providers, check that the relevant provider updated successfully too; the main configuration file’s timestamp alone isn’t enough.

If your provider changed server addresses, ports, or authentication details while the client kept using an old cache, all the old nodes may fail at once. Update successfully, then check the node details in the active configuration. Don’t stop at seeing “Update complete” in the subscription list.

3. Sync Your System Clock Before Troubleshooting TLS or Authentication

An incorrect system date can affect certificate validity checks. The log message certificate has expired or is not yet valid can point to either a server certificate issue or an inaccurate local clock. Some time-sensitive authentication flows also depend on an accurate clock. Sync the time first to avoid mistaking a local issue for a node protocol failure.

Platform How to check What to verify
Windows 11 Settings → Time & language → Date & time → Sync now Turn on automatic time setting and confirm that synchronization succeeds
macOS System Settings → General → Date & Time Enable automatic date and time, then check the time server
Linux with systemd timedatectl status Check system clock synchronization and NTP service status

On Windows, you can also run the read-only command below to check the time service status and synchronization source. If the service isn’t running, the command may return an error. Fix it in Settings rather than treating the error as a node failure.

w32tm /query /status

The time zone changes how local time is displayed, but TLS checks use the actual point in time. Changing your time zone to another region won’t fix an inaccurate system clock. Retry the connection after syncing. If certificate errors persist, check the server certificate, the node’s SNI, and whether your network intercepts certificates.

Don’t set skip-cert-verify to true to hide the problem. Disabling certificate verification removes server identity checks and won’t fix an expired account, incorrect password, or incompatible transport protocol.

4. Check the Active Kernel, Not Just the Client Name

The client handles the interface, configuration management, and system proxy; the kernel establishes the connection. The original Clash and Clash Meta (now called mihomo) support different protocols, and some clients let you switch or update kernels. Being able to import a configuration doesn’t mean the active kernel supports every protocol it contains.

Check three details in the startup logs

  1. Kernel identity: Check the kernel information page or startup log for its name and version. Record the kernel that’s actually running, not just the client package version.
  2. Node type: Check the configuration’s type. For example, Hysteria2, TUIC, and VLESS with REALITY require a kernel and version that support those features. Don’t assume they’ll work with an older original Clash build.
  3. All parameters: Check the server address, port, password or UUID, transport, TLS, SNI, and protocol-specific fields. The same protocol name doesn’t mean every optional setting is interchangeable.

If you see unsupported proxy type, an unknown cipher, or a configuration parse error, resolve the compatibility or configuration issue first. These errors often occur before the node even attempts a network connection, so increasing the latency test timeout won’t help. Log messages vary by kernel version; check the fields and surrounding context rather than searching for one exact error string.

The Shadowsocks cipher must match the server configuration. VMess and VLESS identifiers aren’t interchangeable, and WebSocket nodes also require the correct path and Host. For REALITY nodes, verify the public key, short ID, server name, and other parameters provided by your service. If a subscription converter drops these fields, changing the node name or rerunning a latency test won’t restore them.

5. Use Logs to Pinpoint DNS, Port, and Handshake Failures

Once you’ve checked the subscription, clock, and compatibility, find where the request stops. Don’t change DNS, TUN, ports, and rules all at once; even if the connection starts working, you won’t know why. You can temporarily increase the log level, reproduce the issue once, then restore the original setting. Some clients control this field through configuration overrides, so verify the effective configuration.

log-level: debug
Log clue What it usually means Next step
no such host The node hostname didn’t resolve to a usable address Check the node hostname and the DNS path the kernel uses to resolve it
connection refused The destination or an intermediary explicitly refused the connection Check the address, port, and server listening status
i/o timeout A read or write operation did not finish within the time limit Use the surrounding log context to distinguish a dial timeout from a timeout after the handshake
x509-related error Certificate verification failed Check the system clock, server name, and certificate chain
Authentication failed or the handshake was closed Credentials, transport parameters, or server-side policy may be involved Compare the original subscription parameters with the server logs

Resolving the node server’s hostname is separate from resolving the hostname of a website you visit. In mihomo, if proxy-server-nameserver is configured, check whether it can resolve proxy node hostnames. Changing your browser’s DNS may not affect the DNS path the kernel uses to connect to a node.

A TCP port check can help narrow down the issue. For example, the command below checks TCP port 443 on example.com in Windows PowerShell. This domain is only an example; replace it with the server and port from your subscription when troubleshooting. The example result doesn’t indicate node status.

Test-NetConnection -ComputerName example.com -Port 443

A successful TCP check only confirms that a TCP connection was established; it doesn’t prove that proxy authentication or the TLS handshake succeeded. Hysteria2, TUIC, and other QUIC-based connections use UDP, so a TCP test says nothing about whether those services are available. A reachable TCP port 443 doesn’t rule out UDP restrictions on your network.

6. Separate the Effects of System Proxy, TUN, and Your Network

The kernel’s built-in node test and browser traffic may take different paths. Browser requests can be affected by the system proxy, extensions, and app settings; TUN involves a virtual network adapter, routing, and DNS interception. If the kernel itself times out connecting to a node, repeatedly switching browser proxy settings is unlikely to help. If the node test succeeds but webpages fail, check whether app traffic is reaching the kernel.

Start with an explicit local proxy test

If your active mixed port is 7890, the command below sends a request explicitly through the local HTTP proxy, bypassing system proxy settings. Replace 7890 if your client listens on a different port. On Windows, use curl.exe to avoid interference from a same-named PowerShell alias.

curl --verbose --connect-timeout 10 --max-time 20 --proxy http://127.0.0.1:7890 https://example.com/

This command still follows the kernel’s rules; it doesn’t force a particular node. Check the connection log to confirm that the request used the intended proxy group rather than DIRECT. The 10-second and 20-second values limit the connection phase and the overall request, respectively—they don’t measure node performance. If it fails, note where it failed instead of just writing “doesn’t open.”

Then compare networks on the same device

  • Use the same device, configuration, and node to compare your home network with a mobile hotspot. Avoid changing multiple variables at once.
  • If the connection fails on only one network, check its sign-in requirements, UDP restrictions, routing, or firewall policies. Don’t immediately reimport your subscription.
  • If you use another VPN or network filtering tool, note its status. In a suitable environment, disable them one at a time and test; don’t turn off all security protections.
  • Check whether the log shows a connection attempt over IPv4 or IPv6. Test a single setting only after confirming that the corresponding address family is unreachable; don’t disable IPv6 globally to mask other issues.

If an explicit local proxy test works but TUN fails, check TUN routes, DNS interception settings, and conflicts with other virtual network adapters. Save your configuration before making changes and restore it after testing. For basic steps, see the setup guide. Don’t treat TUN as a default fix for every timeout.

7. Retest with Minimal Changes and Keep Reproducible Notes

After each fix, retest the original node using the same test URL. If it works only occasionally after you increase the timeout, latency or packet loss may be affecting requests; check whether real-world access is stable too. A latency number appearing in the list doesn’t mean troubleshooting is complete.

  1. Subscription: Confirm the account is active, traffic is available, and the current node is from the latest successful update and is in use.
  2. Local system: Confirm the system clock is synced, record the kernel name and version, and rule out configuration loading errors.
  3. Connection: Check node hostname resolution, destination address, and port. Find the earliest failure in the logs.
  4. Request: Test the URL and a real webpage, then check whether the connection log shows the expected node.
  5. Environment: Compare another network if needed. Record system proxy and TUN status separately instead of changing both at once.

When contacting your service provider or client maintainer, include your OS version, client and kernel versions, time and time zone of the issue, node protocol, a redacted error excerpt, and results from testing another network. Your provider can best check account permissions and server listeners; the client maintainer can investigate configuration parsing, kernel calls, and route handling. Sending the issue to the right team is more useful than sharing a screenshot that just says “all timeout.”

When troubleshooting is complete, restore the original log level, remove debug files containing sensitive information, and keep a working configuration backup. If the issue happens again, follow this order: subscription and credentials → system clock → kernel compatibility → DNS and connection → app traffic path. This is usually more effective than trying nodes at random.