This guide is for users who already have a subscription or connection details from their own service provider. First, distinguish a node subscription from a remote configuration and a single share link. Then choose Subscribe, Add Server, QR scanning, or clipboard import. Finally, check the update result, run a connectivity test, and review Global Routing to confirm the import works as expected. The steps refer to Home, Config, and Settings on iPhone and iPad; on other platforms, use the corresponding options.
First, identify what you have: a subscription URL isn't a config file
Shadowrocket's import options handle different kinds of content. A node subscription fetches and updates multiple server entries. A remote configuration usually contains routing rules and global settings. A single share link describes one server. Even if all three look like text, they aren't interchangeable and require different import options.
Get the subscription link from your service provider. Don't mistake an account login page, purchase history, or explanatory text on a website for a subscription URL. HTTP or HTTPS describes how the address is accessed; it doesn't guarantee that the response is in a format Shadowrocket can recognize. Confirm the content type with your provider as well.
| Content you have | Import option | What gets imported |
|---|---|---|
| Node subscription URL from your service provider | Home → + → Type → Subscribe | A subscription group and its server entries |
| Remote configuration URL | Config's add option; Subscribe manages remote configuration subscriptions | A configuration you can select in Config |
| Server address, port, and authentication details | Home → + → Add Server form | A manually added server entry |
| A single protocol share link or QR code | QR scanner or clipboard import | A server entry parsed from the link |
For example, if the link is https://example.com/sub?token=xxxx, copy the entire line, including everything after the question mark. This address is for illustration only and can't be used to connect. A token in a real subscription is an access credential; don't share it in screenshots, chat messages, or troubleshooting reports.
Subscribe: Know the difference between Home and Config subscriptions
To add multiple servers, use the add option in Home. Select Subscribe under Type, then enter the subscription URL from your service provider. After saving, check that a subscription group appears and that it contains server entries. If you see only a group name with no entries, the subscription may not have downloaded successfully or its contents couldn't be parsed. That doesn't mean the import is complete.
Subscribe in Config is for remote configuration subscriptions. It handles a different kind of content from Subscribe in Home, which imports servers. To add a remote configuration, enter its URL from Config's add option, download it, and then select the configuration. Subscribe lets you view or manage these configuration subscriptions. Don't enter an arbitrary node subscription URL in Config expecting it to create a complete rule configuration.
-
Check the URL
Get the node subscription URL from your service provider and make sure it isn't a login page. When copying, keep
?,&,=, and all the parameters that follow. -
Select the type
Go to Home → +. In the Add Server form, select Subscribe under Type instead of reusing the protocol type from your last manual entry.
-
Enter the URL
Paste the full URL into URL, add a recognizable note, and save. The name affects only how the entry is displayed; it doesn't change the URL or authentication details.
-
Check the entries
Return to Home and wait for the initial fetch to finish. If needed, pull down to refresh, then check whether server entries appear under the subscription and whether their number matches what your provider described.
-
Keep the subscription
Update the existing subscription group instead of adding the same URL again each time. An update may replace server fields, so temporary changes to individual entries may not persist.
Check configurations and servers separately. A successful node subscription doesn't mean Config has the rules you need. A successfully downloaded remote configuration doesn't mean Home has a usable server. A configuration may contain sections such as [General] and [Rule]; check its actual contents rather than assuming it includes connection details based on a .conf extension.
Add Server: Enter connection details manually by protocol
If you have server details but no subscription URL, go to Home → + to open Add Server. Select a Type, then enter the address, port, and authentication details in the relevant fields. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard require different fields. Don't copy the same set of values across Types just because they can all establish proxy connections.
For example, VLESS commonly uses a UUID as the user identifier, while Trojan uses Password. If TLS is enabled, also check the server name, certificate, and transport settings provided by your service provider. The address can be a domain name, and the port must be the integer specified by your provider. The example port 443 isn't a universal default.
Check the connection fields
- Type
- Match the protocol specified by your service provider
- Address
- server.example.com (example only)
- Port
- 443 (example port only)
- Authentication
- Enter fields such as UUID or Password as required by the protocol
Address usually shouldn't include a webpage path. Don't use the full HTTPS subscription URL as the server hostname.
Check the transport fields
- TLS
- Enable or disable as specified by your service provider
- Server name
- Match the TLS name provided by your service provider
- Transport
- Match the server-side configuration
- Additional parameters
- Check fields such as Path and Host as required
Fill in only the fields required for the selected protocol. Don't turn off certificate verification as a substitute for checking the connection details.
Saving a manual entry stores only the current connection details; it won't track future changes made by your service provider. If the server domain, port, or authentication details change, edit the entry. If an existing subscription provides the same server, update the subscription instead to avoid maintaining two conflicting entries.
QR scanning: The code determines what gets imported
The scanner is at the top of Home. Allow camera access when prompted the first time you use it. If the camera won't open, check Shadowrocket's camera permission in system settings. Keep the entire QR code in the viewfinder; don't cover its edges or scan only the center.
A QR code is just a way to carry text; it doesn't necessarily contain a subscription. It may contain a single ss://, vmess://, vless://, or trojan:// share link, or it may contain an HTTPS URL. After scanning, check the import prompt to see whether it produced one server entry or a URL that should be handled as a subscription.
- No result: Check image clarity, glare, and framing. Increase the screen brightness and scan again, or ask your service provider for the original text link.
- A regular webpage was detected: The QR code may contain an information page or account page. Don't save it as a node subscription.
- An entry appears, but fields are missing: Check that the QR code is complete, the link hasn't been truncated, and the current protocol's parameters were parsed correctly.
- The QR code is on the same device: Use the photo library option in the scanner, if available, or copy the original link and import it from the clipboard. There's no need to scan the screen with another camera.
If your service provider replaces the QR code, manually imported entries won't update automatically. To keep a server list in sync, use the subscription URL they provide instead of relying on a one-time scan.
Clipboard import: Copy the full link, not the surrounding instructions
After copying a protocol share link, return to Home and check for a clipboard import prompt. You can also choose the clipboard import option from the add menu. When prompted to allow pasting, permit access for this import. If no prompt appears, make sure the clipboard still contains the link, then open the relevant import option again.
Share links often begin with a protocol prefix, such as ss://, vmess://, vless://, or trojan://. Encoded content, percent escapes, and query parameters are all part of the link. Don't decode or remove them, or replace them with punctuation. A server domain by itself isn't a complete share link.
For an HTTPS subscription URL, Home → + → Type → Subscribe makes it easier to confirm you're importing the right content. When copying multiple share links, put one link on each line and remove bullets, quotation marks, and explanatory text. After importing, check each entry's name and parameters. Clipboard read errors happen during import and are unrelated to whether a proxy connection succeeds.
After importing: Update, then test the connection and routing
A successful import only means the content was saved or parsed; it doesn't guarantee the remote service is reachable. Return to Home, select an entry, run Connectivity Test, and then turn on the connection. When connecting for the first time, allow Shadowrocket to add a VPN configuration when prompted. A test response only confirms that the tested path responded; verify the connection with your actual destination as well.
- Check the selected entry: Make sure it's from the subscription group you just imported, not an older saved entry.
- Check Global Routing: Proxy routes traffic through a proxy; Direct connects without one; Config routes traffic according to the selected configuration; Scene applies the settings for the selected scene. Accessing a website in Direct mode doesn't verify that the proxy works.
- Check Config: In Config mode, make sure the intended configuration is selected. Rules are matched in order. For example,
DOMAIN-SUFFIX,example.com,DIRECTroutes the matching domain through DIRECT, whileFINALacts as a fallback. - Check automatic connections: Settings → On Demand manages connections triggered by conditions. It doesn't download subscriptions or fix incorrect server details. While troubleshooting manually, first check the current connection status.
Updating a subscription and connecting to a server are separate network requests. The first can fail if the subscription URL has expired; the second can fail if an individual server is unreachable. When troubleshooting, note the exact error, which step it occurred at, and the current network type. Avoid vague reports such as “import failed” or “it doesn't work.”
Common errors: Troubleshoot by failure stage
Subscription update timed out. What should I check first?
First, make sure your current Wi-Fi or cellular connection can access the internet, then refresh the subscription in Home. If the subscription URL requires an existing working proxy, connect to a usable entry first, then check Update via Proxy under Settings → Subscribe. Enabling this option won't create a connection if no usable proxy is available. Ask your service provider how the URL is meant to be accessed.
It says the link couldn't be parsed, but it opens in a browser. Why?
Check whether the response is a login page, error page, or service-expiration notice. An HTTP 200 response can still contain HTML instead of subscription data. Make sure the token hasn't been dropped from the full URL, then ask your service provider to confirm the subscription format for Shadowrocket. Don't save the webpage as a configuration and import it.
I'm getting a 401 or 403. Should I add the subscription again?
These status codes usually point to an authentication issue or access restriction. First check that all URL parameters are present, then confirm the subscription is still valid and that its access requirements haven't changed. Adding the same URL again won't fix an authentication problem. If your subscription credentials have changed, edit the existing URL and update it to avoid confusing old and new groups.
The server is listed, but webpages won't load. Why?
Make sure the correct entry is selected in Home and the connection is on, then run Connectivity Test. Check whether Global Routing is set to Direct. In Config mode, check whether a DIRECT or REJECT rule matched. If every entry fails, check your network and authentication details. If only one fails, check that entry's port, TLS, and transport settings.
Hide credentials before reporting an issue. Subscription URLs, QR codes, UUIDs, and Password values may contain sensitive information. Share only the error text, import path, and checks you've performed. If the full details need to be reviewed, use your service provider's private support channel; don't post the original subscription publicly.
Get Shadowrocket and get started
The iPhone and iPad app is a one-time $2.99 purchase on the App Store; check the App Store listing for system requirements. The Mac (Apple silicon and Intel), Windows, Android, and Linux versions are free. Choose your platform on the download page, then follow the quick-start guide to check your connection.
The one-time app purchase doesn't include a service plan. This guide assumes you already have a service provider; get your subscription link from them.