How to Choose a Shadowrocket Server: Latency Tests, Regions, Protocols, and Why Low Latency Does Not Always Feel Faster

Learn what Shadowrocket latency tests measure, how regions and protocols affect different tasks, and how to choose stable servers from your existing list.

Quick overview

This article is for people who have already imported their own configuration into Shadowrocket but are unsure how to choose from the existing server list. First remove entries that cannot connect, then compare latency and variation across multiple rounds, retest by region, protocol, and actual use case, and keep only a few stable candidates.

First, understand what the latency number measures

The latency value in Shadowrocket’s server list is mainly useful for quickly checking whether a connection can be established and roughly how long one round trip takes. It is useful for an initial filter, but it does not by itself represent download speed, video buffering, total page-load time, or long-connection stability. The test target, current network, DNS resolution, protocol handshake, and server load all affect the result.

Latency is usually shown in ms. A smaller number means that particular test completed faster. For example, 40 ms is about 0.04 seconds, while 180 ms is about 0.18 seconds. Opening a page, however, involves more than one round trip: DNS lookup, TCP connection setup, TLS handshake, request delivery, and resource downloads may require multiple exchanges. As a result, a difference of a few dozen milliseconds between two servers may not produce a consistent noticeable difference.

3 rounds
Run at least three consecutive tests on the same network
443
A common TCP port for HTTPS and one of the usual test paths
4 perspectives
Global Routing:Config / Proxy / Direct / Scene
6 categories
This article compares Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard

The most useful data is not the single lowest value, but how close the results are across multiple tests. Suppose server A shows 42, 47, and 190 ms, while server B shows 71, 74, and 79 ms. A has the lower minimum, but its variation is substantial; B is more likely to feel consistent during interactive use. These figures illustrate the method only and do not represent fixed performance for any region or protocol.

Filter existing servers with a consistent process

Control the variables during testing. Use the same device and the same Wi-Fi or cellular network, and test at roughly the same time whenever possible. If half the data comes from home Wi-Fi and the other half from a cellular network, access method, signal strength, and carrier routing differences will be mixed into the results, making a fair comparison impossible.

  1. Confirm the configuration source

    In Home, check that the existing servers come from your own configuration. To maintain a subscription, use Home’s top-right “+” → Type → Subscribe. An example address is https://example.com/sub?token=xxxx. Save it, then update it according to the configuration method.

  2. Keep the local network fixed

    Stop any large file transfers in progress. Keep the device on the same Wi-Fi access point or the same cellular network, and avoid switching connections during testing.

  3. Complete three rounds of testing

    In the server list on Home, use the latency test function and test each candidate for at least three consecutive rounds. Record successful tests, timeout, minimum values, and maximum values.

  4. Remove obvious outliers

    First remove candidates that repeatedly fail to complete the test. Then flag entries whose results vary by several times, such as frequent jumps from a few dozen milliseconds to several hundred milliseconds.

  5. Verify with real-world use

    Select the remaining candidates one at a time. After connecting, use the same webpage, video segment, or controlled file for a short verification. Do not change Global Routing at the same time.

  6. Retest at different times

    Run another test during your usual usage period. Stability during the day does not guarantee stability in the evening; results across different time periods are more useful than a single minimum latency.

There is no need for elaborate tools. A table with columns such as “Server name, region, protocol, three latency rounds, timeout status, initial page load, and sustained transfer” is enough. When latency is similar, keep the entries with stable multi-round results and fewer errors during actual tasks.

Candidates Three-round latency example Observation Action
A 42 / 47 / 190 ms Lower minimum, sharp increase in round three Keep for retesting; do not make it the first choice yet
B 71 / 74 / 79 ms Slightly higher numbers, close across all three rounds Proceed to real-world verification
C timeout / 128 / timeout Low test success rate Check the configuration or set aside temporarily

Geographic distance is only one variable

When other conditions are similar, a shorter geographic distance usually suggests a shorter transmission path. However, a region label in a server name cannot fully describe the actual route. Packets may pass through different international exits, transit networks, and congestion points, and two servers labeled as nearby regions may follow completely different paths.

When choosing a region, first consider whether the task is sensitive to response time. Web browsing, remote interaction, and real-time requests depend more on round-trip latency and jitter. Continuous viewing or large-file transfers depend more on sustained throughput, loss recovery, and long-connection stability. The former often reveals larger latency differences, while the latter may perform better on a server with slightly higher latency but steadier throughput.

Recommended approach: test interactive use and sustained transfers separately

Interactive testing
  • Open the same group of pages repeatedly
  • Watch the initial response and image loading
  • Repeat the operation three times to rule out cache-related anomalies
  • Record whether the connection pauses intermittently
Sustained transfer testing
  • Use the same controlled resource for verification
  • Keep the test duration and file identical
  • Observe whether speed fluctuates sharply
  • Check whether the connection drops during several minutes of use

Use region labels to narrow the candidate pool, but make the final choice based on actual task results under identical conditions.

If your main task requires content provided for a specific region, also consider the service’s regional access policy. The region with the lowest latency may not meet the target service’s access requirements, while a server that meets the regional requirement may not have the lowest latency. First identify the necessary region, then compare stability among the existing candidates in that region.

Protocol type changes test behavior

Shadowrocket supports multiple protocols and transport combinations. A protocol name describes part of the encapsulation and connection method, but it does not determine speed on its own. The same protocol can perform very differently across servers, ports, and network paths; different protocols on the same good-quality path may all be suitable for everyday use.

Shadowsocks has a relatively straightforward structure. VMess and VLESS are also affected by their underlying transport and encryption settings. Trojan is commonly used with TLS. Hysteria2 focuses on UDP-based transport characteristics, while WireGuard is also a UDP-based tunneling protocol. UDP can perform well on some networks, but may be affected by restrictions or significant packet loss. HTTPS traffic commonly uses TCP 443, while HTTP/3 and some UDP-based solutions often involve UDP 443; the actual port is determined by your existing configuration.

Traditional connection group

Shadowsocks
Straightforward structure; performance depends on encryption and the route
VMess
Assess together with the actual transport settings
VLESS
Check the underlying transport as well as the protocol name

Do not infer latency or throughput from the protocol name alone.

TLS and UDP group

Trojan
Often used with TLS; both the handshake and route affect the initial connection
Hysteria2
UDP-based; check UDP quality on the current network
WireGuard
UDP-based; verify stability with a sustained connection

Test separately on the same network; avoid direct comparisons across networks.

Protocol filtering should not rely on a fixed conclusion that one protocol is always fastest. Instead, choose candidates with similar regions and comparable load conditions from your existing configuration, then run latency and real-task tests for each. If a UDP protocol is stable on Wi-Fi but frequently fails on a cellular network, record it as a network-environment difference rather than generalizing one result.

Test record example
Network: same Wi-Fi
Global Routing:Config
Candidate A: VLESS, 68 / 72 / 70 ms, stable initial page load
Candidate B: Trojan, 55 / 160 / 59 ms, occasional pauses
Candidate C: Hysteria2, 83 / 81 / 85 ms, stable sustained transfer

Conclusion: Keep A and C for their respective use cases; retest B at other times.

Inconsistent Global Routing can distort the results

Keep Global Routing consistent when testing servers. Config matches rules one by one, Proxy sends traffic through the current proxy, Direct connects directly, and Scene follows the configured scene. If test A uses Config while test B switches to Proxy, the two results may follow different processing paths and cannot be compared directly.

Config

Recommended

Rules in the current configuration are matched from top to bottom, which most closely reflects everyday traffic splitting. Before testing, confirm that the target request actually matches the intended policy.

Suitable for: everyday selection and long-term use verification

Proxy

Route all traffic through the current proxy to reduce the effect of rule differences when comparing servers.

Suitable for: troubleshooting rule matches and short-term comparisons

Direct

Traffic connects directly; this does not measure the actual transmission performance of the current proxy server.

Suitable for: establishing a local network baseline

Scene

Switch handling according to the scenes already configured by the user. Results depend on the scene conditions and actions.

Suitable for: verifying automatic policies under a fixed network scenario

When using Config, also check whether the rules send the test target to DIRECT. Rules typically match in configuration order: DOMAIN-SUFFIX targets domain suffixes, GEOIP targets the region associated with an IP, IP-CIDR targets address ranges, and FINAL handles traffic that matched none of the preceding rules. If the test resource matches DIRECT, the result does not represent the selected server.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

In the example above, example.com matches PROXY first; local network ranges use DIRECT; GEOIP then handles addresses that meet its conditions; all remaining traffic goes to FINAL. Rules match from top to bottom, so more specific rules should generally appear before broad rules that could override them.

Why low latency can still feel slow

A latency test covers only part of the connection experience. Real-world access is also affected by bandwidth limits, concurrent server load, packet loss along the route, jitter, retransmissions, DNS response time, and the target service’s processing time. One server may respond quickly during a short test but slow down during sustained transfer because of congestion; another may have higher baseline latency but steadier throughput.

Common examples include a server showing 50 ms in the list while video buffers repeatedly after playback starts; latency around 100 ms while pages continue loading steadily; a normal first test followed by several-hundred-millisecond fluctuations in the evening; or normal Wi-Fi performance that changes after switching to cellular. These cases all require a layered diagnosis.

Symptom Check first Verification step
Low latency but unstable sustained speed Load, packet loss, and congestion by time of day Retest at another time with the same resource for several minutes
Large differences across three rounds Local signal and route jitter Stop background transfers, fix the network, and retest for five rounds
Only some apps are affected Config rules and DNS Temporarily use Proxy for comparison and check rule matches
Wi-Fi works, cellular does not Access network and UDP conditions Record TCP and UDP candidate performance separately
No access at all after connecting Configuration validity and system VPN status Check the Home status and select a verified candidate again

DNS can also create the impression that a server is slow. Domain resolution happens before content transfer. If resolution times out or returns an unsuitable route, the initial page load will be slow even though the latency value may look normal. During troubleshooting, keep DNS settings unchanged and compare several candidates first. If all candidates show similar domain-loading problems at the same time, inspect the DNS settings in the configuration separately.

The local network is another fundamental variable. Weak Wi-Fi, a busy access point, cellular signal switching, or background synchronization consuming bandwidth can slow every server at once. When multiple regions and protocols show high latency simultaneously, test the Direct baseline and local network first instead of changing server parameters one by one.

Review after On Demand and subscription updates

Settings → On Demand determines connection behavior based on network conditions. Once enabled, the Wi-Fi name, network type, or other conditions may trigger a connection or disconnection. If the network state changes during testing and triggers On Demand, the current connection may be re-established, meaning the before-and-after data was collected under different conditions.

Before formal testing, review the existing rules in Settings → On Demand and confirm what actions are triggered by the current Wi-Fi and cellular networks. During testing, either keep the conditions completely unchanged or temporarily use a clearly defined fixed set of conditions. After choosing a server, restore the settings and verify that automatic connection behaves as expected.

Pre-test checklist

Entry
Settings → On Demand
Network
Keep Wi-Fi or cellular conditions fixed
Trigger
Confirm that the connection will not be rebuilt during testing
Routing
Keep the same Global Routing

Record data collected after a condition change separately.

Post-update check

Entry
Existing Subscribe configuration in Home
Action
Update using the original configuration method
Changes
Check names, regions, protocols, and availability
Retest
Run at least three new latency tests

After subscription content changes, old records cannot directly represent the new entries.

A subscription update may add, remove, or adjust servers, and may also change their names or underlying parameters. Even if a name appears unchanged after an update, repeat connectivity and latency tests. If you maintain multiple configurations, also confirm which Config is currently active so that you do not choose a server from the wrong configuration.

Shadowrocket is a paid commercial application for Apple platforms, with iPhone and iPad as its primary devices. The App Store compatibility section may also list Mac, Apple TV, and Apple Vision; system requirements are subject to the App Store listing. The official source is the App Store, the developer is Shadow Launch Technology Limited, and the app ID is 932747118. The one-time purchase covers the client itself.

Build a repeatable selection process

A single test describes only the conditions at that moment. A more reliable approach is to keep a small set of candidates with simple notes such as “usual region, backup region, TCP candidate, and UDP candidate.” When the network or usage location changes, retest from the relevant group instead of scanning the entire list again.

If two servers are similar across three latency rounds, initial page loading, and sustained transfer, there is no need to chase a difference of a few milliseconds. Choose the one with a clear name, stable performance, and an identity that is easy to recognize after updates. Switching too often changes DNS caching, connection reuse, and test timing, which can reduce comparison quality.

  1. Keep the device, network, Global Routing, and test resources fixed.
  2. Run at least three latency tests on the existing candidates.
  3. Remove candidates with repeated timeout or obvious instability.
  4. Narrow the list by required region and protocol conditions.
  5. Retest interactive web use and sustained transfer separately.
  6. Verify once more during your usual usage period and record backup candidates.

After completing this process, you will not have one permanently “fastest server,” but a set of choices that better fit the current network and use case. Routes and load change, so when performance noticeably changes, start with the local network baseline and then check rules, DNS, protocol, and server status in order.

Verify the official source View App Store acquisition instructions