Clash Slow Speed Fix: Node, Route, or Local Config Layer-by-Layer

Slow proxy speed gets blamed on "bad nodes" more often than not, but the real bottleneck can just as easily be the transport protocol, local DNS, or even a routing rule. This guide breaks the diagnosis into three layers — node itself, transit route, local config — with concrete steps for each.

Narrow Down the Problem Before You Touch Anything

Spend two minutes pinning down exactly how the slowness shows up before changing any settings — it saves a lot of wasted trial and error later. "Slow" is a vague catch-all that actually covers at least three distinct symptoms, and each points to a different cause:

  • Pages/apps load slowly, but playback is smooth once they start — usually points to high latency (RTT) rather than low bandwidth. Focus on node distance and route quality.
  • Speed stays capped during sustained downloads/playback, with recurring stutter — likely a bandwidth or route congestion issue. Focus on node load and transport protocol.
  • Only specific sites or apps are slow, everything else is fine — the problem usually isn't the proxy itself. A routing rule may be sending that traffic to an unsuitable outbound, or the destination site itself is throttling proxy IPs.

Once you've categorized the symptom, decide which layer to start checking. If you're not sure, work through the three-layer order below — it's sorted by "cheapest to verify first": rule out node issues first, then route/config, and only touch local system settings last.

Tip

Change one variable at a time and re-test after each change. Don't switch node, protocol, and DNS all at once — if it fixes the problem, you won't know which change actually did it.

Layer 1: Node-Level Speed Bottlenecks

The node is the starting point of the chain and the cheapest thing to verify, so it should be the first thing you rule out. Most subscriptions offer nodes across multiple regions and routes, and the speed gap between them is often bigger than expected.

Use Latency Tests for a First Pass

Client node lists usually have a built-in latency test button (on the Clash Meta core, this maps to an url-test-based health check). Tapping it sends an HTTP probe to each node and records the round-trip time. Latency tells you whether a node connects quickly, not necessarily how fast actual data transfer will be — but nodes that consistently show 500ms+ or outright time out can be ruled out immediately.

  • Under 150ms: fine for browsing and messaging.
  • 150–400ms: usable, but video/gaming will feel noticeably choppy.
  • Over 400ms or frequent timeouts: switch nodes first — don't bother debugging further on this one.

Rule Out an Overloaded Node

Shared nodes tend to get bandwidth-starved during peak hours (7pm–midnight is peak for most subscriptions) — latency tests still look normal, but actual download speed tanks. Latency alone won't catch this; you need a manual real-world test: switch to the node and download a known-stable static file (a public speed-test file works), then compare download speed across nodes and time slots. If the same node performs noticeably better off-peak, it's a load issue, not a config issue.

Add Auto Speed Test and Failover to Proxy Groups

If your subscription has multiple nodes in the same region, group them with a url-test type under proxy-groups and set a reasonable test interval. This lets the client auto-pick the lowest-latency node and cuts down on manual switching:

proxy-groups:
  - name: Auto-Select-HK
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    proxies:
      - HK-01
      - HK-02
      - HK-03

tolerance sets an acceptable latency margin so the client doesn't flip-flop between nodes over a few milliseconds of jitter, which would otherwise cause repeated connection drops.

Layer 2: Transit Route and Protocol Settings

Once you've confirmed the node itself is fine, the next thing to check is what path the data takes from your machine to the node, and what protocol it's wrapped in. Tweaking this layer often improves speed more than switching nodes does — especially when the network you're on is throttling or interfering with specific protocols.

Try Switching Transport Protocols

If a node offers multiple protocols (VMess, Trojan, Hysteria2, ShadowTLS, etc.), performance on the same network can vary a lot between them. Some networks apply stricter deep packet inspection to TCP-based protocols, while UDP-based ones (Hysteria2, TUIC) tend to hold up better on lossy links since they have built-in forward error correction and congestion control. If your subscription offers multiple protocol variants, test them one by one:

  1. Test actual download speed on TCP-based protocols (VMess/Trojan) first.
  2. Then test UDP-based protocols (Hysteria2/TUIC) during the same time window.
  3. Note the difference and stick with whichever protocol type is more consistently stable.

Check for Throttling or Interference

Some networks throttle detected proxy traffic instead of blocking it outright — connections establish fine, latency looks normal, but throughput is capped at a low fixed value (e.g., stuck around 200KB/s regardless of which node you use). Switching nodes won't help here; look into changing your transport-layer disguise, such as enabling TLS obfuscation or switching to a protocol that's more resistant to detection.

Compare TUN Mode Against System Proxy Mode

TUN mode intercepts all traffic at the system network layer and is typically needed for proxying non-browser apps (games, background services). It shouldn't be inherently slower than system proxy mode, but if you're also running other virtual adapters or security software with network hooks, you can get packet loss and retransmission from the conflict. Run a side-by-side test: disable TUN mode, switch to system proxy mode, and test the same node. If system proxy mode is noticeably faster, the issue is most likely your local network driver stack, not the node or protocol.

SymptomMost Likely LayerSuggested Action
Every node is equally slowLocal config / network environmentCheck DNS, TUN, and system network settings
Slow only at certain timesNode loadSwitch to another node in the same region, or use off-peak
TCP is slow, UDP is fastTransit route interferenceSwitch protocol type
Only specific sites are slowRouting rules / destination throttlingCheck rule matching and try a different outbound

Layer 3: Local Client and System Configuration

If the first two layers came up clean, the local setup is almost certainly the culprit. This layer costs more time to check, but it's usually the root cause behind recurring, long-standing speed problems.

Tune Your DNS Resolution Settings

Slow DNS resolution creates the illusion of "first load is slow, but content plays smoothly once it starts" and gets misdiagnosed as a node problem. Point the client to a dedicated DNS server in your config and enable fake-ip mode to cut out unnecessary real DNS lookup latency:

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query

nameserver handles resolution for domestic domains, while fallback handles resolution for proxied domains. Keeping them separate avoids extra latency from domestic sites being resolved through the wrong path.

Trim Down Your Routing Rules

Too many rules, or bloated rule sets, add up to more matching time per connection — this shows up most on lower-power devices like routers or older phones. Check whether you've loaded multiple overlapping rule sets, such as two ad-filtering lists or several regional routing sets at once; merging or removing duplicates cuts matching overhead. Also check rule order — putting high-frequency rules (like direct-connect domestic domains) near the top of the list reduces the average number of matches needed.

Shut Down Background Bandwidth Hogs

Cloud sync tools, system auto-updates, and background downloads all compete with proxy traffic for outbound bandwidth, which shows up as "the proxy itself is fine, but overall speed just won't go up." Before running a speed test, check Task Manager or Activity Monitor for network usage and pause anything obviously eating bandwidth, then re-test.

Check Client and Core Version

Running an older client or core build may mean missing out on protocol performance improvements from later releases. If the speed problem persists and none of the above turns up a cause, check for available updates, install them, and re-run the three-layer check to see if the issue clears up.

Build a Repeatable Troubleshooting Routine

Turn the steps above into a simple checklist and run through it in order whenever speed drops — it cuts diagnosis time significantly:

  1. Run a latency test to filter out obviously bad nodes.
  2. Compare real download speed across same-region nodes to rule out load issues.
  3. Switch protocol type and compare TCP-based vs. UDP-based performance.
  4. Disable TUN mode for a side-by-side test to rule out local network interference.
  5. Check and adjust DNS config, and confirm resolution speed.
  6. Trim routing rules to reduce matching overhead.
  7. Check for background processes eating bandwidth.
  8. Confirm the client and core are both up to date.

Most speed issues get resolved within the first three steps. Actually needing to dig into local config is relatively rare, but when it happens, it's usually the root of a long-running, recurring problem — worth the time to fix properly once rather than repeatedly swapping nodes as a workaround.

Download Clash