This guide is for Shadowrocket users who already have a provider and subscription. First identify whether you have a server subscription, a link for one server, or a remote configuration. Then choose Subscribe, Add Server, QR code, or clipboard. After importing, check the entries, update the subscription, and test the connection—saving successfully does not necessarily mean you can connect.
1. Identify the content: a subscription link is not a configuration file
In Shadowrocket, Home manages servers and connections, Config manages rule configurations, and Settings controls app behavior. The same HTTPS address can return very different content: a server subscription provides connection entries, while a remote configuration may contain DNS, rules, and policies. Before choosing an import method, check how your provider describes the link; its appearance alone is not enough to identify it.
| Content you have | How to identify it | What to do |
|---|---|---|
| Server subscription | One URL provides a group of servers and can be updated later | Home → Add Server → Type → Subscribe |
| Single-server link | Starts with a protocol prefix such as ss://, vmess://, vless://, or trojan:// | Scan it, import it from the clipboard, or enter the server details manually |
| Remote configuration | Contains configuration sections such as [General] or [Rule] | Manage it in Config; do not enter it as a server subscription |
Scanning a QR code or using the clipboard is only a way to provide the content; it does not determine what kind of content it is. A QR code could contain a single server link or a subscription URL. Copied text could also be an account-management webpage. The https://example.com/sub?token=xxxx URL used here is deliberately fictitious and only illustrates the URL structure; it cannot be used to connect.
Bottom line: identify the returned content before choosing an import method
To add an updatable group of servers to Home, add a server subscription. To change how rules are evaluated, work with Config. If an import fails, do not try the same unknown URL in every available field.
2. Config → Subscribe: identify the subscription type first
Before using Subscribe in Config, confirm that you are adding a configuration subscription—not a server list for Home. Both configuration files and server subscriptions can be maintained through remote URLs, but they are different objects. If your provider explicitly identifies the link as a server subscription, go to Home → “+” in the upper-right corner → Add Server, then set Type to Subscribe.
-
Confirm what the link is for
Check the provider’s original instructions to see whether the URL is for a remote configuration or a server subscription. Get the URL from your provider; do not substitute an unfamiliar link found in search results.
-
Open Config
Go to Config → Subscribe and check the configuration source you plan to add. If your URL only provides a server list, return to Home and add it using the Subscribe type.
-
Review the configuration
After retrieving a remote configuration, check its DNS, rules, and policy references before deciding whether to enable it. A file appearing in the Config list does not mean it is now the active configuration.
-
Confirm the selection
To route traffic by rules, go to Home → Global Routing, select Config, and confirm that the expected file is active on the Config page.
For example, DOMAIN-SUFFIX,example.com,DIRECT sends the matching domain suffix to DIRECT; it is not a server address. Even if a configuration’s rules load correctly, they cannot replace the address, port, and authentication details a server requires. If the server list is empty, switching rule files repeatedly will not create server entries.
3. Add Server: add a subscription or enter a server manually
Add Server can add a server subscription or let you enter one server manually. The key difference is Type: choose Subscribe and enter the subscription URL, or choose a specific protocol and enter that server’s connection details. Do not paste a full subscription URL into a single server’s Address field.
-
Open Add Server
Go to Home and tap “+” in the upper-right corner to open Add Server. Choose Type before filling in the other fields to avoid entering details under the wrong type.
-
Choose a type
For a server subscription, choose Subscribe. If you only have details for a single server, choose the matching type specified by your provider, such as Shadowsocks, VMess, VLESS, Trojan, Hysteria2, or WireGuard.
-
Enter the details
For Subscribe, enter the full URL, such as the example address https://example.com/sub?token=xxxx. For a manually added server, enter Address, Port, and the required authentication details in their respective fields. A webpage URL cannot replace the server address.
-
Save and verify
Save, return to Home, and check that the subscription group or server entry appears. If the subscription has not populated with servers, update it and check the result instead of immediately adding it again.
Use the port number specified by your provider. For example, if the details specify Port 443, enter 443; do not assume every server uses that port just because the subscription URL starts with HTTPS. Authentication methods also differ: UUIDs, passwords, and public keys are not interchangeable. Check TLS, transport settings, and server name against the original details, one field at a time.
- The
?token=xxxxin a subscription URL illustrates a query parameter. When copying the real URL, keep the entire parameter intact. - Before saving, remove any leading or trailing spaces, Chinese punctuation added by a messaging app, and unintended line breaks.
- Give the subscription a recognizable label so you can identify its source when updating it, but do not put authentication keys in the label.
4. Scan a QR code: identify the content before confirming
Use the QR code option in Home to scan a code provided by your service provider. Allow camera access when prompted the first time. If the QR code is on the same device’s screen, you do not need to rewrite the URL to scan it; use the original link via the clipboard or add it manually instead.
-
Prepare the QR code
Make sure the entire QR code is visible, including its edges. Do not post a code containing personal authentication details publicly or use an edited image that obscures important areas.
-
Scan the code
Open the QR scanner in Home and position the code within the scanning area. If the camera view is blank, go to system Settings → Privacy & Security → Camera and check Shadowrocket’s camera permission.
-
Check the result
After scanning, check the type and fields shown in the app. A single-server link should produce the corresponding server details; a subscription URL should be handled as Subscribe.
-
Check what was added
Return to Home and confirm the new content. If only one server appears, first check whether the QR code contained just one link; do not assume the subscription is missing.
A successful scan only means the QR code was read; it does not mean the remote subscription was fetched successfully. If the code contains an account-management webpage, reading its HTTPS URL will not turn it into a usable server list. Go back to the provider’s subscription page and get content specifically intended for importing into a client.
5. Import from the clipboard: copy the original link, not the entire message
Clipboard import is useful when switching between a browser and Shadowrocket on the same iPhone or iPad. Copy the full subscription URL or single-server link, then return to Shadowrocket. If the app prompts you to read or import the content, check it before confirming. If the system asks whether to allow pasting, choose according to your needs for this import.
- Copy only the link: Do not include “Tap to import,” a list number, quotation marks, or explanatory text.
- Check the protocol prefix:
ss://,vmess://,vless://,trojan://, and a regular HTTPS subscription URL are different types of content. - No prompt appears: For an HTTPS server subscription, go to Home → Add Server → Type → Subscribe and paste the URL into the URL field.
- Do not edit the encoding: Percent-encoded characters and long authentication strings may be essential. Do not delete them just to shorten the link.
For example, if you copy a single link that starts with trojan://, importing it as one entry is expected for that content type. A subscription URL, on the other hand, requires the app to access a remote address to retrieve the list. These involve different network requests, so clipboard content alone does not tell you whether the subscription server is reachable.
6. After importing: update and verify three separate results
After importing, check three things in order: saved locally, updated remotely, and connected successfully. A successful local save means the record was stored in the app. A successful remote update means a subscription response was retrieved. A successful connection also depends on the server details, network reachability, and current routing settings.
- In Home, check the subscription group name and server entries. If there are no entries, update the subscription and read the error message. If old entries are present, do not delete the entire subscription first.
- Before updating, check whether the current network can reach the subscription URL. If the app offers an option to update through a proxy, enable it only when you already have a working connection. You cannot rely on a server you have not retrieved yet to fetch the subscription for the first time.
- After updating, check which server is selected. The list may have changed, and a previously selected entry may have been replaced or removed.
- Select a server and turn on the connection switch. The first time you connect, follow the system prompt to allow adding a VPN configuration, then use Connectivity Test to check the connection.
- Check Home → Global Routing. Config evaluates traffic using the active configuration; Proxy and Direct apply a consistent routing choice; Scene organizes behavior according to the selected scenario and is not another subscription format.
A successful Connectivity Test does not prove that every website is reachable. If the test succeeds but a particular site does not load, check DNS and rule matching instead of repeatedly importing the same subscription. Settings → On Demand manages conditions for on-demand connections; it does not fix a subscription URL or fill in missing authentication details.
Bottom line: keep the existing record and identify where the failure occurs
If an update fails, keep the existing entry and distinguish a timeout, authentication rejection, or parsing error before addressing the cause. Change the source only if you have confirmed that the subscription URL has changed. Adding the same URL repeatedly usually just makes it harder to identify the right entry.
7. Common questions about importing subscriptions
I added a subscription. Why is Home still empty?
Open the record and check that Type is set to Subscribe and the URL is complete, then update it. If the response is actually a login page, error page, or remote configuration, it cannot produce a server list. Check the provider’s instructions to confirm what the link is for; do not try to construct server details manually from webpage text.
The update timed out. Should I delete it and add it again?
Keep the record, try a different working network, and check that the URL has not expired or been altered. If you already have a server that connects successfully, connect to it and then try updating through the proxy if the app provides that setting. If this is your first import and you have no working server, first resolve why the subscription URL is unreachable.
The QR code scanned successfully. Why was only one server imported?
Check whether the original content was a single protocol link. A QR code does not necessarily represent an entire subscription. To get an updatable server group, get a server subscription URL from your provider and add it via Home → Add Server → Type → Subscribe.
What if there is no import prompt after I copy a link?
First check that you copied the raw link, not its title. For an HTTPS subscription, open Add Server, choose Subscribe, and paste the URL manually. If the system denied the paste request, allow pasting when you try again. Do not repeatedly copy entire chat messages containing credentials just to trigger a prompt.
Do I need a subscription separately after buying the app?
A one-time app purchase is not a service plan. Shadowrocket is a closed-source commercial app; purchasing the app and obtaining a connection service are separate. Get a subscription from your provider. The only way to get the app is through the App Store. The developer is Shadow Launch Technology Limited. Check the App Store listing for system requirements and whether Universal Purchase is supported.
Verify the App Store listing, then continue with connection setup
Shadowrocket is primarily for iPhone and iPad. First verify the app name, official icon, and app ID 932747118 on the App Store verification page, then follow the guide to select a server, authorize the VPN configuration, and test the connection.