This guide is for cases where Shadowrocket is connected, but pages load slowly, videos buffer, or file transfers remain sluggish. Using your existing provider and subscription, keep test conditions consistent and isolate issues with the node's exit, network route, transport protocol, or local connection. Then use connection logs to verify how requests are routed and document results you can reproduce. Get your subscription from your provider.
1. Set consistent test conditions and pinpoint the slowdown
An enabled connection switch only confirms that the system tunnel is up; it does not prove that a request reached its destination through the selected node. A slow initial page load, slow sustained downloads, and frequent video buffering are different symptoms. The first may involve DNS or connection setup; the others call for checking sustained throughput and transport stability.
In Home, note the current node, Global Routing setting, and local network. Then check which configuration is active in Config. During testing, don't refresh subscriptions, change DNS, switch protocols, and edit rules at the same time. Otherwise, even if speeds improve, you won't know which change made the difference.
- Choose a specific page or file that you can access and load repeatedly, and note its name. Don't compare download speeds from two different sites.
- Pause system updates, photo syncing, and other high-bandwidth tasks. Run 3 tests in a row, each for about 30 seconds. Record time to first content, sustained speed, and any interruptions.
- Use consistent speed units.
1 MB/sis about8 Mbps; don't treat the MB/s shown for file downloads as the same number as a broadband speed in Mbps. - Change one condition per test round and run comparisons at roughly the same time. Cellular testing uses data, so check your plan allowance first.
2. Node checks: distinguish reachability from throughput
In Home, run Connectivity Test for your existing nodes to rule out ones that are clearly unreachable. Latency reflects the response under a specific test method, not download bandwidth. The test target, handshake, and whether traffic goes through a proxy all affect the result, so don't judge the experience by the lowest millisecond reading alone.
Choose two nodes from your existing subscription, preferably using the same protocol, and test them against the same target on the same local network. If only one remains consistently slow, narrow the issue to that node or its route—but don't assume the server is overloaded.
| Symptom | What it may indicate | Next step |
|---|---|---|
| Test responds quickly, but downloads stay slow | Short requests complete, but sustained throughput is still limited | Keep the node and test again with a different file |
| Only one site is slow on the same node | The destination may be rate-limited, or the route from the exit to it may be an issue | Test a second unrelated site to see if the issue is limited to one destination |
| Node A is slow, but node B is fine on the same protocol | The issue is more likely specific to A or its route | Note the time, then retest A on a different local network |
| All existing nodes time out | A shared access or configuration issue may be involved | Check the local network, subscription status, and connection logs |
Takeaway: Focus on differences you can reproduce reliably
If A is slow for 3 consecutive rounds while B is fine, keep those results and then test A on a different network. Don't change every setting at once. Differences between nodes are a starting point for diagnosis, not proof of a server-side cause.
3. Network routes: compare across times and networks
A route isn't a separate switch in the node list. A request involves at least two paths: from your local connection to the server, and from the server to the destination site. Even when the node name and region stay the same, routing, congestion, and content delivery can change. A nearby location doesn't guarantee a shorter network path or stable performance during peak hours.
- Same node, different network: On your iPhone, turn off Wi-Fi and access the same destination over cellular. Then switch back to Wi-Fi and test again. Keep all other conditions the same.
- Same network, different time: Test once during the problem period and again at a quieter time. Record the time and sustained speed instead of just writing “slow in the evening.”
- Same node, different destinations: Test two unrelated sites. If only one is slow, check the route from the exit to that destination before changing local DNS again.
- Compare the results: Note patterns such as “slow on Wi-Fi, fine on cellular” or “slow on both networks at the same time.” In the first case, check Wi-Fi access and its upstream route first; in the second, compare results across nodes and destinations.
Differences between two networks on the same node can't fully separate carrier routing from the local wireless environment. If everything is slow on Wi-Fi, start with the local network checks below. If only one proxy route is slow, continue narrowing down the route. Different nodes may share upstream infrastructure, so multiple slow nodes don't necessarily indicate separate failures.
4. Protocol checks: verify transport settings instead of changing ports at random
A protocol name isn't a speed rating. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard have different transport requirements and configuration fields; availability depends on what the server actually supports. Changing the protocol in an existing node's dropdown to another name doesn't make it a valid protocol comparison.
Port 443 doesn't necessarily mean TCP, nor does it guarantee that traffic can get through. Hysteria2 can use UDP 443, but the actual port is determined by the server. If the network restricts UDP, connections that rely on it may fail or become unstable. Conversely, working UDP doesn't guarantee higher throughput under congestion.
- Check the server address, port, and authentication details provided by your service provider. For TLS, also verify the server name and certificate validation settings. Don't disable validation as a troubleshooting shortcut.
- Compare protocols only if your existing configuration provides entry points with different protocols. If the server or route changes at the same time, label it a “multi-variable comparison” rather than attributing all differences to the protocol.
- If small requests work but large file transfers keep stalling, test on a different network first. MTU or path MTU could be a factor, but don't change multiple values in a row without recording the results.
Error: connection refused
What it means and what to do: This usually means the connection was refused. The destination port may not have a service listening, or the connection may have been actively rejected. Check the full log to see whether the error refers to the node address or the destination site, then verify the relevant address and port.
Error: i/o timeout
What it means and what to do: A network operation didn't complete within the time limit. This message alone doesn't prove that bandwidth is insufficient. Note the stage and remote address, then narrow down the issue by testing the same node on a different network and different nodes on the same network.
These are low-level error messages that may appear in connection logs; they aren't guaranteed to show up for every failure. Keeping the full context is more useful than saving only the last line.
5. Local network and rules: verify where requests actually go
In Home, check Global Routing. Proxy, Direct, Config, and Scene represent different routing modes: Proxy and Direct set a global preference for proxying or direct connections; Config uses the active configuration, while Scene also depends on the selected scene's settings. Note the original setting before testing. Restore it after any temporary change so a diagnostic doesn't leave routing misconfigured.
- Check local access: Move closer to the router and test again. Make sure Wi-Fi isn't waiting for a web-based sign-in. If your network allows it and the destination is reachable directly, briefly turn off the connection to establish a baseline. If direct access is also slow, address the local connection first.
- Check the matched policy: In Config, verify which configuration is active. Then use connection logs to confirm which rule matched the test destination, and which policy and node were used. Selecting a node doesn't mean every request goes through it.
- Check rule order:
DOMAIN-SUFFIXmatches domain suffixes,IP-CIDRmatches IP ranges,GEOIPmatches using IP geolocation data, andFINALis the catch-all rule. Check whether an earlier rule matched before changing only the last one. - Check automatic reconnection: If the connection status changes on its own during testing, check Settings → On Demand. Note the current conditions, temporarily disable the relevant automatic connection behavior, then restore it after manual testing.
Check DNS when the symptoms point to it—for example, when the first page load is noticeably slow but downloads are steady once connected. Look for resolution timeouts, failures, or unexpected destination addresses, then check the DNS settings in the active configuration. Changing DNS isn't a universal fix for slow speeds. Don't disable certificate validation or broaden direct access without a clear reason.
6. Frequently asked questions and when to stop troubleshooting
Why does video still buffer when latency is only a few dozen milliseconds?
Latency doesn't measure sustained throughput. Use the same video at the same resolution, watch for buffering during playback, then visit another destination using the same node. If only that video service is slow, note the destination and time and check the route from the exit to the destination.
If it works on cellular, does that mean the node is fine?
It only shows that the node completed this test over cellular. Switch back to the same Wi-Fi network and first test a destination that can be accessed directly, then retest closer to the router. You still need to distinguish local wireless interference from the upstream route over Wi-Fi to the node.
Can refreshing a subscription restore speed?
Refreshing can sync addresses or parameters changed by your provider, but it can't directly resolve network congestion. Save your current test results first, then refresh the subscription entry in Home and check whether the test node changed. Get your subscription from your provider; don't keep switching sources while troubleshooting.
What if everything has been compared and it still slows down at the same time each day?
Collect 3 sets of results for the same node, destination, and network at different times, along with redacted error logs, and send them to your provider for investigation. Keep your existing working configuration and stop changing protocols, DNS, and rules in succession so the test conditions remain reproducible.
A useful report includes the time, Wi-Fi or cellular connection, node identifier, protocol, Global Routing setting, destination, speed units, and comparison results. The goal isn't to find one “fastest setting,” but to identify which layer is affected and who should investigate next. If the access network or remote route outside the app consistently shows the same issue, further local configuration changes are unlikely to fix it.
Check where to get Shadowrocket and review the basics
Shadowrocket is a closed-source commercial app for Apple platforms. iPhone and iPad users can get it from the App Store; a one-time purchase does not include a network service plan. The developer is Shadow Launch Technology Limited, and the App ID is 932747118. Check the App Store listing for current pricing, compatibility, and system requirements. Use the links below to verify the app or review the initial setup.
Verify the App Store listing View the guide