For readers who have a Subscribe link from their own provider but can’t import it into Shadowrocket or see any server entries. First, make sure the full URL was saved. Then determine whether the request failed, the response couldn’t be parsed, or the list came back empty. Finally, check your provider’s status and when you refreshed. Each step has an observable result, so there’s no need to repeatedly delete and re-add the configuration.
First, identify the issue: did the request fail, or did it return an empty list?
In Shadowrocket, Subscribe is a way to retrieve server information; it isn’t the server itself. An update involves reading the saved URL, requesting content from your provider, parsing that content, and adding entries to the list. A successful save only confirms that the subscription entry was stored. If no new servers appear in Home, that alone doesn’t mean the URL was parsed successfully.
Start by noting what happened: did you see a specific error during the update? Is the Subscribe entry still there, but the server list is empty? Or did the previously available entries simply remain unchanged? Each points to a different check. For a specific error, start with the URL and network request. If the update completes but the list is empty, check what your provider actually returned. If the old entries haven’t changed, your provider may not have published new content yet.
Error: Failed to load subscription
Cause and fix: Shadowrocket couldn’t retrieve usable subscription content. The URL may have expired, or your current network may not be able to reach it. Check the original URL from your provider and your account status, then try updating again. Don’t assume this error means a protocol parameter is incorrect.
If the issue occurs on only one device, check whether that device’s current network can reach the subscription URL from your provider. If multiple devices get the same result from the same URL, check with your provider first. Never post a full URL containing credentials on a public website or forum, even for troubleshooting.
Step 1: Check that the Subscribe URL is complete
In Home, tap “+” in the upper-right corner, set Type to Subscribe, then enter your full URL in the address field and save it. Entering only your provider’s domain, copying part of the URL, or including explanatory text won’t work as a complete subscription URL. If a Subscribe entry already exists, check the saved URL first. Edit it only after confirming it’s incorrect, rather than adding multiple entries that look alike.
Get the original URL
Copy the subscription URL from your own provider’s account page. Make sure you’ve copied the full URL, not a display name or page title. Your subscription is part of your own service configuration; the app purchase and network service are billed separately.
Check the beginning and end
Make sure the URL starts with a complete scheme such as
https://and that no parameters are missing at the end. Example format:https://example.com/sub?token=xxxx. The domain and credentials shown here are fictitious and won’t connect to a service.Check the separators
Keep the original query string characters, including
?,&, and=. Line breaks added by a messaging app, a truncated copy, or replacing standard punctuation with full-width characters can change the parameters your provider needs to recognize the URL.Save and update
After saving the Subscribe entry, use the refresh action available in Home to update it. Check whether server entries appear or an error is shown. Don’t judge the update by the old list immediately after saving.
Some URLs contain access credentials. Even when the domain and path are the same, different parameters may identify different accounts to your provider. You can compare the start and end of the URL and check whether the parameters are present, but don’t show full credentials in public screenshots. If you think your credentials have been exposed, contact your provider rather than changing parameters at random in the app.
Step 2: Check that the response can be parsed
A reachable URL doesn’t necessarily return a server list. Your provider may return a login page, an expiration notice, an access restriction page, or text in a format that doesn’t match the import method. The network request may appear to complete, yet parsing can still produce no usable entries. Use an import format your provider confirms is supported by Shadowrocket; don’t treat any webpage URL as a Subscribe URL.
If your provider offers a way to view subscription content, check the account page to confirm that server entries are actually available and which import format the URL uses. Don’t manually delete characters, rearrange fields, or guess how to convert the response to “fix the encoding.” Your provider generates this content; even if manual edits work once, the next update may fail again.
Also check whether the list only appears empty because you’re looking in the wrong place. Make sure you’re checking the updated server list in Home, not looking for servers on the Config page. Global Routing options such as Proxy, Direct, Config, and Scene affect how traffic is handled; changing them won’t turn an empty subscription response into server entries. Resolve the import issue first, then check routing.
Step 3: Check your provider’s status and update timing
Your provider maintains the subscription content. Changes to your account, reset credentials, an updated subscription URL, or temporary request restrictions may mean a previously saved URL no longer returns the same content. If the original URL is correct but your provider’s account page shows no available entries, check with your provider first. Shadowrocket can’t generate server information when the response is empty.
Keep in mind: no change after one refresh doesn’t necessarily mean the import failed
Compare your provider’s account page with the list in Home. If your provider hasn’t published new entries, repeated refreshes may return the same list. If new content is available from your provider but the app keeps showing an error, go back to checking the URL and request result.
Update timing matters too. When switching to a new subscription URL, save the correct URL first, then manually update the relevant entry. Waiting for an old entry to update automatically won’t replace its URL. If your provider has just changed the content, follow its instructions to confirm the changes are published before updating and checking the result. Rapidly repeating actions can make it hard to tell which request used which URL, so change one thing at a time.
- Your provider’s account page shows a new URL: copy it, check the Subscribe entry, then update it.
- The account page still shows the old content: confirm your provider has published the changes. There’s no need to keep changing Global Routing.
- The account page shows entries, but the app keeps reporting a load failure: note the error, when it occurred, and which network you used. Ask your provider to check whether the URL can be accessed. Don’t share full credentials publicly.
If results vary across networks, note how the same Subscribe entry updates on each one. This can help distinguish a network access issue from a problem with the content returned by your provider. Keep the URL and account status unchanged during testing. Changing the network, URL, and configuration at the same time makes it impossible to isolate the cause.
Once the list is restored, check the connection instead of changing the subscription further
When server entries appear in Home, the subscription has produced a visible result from fetching and parsing. If connections still don’t work, check the server parameters, your provider’s status, and routing separately rather than treating it as an empty-list issue. For example, the selected entry in Home and the Global Routing mode affect subsequent requests. Settings → On Demand determines whether to connect on demand under specified conditions, but it won’t fix an expired subscription URL.
- First, confirm that the expected entries appeared after the update, and check that you haven’t selected an old server by mistake.
- Next, check whether Home → Global Routing is set to Proxy, Direct, Config, or Scene, and choose the mode that fits your needs.
- If you need automatic connections based on network conditions, check the configured conditions in Settings → On Demand. Test this separately from subscription import.
Use a consistent troubleshooting order: URL completeness → response content and format → provider status → update result → connection settings. The point isn’t to guarantee every issue can be fixed in the app, but to identify where it occurs. Your provider needs to verify the URL and response content; connection issues after entries appear belong in the routing and server parameter checks. Keeping notes on what changed and what happened before and after is more useful than resetting several settings at once.
Verify the official App Store listing and get started
Shadowrocket is available on the App Store from developer Shadow Launch Technology Limited as a one-time purchase. Check the App Store listing for device compatibility and system requirements. This site provides official usage guides and does not offer subscription services. If you’re new to the app, start by verifying the listing, then follow the getting-started steps.
Visit the App Store verification guide Read the guide