Shadowrocket Link Formats: ss://, vmess://, vless:// and trojan:// — Single-Server Links vs. Subscription URLs

Learn how single-server links differ from subscription URLs, how to import each into Shadowrocket, and what the ss://, vmess://, vless:// and trojan:// prefixes mean. Examples use placeholder values from example.com.

At a glance

This guide is for users who already have a subscription or connection parameters from their provider and are ready to import them into Shadowrocket. Identify the content by its URL prefix, verify the authentication, transport and TLS fields, then choose the right import method for a single link or subscription. The domains, passwords and UUIDs shown here explain the format and are not valid connection details.

1. Single-server links vs. subscription URLs

A single-server share link contains the parameters needed for one connection in a URI. The ss://, vmess://, vless:// and trojan:// prefixes tell the importer which format to parse. Importing one creates a server entry; it does not create an address that continually fetches new content.

A subscription URL is usually an HTTPS address. Shadowrocket requests that address, reads the response and parses the server entries it contains. Updating a subscription means requesting and processing its remote content again; an imported single-server link does not change on its own. Get subscription URLs from your provider. An https:// prefix alone does not tell you whether the response is a server subscription, a configuration file or a regular webpage.

4 formats
URI prefixes covered: ss / vmess / vless / trojan
1 server
A single-server share link usually describes one server entry
443
HTTPS default port; not the port used by every proxy service

2. ss://: authentication, server address and remark

A common Shadowsocks sharing format, SIP002, uses Base64URL-encoded authentication details, a server address, a port and an optional remark. In the example below, the decoded authentication details are aes-256-gcm:password, the address is example.com and the port is 8388. These example values cannot be used to connect.

ss://[email protected]:8388#Example-SS
PartMeaningWhat to check
ss://Shadowsocks share format identifierIn Add Server, confirm that Type is set to Shadowsocks.
YWVzLTI1Ni1nY206cGFzc3dvcmQEncoded method and passwordCheck that the method and password match the server settings.
example.com:8388Server address and portUse the port provided by your service provider; do not change it to 443 by default.
#Example-SSOptional remarkIdentifies the entry; it is not used for server authentication.

Another, older format encodes the “method, password, address and port” together, so you may not see an @. If a link will not import, first identify its format instead of adding separators by hand. Some links also include plugin parameters. Leaving them out can prevent a connection, even when the address and password are correct.

3. vmess://: JSON parameters encoded in Base64

A common VMess share format puts Base64 text after vmess://. The decoded result is usually JSON, not a plain “username@server” string. The example below shows demo JSON before encoding, not a complete link you can paste to import.

{
  "v": "2",
  "ps": "Example-VMess",
  "add": "example.com",
  "port": "443",
  "id": "11111111-2222-4333-8444-555555555555",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/connect",
  "tls": "tls",
  "sni": "example.com"
}

If the link came from a formatted message, line breaks, smart quotes or truncated Base64 can cause parsing to fail. Copy the complete original text again, then check the imported entry. Do not paste VMess JSON as configuration content in Config, and do not mistake the JSON port value for a subscription URL’s port.

4. vless:// and trojan://: check each readable parameter

VLESS and Trojan share links commonly use a straightforward URI structure: authentication details come before @, followed by the address, port and query parameters. The & shown on this page separates link parameters; when copying, keep the complete original link intact.

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

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Example-Trojan
CheckVLESS exampleTrojan example
AuthenticationUUIDPassword demo-password
Target addressexample.com:443example.com:443
Transport parameterstype=ws; requires Host and Pathtype=tcp
TLS parameterssecurity=tls and snisecurity=tls and sni

In path=%2Fconnect, %2F is the percent-encoded form of a slash. If a password contains URI-reserved characters such as @ or #, they must also be encoded correctly; otherwise, the parser may treat part of the password as an address or remark. Do not decode the entire link by hand before importing unless you understand how its fields are separated.

After importing, verify the transport and TLS settings

Seeing an entry in Home only means the link was parsed. If the connection fails, open the entry’s edit screen and check the address, port, authentication details, transport type, Host, Path and SNI in order. Do not hide parameter errors by disabling certificate verification.

In the VLESS example, encryption=none describes a protocol parameter; it does not mean the example has no TLS. Parameter names can vary between sharing formats, so changing only the prefix will not convert a VLESS link into a Trojan link.

5. Shadowrocket import options: server subscriptions vs. Config

Home manages server entries and connection selection, Config manages rule configurations, and Settings manages app preferences. A server subscription is for maintaining server entries in bulk; a remote configuration may also contain sections such as [General] and [Rule]. Either type of content may be fetched over HTTPS, but similar-looking URLs do not mean they belong in the same place.

Add Server → Type → Subscribe

Recommended

If you already have a server subscription URL, tap the add button in Home, open Add Server, set Type to Subscribe, enter the URL and save. Manage future updates through that subscription entry.

Best for: an existing server subscription that you want to keep updating in one place

Add Server → select the matching protocol under Type

Choose Shadowsocks, VMess, VLESS or Trojan based on the parameters you have, then enter the address, port and authentication details. You can also import a single share link from the clipboard prompt or by scanning a QR code; check the corresponding fields after import.

Best for: an existing single share link or checking one server entry manually

Config → remote configuration

Use this to import a rule configuration file. First confirm that the remote URL returns configuration content, then add and select it in Config. Do not use a regular server subscription URL as a rule configuration file URL.

Best for: a known remote configuration URL containing configuration sections

The system manages clipboard and camera permissions. Copy the complete link, return to Home and follow the import prompt; to scan a code, use the scanner in Home to read the original text. If no import prompt appears, check the prefix, spaces and line breaks. Do not enter a subscription URL in the Address field for an individual server.

What to do with each type of link

Have a single-server share link
  • Check the prefix and make sure the link is complete, then import it from the clipboard or by scanning a QR code.
  • Open the entry in Home and verify the address, port and transport fields.
  • If the server parameters change, get an updated link and check the entry again.
Have a server subscription URL
  • Get the subscription from your provider and preserve all query parameters.
  • Save the URL using Add Server with Type set to Subscribe.
  • Update the subscription, then check that the entries changed as expected.

Keep the subscription entry if you need ongoing updates. A single-server share link does not automatically become an updatable subscription.

6. How subscription updates work, sensitive data and troubleshooting

The URL below is clearly for demonstration. token=xxxx marks where an authentication parameter would go; it is not a real credential. A server may return an encoded server list or other content the client can recognize. An HTTPS URL by itself does not identify the response format.

https://example.com/sub?token=xxxx
  1. First, identify the resource type. Ask your provider whether the URL points to a server subscription or a remote configuration. A login page, error message or empty response is not a valid server list.
  2. Next, check whether the request succeeded. For a timeout, first check whether your current network can reach the subscription domain. HTTP 401 or 403 responses usually call for checking authorization and the link’s status. A webpage loading in a browser does not, by itself, mean the subscription is valid.
  3. Then check the parsing result. If the request succeeds but no entries appear, the response may not be supported by that import option, or it may contain no usable entries. Check the format documentation instead of repeatedly adding duplicate subscriptions.
  4. Finally, check the connection and rules. A successful update does not mean every entry can connect. First check the selected entry in Home, then check Global Routing. Config applies configuration rules; Proxy sends traffic selected for proxying to a proxy policy; Direct connects directly; and Scene applies the settings for the selected scene. A server share link does not create a complete set of routing rules for you.

7. Common questions about importing links and updating subscriptions

Why doesn’t a pasted ss:// link update when I put it in the Subscribe URL field?

ss:// describes a single server entry; it is not a subscription address for an HTTP request. Remove the incorrectly entered subscription, return to Home, and import the original share link from the clipboard or by scanning a QR code. Then check the Shadowsocks method, password and port.

Will a name or parameter I changed manually remain after a subscription update?

Subscription entries are maintained using the content returned by the remote server, so local changes may be replaced during an update depending on the update and retention settings. If you need to test parameters, note the original values and use a separate entry. Do not rely on temporary edits to a subscription as a lasting configuration source.

The QR code scans, but the connection fails. Should I scan it again?

First check that the imported entry is complete, especially the WebSocket Path, Host and TLS SNI. If the text was not truncated, scanning again will not change the server parameters. Then check the service status and the selected entry. For further help, see Troubleshooting.

Do I still need DOMAIN-SUFFIX or FINAL rules if I have a server link?

Server entries define connection targets; rules determine where requests go. They serve different purposes. With Global Routing → Config selected, check the rule order and policy targets in the current configuration. DOMAIN-SUFFIX matches domain suffixes, while FINAL handles requests that did not match an earlier rule. Importing a server does not configure these rules.

Get Shadowrocket on the App Store