Server Management / Guide

Shadowrocket Subscriptions and Server Management

This guide assumes you already have your own subscription link or server details. It covers importing, maintenance, testing, and cleanup in sequence. If you just want to make your first connection, start with the Getting Started Guide. Once you’ve completed the main steps, come back here to look up fields and troubleshoot issues. For purchasing and verifying the genuine app, see the App Store Guide.

Applies to: iPhone / iPad Entry points: Subscribe · Add Server See the App Store listing for system requirements

01 · Subscribe and Your First Import

Subscriptions vs. Individual Servers

Subscribe saves a URL that can be requested again, while Add Server saves a server entry you fill in manually. Both may ultimately show servers in the Home list, but they’re maintained differently: subscription entries are generally determined by the subscription data, while manual entries must be edited individually. First, check what information you have. If it’s a link the app can read and refresh periodically, use Subscribe. If you only have an address, port, authentication details, and protocol parameters, follow the Add Server steps in the next section. Don’t enter a server share link as a subscription URL just because both can eventually appear in a list.

Open the add menu from Home in Shadowrocket and choose Subscribe to add a subscription. Paste the complete link into the URL field. The menu location and field layout may vary depending on the screen, so make sure the selected type is Subscribe—not just a text field that accepts pasted content. Save, return to the list, and wait for the app to retrieve and parse the data. Before adding it, you can temporarily copy the original link into Notes to check that no characters are missing from the beginning or end, and that copying hasn’t added spaces or line breaks.

Saving Doesn’t Mean Parsing Succeeded

An import involves at least three steps: saving the URL, retrieving a response over the network, and converting that response into server entries Shadowrocket can recognize. Seeing a subscription name in the list confirms only the first step. If the name is there but no servers appear, check the next two steps. First, confirm the original link still works on the same network. Then make sure it returns subscription data supported by the app—not a sign-in page, error page, or single-server share link. Don’t change query parameters on a hunch: they may be part of the data, and removing even one character can return something different.

If entries appear but are hard to identify, give the subscription an easy-to-recognize name before adjusting the list order. The name is a local management label; it won’t fix a server address or replace checking the data from the source. If you’re new to the app, start with one subscription you already understand. Confirm that its entries appear, you can tell where they came from, and you can update them as needed before adding another. That way, if parsing fails, you know what to investigate without having to guess among multiple sources and duplicate entries.

Subscription content is remote data that can change, so don’t treat the number of servers currently shown as permanent. After an update, entries may be added, removed, or renamed. If an address needs to be maintained independently over time, first find out whether it’s managed by a subscription before creating a separate manual entry. Also, don’t confuse buying the app with importing data: the App Store provides the client, while Subscribe reads data you already have. To confirm the app’s identity, check the developer, icon, and app ID using the three-point authenticity check.

02 · Add Server: Manual Fields

Choose the Protocol Listed in Your Details

If you have details for just one server, open the add menu from Home, choose Add Server, and select the protocol specified in your information. Protocol selection isn’t just a label for the same set of values: Shadowsocks, VMess, VLESS, Trojan, HTTP, SOCKS5, WireGuard, and Hysteria2 all have different fields, authentication methods, and transport requirements. If the protocol isn’t specified, ask the provider of the details; an address or port alone isn’t enough to identify it reliably. Preserve the original capitalization, punctuation, and special characters, especially in passwords, identifiers, hostnames, and paths. Don’t edit them just to make them look neater.

Address is the server’s domain name or IP address, and Port is the port used by that service; check them together. The address field generally doesn’t need a webpage path, and the port field shouldn’t include a protocol prefix. If you have a complete share link, first check whether you can import it using the link method described later, rather than guessing fields from encoded text. After filling in the details, save and return to the entry to make sure it appears in the expected list. Saving only confirms that the input can be stored; it doesn’t mean the server will accept a connection.

Authentication, TLS, and Transport Settings

Authentication fields vary by protocol. Shadowsocks requires the matching encryption method and password; VMess and VLESS commonly use an identifier and transport options; Trojan relies on a password and TLS-related settings; WireGuard uses details grouped under Interface and Peer. In TLS setups, the server name specified by SNI may differ from Address, so don’t substitute one for the other. Allow Insecure relates to certificate validation. First check the certificate name, validity period, and the information you entered; changing validation behavior shouldn’t be your first step when troubleshooting a connection failure.

Information typeWhat to enterWhat to check
Address and portAddress, Port, and protocolDomain spelling, port number, and whether the details are still valid
Authentication detailsPassword, identifier, or keyCapitalization and whitespace accidentally included when copying
TLS detailsSNI and certificate optionsWhether the name matches the certificate
Transport detailsProtocol-specific fields such as path and HostLeading slashes and the original format specified

If there are many fields, check them in two passes. First, verify that the protocol, address, port, and authentication details exactly match the original information. Then check TLS, transport, and additional options. This helps distinguish errors in basic fields from mismatched advanced settings. Don’t change several fields at once and test immediately; even if the result changes, you won’t know which change made the difference. Don’t post full configurations that contain keys in public forums. When troubleshooting, describe only the field types, where the error appears, and what happened.

If the list contains both subscription-generated and manually added entries, label the purpose of each manual entry. Subscription updates won’t fix manually entered data; if the server details change, edit that entry directly. By the same token, don’t assume that changes made to a manual entry will apply to subscription-generated entries: their fields may be overwritten by the next update. For details on Trojan settings and WireGuard configuration, see the Trojan Field Guide and the WireGuard Parameters Guide.

03 · Scan QR Code and Import from Clipboard

Check What’s in the QR Code First

Scanning a QR code saves you from entering fields one by one, but a QR code is just another way to store text. Find out whether it contains a single-server share link, a subscription URL, or something else before deciding what to expect after import. If the details were provided as a QR code, choose Scan QR Code from the add menu, allow camera access, and fit the entire code in the viewfinder. Once it’s recognized, check the protocol and main fields. If the code is blurry, obstructed, or low-contrast, ask for a clear image of the original. Don’t assemble an address based on text shown next to the code.

Don’t immediately use a newly imported entry for your connection. First, check that its type, name, Address, and Port match what you expected. If the QR code contains a Subscribe URL, make sure it was added as a subscription that can be updated, not as a static server. If the app says it can’t recognize the text, the QR code’s contents—not just camera permissions—may be the issue. If the image is already saved on your device, make sure it’s readable, then use an import option actually available in the interface. Don’t treat a browser thumbnail as the full-resolution original.

Check for Extra Characters When Importing from the Clipboard

Clipboard import works well when you already have a complete server share link. Copy from the protocol prefix through the very last character, leaving out any quotation marks, numbering, or explanatory text from a chat message. Return to Shadowrocket, choose the clipboard import option in the add menu, and review the preview. If the system asks for clipboard access, that permission is needed to read what you just copied. Make sure you started the import before deciding whether to allow it. If the imported entry is empty, check the original information to confirm that the clipboard actually contains a link.

QR codes and the clipboard are input methods; they don’t verify whether the information is genuine or still valid. Scanning the same code or pasting the same text more than once may leave confusing duplicate entries. Search existing names before importing, then compare the protocol, address, and port afterward. If the text contains authentication details, avoid pasting it repeatedly into other fields on a shared device. When you’re done, you can overwrite the clipboard with ordinary text if that suits your privacy habits—but don’t delete the only copy of the original information.

If a QR code scans successfully but the connection doesn’t work, treat those as two separate stages. Successful scanning means the app read the text; it doesn’t mean the port is open, authentication is correct, or the server is reachable. Check the imported fields first, then use Connectivity Test to help narrow down the issue. If another device needs the same details, use your own saved original information rather than retyping fields hidden in a screenshot of the list. When transferring between devices, check that the full subscription URL is intact. Some screens may show shortened text for readability; a truncated link isn’t a backup.

05 · Subscribe Updates and Troubleshooting

Manual Updates vs. Automatic Updates

A subscription isn’t a local list that stays unchanged after the first import. A manual update retrieves the latest data when you choose to check it. Automatic updates try to retrieve it at the times set in the app. Choose an approach based on how often you use the data and how often it changes—not on the assumption that shorter intervals are better. Frequent requests won’t fix an invalid link or guarantee that the remote data changes every time. When troubleshooting, run one manual update and note how the list changes. That makes it easier to identify the issue than repeatedly waiting for an automatic update.

Check the subscription entry and its server entries separately. For the subscription, check whether the URL is complete, the request succeeded, and the response could be parsed. For the server entries, check whether the names, count, and required fields after the update match the information you have. If an update fails but old entries are still visible in Home, don’t assume the new data was retrieved; the screen may still show previously saved content. Read the failure message, then check your current network and the original URL. Don’t ignore the update result just because the old entries remain visible.

The List Is Empty, Smaller, or Duplicated

If the list is empty, stop tapping Update repeatedly. Check that you selected the right Subscribe entry, then verify the beginning, query string, and end of the link. Also make sure the response contains data the app can parse—not explanatory text. A smaller list doesn’t necessarily mean the app deleted entries by mistake; the remote data may have changed. Compare the current results with your own record of the previous list, identify what’s missing, and check the original information. If duplicates appear after an update, check whether you imported the same URL twice or kept both a manual entry and a subscription entry.

When changing a subscription URL, decide whether to edit the existing Subscribe entry or create a new one. Editing keeps the existing management location, but save the complete old link first in case you need to restore it after a paste error. A new entry makes it easier to compare two URLs side by side, but may create duplicate lists. Choose based on whether you need a comparison, and don’t delete the only working entry while troubleshooting. An update failure doesn’t always involve protocol fields: DNS, network status, or the URL response can prevent data from being retrieved in the first place.

If one subscription keeps failing but others on the same device update successfully, check that entry’s URL and response first. If several fail at once, check the current network, then try a manual update for each one to avoid mistaking a shared network issue for multiple link problems. For a step-by-step check of link formats, encoding, and update timing, see Subscription Import Troubleshooting. Once you’ve diagnosed the issue, choose an automatic update schedule and check the results periodically; automatic settings don’t replace checking the actual list contents.

06 · Organize Multiple Subscriptions and Manual Entries

Use Names That Clarify What You’re Managing

When Home lists multiple Subscribe entries alongside manual entries, first make clear where each entry came from and how it should be updated. Give each subscription a distinct local name based on its purpose or the type of information it contains. Don’t rely on server names to identify their source; they may change after an update. A subscription name, by contrast, is a useful management label. You can add recognizable notes to manual entries too, but don’t put passwords or complete subscription URLs in display names, where they could appear in screenshots or screen sharing.

Organize by source entry, not by individual names that happen to look alike. One subscription may contain several servers, and two different subscriptions may use similar server names. Before deciding that entries are duplicates, compare at least the protocol, Address, Port, and key transport parameters, then check which entry each came from. Deleting entries just because their display names match could remove a separate record you still need. If two entries appear identical, you can test one while noting where the other came from, then investigate before removing anything.

Keep Changes in an Order You Can Retrace

After adding a subscription, first confirm that the new entry can retrieve its data, then organize the old ones. Before a major cleanup, save the original links and manual details you already have and are entitled to use. This order reduces the work of rebuilding after an accidental deletion. For entries you no longer need, distinguish between leaving them in the list but not selecting them and deleting the entry. Keeping an entry makes it easier to check again later; deleting a subscription removes the direct update path from that device. Decide based on the information you have, not just one Connectivity Test result.

When managing subscriptions alongside manual entries, be careful about which source owns each change. Check subscription-generated fields against the subscription data first, because the next update may change them again. Maintain manual entries through the Add Server editing flow. If you want to compare a server from a subscription with temporary changes, note the original fields and why you changed them. That way, after an update, you can tell a local edit from a change in the subscription data. A simple record is enough: note the entry name, what happened before the change, which field you changed, and the result.

Multiple subscriptions also affect how you interpret list counts. More entries may mean a new subscription, changed content in an existing one, or a duplicate import. Fewer entries may reflect a deleted subscription, changed update results, or a different display scope. Check each subscription individually rather than inferring the cause from the total. If you only need one entry right now, select a server with a clear source, then check whether Global Routing is set to Config, Proxy, or Direct. Don’t confuse the routing mode with the server selection.

Using consistent names across devices makes entries easier to compare, but it doesn’t automatically sync local lists between devices. Check the Subscribe entries, manual entries, and selected Config on each device, especially after adding or removing information on one of them. See the App Store listing for device compatibility and system requirements. This section covers managing information on iPhone and iPad; list sorting isn’t a cross-device backup. The next section explains how to use test results to help choose entries without relying on sorting to manage their sources.

07 · Connectivity Test, Latency, and Sorting

What a Test Result Tells You

Connectivity Test shows whether a connection test for a server entry completed under the current network conditions. It doesn’t guarantee long-term service quality or prove that every request from an app follows the expected rules. Before testing, confirm which Subscribe entry or manual record the server came from, and check the device’s current network. Results may differ on another network. A success or failure applies only to the conditions at the time of the test; it doesn’t tell you whether a subscription URL can still be updated. Check that separately in Subscribe.

Latency figures can help you compare entries, but make sure the test conditions are as consistent as possible. Don’t treat results from different times or networks as a fixed ranking, and don’t overlook connection stability just because a number is lower. If a test fails for one entry, test that entry again, then compare it with another entry you know. If all entries fail at once, first check the device’s network and current settings. If only one entry keeps failing, recheck its Address, Port, authentication, and transport settings.

Sorting Helps You Find Entries; It Doesn’t Verify Them

Sorting by latency can quickly surface entries with better results in the current test, but you still need to know where each one came from. Server names may be similar, and results can change with the network, so it’s easy to select the wrong entry based on sort order alone. Narrow down the list by subscription name or manual note first, then check the test status and latency. For entries you use often, retesting regularly is more useful than saving a screenshot of one sort. Numbers in a screenshot mean little without the time and network conditions of the test.

If a server test succeeds but actual requests don’t behave as expected, troubleshoot the connection and routing separately. First check which server is selected in Home and whether it’s connected. Then check Global Routing: Config follows the current Config rules, while Proxy and Direct let you compare different routing modes. Under Config, a destination may match DIRECT, so a successful server test doesn’t prove that the destination is using the selected server. To investigate further, check keywords such as DOMAIN-SUFFIX, GEOIP, and IP-CIDR and their policies to see which rule handles the request.

What you seeCheck firstThen check
All entries fail their testsDevice network and current connection statusSubscription updates and settings separately
One entry keeps failingWhere the entry came from and its fieldsAuthentication, TLS, and transport settings
Test succeeds, but requests behave differentlySelected entry and Global RoutingWhich Config rule matches

Change one condition at a time while troubleshooting: hold the server constant and compare routing modes; then hold the routing mode constant and compare servers; finally, check the specific Config. This helps identify whether the issue is with the data, connection, or rules. If you switch several settings at once, even if the issue goes away, you won’t know which change made the difference. For more help, see Troubleshooting. For DNS resolution paths, see the DNS Settings Guide. Tests and sorting are diagnostic tools; interpret the results in light of actual requests and the rules in effect.

08 · Delete, Transfer, and Back Up Your Information

Confirm What You’re Deleting and What It Affects

Before cleaning up the list, identify whether you’re deleting a manually added server, a subscription-generated entry, or an entire Subscribe entry. Deleting a server and deleting its subscription entry have different consequences. If you remove the entry, you may lose the way to update the full set of servers through that URL on this device. Even if you only want to remove one server that isn’t currently working, first check whether it belongs to a subscription. The next update may add it back, so deleting entries one by one may not achieve what you want. Identify the source before deciding what to remove.

Break cleanup into four steps: check, save, delete, and verify. When checking, confirm the name and key fields so you don’t mistake similar entries. Before deleting, keep the original subscription URLs, manual server details, and any Config text you have and are entitled to use. Delete one type of entry at a time. Then return to Home and confirm that the remaining subscriptions still update as expected and the selected server is still there. If you can’t tell whether an entry is still needed, don’t delete the only copy of its original information. A tidy list is useful, but not at the cost of losing information you can’t rebuild.

Back Up Information You Can Use to Rebuild

A backup is more than a screenshot of the list. Screenshots may hide complete URLs, passwords, keys, paths, and other fields, and may not show whether an entry was added manually or generated by Subscribe. A more reliable approach is to keep the original subscription links, full details for manually added servers, and any Config content you still need, with a note about the purpose of each. Store sensitive information somewhere you control access to. Before sharing a troubleshooting screenshot, check whether it shows authentication details or URLs with parameters.

To rebuild your setup on another iPhone or iPad, first get Shadowrocket from the App Store and verify the app’s identity. Then restore each type of information using the right path: subscription URLs go in Subscribe, individual server details go in Add Server, and Config content should be checked through the configuration-file flow. After restoring, don’t just count the entries. Confirm that subscriptions can update, manual fields are complete, and the right Config is selected in Global Routing. Restoring a purchase is an App Store purchase-history issue, separate from rebuilding server information. For the former, see the Restore Purchases Guide.

If you no longer use a set of information, check whether other configuration references still depend on it before deleting it. For example, a Config rule may still point to a policy name; deleting the associated entry won’t fix the rule itself. Check those references before removing unused entries. Conversely, if you’re only switching servers temporarily, you don’t need to delete the old entry. Keeping sources clear and original information saved usually makes it easier to compare connection results and subscription changes later.

This guide covers the full management workflow, from importing to cleanup. For your first setup, follow the main steps in the Getting Started Guide. If the list is empty, parameters don’t match, or rule results are unclear, return to the relevant section and check each item. Shadowrocket is available from the App Store. The developer is Shadow Launch Technology Limited, and the app ID is 932747118. See the App Store listing for device compatibility and system requirements. A one-time app purchase does not include a service plan; you’re responsible for managing and verifying your own server details.