url-test, fallback, and load-balance: Which Clash Proxy Group Should You Use?

The three proxy group types—latency testing, failover, and load balancing—use different decision rules. This guide breaks down their triggers, interval and tolerance settings, and practical combinations for streaming, downloads, and everyday browsing.

The short answer: these three proxy groups solve different problems

Proxy groups in Clash and Mihomo configurations are not simply lists of multiple nodes. The group type determines how the client probes nodes, chooses an exit, and responds when node health changes. url-test seeks the node with the lowest current measured latency, fallback selects the first available node in configuration order, and load-balance distributes different connections across multiple available nodes.

The most common misconception is treating all three as automatic best-node selection. In reality, lowest latency, highest priority, and distributed connections are three different decision models. A node with 62 ms latency may be selected by url-test but not used by fallback; and after a download goes through load-balance, one TCP connection is not automatically split into three to combine their bandwidth.

Type Primary decision Switching condition Typical use
url-test The lowest-latency node in the probe results A clearly better node appears after another probe, or the current node becomes unavailable Web browsing, API requests, and the everyday default exit
fallback The first node in the list to pass the health check A higher-priority node fails or recovers A fixed primary route, backup route, or stable regional exit
load-balance Distribute connections across multiple available nodes according to the selected strategy A new connection is established or node health changes Multi-connection downloads, concurrent requests, and distributed exit load

url-test: probe regularly and select a low-latency node

url-test makes the nodes in a group access the same test URL, records the time needed to establish a connection and receive a response, then selects the node with the better result. It suits setups where node quality fluctuates and users want to avoid manual switching. The result reflects one small request from the client through the node to the test target; it is not the same as peak-hour download speed and cannot fully represent cross-network streaming quality.

Basic configuration and parameter meanings

proxy-groups:
  - name: Auto Select
    type: url-test
    proxies:
      - Hong Kong-01
      - Hong Kong-02
      - Singapore-01
    url: https://cp.cloudflare.com/generate_204
    interval: 300
    tolerance: 80
    lazy: true

Why tolerance should not always be set to 0

Suppose one test measures Hong Kong-01 at 68 ms and Hong Kong-02 at 75 ms. With zero tolerance, a few milliseconds of network jitter can change the result; if the next round shows 79 ms and 72 ms, the group may switch back to Hong Kong-02. Existing TCP connections usually do not migrate seamlessly, while new connections use a different exit. A logged-in service may also detect the IP change.

On a home broadband connection, start with 50–100 ms. When nodes are in the same region and have similar latency, 80 ms is a stable starting point. If nodes span Asia, Europe, and North America, split them into regional groups instead of pushing every service toward the nearest region based on latency alone. If you need faster movement toward the lowest-latency route, set interval to 120–300 seconds and tolerance to 30–50 ms, but higher probe frequency also creates more requests to nodes and test services.

How to interpret one real measurement

In a repeated test on a 500 Mbps home broadband connection, three nodes show median latency of 61 ms, 88 ms, and 142 ms to a 204 endpoint, with jitter ranges of about 9 ms, 34 ms, and 18 ms. url-test will favor the 61 ms node, but the second node may still deliver higher throughput for large-file downloads. For a default web-browsing exit, low latency is a reasonable guide; for downloads, also check sustained speeds on files over 100 MB, packet loss, and peak-hour performance.

fallback: use the first available node by priority

The key idea behind fallback is order, not finding the lowest-latency node among all available options. The first item is the primary route, the second is the first backup, and the third is the second backup. If the first item passes the health check, the group keeps using it even when its latency is 160 ms and the second item measures just 55 ms. This predictability suits services that need a fixed region, carrier, or exit identity.

proxy-groups:
  - name: Primary and Backup Routes
    type: fallback
    proxies:
      - Hong Kong-Dedicated
      - Hong Kong-Backup
      - Singapore-Backup
    url: https://cp.cloudflare.com/generate_204
    interval: 180
    lazy: false

When failover is triggered

The core uses health checks to determine whether the current higher-priority node is available. After the primary node repeatedly fails to complete a probe, new connections move to the next available node. Once the primary recovers and passes the check again, the group can return to the higher-priority node. Switching does not guarantee that an active video stream, SSH session, or download remains uninterrupted because its original connection and route have already failed.

interval: 180 means a regular check every 3 minutes, so this is not millisecond-level hot standby. Actual failure detection time also depends on on-demand probes, timeout settings, and core scheduling. If the service needs faster detection, lower the interval to 60–120 seconds and accept the additional probe traffic. For typical home use, 180–300 seconds usually balances responsiveness and checking overhead.

How should nodes be ordered?

  1. Put the primary node that best meets the business requirements for region, exit identity, and availability first.
  2. Use a node in the same region but on a different server or route as the second option to reduce changes in the region detected by services.
  3. Place cross-region backup nodes last, so an entire regional route failure still leaves an available exit.
  4. Do not sort nodes by a single latency screenshot; observe stability at least during weekday evenings from 8:00 to 11:00 p.m.

Streaming is a common use for fallback. If the primary node is confirmed to access the target catalog and the backup is in the same region, the region remains consistent during failover. By contrast, putting nodes from multiple countries in url-test may let latency changes move the next connection to another region, changing the content catalog or triggering login risk controls.

load-balance: distribute connections, not single-connection bandwidth

load-balance distributes connections among multiple healthy nodes. Opening a web page often creates simultaneous requests for HTML, scripts, images, and APIs, and those requests may go through different nodes. Downloaders that support chunking and multiple threads may also create multiple connections, allowing them to use multiple exits. However, one established TCP or QUIC connection is normally carried by a single node; three 100 Mbps nodes do not automatically become one 300 Mbps single connection.

proxy-groups:
  - name: Concurrent Downloads
    type: load-balance
    proxies:
      - Download-Node-01
      - Download-Node-02
      - Download-Node-03
    url: https://cp.cloudflare.com/generate_204
    interval: 300
    strategy: consistent-hashing

consistent-hashing and round-robin

Common load-balancing strategies in Mihomo include consistent-hashing and round-robin. Consistent hashing uses information such as the destination to map similar requests consistently to a node, reducing repeated exit-IP changes for the same site over a short period. Round-robin simply assigns new connections to available nodes in sequence, distributing them more evenly but offering less stability for sites that expect a consistent session exit.

Load-balancing strategy Connection distribution Exit stability Best suited for
consistent-hashing The same destination tends to map to a fixed node Relatively stable Web resources, APIs, and concurrent requests where fewer IP changes matter
round-robin New connections rotate through nodes in order More likely to change Multi-source downloads, batch jobs, and concurrent requests where exit identity is not sensitive

Configuration fields should be checked against the capabilities of the current Mihomo version. Some older cores do not support the same strategy values, and a client may ignore unknown fields during import. After editing, open “Settings” → “Logs”, temporarily set the log level to debug, reload the configuration, and check for parsing errors. Once everything works, restore info to avoid generating excessive logs over time.

Why login, payments, and streaming should not use round-robin directly

Some services associate a session with its exit IP, region, or risk score. If node A opens the login page and node B handles a later API request, the service may require verification again or invalidate the session. Video playback may also complete regional detection through node A while fetching segments through node B, causing a 403, renewed authentication, or lower quality. This traffic is better suited to consistent hashing, a single-node selection group, or a region-fixed fallback group.

How interval, tolerance, and health checks work together

interval controls the approximate interval between periodic checks and is usually measured in seconds. Lower values update status sooner but increase probe traffic. At 300 seconds, each participating node visits the test address about once every 5 minutes; a 20-node group theoretically generates about 20 probes per round. If a subscription contains 100 nodes and you create several duplicate checking groups, there is no need to reduce the interval to 30 seconds.

tolerance mainly stabilizes switching in url-test. It is not a timeout and does not make a node “wait 80 ms longer.” A value of 80 means a candidate must show a substantial latency advantage before replacing the current node. fallback uses order and availability, while load-balance distributes connections, so neither normally relies on tolerance for its core behavior.

Three practical starting-point profiles

The test address also affects the result. A target that is too far away mainly measures the cross-border path from the node to that service; a target reachable by only some nodes can falsely mark healthy nodes as failed. Use a stable 204 service for general checks, then validate specific services separately. Do not download a large file as a health check every few minutes; it continuously consumes traffic and server bandwidth.

Combine by use case: everyday browsing, streaming, and downloads

Everyday browsing: url-test with manual selection

Everyday web browsing and messaging usually benefit most from fast response times. Create an automatic url-test group, then use select to combine it with the automatic group and frequently used individual nodes. This keeps the automatic result as the default while allowing you to pin a specific exit under “Proxy” → “Node Selection” when a site triggers risk controls or a particular node has access problems.

proxy-groups:
  - name: Auto Select
    type: url-test
    proxies:
      - Hong Kong-01
      - Hong Kong-02
      - Singapore-01
    url: https://cp.cloudflare.com/generate_204
    interval: 300
    tolerance: 80

  - name: Everyday Proxy
    type: select
    proxies:
      - Auto Select
      - Hong Kong-01
      - Singapore-01
      - DIRECT

Streaming: same-region fallback

First filter nodes by the regions where the service is available, then create a same-region fallback group. Put a verified, stable, peak-hour-capable route first and another server in the same region second. Point the target service domains or matching rule set to this group. The goal is not the lowest 204 latency, but regional consistency and failover when the primary route fails.

Multi-threaded downloads: load-balance with comparable node quality

A downloader configured for 8 or 16 concurrent connections gives the load-balancing group a chance to distribute different connections across multiple nodes. Browser downloads using one connection, and object-storage requests that create only one connection, generally remain limited by a single node. Before using it, confirm that the subscription allows concurrent connections and that accessing the same download URL from different exits will not invalidate its temporary link.

Connect proxy groups to rules

rules:
  - DOMAIN-SUFFIX,example-video.com,Streaming Primary and Backup
  - DOMAIN-SUFFIX,example-download.com,Concurrent Downloads
  - MATCH,Everyday Proxy

Rules are matched from top to bottom, and matching stops at the first hit. A service often uses multiple domains, so adding only its homepage may miss video segments, image CDNs, or login APIs. When using a rule set, check its update source and actual contents. After editing, open the client’s “Connections” page to see which rule matched the target domain and which proxy group handled it; this is more accurate than checking only whether the page opened in a browser.

Common configuration errors and troubleshooting order

All nodes show timeout

  1. Use a browser or command line to confirm that the test address itself is reachable.
  2. Check whether DNS resolution succeeds and whether the logs show dns resolve failed.
  3. Replace the test address with another stable target that returns a small response, then run the latency test again.
  4. Confirm that node names exactly match the proxies list, including spaces, capitalization, and symbols.
  5. Check whether a subscription update renamed the nodes, leaving the proxy group pointing to old names.

url-test switches nodes too often

First raise tolerance from 0 or 10 to 50–100, then widen interval from 30 seconds to 180–300 seconds. If nodes from different regions are mixed together, split them by region. You can also run 10 consecutive tests and record the median and variation range; a node with low average latency but over 100 ms of variation may be a worse default exit than one that stays near 90 ms.

fallback did not choose the lowest-latency node

This is expected. fallback selects the first available node in the list; it does not compare speeds. To choose the lowest-latency node automatically, use url-test. If the primary should remain fixed and switch only on failure, keep fallback and adjust the node order.

Download speed did not increase after load-balance

First confirm that the download tool actually opened multiple connections, then inspect the client’s “Connections” page to see which routes each connection uses. With only one connection, the speed limit still comes from a single node. If there are many connections but they all target the same destination, consistent hashing may keep them on one node. Before switching to round-robin, assess whether the download site permits exit-IP changes. Even with evenly distributed connections, source-side throttling, local bandwidth, and shared node bandwidth can remain bottlenecks.

Final choice: define the business goal first, then choose the group type

Choose url-test when you need “the fastest responder”; choose fallback when you need “the backup only after the primary fails”; choose load-balance when you need “concurrent connections distributed across different nodes.” None is universally best—the decision model simply needs to match the service.

A practical configuration often uses several group types at once: url-test for the everyday default exit, fallback for fixed-region services, and load-balance exclusively for concurrent downloads, with an outer select group for manual override. Combined with rules ordered from specific domains to MATCH, this sends each kind of traffic to the right group instead of making one automatic group handle everything.

Download Clash