For users with an existing service and subscription who can’t see servers after adding it to Shadowrocket or can’t update it manually. Check the URL, response content, and access route separately. If the list is empty on the first import, don’t assume toggling the connection switch will fix it, and don’t delete older entries that still work.
1. First, identify the issue: nothing imported, the update failed, or the entries don’t work
Updating a subscription is separate from connecting to a server. The app first requests the subscription URL, receives a response, and parses any supported server details into the list. Seeing a subscription group only confirms that its details were saved; it doesn’t mean the latest request succeeded. Likewise, seeing older entries doesn’t confirm that an update just completed.
In Home, find the affected subscription group, check whether it’s expanded, and note the message shown after a manual update. If older entries are still there, keep them while you investigate the latest update. If the list was empty from the start, focus on the URL and response. These symptoms have different starting points and shouldn’t be handled as if they were the same issue.
| What you see | Check first | Avoid for now |
|---|---|---|
| No servers appear after adding the subscription for the first time | Whether the URL is complete and the response contains valid entries | Repeatedly switching Global Routing |
| Existing servers remain, but the update fails | Subscription status, access route, and error message | Deleting the subscription and all existing entries |
| Servers appear in the list, but connections don’t work | Server settings, connection tests, and service status | Assuming the subscription format is wrong based only on a failed connection |
| Only the group name is visible; no entries appear | Expand the group and confirm whether it really has no entries | Immediately adding the same URL again |
2. Check the URL: copy the subscription address, not an account page
Copy the Shadowrocket subscription URL again from your existing service’s management page, then compare it with the URL saved in the app. An account homepage, sign-in page, purchase history, and subscription endpoint serve different purposes. Being able to open a webpage in a browser doesn’t mean it’s a subscription the app can parse.
- Check where you copied it from. Use the copy option specifically intended for subscription imports on your service’s page, rather than copying the browser’s current address bar. If different formats are available, choose the one for Shadowrocket; don’t rely on the file extension alone.
- Check the beginning and end. Look for accidental quotation marks, spaces, or extra text at the start, and check whether a messaging app truncated the end. Visual line wrapping doesn’t necessarily change the URL, but an actual line break inserted into it may make it invalid.
- Keep the query parameters. Parameters after
?may be used for authentication, and additional parameters joined with&may affect the response format. Don’t remove them just to make the URL look “cleaner.” - Don’t manually decode credentials. Sequences such as
%2Fand%2Bmay be valid percent-encoding. Don’t replace them or change+to a space. - Check whether the URL was reset. If the service reset the subscription credentials, the old URL may stop working immediately. Replace the URL saved for the subscription with the new one to avoid confusing old and new groups.
A subscription URL and a share link for a single server are different kinds of input. Content beginning with ss://, vmess://, or trojan:// usually describes a server; being copyable doesn’t make it a remote subscription URL. When adding a server via Home → Add Server, first identify what kind of content you have, then use the appropriate input method.
3. Check the service: a successful request doesn’t guarantee parseable content
If the list is still empty after copying the URL again, check your existing service’s management page to confirm the subscription is valid, contains available entries, and hasn’t been reset. The client can only process what the server actually returns. If the response is a sign-in page, verification page, or empty content, repeatedly importing the same URL won’t produce servers.
The HTTP statuses on these cards are standard response codes used to explain diagnostic information you’ve obtained. They don’t mean Shadowrocket displays the same error message in every case. If all you see is “Update Failed,” note the exact message rather than assuming your account has expired.
Error: HTTP 401 Unauthorized
Cause and fix: The endpoint rejected the current credentials. Check your existing service’s management page to see whether the subscription URL was reset, then copy a valid URL and update again.
Error: HTTP 403 Forbidden
Cause and fix: The endpoint rejected the request, possibly due to permissions or access restrictions. Ask your service provider why the response was returned; don’t keep changing protocol settings based on this status alone.
Error: HTTP 404 Not Found
Cause and fix: The requested path doesn’t exist, or the server is using this status to hide an expired resource. Check the full path and confirm you aren’t using an old subscription endpoint.
Error: HTTP 429 Too Many Requests
Cause and fix: The request triggered a server-side rate limit. Stop refreshing repeatedly, wait as directed by the server, and check whether multiple devices are updating too often.
Even with HTTP 200, the response might be an HTML page that says “Please sign in,” rather than subscription data. Readable text also might not contain server details the app supports. Ask your service provider to confirm the actual content type returned for your account, rather than just whether the page opens in a browser.
In short: check the response content before troubleshooting parsing
If the service confirms it returned a sign-in page or an empty result, address the account or endpoint status first. Check format compatibility and update settings only after confirming the response contains applicable server entries.
4. Check when updates run: review Settings → Subscribe and the access route
Open Settings → Subscribe and review the subscription update options, especially Update via Proxy. This controls the access route used for subscription requests; it won’t fix an incorrect URL or create server entries. If no usable servers are available for the first import, don’t assume enabling this option will complete the request.
- Start with one manual update. Return to Home and pull down to update, then check the result for the affected subscription. Change one thing at a time and note the message before and after each change. Avoid changing the URL, network, and routing mode all at once.
- Check that the basic network connection works. If your current Wi-Fi requires a web login, complete the system’s network authentication first. Being able to open a regular webpage only confirms that some network functions work; it doesn’t prove the subscription domain is reachable.
- Then decide whether to use Update via Proxy. If you already have a usable server and the subscription endpoint needs to be reached through it, enable this option, connect to that server, then return to Home and update manually. If no usable server is available, first address the access requirements for retrieving the subscription.
- Check the automatic update options. Review the available update options and their status in Settings → Subscribe. Opening the app, refreshing manually, and background activity happen at different times; don’t treat system background scheduling as a precise timer.
- Confirm the result in the foreground. After changing settings, keep the app open and run a manual update. Don’t assume the subscription refreshed just because the connection switch is on or some time has passed.
Proxy, Direct, Config, and Scene in Global Routing are routing mode choices; they’re separate from the subscription update settings. Config mode uses rules from the current Config, and rule order and policies may affect the request route. But don’t make broad rule changes before checking the URL and response content.
5. If the list is still empty: narrow it down with four questions
These four questions cover first-time imports, format recognition, network differences, and keeping older entries. Choose the steps that match what you’re seeing; there’s no need to try every setting. Protocol names only describe connection types. Seeing Shadowsocks, VMess, VLESS, Trojan, Hysteria2, or WireGuard in a name doesn’t prove the full subscription was parsed correctly.
The list was empty on the first import. Should I turn on the connection switch first?
First, check Home for any usable servers. If there are no entries, the connection switch can’t retrieve the subscription for you. Return to your service’s page to check the URL and content, then review whether Update via Proxy in Settings → Subscribe fits your current setup.
The same URL opens in my browser. Why does parsing still fail?
Your browser may already be signed in, or it may be showing a sign-in or verification page. Ask your service provider to confirm that a direct request to the URL from the app returns subscription content for Shadowrocket, rather than only checking whether the webpage appears to load successfully.
It fails on Wi-Fi but updates over cellular. Does that mean the URL is bad?
If the same URL works on another network, first check authentication, DNS resolution, or access restrictions on the network that failed. Keep the URL and Subscribe settings unchanged while comparing results. Don’t reset the subscription credentials at the same time, or you won’t know which change made a difference.
The update failed, but my old servers still work. Should I delete and add them again?
Keep the existing entries for now, note the update error, and check the service status. A working old server and an accessible subscription endpoint are two separate things. Deleting the entries may remove a route that still works, and won’t fix endpoint permissions or response content.
6. Test again and report the issue with useful details
Once the issue is resolved, check Home to make sure the expected entries appear in the correct group, then test server connections separately. A higher server count doesn’t necessarily indicate success; the list should match what your account currently returns. Don’t assume the latest update failed just because older entry names haven’t changed.
- Record what you did: Was this the first time adding the subscription or an update to an existing one? Did you copy the URL again or change Update via Proxy?
- Record the network: Were you on Wi-Fi or cellular? Did the network require authentication? Was the app open during the update?
- Record what happened: Did the group appear and expand? Were older entries retained? What was the exact error message?
- Record the comparison: Keep the URL unchanged and switch networks, or keep the network unchanged and change the update route.
- Protect your credentials: Contact your service provider through its official support channel. Redact the full subscription URL and authentication details from screenshots first.
Ask your service provider to check URL validity, account permissions, and response content. For help understanding app menus and settings, see the tutorial and protocol guide. This site does not provide, sell, or recommend servers or subscriptions. Buying the client is not the same as purchasing a network service, and getting the app does not include a server list to import.