Skip to content

Shadowrocket Subscription Setup: Subscribe, Add Server, QR Codes & Clipboard

Learn where to find Subscribe and Add Server in Config and Home, how to import links by QR code or clipboard, and what to check when imported servers don’t appear.

In this guide

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.

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.

  1. 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.

  2. Choose a type

    Tap Type and select Subscribe. Paste your complete existing subscription URL into URL, preserving query parameters, capitalization, and percent-encoding.

  3. 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.

  4. 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.

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.

  1. Save a complete connection and check its name and Type in Home.
  2. Select the entry, then turn on the connection. The first time you connect, follow the system prompt to allow adding a VPN configuration.
  3. 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.

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.

  1. 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.

  2. 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.

  3. 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

Recommended

The 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.

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.

Verify the App Store listing