Shadowrocket Share Link Formats: ss://, vmess://, vless:// and trojan:// vs. Subscription Links

A share link contains one node, while a subscription provides a list of nodes that can be refreshed. This guide explains the four link prefixes, how share links differ from subscriptions, and how to import each in Shadowrocket.

At a glance

This guide is for users who already have their own provider and subscription and need to import connection details into Shadowrocket. First, identify a single-node share link or a remote subscription by its prefix. Then check the server, port, authentication, and transport settings, and verify the import, connection test, and update. Examples are for format reference only and cannot be used to connect. This site does not provide, sell, or recommend nodes or subscriptions.

1. Share Links vs. Subscription Links: Connection Details or a Remote URL?

ss://, vmess://, vless://, and trojan:// links typically encode one node's connection details in a string. After import, the client gets the server address, port, authentication information, and related options. If the server's port changes later, the saved share link will not update automatically.

A subscription is usually an https:// URL. Shadowrocket requests that URL and reads the node list in the response; updating it fetches the content again. A subscription can manage multiple nodes, but it may also return just one. Whether it can be updated depends on whether the remote subscription source is saved, not on how many entries are currently in the list.

4 formats
Share link prefixes covered: ss / vmess / vless / trojan
2 types
Import sources: single-node details and a remote subscription URL
443
Example TLS port used in this guide; not a protocol requirement

An https:// URL alone does not prove that an address is a subscription. A provider's account page, documentation, or subscription endpoint may all use HTTPS. A valid subscription URL must return content the client can recognize as a subscription, not a login form or a web page.

2. ss://: Shadowsocks Method, Password, and Server

Common Shadowsocks share links use the SIP002 format: the “method:password” user information is Base64-encoded, followed by the server and port. Base64 is an encoding, not a security measure; anyone with the full link can usually recover the credentials.

ss://[email protected]:8388#Demo-SS

Some older formats encode “method:password@server:port” as a single string. So even when a link starts with ss://, the rest cannot always be split directly at @. If import fails, first check that the link is complete and the method is supported. Don't force one format into another.

3. vmess://: The Base64 Payload Is Usually JSON

A common VMess share format appends Base64-encoded JSON to vmess://. Unlike a typical URL, it does not display the host and port directly. The example below shows the decoded structure for learning purposes; it is not an importable share link.

{
  "v": "2",
  "ps": "Demo-VMess",
  "add": "example.com",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000001",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "example.com"
}

A missing closing brace, truncated field, or rich-text quotation marks after decoding may mean the data was damaged during copying. Copy the complete link again from the original source instead of guessing at authentication fields. Successfully parsing the JSON only confirms that the format is readable; it does not prove that the server can connect.

4. vless:// and trojan://: Similar Formats, Different Authentication

These links often use a URI structure: authentication details follow the prefix, the server and port come after @, transport or security parameters follow ?, and a remark follows #. Similar-looking links don't make the protocols interchangeable. Changing the prefix cannot convert a service to another protocol.

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#Demo-VLESS

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo-Trojan
FieldVLESS exampleTrojan example
AuthenticationUUIDPassword
Transport parameterstype=ws; Host and path must matchtype=tcp; use the supplied configuration
TLS namesni=example.comsni=example.com
RemarkDemo-VLESSDemo-Trojan

In this example, encryption=none describes a VLESS protocol-layer setting; it does not mean the entire connection has no TLS. Check parameters such as security=tls as well. Other share formats and transport combinations may include fields such as flow. Use the values in the existing configuration; there is no single value to apply to every VLESS link.

URL encoding also affects parsing: %2Fdemo decodes to /demo. Reserved characters in passwords or paths, such as @, #, and &, must be encoded correctly. Don't copy punctuation, line breaks, or quotation marks added by a messaging app, and don't repeatedly decode the entire link or you may change parameter boundaries.

5. Import a Single Link or Subscription into Shadowrocket

The steps below use the common Home screen on iPhone / iPad as a reference. Button layouts may differ on other platforms, but the distinction remains: import a single server or add a Subscribe source. Home manages nodes and connections, Config manages rule configurations, and Settings manages app options. Importing a node link into Config does not add a server to Home.

Import an existing share link

  1. Copy the complete link from your own configuration source, from its protocol prefix through the end of the remark.
  2. Open Home and use the clipboard import option. If prompted for clipboard access, allow it to continue. If that option isn't available on your platform, use the relevant import menu.
  3. If using a QR code, make sure it contains the complete link. Scanning is just an input method; it doesn't change the protocol parameters.
  4. After import, open the entry and check its protocol, address, port, authentication, and TLS / transport settings. Then save and select the entry.

Add an existing remote subscription

  1. Under Home → +, set Type to Subscribe.
  2. Paste the existing subscription URL into URL, enter a recognizable remark, and save. Use the subscription endpoint here, not the provider's homepage.
  3. Run the subscription's update action and wait for the request to finish. Then expand the subscription group to check the returned nodes. If the interface uses an icon menu, choose Update.
  4. Keep the subscription entry so you can update it later. If you copy just one node and delete the source, the standalone copy won't keep syncing.

6. Verify the Import: Check Parameters Before Rules

A successful import only means the client recognized the data; it doesn't confirm that authentication, transport, or the remote service is working. Select the imported entry, complete any required system connection authorization, and start the connection. Then check the connectivity test and try accessing the intended destination. Test results reflect the method used and are not sustained download speeds.

Global Routing → Config

Recommended

Requests are routed according to the active Config rules. A matching rule may select DIRECT, a proxy, or another configured policy; not all requests will use the currently selected node.

Best for: routine rule-based routing after verifying the import

Global Routing → Proxy

Routes requests handled by the client's proxy through a proxy, temporarily reducing variables caused by rule selection. This does not mean every type of system traffic will be intercepted.

Best for: troubleshooting when a node works but a request isn't using the proxy

Global Routing → Direct

Uses a direct connection and cannot verify whether an imported proxy node works. If a page loads in this mode, it only confirms that the corresponding direct route works.

Best for: a temporary comparison with the proxy route

Scene in Global Routing applies settings for a configured scene; it is not a fifth share protocol. Also check Settings → On Demand when troubleshooting: On Demand may reconnect when its conditions are met, but it won't fix an incorrect UUID, password, or WebSocket path.

Takeaway: Change one test condition at a time

First check the address, port, and authentication, then verify TLS and transport. Only after confirming the parameters should you temporarily change Global Routing. If Proxy works but Config doesn't, check which rule matches and which policy it selects before deleting and reimporting the subscription.

7. Common Questions About Share Links and Subscription Imports

I copied a link. Why wasn't an entry added in Home?

Make sure you copied the complete ss://, vmess://, vless://, or trojan:// string, not a web page title. Remove surrounding quotation marks and trailing punctuation, but keep query parameters within the link. Then try importing it again from Home.

I added an HTTPS URL. Why are there no nodes after updating?

Check that the entry's Type is Subscribe and its URL points to your subscription endpoint. A login page, expired token, or unsupported response may prevent nodes from being generated. Check the source and any error message; don't try to “convert” a subscription by changing its protocol prefix.

Why did my manually edited node settings revert after a subscription update?

Subscription entries are usually managed by remote content, which may recreate or overwrite their nodes during an update. To test settings temporarily, keep the original subscription and create a separate copy. For a lasting fix, update the original configuration source to avoid repeating the changes after every refresh.

I see a TLS error. Can I just turn off certificate verification?

Don't treat disabling verification as a general fix. Check the device's time, SNI, connection address, and whether the server certificate matches expectations. For WebSocket, also check the Host and path. Keep the error details and contact your configuration source with credentials removed.

Can I change a link directly to use another protocol?

No. Shadowsocks, VMess, VLESS, and Trojan use different authentication and handshakes, and the server must support the corresponding protocol. To switch, use the complete parameters for that protocol from your own configuration; don't just replace the prefix or port.

Keep the complete source, check fields for the relevant protocol, and update through the subscription entry. Share formats pass connection details; the result still depends on the configuration, network, and remote service.

Download Shadowrocket