At a glance

Turning on the Shadowrocket connection only confirms the local connection state; it does not prove that the remote server, DNS resolution, or destination website is working. This guide is for users who already have their own service details and subscription but can't load webpages. Start by checking the underlying network, then narrow down the issue by testing the server, routing mode, DNS, and rules one at a time. Restore your usual settings when you're done.

1. Separate basic network issues from proxy connection issues

Don't delete your subscription or reset all settings straight away. First, note the server selected in Home, the Global Routing mode, and the configuration file currently in use in Config. The same “webpage won't load” symptom can have several causes. Keeping track of your starting settings helps identify which change actually fixed the problem.

A connected status usually means the local VPN tunnel has started. You still need to check whether the remote server accepts connections, the authentication details are valid, and DNS responds. Test with an ordinary webpage you can normally access without signing in, and note the exact time and error.

  1. Record the current settings

    Note the selected server and Global Routing mode in Home, and the active configuration in Config. Save the original settings before making changes so you can distinguish the initial issue from anything introduced during testing.

  2. Turn off the connection

    Turn off the connection switch in Home. If it reconnects automatically, check Settings → On Demand, temporarily disable the trigger, then make sure the connection is off.

  3. Test a direct connection

    Open a webpage known to work without a proxy in Safari. If it still won't load, check Wi-Fi sign-in requirements, cellular data access, and the underlying network first. Don't start by changing rules.

  4. Reconnect and retest

    Turn the connection back on and test the same webpage again. Keep the network, server, and destination the same, and change only one setting per test.

  5. Compare networks

    If possible, switch between Wi-Fi and cellular data and test the same destination. If it fails on only one network, check that network's DNS resolution, port access, or transport restrictions first.

2. Check the server address, port, and protocol settings

In Home, confirm which server is actually selected; don't rely on the subscription group name. Open the server's edit screen and compare Address, Port, Type, and authentication fields with your own service details. A successful subscription update only confirms that its contents could be retrieved and parsed—it doesn't prove that every server in the list is currently reachable.

Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different settings. Check the fields for the protocol the server actually uses. For TLS, verify the server name and certificate requirements; for transport settings, check parameters such as the path and hostname. Don't try to fix the issue by changing Type at random.

If the connection log contains any of the messages below, use the stage where it appears to guide your investigation. Different protocols and error sources may add prefixes or other details. Keep the full log rather than drawing conclusions from one word.

Error: connection refused

Cause: The destination or an intermediary rejected the connection. Common causes include a mismatched port or a service that isn't listening.

Fix: Check Address and Port, then ask your service provider whether the port is currently listening.

Error: i/o timeout

Cause: A network read or write didn't complete in time. This alone doesn't tell you whether traffic was dropped, the server failed to respond, or a later handshake stalled.

Fix: Note the destination and stage where the timeout occurred. Keep the configuration unchanged, switch networks, and test again. Then compare with another server you already have in the same subscription.

Error: no such host

Cause: The lookup didn't return a usable host address. The server hostname may be incorrect, or there may be an issue with the DNS path.

Fix: Check the domain in the error first. If it's the server address, resolve that issue before testing webpage domains.

3. Use Global Routing to narrow down the issue

Go to Home → Global Routing and confirm the current mode. Direct, Proxy, Config, and Scene are different ways of handling traffic—not four levels of connection quality. Note the original mode before switching temporarily, and restore it when you're done.

ModeWhat it doesHow it helps troubleshoot
DirectRoutes traffic directlyChecks the basic direct connection; it can't verify whether the proxy server works.
ProxyRoutes traffic through the proxyTemporarily tests the current proxy route, reducing the effect of rules in the configuration.
ConfigApplies rules from the active configuration fileUseful for checking rule order, policy names, and the final fallback.
SceneApplies settings based on configured conditionsCheck which scene the current network triggers and which settings that scene actually uses.

Compare the same server and URL in each mode. If Proxy works but Config doesn't, check the rules and policies first. Keep in mind that switching modes can also change the request path and DNS behavior. If Proxy fails too, revisit the server settings and DNS rather than repeatedly adding domain rules.

Bottom line: Fix the route before changing rules

Prioritize rule troubleshooting only when the same destination works through a fixed proxy route but consistently fails in Config. If both modes fail, leave the rules as they are and check the server and DNS path they share.

4. Check DNS: identify which domain fails to resolve

DNS issues can occur at two points: the remote server's hostname must resolve to establish a connection, and the webpage's domain must resolve when you visit it. A failure at the first point can prevent the proxy route from being established; a failure at the second may leave the connection on while the webpage keeps loading. Checking the actual domain in the error is more useful than repeatedly changing DNS servers.

Check the app's DNS settings in Settings → DNS, and see whether the active Config file contains DNS settings too. Note the current values and where they come from. Changing Settings alone may not be enough if the active configuration specifies other DNS behavior. Check request logs to understand which settings are taking effect.

53
Ports commonly used by traditional DNS over UDP and TCP
853
Standard default port for DNS over TLS
443
HTTPS port commonly used by DNS over HTTPS

5. Check rule order, policies, and FINAL

In Config, confirm which configuration file is active, then inspect its rules. Rules are generally matched in order, so an earlier match can determine whether later rules ever handle a request. Adding a domain rule at the end of the file may have no effect if an earlier rule already captures that traffic.

The snippets below are for recognizing syntax only; they aren't a general-purpose replacement for your current configuration. example.com is an example domain, and 192.0.2.0/24 is a documentation-only network range. For real troubleshooting, use the domain that actually fails, request logs, and your own policies.

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,PROXY,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

If the configuration references a custom policy group, check the selection currently active within that group too. A rule matching a group name doesn't guarantee that traffic will use a proxy—the group may be set to direct traffic or to a server that's currently unavailable. Use request logs to trace “destination domain → matched rule → policy group → actual route”; this is more reliable than checking rule text alone.

6. Common questions and wrapping up

Why is latency shown if webpages still won't load?

First, confirm which test method Connectivity Test uses. A TCP connection or response from a test address covers only part of the route. Retest the site that actually fails and check authentication, DNS, and rule matches. A latency reading does not prove that every website is reachable.

If only one website won't load, should I re-import the subscription?

Test other webpages through the same server, then check the failing site's request domain and policy. If Proxy works but Config fails, check the rules for that domain and its related resources first. Re-importing a subscription usually won't fix a domain-routing mistake in the configuration file.

How can I test a direct connection if it turns back on after I disconnect?

Go to Settings → On Demand and temporarily disable the relevant trigger. Then return to Home, turn off the connection, and check its status. Restore the original setting after testing so an On Demand reconnect isn't mistaken for a failed manual switch.

Why does the original server still fail after the subscription updates?

An update refreshes the list; it doesn't guarantee that every server works. In Home, check which entry is actually selected and whether its address, port, or authentication details have changed. If the list doesn't match your valid service details, check with your existing service provider. Re-importing the same link repeatedly can create duplicate entries without fixing anything.

Once the connection works again, undo temporary changes made for testing: restore your usual Global Routing mode, confirm the correct file is selected in Config, and reinstate any On Demand conditions you need. Then retest a direct webpage, a webpage that should use the proxy, and the specific feature that failed. Checking only the homepage may miss sign-in or image requests.