Use Subscribe if you have a subscription URL, Add Server if you need to enter and verify connection details, or QR code and clipboard import for a QR code or share text. This guide assumes you already have your own provider and subscription. It covers what each method requires, how to verify the imported data, and what to check when updates fail. The steps use the iPhone / iPad interface; on other platforms, check the corresponding fields. A successful import does not mean the connection works.
1. Identify the Subscription URL, Single Server Link, or Config File
Shadowrocket’s import methods handle different kinds of data. Subscribe is for subscriptions: the app retrieves a server list from a URL and checks that same URL for updates. Add Server saves the protocol and parameters for a single connection. QR codes and the clipboard are just ways to read data; first identify what kind of data they contain.
Config is the page for managing configuration files. A remote config URL is not the same as a server subscription. Config files can contain settings such as rules and DNS, while server subscriptions mainly provide connection entries. When using Subscribe-related options on the Config page, check whether you’re working with a server subscription or a subscription reference in a config file. To add a server directly, go to Home → tap “+” in the upper-right corner → Add Server → Type → Subscribe.
| What You Have | How to Identify It | What to Do |
|---|---|---|
| Server subscription URL | Usually an HTTPS URL with access credentials that returns a list when opened | Select Subscribe under Type and enter the URL |
| Single server link | Common prefixes include ss://, vmess://, vless://, and trojan:// | Scan the QR code or read from the clipboard, then verify the imported fields |
| Individual connection parameters | Details provided separately, such as server address, port, password, or UUID | Select the matching Type in Add Server and enter the details manually |
| Remote config file | Contains config sections, rules, or other content—not just a server list | Manage it in Config; don’t use it as a server subscription URL |
A URL beginning with https:// might only be an account login page, so the prefix alone doesn’t tell you whether it’s a subscription. Check its purpose in your own service details before importing. The examples below are not usable for connections; example.com is a documentation domain, and token=xxxx is a dummy value:
https://example.com/sub?token=xxxx
2. Subscribe: Add a Subscription and Keep Its Update Source
If you have a subscription URL, save it with Subscribe instead of copying out its servers one by one. This keeps the original source available for future updates. Before importing, copy the complete URL without labels such as “Subscription URL:” or any line breaks or spaces from the message.
-
Prepare the URL
Copy the subscription URL from your own service details. Check the beginning, query parameters, and final characters. Preserve the original capitalization and encoding; don’t remove anything after the question mark.
-
Open the Add Server screen
Open Home, tap “+” in the upper-right corner to open Add Server, then select Subscribe under Type. Don’t choose a single-server type such as Shadowsocks just to paste a subscription URL.
-
Enter the subscription
Paste the full URL into URL and enter a recognizable name in Remarks, such as “Personal subscription.” The remark identifies the source; it doesn’t change the server parameters returned by the subscription.
-
Save and update
After saving, return to Home and check that the subscription group appears. Pull down to refresh the subscription list and wait for the request to finish. If the first attempt fails, keep the error details and don’t repeatedly add the same subscription.
-
Verify the entries
Expand the group and check that it contains server entries. Make sure their names and protocols match your own service details. Then select one server and test the connection; the group appearing by itself doesn’t mean the import is complete.
Subscription updates and connection tests check different things. An update verifies that the app can download and parse the list; a connection test checks whether a server in that list works. If the update succeeds but every connection fails, check the server parameters and service status. If the update itself fails, start by checking the URL, network, and response.
You usually only need to save a URL once. Repeated imports create duplicate sources that are hard to identify and can lead to mistakes when updating or deleting them. To replace a URL, first check which group it belongs to and which server is selected, then edit the corresponding subscription. Manually edited subscription entries may be overwritten by source data during a later update.
3. Add Server: Enter Connection Details by Protocol
If you only have a server address, port, and authentication details—with no usable subscription—go to Home → “+” → Add Server. Select Type first, then fill in the fields. Each protocol has its own authentication structure: don’t enter a VMess UUID in the Shadowsocks password field or assume ordinary TLS settings apply to every protocol.
Shadowsocks fields
- Type
- Shadowsocks
- Address
- Enter your server’s domain name or IP address
- Port
- Enter the port specified in your service details, such as 443
- Method
- Use exactly the encryption method specified by the server
- Password
- Enter the corresponding password, preserving capitalization
443 is only an example of a port number. It is not a default port and does not mean the connection necessarily uses TLS.
VMess fields
- Type
- VMess
- Address / Port
- Enter the server address and port separately
- UUID
- Use the complete identifier from your service details
- Transport
- Select the transport required by the server
- TLS
- Check the switches and server name against your service details
For transports such as WebSocket, also check the corresponding fields, including Host and Path. A UUID alone is not enough.
For VLESS, Trojan, Hysteria2, and WireGuard, select the corresponding Type. VLESS usually requires checking the UUID and transport settings; Trojan requires checking the password and TLS parameters. Hysteria2 and WireGuard use different field structures, so don’t apply the settings from the first two examples. Follow your own connection details and the corresponding fields shown in the app. Don’t guess missing parameters from the protocol name.
- Enter a hostname or IP address in Address, not a complete https:// subscription URL.
- Enter only the port number in Port. Valid ports range from 1–65535; don’t enter the full “domain:port” string.
- When TLS is required, the server name is related to certificate verification. Don’t bypass certificate verification as a substitute for checking the connection parameters.
- Before saving, check for spaces, full-width colons, and line breaks. One extra character at the end of a password or UUID can cause authentication to fail.
4. QR Code and Clipboard Import: Read First, Then Verify
A QR code isn’t automatically a subscription; it’s simply text encoded as an image. It may contain an ss:// share link, a subscription URL, or an ordinary webpage. Open the scanner from Home and allow camera access when prompted. Place the entire QR code in the viewfinder, then check the detected type and fields before saving.
- First, make sure the QR code is complete, clear, and unobstructed. If its edges are cropped, get the full image again rather than trying to compensate by scanning repeatedly.
- If the result is a server connection, check the protocol, address, port, and remark. It won’t automatically create an updatable subscription group.
- If the result is a subscription URL, save it using the Subscribe steps. If it’s only an account webpage, return to your service details and find the actual subscription link.
- If the QR code is on the same device, use the image-reading option on the scanning screen if available. Otherwise, copy the original text instead; don’t send the QR code through an untrusted channel.
Clipboard import is useful when you already have share text. Copy a complete link, return to Home, and follow the clipboard import prompt. If the system asks for clipboard access, allow it only when you’re intentionally importing. If no prompt appears, copy the link again and check whether the Add option on Home includes a clipboard import action.
Common single-server share links include ss://, vmess://, vless://, and trojan://. These prefixes don’t guarantee that the content is complete or compatible with the selected protocol settings. Don’t copy quotation marks, chat numbers, Markdown formatting, or a trailing period along with the link. After importing multiple entries from text, check the count to avoid saving duplicates.
5. Choose an Import Method Based on Update Needs
You don’t need to use all four methods. If the same set of details includes both a subscription and a single-server link, choose the method that supports the way you want to manage it. The comparison below covers import and update methods within Shadowrocket. “Recommended” applies when you need to keep a server list in sync; it says nothing about server quality.
Subscribe: Keep the Source
RecommendedSave the subscription URL and refresh the server list from the same source later. New, removed, or changed entries from the source appear locally after an update completes.
Best for: An existing subscription URL and a server list that needs ongoing updates
Add Server: Enter Details Individually
Save connection parameters manually by protocol, making it easy to check each field. Changes to an external subscription won’t automatically update the address or password here.
Best for: Individual connection parameters or saving a single connection separately
QR Code or Clipboard: Read Text
This reduces typing errors; the item saved depends on the text. A single-server share link usually creates one server entry and does not provide subscription updates.
Best for: An existing QR code or complete share link when you want to avoid manual entry
If you’ve made local changes, note what you changed and why before updating. Entries managed by a subscription source may be rebuilt during an update; separately added entries should not be treated as subscription backups. If your subscription credentials change, edit the original subscription URL and update it. This is easier to verify than repeatedly creating new groups.
6. Test the Connection and Troubleshoot Common Issues
Return to Home, select the server you just imported, and turn on the connection switch. When creating a VPN configuration for the first time, approve it in the system prompt. Then check Home → Global Routing: Proxy means proxy mode, Direct means direct mode, and Config applies the current configuration’s rules. Importing a subscription does not choose how traffic is routed for you.
- Make sure you’ve selected a specific server, not just expanded the subscription group.
- Use Connectivity Test on Home to check the results, then open the page you actually need to access. A response from one test doesn’t mean every destination is reachable.
- If a request goes direct in Config mode, check the active config and matching rules instead of immediately deleting and reimporting the subscription.
- Settings → On Demand manages conditional connection behavior; it does not download subscriptions. For initial troubleshooting, connect manually so you can check automatic connection triggers separately from import issues.
Pasted text is reported as an invalid link. What should I do?
Copy the original text again and remove any introductory wording and trailing punctuation. Use QR code or clipboard import for a single-server share link. Put an HTTPS subscription URL in the URL field under Type → Subscribe, not in the server Address field.
The subscription update keeps timing out. Should I add it again?
First, check whether your current network can reach the subscription URL. If you have a working connection, connect and try again. If the update needs to go through a proxy, check Update via Proxy under Settings → Subscribe. Enabling this option alone won’t create a working connection if none is available. There’s no need to keep adding the same subscription.
The update completed, but why is the list still empty?
Expand the corresponding group, then check whether the URL points to a login or information page by mistake. If the response is a webpage, empty, or in a format the app can’t parse, ask your service provider to confirm the subscription response and account status. Don’t keep trying small changes to a webpage URL.
The list has servers, but webpages won’t load after connecting. What should I check?
Check which entry is selected on Home, then see whether Global Routing is set to Direct. Use Connectivity Test to distinguish connection failures from rule issues. For manually added entries, first check the port, authentication, TLS, and transport parameters. For subscription entries, update the source first.
I shared my subscription link with someone for troubleshooting. Can I still use it?
Reset the subscription credentials on your service management page, then edit the URL for the corresponding Subscribe entry in Shadowrocket and update it. The server determines whether the old URL becomes invalid immediately. In future screenshots, hide the full URL and QR code, and record the error message separately.
Check completion at three levels: the source was saved, the entries were parsed correctly, and the connection works. Checking each level reduces duplicate imports and helps distinguish server failures, expired subscription URLs, and routing-rule issues.