Clash FAQ and Troubleshooting
Don't start by reinstalling. First determine whether traffic reaches the core, then check rules, nodes, DNS, and system interception. The sections below provide an ordered checklist by issue type.
Fundamentals
Separate the client, core, configuration, and traffic interception method first. When these concepts are mixed together, even lengthy logs are hard to interpret.
How are Clash, the mihomo core, and graphical clients related?
Clash usually refers to the rule-based proxy ecosystem and configuration format. mihomo is a maintained, compatible core, while graphical clients such as Clash Plus, Clash Verge Rev, and FlClash handle configuration imports, node switching, and log display. The core actually processes connections, DNS, rule matching, and TUN traffic. When troubleshooting, first determine whether the problem lies in the interface, configuration content, or a failed core startup.
How should you choose Rule, Global, or Direct mode?
For everyday use, choose Rule mode. Traffic is matched against rules from top to bottom and sent to DIRECT, PROXY, or REJECT. Global mode sends most connections through the current proxy group and is useful for temporarily checking whether a node works, but it should not replace rules long term. Direct mode bypasses the proxy and helps determine whether the client configuration is causing the problem. Reopen the target application after switching modes so it does not reuse an old connection.
What is the difference between system proxy and TUN mode?
The system proxy only handles programs that follow the operating system's proxy settings. Browsers and most desktop apps usually work with it, but some games, command-line tools, and applications with their own network stack may bypass it. TUN mode uses a virtual network adapter to handle a broader range of IP traffic, but it also involves administrator permissions, routing tables, DNS interception, and conflicts with other virtual adapters. Start with the system proxy for basic verification, then enable TUN if needed for clearer troubleshooting.
What is the difference between a subscription link and a configuration file?
A subscription link is a remote configuration source that the client fetches again during updates. A configuration file is a YAML document downloaded locally and read by the core. A subscription may include nodes, proxy groups, rules, and DNS settings, or it may provide only nodes for the client to combine with a template. Direct edits to a locally generated subscription file are usually overwritten on the next update. Keep long-term custom rules in the client's supported override, merge, or script features.
Why doesn't a latency test show your actual internet speed?
A latency test usually measures only the handshake time needed for the client to reach a test address through a node. It does not represent available bandwidth, sustained packet loss, peak-hour congestion, or the route between the destination website and the node. A low-latency node may still have poor throughput, while a high-latency node may be more stable for large transfers. Use latency to eliminate obvious timeouts, then judge nodes by page loads, video buffering, and sustained download performance.
Installation and setup
Importing only downloads the file. You must separately confirm that the configuration parses, is selected, and has been loaded successfully by the core.
Where should a Clash subscription link be imported?
Open the client's configuration or Profiles page and find the option for importing from a URL, adding a remote configuration, or creating a subscription. Paste the complete link and start the download. After importing, select the configuration so it becomes active; downloading it without switching leaves the core using the old file. For the first import, check the update time, proxy groups, and node list, then review the logs to confirm that the configuration loaded. Do not paste a subscription link into a node-name field or a local-file picker.
Why are there no nodes after importing a subscription?
Start by checking the configuration update notice and core logs. If the response is a login page, error page, or empty body, the client cannot parse it as a configuration. If the YAML downloads but contains only rules, no nodes will be created. Make sure a chat app did not truncate the subscription URL and that its ending parameters and special characters remain intact. Opening the link in a browser only checks whether the server responds; do not publish its contents. Once the link is confirmed valid, delete the failed configuration, import it again, and switch to the new one.
What should you do when a subscription update fails or times out?
First disable the system proxy and test whether the subscription URL can be fetched directly. If it is reachable only through a proxy, activate a working older configuration before updating. Check the system clock, subscription validity, and server status, since an incorrect time can affect HTTPS connections. If the client uses a proxy for updates, make sure the selected proxy group has a working node. If it still times out, copy the URL into a new remote configuration to rule out cached data, incorrect request headers, or corrupted metadata in the old entry.
How can you locate a YAML configuration parse error?
Start with the line and column reported in the logs, then inspect the preceding line, since indentation and quoting errors are often reported on the following line. YAML uses spaces for indentation and must not contain tabs; a colon usually needs a space after it, and names containing special characters must be quoted correctly. Node names referenced by proxy groups must exactly match those under proxies. Keep the original file before editing and use the client's configuration checker when available. Change one thing at a time to avoid stacking multiple syntax errors.
Why does Windows require administrator permissions to enable TUN?
TUN needs to create or control a virtual network adapter and modify routes and DNS, which normally requires elevated permissions. Fully exit the client, relaunch it as an administrator, and enable TUN again; elevating only the settings window without restarting the core is usually insufficient. If the client supports service mode, install the service from its settings and start it afterward. Company-managed devices may also be restricted by security policies. Check system events and client logs, and avoid repeatedly reinstalling the virtual adapter driver.
Usage tips
Connection logs can reveal rule matches, process interception, and DNS filtering. Check the facts first, then change the configuration.
How can command-line tools use Clash?
First confirm the HTTP or mixed listening address and port shown by the client. A common local address is 127.0.0.1, but use the port from the current configuration. Tools that support environment variables can use HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY. Tools that only recognize the system proxy should be restarted after you enable it. With TUN enabled, most programs need no separate variables. During troubleshooting, use the tool's verbose logging option to verify whether requests use environment variables, the system proxy, or a direct connection.
How can you route a specific website through a fixed proxy group?
Place a more specific DOMAIN or DOMAIN-SUFFIX rule before general rules, and point its policy field to an existing proxy group. For example, a target-domain rule must come before GEOIP, GEOSITE, or MATCH; otherwise traffic will match the broader condition first. Reload the configuration and check the matched rule and policy in the connection log. If subscription updates overwrite the original file, preserve this custom rule through an override or rule-merge feature.
What should you do when an app has connection problems in Fake-IP mode?
First confirm the domain the app is accessing in the connection log. Add domains that are incompatible with Fake-IP to fake-ip-filter, then clear the system DNS cache and restart the app. Local-device discovery, printers, some sign-in components, and software that depends on real DNS responses are more likely to be affected. Do not disable Fake-IP entirely at the outset. Exclude one domain at a time to retain domain mapping while identifying the incompatible part of the resolution path.
How can you tell which rule matched a connection?
Open the client's Connections page, repeat the target request, and inspect the domain, destination address, process, matched rule, and final policy. If process information is unavailable, narrow it down using the domain and timestamp. If the result is always MATCH, the earlier domain, IP, or rule set did not match. If the rule is correct but the exit route is not, check the proxy group currently selected by that rule. Existing connections are not rebuilt automatically, so close the original connection and test again after changing rules.
How can LAN devices temporarily connect to Clash on this computer?
Enable LAN access in the client and make sure the listening address is not restricted to 127.0.0.1. On other devices, set the proxy server to this computer's LAN IP and the client's actual listening port, not localhost. Then check that Windows Firewall allows the program to communicate on the current network type. Enable this only on a trusted LAN, and do not expose the listening port to the public internet through a router. Turn LAN access off when testing is complete.
Troubleshooting
Recommended order: direct baseline → traffic entry → rule match → node connection → DNS → TUN routing. Do not change five things at once.
Clash says it is connected, but the browser cannot access the internet. What should you check?
Follow a fixed order: switch to Direct mode to confirm the local network works, then return to Rule mode and choose a node that passes a basic test. Check whether the system proxy is enabled, whether the browser uses a separate proxy extension, and whether requests appear in the connection log. No requests usually means traffic never entered the client; failed requests mean you should inspect the matched policy and error logs. Finally, close other proxies, accelerators, or packet-capture tools so multiple programs are not changing the system proxy and ports at once.
What should you check first when every node times out?
Confirm that the active configuration is not an empty subscription, then verify the system date and time. Disable TUN and test with only the regular system proxy to rule out virtual-adapter and routing conflicts. Check the error type in the logs: connection refusals usually point to an unavailable node address or port, resolution failures call for a DNS check, and certificate or handshake errors require checking the clock, protocol parameters, and configuration completeness. If every node fails at once, suspect the subscription status, local network, or DNS before replacing nodes one by one.
What should you do if some programs connect directly after the system proxy is enabled?
The system proxy is not a forced interception layer. Programs can use their own proxy settings, built-in DNS, or direct sockets to bypass it. Restart the target program so it rereads the system settings, then check whether its internal proxy option is set to disabled. For command-line tools, inspect variables such as HTTP_PROXY; games and some Store apps are better suited to TUN. If the program never appears on the Connections page, its traffic has not entered the core. Continue by checking the app's proxy settings or TUN coverage.
How can you proxy Windows Store or UWP apps that ignore the system proxy?
Some UWP apps are affected by AppContainer network isolation and cannot directly access a loopback proxy on the local machine. Use the client's UWP loopback tool to grant loopback exemption to the target app, then fully close and restart it. Do not select every app at once; start with only the ones you need so changes are easier to undo and troubleshoot. If the client has no loopback tool, use TUN to intercept the traffic instead. Close other virtual-adapter software first to avoid routing conflicts.
How can you restore connectivity or DNS resolution after enabling TUN?
Disable TUN and the system proxy, then fully exit the client and confirm that direct connectivity returns. If resolution still fails, reconnect to the current network and flush the system DNS cache. When re-enabling TUN, keep the default route and DNS settings initially; do not combine custom adapters, network filters, and multiple VPN tools at the same time. Check the logs for virtual-adapter creation failures, route-write errors, or port conflicts. Restore settings one at a time—it is easier to find the conflict than by repeatedly reinstalling the client.
How can you check for a Clash DNS leak or an unexpected resolution path?
First determine whether you are using the system proxy or TUN. In system-proxy mode, programs outside the interception scope may continue using the system DNS. TUN with DNS interception usually covers more traffic. Check DNS requests and the nameserver and fallback settings in the client logs, and make sure the browser's own encrypted DNS setting is not interfering with the test. Keep one resolution path enabled at a time, clear the cache, and revisit a new domain so cached results do not distort the diagnosis.
Still can't find the cause
Follow the shortest configuration path in Getting Started once more, or consult the protocol and core reference to confirm that the current client supports the protocol types used by the subscription.