Shadowrocket Subscription Update Failed or No Nodes? Check the URL and Update Timing

Subscription parsing can fail or return no nodes after an update. Check for an incomplete URL, an expired or restricted subscription, or incorrect update timing.

In this guide

For users with their own provider and subscription who can’t update or see nodes in Shadowrocket. Keep the existing configuration and distinguish request failures from parsing errors and empty results. Then check the URL, account status, and network used for updates. Change one variable at a time; repeatedly deleting the subscription or refreshing can obscure the cause.

First, distinguish a failed subscription update from a failed node connection

A subscription update fetches server configurations from a URL. A connectivity test uses an imported server to access the network. These are separate processes. Existing nodes may still connect even if the subscription URL is no longer valid; a successful update doesn’t mean every server in the subscription can connect. In Home, identify the affected subscription group and note the time, node count, and full error message.

An “empty list” can mean two things: the existing entries are actually gone, or they’re simply not visible in the current view. Clear any search in Home, expand the subscription group, and make sure you’re looking at the right group. Don’t use the rule file list in Config to check whether nodes exist—rule configurations and server subscriptions serve different purposes.

3 stages
Subscription request → Response parsing → Node display
2 types of tests
Check subscription updates separately from Connectivity Test
1 variable
Change only one of the URL, network, or update method at a time
  1. Note the node count before updating. If any existing nodes still work, keep them and don’t delete the subscription group.
  2. In Home, update the target subscription once. If your interface supports pull-to-refresh, use it and check the result for the correct group.
  3. Classify the result as a request failure, parsing error, successful update with no nodes, or visible nodes that fail to connect. Then follow the relevant troubleshooting steps.

Check the subscription URL: a complete URL isn’t necessarily a subscription URL

Return to your existing provider’s account page and copy the URL specifically labeled as compatible with Shadowrocket. Don’t reconstruct it from a chat preview, truncated notification, or text extracted from a screenshot. An ellipsis shown on a webpage isn’t part of the URL, and neither an account login page nor a plan description page is a subscription endpoint.

Subscription URLs often include query parameters used for identification or format selection. After pasting, check for extra quotation marks, spaces, line breaks, or punctuation—especially whether everything after ?, &, and = is intact. Parameter values may be case-sensitive. Don’t edit them or remove trailing parameters to “simplify” the URL.

https://example.com/sub?token=xxxx

The value above is an example and won’t work as a real subscription. Treat a real token as a credential; don’t post it in public comments, screenshots, or online conversion tools. Some subscriptions put credentials in the URL path rather than in a token parameter, so the absence of that parameter doesn’t mean the URL is wrong. Use the original URL provided by your own service provider.

Check for expired access, rate limits, and response content based on the error

The following are common network- or HTTP-level error identifiers; not every platform displays them verbatim. Record the exact message instead of assuming your account has expired based only on a generic “failed” notice. If the app shows only a generic error, check the update time and ask your provider to review its access logs.

HTTP 401 Unauthorized

Cause and fix: The request wasn’t authenticated. Credentials may be missing, reset, or expired. Copy the currently valid subscription URL from your account and ask your own provider to confirm the credential status.

HTTP 403 Forbidden

Cause and fix: The server rejected the request, possibly because of account permissions, the source address, or an access policy. Confirm that your account has an active subscription and ask your provider whether the current network or request method is restricted.

HTTP 429 Too Many Requests

Cause and fix: The request exceeded the server’s rate limit. Stop refreshing repeatedly. If the response includes Retry-After, wait as instructed; otherwise, try again after the interval specified by your provider.

HTTP 200 OK, but parsing fails or the result is empty

Cause and fix: A successful HTTP request doesn’t guarantee valid subscription content. The response may be a login page, verification page, or empty. Ask your provider to check what the URL actually returns and whether it’s compatible with Shadowrocket.

A subscription may be returned as encoded text or another supported format, so don’t assume it’s corrupted just because it looks like gibberish in a browser. Conversely, a well-designed webpage opening successfully doesn’t prove the subscription is valid. What matters is whether the response contains server configurations the client can recognize—not whether a webpage renders correctly.

Bottom line: address server-side rejection first when you have a status code

If the recorded status is 401, 403, or 429, first address credentials, permissions, or the refresh interval. Changing Global Routing repeatedly won’t fix an expired token or bypass server-side access restrictions.

Check the network used for updates and Update via Proxy

If there’s no HTTP response and you see only a timeout or DNS error, check the network path. First confirm that the system is online. If the Wi-Fi requires web-based authentication, complete it first. Then run one controlled test using the same subscription URL. Don’t change DNS, routing mode, and subscription parameters at the same time.

On interfaces that offer this option, go to Settings → Subscribe → Update via Proxy to check whether subscriptions are updated through a proxy. Before enabling it, confirm that the existing server selected in Home can connect, then update the target subscription. Menu locations and labels vary by platform; don’t assume every platform has the same layout.

What you seeNext stepWhat this tells you
Ordinary webpages won’t open eitherRestore Wi-Fi or mobile data and complete any network authenticationDon’t change the subscription URL or rules yet
Direct update times out, but an existing server connectsEnable Update via Proxy and retry onceSuccess only shows that the two network paths have different reachability
Update via Proxy fails, but a direct update succeedsUse the update method that works and check the proxy pathDon’t confuse the update method with your everyday routing policy
Both methods return 403Record the time and status code, then contact your own providerCheck server-side access restrictions first

In Home → Global Routing, Proxy, Direct, Config, and Scene select a routing mode; they don’t check whether a subscription endpoint is valid. In Config, DOMAIN-SUFFIX, IP-CIDR, GEOIP, and FINAL affect policy matching for applicable traffic. Adding FINAL,PROXY to a rule can’t restore an empty subscription response.

Update succeeds but the list is empty: check the account, format, and group

If the client reports a completed update but the list is still empty, check the view first, then confirm whether the server actually assigned any nodes. Being able to sign in or having past orders doesn’t mean your subscription is currently active. Check the validity period, traffic status, and subscription access in your existing provider account. Refer to that provider for its specific suspension rules.

  1. Rule out a display issue: Clear the search field, expand the target group, and make sure you aren’t viewing another subscription or page.
  2. Check the output format: If your account page offers multiple formats, choose one explicitly supported by Shadowrocket. Don’t enter a rules file URL as a server subscription.
  3. Check the returned list: Ask your provider whether this request returned a non-empty list of servers—not just whether the endpoint returned status 200.
  4. Check the parseable content: If the response isn’t empty but no nodes appear, share a redacted error message and ask your provider to check the fields and format compatibility. Don’t send a full configuration through public channels.

Don’t manually change every entry to the same protocol. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different fields and connection methods; changing a protocol name doesn’t convert the format. If only some entries are missing, compare their types with the provider’s output instead of deleting everything first.

Bottom line: collect separate evidence for an empty list and a parsing error

Ask your provider whether the response is non-empty and contains valid server configurations. That’s more specific than repeatedly asking whether the URL opens. Get this answer first, then determine whether the issue is account allocation or subscription format.

Update timing and recovery steps

After a renewal, credential reset, or account change, the client may not yet receive the server’s final state. Don’t assume a fixed wait time. Check whether your provider specifies an activation time or refresh interval, and wait for confirmation before updating. If you get a 429, especially avoid repeated requests in a short period.

Keep old entries that still work; they provide a reference for network tests. Before recovery, don’t uninstall the app, delete Config, and clear the subscription all at once. These steps remove useful information for comparison and can’t fix an empty response from the remote server. Keep any existing backup secure, as an exported configuration may contain server credentials.

  1. Note the current subscription name, number of existing entries, and a redacted record of the error.
  2. Get a valid URL from your account page and change only the target subscription setting.
  3. On a stable network, update once using the confirmed method and record the result.
  4. Once entries reappear, select a server in Home and run Connectivity Test, then test the pages you need to access.
  5. If entries return but connections still fail, troubleshoot the connection separately. The issue is no longer an empty subscription.

Subscription update FAQ and details to share when reporting an issue

Why can old nodes still work when the subscription update fails?

Old entries are stored locally, while an update makes a new request to the subscription endpoint. Keep the old entries, check whether the subscription credentials were reset, and review the status code for the update request. A successful connectivity test doesn’t confirm that the subscription is valid.

Will refreshing more often make it recover faster?

No. Repeated refreshes can trigger rate limits. If you get a 429, wait according to Retry-After or your provider’s instructions. If no interval is specified, ask your provider rather than using automatic retries.

The URL opens a login page in a browser. What should the client do?

First confirm that you copied the subscription endpoint, not the account page. The client doesn’t automatically share the browser’s logged-in session. Copy the dedicated subscription URL from your account again. If it still returns a login page, ask your provider to check the endpoint.

If only a few nodes are missing after an update, should I reinstall?

First check whether your provider changed the returned list, then check the formats and protocol fields of the missing entries. If the other entries work, reinstalling isn’t the first step. Record which entries are missing to help distinguish a server-side change from a parsing issue.

Do I need to provide my full subscription URL when reporting an issue?

For public reports, share only the platform, time of the issue, exact error message, node counts before and after the update, network type, and Update via Proxy status. Hide tokens, passwords, QR codes, and full URLs containing credentials. If account details need to be checked, contact your own provider through a private support channel.

For more help with client connections and rules, see Troubleshooting. The steps in this article assume you already have your own provider and subscription.

Download Shadowrocket for all platforms