This guide is for users who already have their own subscription URL or connection details and want to import them into Shadowrocket. First, distinguish node subscriptions from remote configuration files. Then choose Subscribe, Add Server, QR scanning, or clipboard import based on what you have. Finally, check the list, update results, and Connectivity Test separately—saving a URL does not mean you have a working connection.
First, know the difference: node subscriptions, single-node links, and configuration files
Shadowrocket import options accept different kinds of data. A node subscription is usually an HTTPS URL that returns a set of connection parameters. A single-node share link starts with a protocol prefix such as ss://, vmess://, vless://, or trojan://. A remote configuration file controls settings such as rules and DNS. They may all be delivered as links, but that doesn’t make them interchangeable.
In particular, distinguish node subscriptions from Subscribe on the Config page: Config subscriptions manage remote configuration files. A file appearing there does not mean nodes are available on Home. To add a node subscription, usually go to Add Server from the “+” in the top-right corner of Home, then set Type to Subscribe. The interface may change; check the current page and Type rather than relying on the word Subscribe alone.
Subscribe: add node subscriptions from Home; manage configuration subscriptions in Config
If you have a node subscription URL, go to Home → “+” → Add Server. The Type you select determines what the form is for: choose Subscribe and enter the subscription URL. Don’t split the full URL into a server address, port, and password. Query parameters are often used for authentication, so preserve the question mark, equals sign, and everything that follows when copying the URL.
-
Identify the URL
Make sure you have a node subscription URL, not an account page, order page, or remote rules file. The example
https://example.com/sub?token=xxxxillustrates URL structure only. -
Open the form
Go to Home → “+” in the top-right corner → Add Server, then set Type to Subscribe. Don’t paste a subscription URL under a different protocol type.
-
Enter details and save
Paste the complete URL into the URL field and enter a recognizable name under Remarks, then save. Leading or trailing spaces, line breaks, and quotation marks from a chat message are not part of the URL.
-
Check for updates
Return to Home and check for the subscription group and its nodes. If no content has been retrieved, use the subscription’s update action or pull down on the Home list to refresh. Check any error message instead of adding the same URL again.
-
Select a node
Expand the subscription group and confirm that it contains individual nodes before selecting one. If you only see the subscription name, check whether the group is collapsed, the request succeeded, and the response could be parsed.
If the URL points to a remote configuration file, manage it in the remote configuration subscription area of Config. Updating a file through Subscribe on the Config page and updating a node subscription from Home are separate processes. Selecting a configuration file also does not automatically provide connection details for every policy it references. Whether it contains node information depends on its contents, not just its file extension.
Choose the option based on what you’re updating
Node subscription
- Path: Home → “+” → Add Server → Type → Subscribe.
- Contains: a set of server addresses, ports, and protocol parameters.
- Check: individual nodes appear in the corresponding group on Home.
Configuration subscription
- Location: Subscribe section on the Config page.
- Contains: a remote configuration file, possibly with rules and other configuration sections.
- Check: the file is retrieved successfully, then select and review it as needed.
Identify what you’re updating before choosing an option. The number of nodes and the number of configuration files are different measures.
Add Server: enter parameters for the selected protocol; don’t guess them from a subscription URL
Manual entry is for cases where you already have complete, explicit parameters for a single node. Go to Home → “+” → Add Server as usual, but select the protocol that matches the parameters, such as Shadowsocks, VMess, VLESS, or Trojan. The form fields change with the selected Type. Confirm the protocol first, then check the server address, port, credentials, and transport settings.
The two cards below illustrate different field groups; neither is a complete, working configuration. Port 443 is an example only. It is not required for every protocol, and the port alone does not indicate that TLS is enabled. Use the port, TLS, SNI, transport path, and other settings specified in your existing parameters.
Node subscription fields
- Entry
- Home → “+” → Add Server
- Type
- Subscribe
- URL
https://example.com/sub?token=xxxx- Remarks
- Test subscription, shown for identification only
The URL retrieves a list of nodes; it is not the server address for an individual node.
Single-node parameter example
- Type
- Trojan
- Address
gateway.example.com- Port
443, example only- Password
- Example placeholder value
demo-not-a-secret - TLS
- Check against the complete original parameters
These example values cannot connect. Also check the actual authentication and transport parameters required.
- Shadowsocks: check the encryption method and password. Don’t use the subscription token as the node password.
- VMess: check the UUID, alterId, encryption, and transport settings. Don’t fill in values based on other nodes.
- VLESS: check the UUID, flow, and related transport and security settings. Preserve any populated fields in full.
- Trojan: check the password, TLS, server name, and other parameters. The server address and TLS identity name may differ.
- Hysteria2 and WireGuard: use the matching Type and parameter format. Don’t apply the VMess or Trojan form logic.
Manual entry saves a snapshot of the parameters as they are at that moment. If the remote port or credentials change, the local entry won’t sync just because it has the same Remarks. Edit it again or reimport the original parameters. If a node came from a subscription, changes to the generated entry may be overwritten by the next update. Record the original values before troubleshooting.
QR scanning: it reads the QR code’s contents, which may not be a node
On Home, tap the scan icon at the top to open the scanner. Follow the system prompt to allow camera access, then fit the full QR code in the viewfinder. A QR code is just a data carrier: it may contain a single-node share link, a subscription URL, or even an ordinary web address. Check what was recognized after scanning; recognizing a QR code does not mean its contents are in a valid import format.
- First, make sure the QR code comes from connection details you already have. Avoid scanning codes from public pages when their purpose is unclear.
- After scanning, check Type and the fields. A single-node link usually opens protocol parameters; a subscription should retain the complete URL.
- If you get an HTTPS address, determine whether it points to a subscription, remote configuration, or webpage before choosing an import option.
- After saving, return to Home and check for the new node or group. If you imported a configuration file, check it in Config instead.
If the QR code is displayed on the same iPhone, you may be able to scan it from Photos if the scanner offers a photo picker. If that option isn’t available, use the original text link or display the code on another screen. Don’t upload a screenshot containing credentials to a public image service just to scan it. If the code is cropped, too small, or reflecting light, improve the image and try again.
Clipboard: copy the complete content, then review it when prompted
The clipboard is useful for copying an existing link from a message or your own records. Copy only the link, then return to Shadowrocket. If the app offers to recognize or import it, follow the prompt and review the import preview. When the system asks for permission to paste, the app can process that clipboard content only if you allow it. No prompt doesn’t mean the link is invalid, and there’s no need to keep closing and reopening the app.
- Subscription URL: go to Home → “+” → Add Server → Type → Subscribe, then touch and hold the URL field to paste.
- Single-node share link: use the app’s clipboard import or recognition option. If it isn’t recognized, check the protocol prefix, encoding, and whether the full link was copied.
- Manually entered parameters: a chat message listing an address, port, and password is not a share link. Enter each value in Add Server.
- Multiple links: avoid including bullet points, webpage titles, or explanatory text. After importing, check the number and protocol of each entry rather than relying on the number of copied lines.
In https://example.com/sub?token=xxxx, for example, ?token=xxxx is part of the URL. Automatic line wrapping in a message doesn’t necessarily alter the underlying text, but manually inserted line breaks, non-ASCII punctuation, and truncated preview text can prevent parsing. Don’t decode or reconstruct encoded share links yourself; copy the complete original content again instead.
Subscription URLs, passwords, and UUIDs may contain access credentials. Hide them in troubleshooting screenshots, and include only the error type and necessary field names when sharing an error. After importing, you can copy a harmless plain-text string to replace the clipboard contents and reduce the chance of pasting credentials by mistake later.
Nodes don’t appear after import: check the request, parsing, and display in order
Preserve the details first: note the import option, saved Type, and any update error, then check the network and input. Creating multiple subscriptions with the same name makes results harder to identify. If you see an empty group, expand it first. If you see a file only in Config, confirm that you imported a configuration rather than a node subscription. Neither issue alone means the connection parameters are invalid.
Saved as Subscribe, but still no nodes?
Return to Home, expand the relevant group, trigger an update, and check the result. Saving a URL confirms only that it’s stored locally. A failed network request, empty response, or parsing error can all leave the group without nodes. First check that the URL is complete; don’t paste the address of a web login page instead.
There’s a file in Config, so why is Home still empty?
Check the file’s contents and purpose in Config. A configuration with only rules or DNS settings won’t automatically add nodes to Home. Add your existing node subscription through Home → “+” → Type → Subscribe, then check the configuration and nodes separately.
An update timed out. Do I need to connect first?
First, check whether the subscription URL is accessible over your current network. If you already have a working node, open Settings → Subscribe, check Update via Proxy, enable it if needed, and try again. This option depends on an existing working proxy connection. If this is your first import and you have no working node, the setting can’t create a connection for you.
The server returned 401 or 403. Will changing the import method fix it?
This usually points to authorization or access restrictions, not whether you used QR scanning, the clipboard, or manual entry. Check that the token hasn’t been omitted from the subscription URL and that the address hasn’t been altered. Then verify the authorization status using your existing account details. Don’t share the full URL or change unrelated protocol fields repeatedly.
Nodes appear, but webpages still won’t load?
Select a node first, then run Connectivity Test on Home and check Global Routing. Direct connects directly; Proxy uses a proxy; Config routes traffic according to its rules; Scene follows the selected scene’s settings. A successful import doesn’t mean current traffic is using the newly added node.
A successful update request doesn’t guarantee valid content: the server may return a login page, an error message, or unsupported data. If the error indicates a parsing problem, check what the original URL points to and what format it requires instead of changing the node’s port at random. Check related automatic update options under Settings → Subscribe. Don’t assume background refresh will always run; after an important change, update manually and check the result.
Verify and maintain your import
Import, connection, and routing are three separate stages. A node appearing in Home means its parameters are in the list. The connection stage begins only after you connect and authorize the system VPN configuration. Which requests use a proxy then depends on Global Routing and the active configuration. In Config, DOMAIN-SUFFIX, GEOIP, IP-CIDR, and FINAL are rule types, not parts of a subscription URL.
- List check: The subscription group expands, node names and protocols are recognizable, and repeated attempts haven’t left duplicate groups.
- Update check: A manual update completes without request or parsing errors. If the remote content hasn’t changed, it’s normal for the local item count to stay the same.
- Connection check: Select the intended node, allow the system to add a VPN configuration if prompted, then check the Home status and Connectivity Test results.
- Routing check: Check Global Routing. If you use Config, make sure the selected file and the policies referenced by its rules are available.
- Maintenance check: Update subscription nodes through the subscription. Maintain manually entered nodes and single-node share links using their original parameters; don’t confuse the two update methods.
Settings → On Demand triggers connections based on conditions. It doesn’t retrieve subscriptions or fix an invalid token or missing UUID. When troubleshooting imports, verify the input, list, and connection first, then adjust automatic connection behavior. This helps avoid misdiagnosis when several settings change at once.
Shadowrocket is a closed-source, paid app for Apple platforms, primarily used on iPhone and iPad, and is available as a one-time purchase through the App Store. The developer is Shadow Launch Technology Limited, and the app ID is 932747118. Check the App Store listing for system requirements, device compatibility, and whether Universal Purchase is supported. Verify the app purchase separately from the validity of any existing subscription.