Shadowrocket Subscription Import: 4 Ways to Add a Subscription

Compare four ways to import subscription data, when to use each, and common link formats. Get your subscription URL from your provider; examples use example.com.

At a glance

This guide is for users who already have their own subscription or server details and want to import them into Shadowrocket on iPhone or iPad. First, distinguish a server subscription from a remote configuration. Then choose among Subscribe, Add Server, QR code, and clipboard import. After importing, check the server list, update results, and Global Routing. A saved URL does not necessarily mean the connection is ready to use.

1. First, distinguish subscriptions, single links, and configurations

Shadowrocket is a paid client for Apple platforms. Buying the app and obtaining a connection service are separate matters. This guide assumes you already have your own service provider and subscription; this site does not provide, sell, or recommend servers or subscriptions. Get the app only through the App Store. See the genuine app verification page for purchase and authenticity details.

These four import methods are not four different protocols, and they do not necessarily produce the same result. A subscription URL usually points to an updatable server list; a single share link describes one connection; a remote configuration may include rules, DNS, and policies. Identify the resource by what the link actually returns and by the provider's instructions—not simply by whether it starts with https://.

What you haveHow to identify itWhat to check
Server subscriptionThe provider identifies it as a subscription URL that returns a supported server listA subscription group and server entries appear in Home
Single share linkPrefixes such as ss://, vmess://, vless://, and trojan://One server record for the corresponding protocol appears
Manual server detailsProtocol, server address, port, and authentication details are providedThe fields in Add Server match the supplied details
Remote configurationThe provider explicitly identifies it as a Shadowrocket configuration fileA configuration appears in Config; check separately whether it is enabled

Query parameters in subscription URLs often contain access credentials. Don't post the full URL in public forums or treat a QR code as an image with no sensitive information. The https://example.com/sub?token=xxxx URL below is a fake example of the format; it cannot be used to connect or test.

2. Subscribe: understand the roles of Config and Home

When looking for “Subscribe” on the Config page, first identify the type of resource you're handling. Config is mainly for managing configuration files, Home mainly shows servers and connection status, and Settings manages app preferences. Even if an option is labeled Subscribe, that doesn't mean every server subscription belongs in Config.

Add a regular server subscription from Home → + → Add Server → Type → Subscribe. Add Server is the title of the add-server screen. If you have a remote configuration, use the remote configuration option in Config and check its contents after importing. Don't repeatedly import a server-list URL into Config just because you're looking for a particular label.

  1. Check your details

    Make sure the provider gave you a server subscription URL—not an account page, payment page, or remote configuration URL.

  2. Open the add screen

    Go to Home → +, then choose Subscribe under Add Server → Type.

  3. Enter the URL

    Paste the complete subscription URL into URL and enter a recognizable name in Remarks. Keep the full path, question mark, and all following parameters.

  4. Save and update

    Tap Done to return to Home and wait for the list to load. To fetch it again, pull down on the server list in Home.

  5. Check the group

    Expand the subscription and confirm that server entries appear. If you see only the group name and no entries, check the request result and subscription format.

3. Add Server manual entry: for complete connection details

Manual entry is useful when you have server details but no recognized share link. It creates a server record; it does not create an automatically updatable subscription. Go to Home → + → Add Server, select Type, then fill in the fields for that protocol. Authentication details are not interchangeable between protocols.

Check Shadowsocks settings

Type
Shadowsocks
Address
example.com, for illustration only
Port
8388, format example only
Method
Use the encryption method specified in your original details
Password
Use your own authentication details; watch for leading or trailing spaces

8388 is not a required default port. Use the port specified for your own service.

Check VLESS settings

Type
VLESS
Address
example.com, for illustration only
Port
443, format example only
UUID
Check your own user ID character by character
TLS and transport
Check the server name, transport method, and related settings against your original details

Port 443 alone does not prove that TLS is enabled or replace the full transport configuration.

For example, the server address and port may be correct while an incorrect TLS server name or WebSocket path still causes a connection failure. Don't rely on a single latency test to confirm that every setting is correct. VMess, Trojan, Hysteria2, and WireGuard each have their own authentication and transport requirements. Enter each setting using your existing details rather than copying fields from another protocol.

4. QR code and clipboard import: check the content, whatever the method

QR codes and clipboard import are ways to send text to the app; they don't change what that text means. A QR code might contain a single ss:// link, a subscription URL, or an ordinary web address. After importing, check whether you got one server, a subscription group, or content the app couldn't recognize.

Choose the import method based on where your details are

Details on another screen
  • In Home, tap the scan option and allow camera access when prompted.
  • Fit the entire QR code in the viewfinder, avoiding glare and cropped edges.
  • After it is recognized, check the link type and preview fields before confirming the import.
  • If only one server was added, first check whether the QR code contained a single link.
Details on this device
  • Copy the complete link. Don't include explanatory text, quotation marks, or punctuation at the end of a sentence.
  • Switch back to Shadowrocket. If prompted to read or import from the clipboard, check the source and confirm.
  • If no prompt appears, paste the subscription URL into the Subscribe form in Add Server.
  • For a single share link, use the link import prompt provided by the app. Don't enter it as a server address.

A QR code and clipboard may contain the same credentials. Changing how they're transferred doesn't grant subscription access or fill in missing parameters.

Your iPhone or iPad may ask whether to allow pasting from another app. If you deny permission and no content is recognized, that doesn't mean the link is invalid. Check whether permission is required, or paste the URL directly into the Subscribe form. Repeatedly scanning or copying the same imported details may create duplicate entries; repeated imports are no substitute for troubleshooting.

Example subscription URL:
https://example.com/sub?token=xxxx

Common prefixes for single share links:
ss://
vmess://
vless://
trojan://

The content after the prefix may include encoded authentication details, server information, and transport parameters. Don't remove equals signs, slashes, percent-encoding, or query parameters. Link length alone doesn't tell you whether it is complete. The prefixes above are for identifying formats; they are not complete connection details that can be imported.

5. After importing, check the list, updates, and routing separately

“Saved successfully,” “updated successfully,” and “the website loads” are three different checks. A successful save only means the app accepted the input. A successful update means the subscription resource was fetched and parsed. Whether a website loads also depends on server status, authentication, DNS, and current routing settings. First check the actual entries in Home, then test a server you already have.

4 import methods
Subscribe, manual entry in Add Server, QR code, and clipboard
3 separate checks
Check the saved URL, updated list, and actual access separately
2 types of updates
Check server subscription updates separately from remote configuration updates

In Home, Config, Proxy, Direct, and Scene under Global Routing are routing modes, not subscription protocols. Changing these options won't fix an incorrect subscription URL. The comparison below covers three modes commonly used for troubleshooting. Scene depends on the configured scene, so you can't determine its behavior without checking the scene settings.

Config

Recommended

Traffic is handled according to the rules in the currently enabled configuration. First confirm that the expected configuration is enabled in Config, then use its rules to determine where a request goes.

Best for: everyday, rule-based use with a configuration you trust

Proxy

Routes intercepted requests through the proxy, which can help you compare results with Config. This is not a subscription update switch, and it doesn't guarantee that all system traffic will be intercepted.

Best for: brief comparison tests to distinguish rule issues from connection issues

Direct

Routes intercepted requests directly. If a website opens in this mode, that doesn't prove that the selected server's authentication and transport settings are valid.

Best for: establishing a direct-connection baseline on your current network

With Config, DOMAIN-SUFFIX matches domain suffixes, GEOIP and IP-CIDR handle IP-related conditions, and FINAL provides a catch-all rule. These rules belong in a configuration, not in a subscription URL field. Automatic connections are a separate setting: go to Settings → On Demand and configure it for your network after you've verified a manual connection.

6. Troubleshooting empty subscriptions, failed updates, and duplicate entries

When an update fails, keep existing entries that still work instead of deleting everything right away. The issue may be with the URL, the resource request, content parsing, or the connection that follows. Narrow down the problem one stage at a time rather than repeatedly switching import methods.

  1. Check the full URL. Compare the protocol prefix, domain, path, and parameters such as token against the original details. A shortened link preview in a messaging app is not the complete URL.
  2. Check the response. If the URL opens a login page or error message instead of the expected subscription content, it may not point directly to the subscription resource. Don't try to fix this by entering your account password in a server authentication field.
  3. Check the resource format. Being able to open a webpage doesn't mean Subscribe can parse its contents. Ask the provider of your existing service whether the supplied format works with Shadowrocket.
  4. Check your current network. Distinguish DNS resolution failures, connection timeouts, and explicit authentication failures. Change one condition at a time and note the update result. Avoid changing DNS, rules, and server details simultaneously.
  5. Check where the subscription came from. The same server may appear both as a manually added entry and in a subscription group. Before removing duplicates, identify their source so you don't delete a subscription you need to keep.
  6. Check that the credentials are valid. If the original URL has been revoked or replaced, update the existing subscription record with your own current URL. Don't keep forwarding or retrying an expired URL.
Will importing by QR code fix an expired subscription URL?

No. If the QR code still encodes the same expired URL, scanning only saves you from typing it manually; the remote resource hasn't changed. Check that the QR code contains the same URL you currently use.

Why didn't my manually added entry change when I updated the subscription?

Manually added entries and subscription entries usually come from different sources. Updating a subscription doesn't replace every server or automatically maintain the password, port, and transport settings of a separate manual entry.

The list shows servers and their latency looks normal. Is everything set up?

Also check access to the actual destination, the current Global Routing mode, and the enabled configuration. A latency test reports the result of that particular test method; it doesn't replace checks for authentication, TLS, DNS, and rules.

Genuine App Store listingVerify before you buy