This guide is for users who already have a subscription or connection details from their own provider. First, distinguish server subscriptions in Home from configuration subscriptions in Config, then choose an import method for a URL, connection details, QR code, or clipboard text. After importing, check the list, update status, and Global Routing. QR codes and the clipboard only transfer content; they don’t turn a single connection into an automatically updated subscription.
Before you import: check the app and your connection details
Shadowrocket is a closed-source commercial app for Apple platforms, primarily used on iPhone and iPad, and is available exclusively on the App Store. Before purchasing, verify the product name Shadowrocket, the developer Shadow Launch Technology Limited, and the app ID 932747118 in the product page URL. Check the App Store page for system requirements.
The app is a one-time purchase; buying the app does not include a service plan. This guide assumes you already have a provider and subscription. This site does not provide, sell, or recommend servers or subscriptions. After purchasing the app, you’ll still need to import connection details you’re authorized to use.
- Subscription URL: Usually an HTTPS address that returns a server list the app can recognize, rather than an account-management webpage.
- Single-server share link: Common prefixes include
ss://,vmess://,vless://, andtrojan://. A link of this type usually describes one connection. - Manual connection details: At minimum, confirm Type, Address, Port, and the relevant authentication fields. TLS, SNI, and transport settings must also match the server.
- Configuration URL: Used to load settings such as rules, DNS, and policies. Don’t assume it’s a server subscription just because it starts with HTTPS.
Subscribe: Know the difference between Home and Config
The main point of confusion is what Subscribe refers to. To import a server list, go to Home → + → Add Server → Type → Subscribe. Subscribe in Config is for remote configuration files. Both may accept a URL, but they return different content and save it in different places.
If you have a server subscription, don’t paste it into Config just because you see Subscribe there too. Conversely, a full configuration containing sections such as [General] or [Rule] shouldn’t be imported as a regular server list. Check the documentation that came with your details. If the response type isn’t clear, ask your existing provider instead of guessing by trying different import options.
-
Open the Add Server screen
Open Home and tap the “+” in the upper-right corner to open Add Server. This is where you manage connection entries—not where you select a rules file in Config.
-
Choose a type
Tap Type and select Subscribe. Paste your complete existing subscription URL into URL, preserving query parameters, capitalization, and percent-encoding.
-
Name and save
Enter a name that’s easy to recognize, then tap Done in the upper-right corner. Return to Home and check the subscription group and its expanded server list.
-
Update the subscription
Pull down on Home to refresh and wait for the request to finish. If the group appears but contains no servers, check the request and parsing results before adding the same URL again.
When should you use Subscribe in Config?
Use Subscribe in Config only when the documentation identifies the URL as a Shadowrocket remote configuration. Open Config, use the menu for adding a remote configuration, select Subscribe, and enter its URL. After saving, find the configuration in the Config list and select it. Menu placement can vary between layouts; look for the Subscribe label rather than the Type form in Home.
- A new file in Config with no new servers in Home isn’t necessarily a failure: you may have imported a configuration containing rules only.
- Remote configurations may include DNS settings, rules, and policy references. Check their source and contents before applying them to avoid overwriting settings you’ve already customized.
- Updating a server subscription and updating a remote configuration are separate actions. Completing one doesn’t update the other.
Add Server manual setup: create a connection from its details
If you have details such as Address, Port, and Password but no subscription URL, go to Home → + → Add Server, select the actual protocol, and enter each field. A manually added server is a standalone entry. If the server details change, you’ll generally need to update them yourself; they aren’t automatically synced like a subscription list.
Address and authentication
- Type
- Choose the actual protocol, such as Trojan, based on the details you have.
- Address
- The server hostname or IP address, without https:// or a webpage path.
- Port
- Enter the server port. For example, use 443 only if it’s specified in your connection details.
- Password
- Enter the value exactly as provided, with no leading or trailing spaces or line breaks.
443 is a common example, not a substitute for the server’s actual port.
Protocol-specific settings
- SNI
- Enter the domain used for the TLS handshake, as required by the server.
- UUID
- For protocols such as VMess and VLESS, the identity field isn’t interchangeable with a generic Password.
- Method
- For Shadowsocks, the encryption method must match the server.
- Transport
- If the server specifies a transport such as WebSocket, also check Path and Host.
Available fields vary by Type. Don’t copy an entire set of settings across protocols.
With Trojan, resolving the Address and connecting to the Port don’t prove that authentication and TLS verification have succeeded. If your connection details specify SNI, enter that exact value. Don’t mistake the domain in a subscription URL for the server Address, and don’t weaken certificate verification to mask an SNI or certificate mismatch.
- Save a complete connection and check its name and Type in Home.
- Select the entry, then turn on the connection. The first time you connect, follow the system prompt to allow adding a VPN configuration.
- If the connection fails, check Address, Port, authentication fields, and TLS or transport settings in order. Change one item at a time to help identify the cause.
Import by QR code: the encoded content determines the result
A QR code carries text; it isn’t a protocol of its own. In Home, open the QR code scanner, point it at a QR code for a connection you already have, and allow camera access when prompted. After scanning, check the parsed type and name before saving. If the scanner offers an option to read from Photos, you can also use an existing QR code image on your device.
- A QR code containing a single-server link such as
trojan://usually creates one server entry, not an automatically updated group. - If the QR code contains a subscription URL, make sure you enter the subscription import flow. If it’s recognized only as a plain text URL, copy it and go to Home → + → Type → Subscribe.
- A QR code containing an account page, payment page, or other regular webpage won’t provide server details. Look in your original connection information for the actual connection details.
- If the scan is missing fields or can’t be recognized, check that the QR code is complete, not reflective, and not cropped, then try the original text. Don’t guess missing Password, UUID, or SNI values.
Check the contents even when scanning your own share link, especially if the QR code was saved from a photo or compressed by a messaging app. Keep the existing entry, confirm the new one works, then decide whether to remove duplicates.
Import from the clipboard: copy the full link and use the right field
The clipboard is useful for importing share text you already have. Copy everything from the protocol prefix through the end of the link, without explanatory text, quotation marks, bullets, or code fences. Return to Home and allow the import prompt if one appears. If it doesn’t, open Home’s add menu and check which clipboard import option is available in the current interface.
-
Copy the original text
Copy the complete single-server share link. If multiple links aren’t recognized as a batch, try one at a time to avoid importing surrounding instructions along with them.
-
Allow clipboard access
Switch back to Shadowrocket and choose Allow if the system asks whether the app can paste. If you deny access, no import prompt will appear; that doesn’t mean the link format is invalid.
-
Check the result
Check the new entry’s protocol, Address, and Port. If an HTTPS subscription URL isn’t recognized automatically, use Home → + → Type → Subscribe → URL.
Don’t manually decode or rewrite characters such as %2F and %3D in a link, and don’t drop parameters after &. The fragment after # in a share link is often used for its name, but parsing rules vary by format. The safest approach is to keep the original text unchanged.
After importing: check the list, selected server, and Global Routing separately
A successful import only confirms that the data was saved; it doesn’t prove the server is reachable or that traffic is routed as expected. First, expand the subscription group in Home and confirm it contains at least one entry. Then select the server and run Connectivity Test. The result reflects the connection at that moment and doesn’t guarantee access to every website or app.
Global Routing → Config
RecommendedThe rules in the currently selected configuration determine the policy. Requests matching DIRECT connect directly; requests matching a proxy policy use the corresponding route. Whether a request uses a proxy depends on the rules, not just on which server is selected in Home.
Best for: everyday use after checking the configuration and setting up rule-based routing
Global Routing → Proxy
Traffic handled by the app is routed using the Proxy mode. This can temporarily reduce rule-matching variables, but it doesn’t mean every type of traffic on the device necessarily follows the same route.
Best for: briefly comparing server connectivity and rule-routing behavior
Global Routing → Direct
Traffic handled by the app is routed using the Direct mode. Even if a server is imported and selected, this doesn’t mean current traffic is using that server.
Best for: comparing direct connections to rule out problems with the destination website
During troubleshooting, also check Settings → On Demand. On Demand controls connections triggered by conditions; it doesn’t import subscriptions or fill in missing connection details. If the connection changes automatically after switching networks, check the relevant conditions before deciding to import again.
- Servers appear in Home but no new file appears in Config: this can be normal for a regular server subscription.
- A file appears in Config but its rules don’t take effect: check that the configuration is selected and Global Routing is set to Config.
- When using Scene, check the settings for the relevant scene first. For a focused test, note the original settings, temporarily switch to a clearly defined mode, then restore them when you’re done.
Troubleshooting: missing entries and subscription update failures
Saved a subscription, but Home is still empty?
First, make sure you didn’t add it to Config by mistake. Then check whether Home has an expandable subscription group and pull down to refresh. If the group is empty, verify that the URL is complete, the token is valid, and the response contains recognizable subscription data. An account login page can’t replace a subscription response.
Subscription updates keep timing out. Should you reinstall?
First, check whether your current network can reach the subscription URL. If you already have a working proxy connection, connect through it, then go to Settings → Subscribe, check Update via Proxy, and try again. Enabling this option alone won’t help if no proxy connection is available. Don’t delete your last working list first.
Server names changed after an update. Did I import the wrong thing?
A subscription update refreshes the list with the content returned by the remote server, so a name change doesn’t necessarily mean you imported the wrong thing. Check which subscription URL the group uses and review the selected entry. If the previously selected entry was removed, select an existing one and test it. Standalone entries added manually may not change when a subscription updates.
Why can I import a QR code but not update it?
Open the entry and check whether it’s a single server or a Subscribe entry. If the QR code contains only a single-server share link, there’s no subscription source to refresh after importing it. To update a list, create a Subscribe entry using your existing subscription URL instead of scanning the same single-server QR code again.
The list has an entry, but webpages still won’t open after connecting?
Run Connectivity Test in Home first, then check Global Routing and the currently selected configuration. If the server test passes but only some domains fail, check your rules and DNS. If the server test also fails, check the connection details, whether the service is active, and your current network. Don’t assume every issue is caused by a failed subscription import.
After troubleshooting, keep one subscription group with a clear source instead of creating multiple copies of the same URL under different names. For more help checking rules, DNS, or connection status, see the troubleshooting guide. To look up terminology, see the glossary.