Clash Node Speed Testing and Optimization Guide: Find the Fastest Node
Table of Contents
- Why Node Speed Testing Matters
- How Clash Built-in Speed Testing Works
- Manual Speed Testing: Client-by-Client Guide
- How to Interpret Speed Test Results
- Auto Speed Test Configuration in Detail
- Node Selection Strategies by Use Case
- Advanced: External Tools for Precise Testing
- Factors Affecting Node Speed
- Troubleshooting Common Issues
Many Clash users face a common problem: the subscription provides dozens of nodes, but which one is actually the fastest and most stable? Blindly switching between nodes wastes time. Precise selection through speed testing saves effort and delivers better results.
This tutorial covers the complete workflow of Clash node speed testing, from understanding the underlying principles to configuring automatic optimization and choosing the best node for every scenario.
Why Node Speed Testing Matters
Latency vs Bandwidth vs Stability
Node performance is determined by three separate dimensions. Understanding their differences is the foundation for correct speed testing:
- Latency: The time it takes for a data packet to travel from your device to the node and back, measured in milliseconds (ms). Lower latency means faster response times. Most critical for web browsing and gaming.
- Bandwidth: The amount of data the node can transfer per second, typically measured in Mbps. Bandwidth determines download speeds and video streaming quality.
- Stability: The ability of a node to maintain consistent connection and speed over time. Some nodes have great peak speeds but are unstable, causing frequent disconnections.
A node might have very low latency (30ms) but limited bandwidth (only 5Mbps). In this case, web pages load instantly but video streaming buffers constantly. Conversely, a node with 200ms latency but 100Mbps bandwidth handles video smoothly but feels sluggish for web browsing.
There is no "universally best" node. There is only the "best node for your current use case." Speed testing is not about finding the highest single metric, but about making an informed choice based on your actual needs.
How Clash Built-in Speed Testing Works
How the url-test Policy Group Works
Clash's built-in auto speed testing is implemented through the url-test policy group. Here is how it works:
- Sends an HTTP request to a predefined test URL
- Records the time from request to response (latency)
- Compares latency across all nodes in the policy group
- Automatically switches to the node with the lowest latency
Example url-test policy group configuration:
proxy-groups:
- name: "Auto Select"
type: url-test
proxies:
- "Japan Node 1"
- "Japan Node 2"
- "HK Node 1"
- "HK Node 2"
- "US Node 1"
url: "http://www.gstatic.com/generate_204"
interval: 300
tolerance: 50
Choosing the Test URL
The default test URL is http://www.gstatic.com/generate_204, which returns an empty 204 response. Provided by Google and globally accessible, it is ideal for latency testing. You can also use alternatives:
url: "http://cp.cloudflare.com/generate_204" # Provided by Cloudflare
url: "https://www.apple.com" # Apple CDN
url: "http://connectivitycheck.gstatic.com/generate_204"
Clash's built-in speed test only measures latency (response time), not bandwidth. To test actual bandwidth, you need external tools (covered later). Additionally, results may vary depending on the test URL's server location.
Manual Speed Testing: Client-by-Client Guide
Clash Verge Rev (Recommended Desktop Client)
- Open Clash Verge Rev main interface
- Switch to the "Proxies" page
- Find the speed test button (play icon) at the top of the policy group
- Click it to test all nodes in the current policy group
- After testing, each node displays its latency value (ms)
- Green indicates low latency (<100ms), yellow is medium (100-300ms), red indicates high latency or timeout
Clash for Windows
- Open Clash for Windows
- Navigate to the "Proxies" tab
- Click the speed test button next to the policy group name
- Or use the "Speed Test" button in the top toolbar for batch testing
- Results appear as latency values next to each node name
Clash Meta for Android
- Open Clash Meta for Android
- Switch to the "Proxy" tab
- Tap the speed test icon in the policy group title bar
- Wait for all nodes to complete testing
- Tap the desired node to manually switch
If you have multiple policy groups (e.g., "Auto Select", "HK Nodes", "Japan Nodes"), test each group individually rather than globally. This gives you a clear picture of latency by region.
How to Interpret Speed Test Results
Understanding Latency Values
| Latency Range | Experience | Best For |
|---|---|---|
| < 50ms | Excellent | Competitive gaming, real-time trading |
| 50-100ms | Very Good | Web browsing, casual gaming |
| 100-200ms | Acceptable | Daily use, video streaming |
| 200-500ms | Slow | Video, downloads (no impact) |
| > 500ms | Very Slow | Downloads only |
What Timeout Means
If the speed test shows "timeout" or latency exceeding 10000ms, it typically means:
- The node is offline or the server is down
- The node has been blocked by the firewall
- The network path between you and the node is unreachable
- The node is overloaded and cannot respond
The Impact of Packet Loss
Clash's built-in speed test does not directly show packet loss rate. However, if you notice a node's latency fluctuates significantly (e.g., 50ms on the first test, 300ms on the second), it usually indicates packet loss issues.
Packet loss causes:
- Frequent video buffering
- Stuttering and teleporting in games
- Incomplete page loads or timeouts
Auto Speed Test Configuration in Detail
Core Parameters Explained
The url-test policy group has three key parameters:
proxy-groups:
- name: "Auto Select"
type: url-test
proxies:
- "Node A"
- "Node B"
- "Node C"
url: "http://www.gstatic.com/generate_204"
interval: 300 # Test interval (seconds)
tolerance: 50 # Tolerance (milliseconds)
lazy: true # Lazy test mode
- interval: The time between automatic speed tests, in seconds. Setting 300 means testing every 5 minutes. Setting 0 tests only at startup with no automatic retesting. Recommended: 300-600.
- tolerance: Tolerance value in milliseconds. The system only switches to a new node if its latency is lower than the current node by at least this value. Prevents frequent switching. Recommended: 50-100.
- lazy: Lazy test mode. When true, testing only occurs when the policy group is actively used. When false, testing happens on schedule even if unused. Recommended: true to save resources.
Recommended Configurations
Configuration 1: Daily Use
proxy-groups:
- name: "Auto Select"
type: url-test
proxies:
- "HK Node 1"
- "HK Node 2"
- "Japan Node 1"
- "Japan Node 2"
- "TW Node 1"
url: "http://www.gstatic.com/generate_204"
interval: 300
tolerance: 50
Configuration 2: Gaming (Low Latency Priority)
proxy-groups:
- name: "Gaming"
type: url-test
proxies:
- "HK Gaming Node"
- "Japan Gaming Node"
- "TW Gaming Node"
url: "http://www.gstatic.com/generate_204"
interval: 60
tolerance: 20
Configuration 3: Downloads (Bandwidth Priority)
Download scenarios care more about bandwidth than latency, but url-test only tests latency. In this case, use a select policy group with manually chosen high-bandwidth nodes:
proxy-groups:
- name: "Downloads"
type: select
proxies:
- "US High-BW Node 1"
- "US High-BW Node 2"
- "HK High-BW Node"
- "Auto Select"
Node Selection Strategies by Use Case
Web Browsing
Web browsing is latency-sensitive but bandwidth-demanding is low. Choose the node with the lowest latency.
- Recommended regions: Hong Kong, Taiwan, Japan, South Korea
- Recommended latency: < 100ms
- Recommended strategy: url-test auto select
Video Streaming (Netflix/YouTube)
Video streaming requires high bandwidth and moderate latency. Nodes need sufficient bandwidth for HD/4K video.
- Recommended regions: Depends on the content region you want to unlock
- Recommended latency: < 300ms
- Recommended bandwidth: > 10Mbps (1080p), > 25Mbps (4K)
- Recommended strategy: Manually select nodes with known sufficient bandwidth
Online Gaming
Gaming is the most latency-sensitive use case with the lowest bandwidth requirements. Competitive gaming requires latency under 100ms.
- Recommended regions: Nodes closest to the game server
- Recommended latency: < 80ms
- Recommended strategy: url-test + low tolerance value
Large File Downloads
Downloads require the highest bandwidth and are insensitive to latency.
- Recommended regions: US, Europe, and other nodes offering high bandwidth
- Recommended bandwidth: > 50Mbps
- Recommended strategy: Manually select known high-bandwidth nodes
The best approach is to configure multiple policy groups, each corresponding to a use case. In rules, assign different applications or domains to different policy groups. For example: MATCH goes to "Auto Select", Netflix domains go to "Streaming", and gaming-related IPs go to "Gaming".
Advanced: External Tools for Precise Testing
iperf3: Testing Actual Bandwidth
iperf3 is a professional network bandwidth testing tool. If the node server runs an iperf3 server, you can use it to test real bandwidth:
# Install iperf3
# macOS
brew install iperf3
# Linux
sudo apt install iperf3
# Windows: Download from the official website
# Test bandwidth (requires server-side iperf3 support)
iperf3 -c <node-ip> -p <port> -t 10
speedtest-cli: Comprehensive Speed Test
Running speedtest-cli through the Clash proxy gives you the actual speed after passing through the node:
# Install
pip install speedtest-cli
# Test through proxy
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
speedtest-cli
Using mtr to Detect Link Quality
mtr combines ping and traceroute functionality to detect packet loss along the network path:
# Install
# macOS
brew install mtr
# Linux
sudo apt install mtr
# Check the link to the node (requires knowing the node IP)
sudo mtr <node-ip>
mtr displays latency and packet loss for each hop, helping you identify exactly where in the link problems occur.
Factors Affecting Node Speed
1. Geographic Location
Physical distance is the largest factor affecting latency. Light travels at approximately 200,000km/s in fiber optic cable, so 1000km one-way requires at least 5ms latency. Adding routing equipment and protocol overhead, actual latency will be higher.
2. Line Type
- CN2 GIA: China Telecom's premium line, low latency, minimal packet loss, stable during peak hours, but expensive
- CN2 GT: China Telecom's secondary premium line, cost-effective, may congest during peak hours
- CMIN2: China Mobile's premium line, good latency performance
- CU VIP: China Unicom's premium line
- Standard lines (163, etc.): Low cost, severe congestion during peak hours
- IPLC/IEPL: Dedicated line, does not traverse the public internet, extremely low latency and highly stable, most expensive
3. Node Load
The more users simultaneously using a node, the less bandwidth each user gets. Peak hours (8pm-12am) typically have higher load than early morning hours.
4. Protocol and Encryption
Different protocols have different overhead. Vless has the smallest protocol overhead, followed by Trojan, then Vmess. Encryption strength also affects performance, but on modern devices the impact is usually minimal (<5%).
5. Server-side Optimization
Server-side TCP parameter optimization, BBR congestion control algorithm enablement, and hardware performance all affect a node's actual performance.
Troubleshooting Common Issues
Issue 1: Fast Speed Test but Slow Real Experience
Possible causes:
- Clash tests only latency, not bandwidth. The node may have low latency but insufficient bandwidth
- The test URL server is close to you, but the websites you actually visit have distant servers
- Node load is low during testing but high during actual use
- Slow DNS resolution, not a node issue
Solution: Use speedtest-cli through the proxy for real bandwidth data. Check if DNS configuration is reasonable.
Issue 2: Inconsistent Speed Test Results
Possible causes:
- Network conditions are inherently variable
- Node load changes over time
- Test URL server response time fluctuates
Solution: Test multiple times and take the average. Set a reasonable tolerance value to avoid frequent switching due to minor fluctuations.
Issue 3: Some Nodes Show Timeout
Possible causes:
- Node is offline
- Node has been blocked
- Subscription has expired
- Local network issues prevent reaching the node
Solution: First check if other nodes work. If only specific nodes timeout, contact your provider to confirm node status. Update your subscription for the latest node list.
Never judge a node based on a single speed test result. Node quality must be evaluated across latency, bandwidth, and stability, with multiple tests at different times of day for reliable conclusions. Consider maintaining a simple speed test log recording data at different times throughout the day.