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

Learn what ss://, vmess://, vless:// and trojan:// links contain, and how single-server links differ from subscriptions. All examples use fictional example.com data.

At a Glance

This guide is for users who already have their own provider configuration or subscription and need to identify link formats. First, distinguish a single server configuration from a remote subscription URL. Then check the authentication, transport, and TLS fields in four common share-link formats. Finally, troubleshoot the import, update, and connection stages. All examples use fictional data that cannot connect to a real service; no service access is provided.

1. The Prefix Determines How a Link Is Parsed—not Connection Quality

When Shadowrocket receives a link, it first needs to determine whether it contains server settings or points to a remote address used to retrieve configuration. Links such as ss://, vmess://, vless://, and trojan:// typically contain a single server entry. A subscription URL beginning with https:// points to remote content; the app must send a request and receive a response before it can parse the entries.

Link formatMain contentsHow it changes
ss://Shadowsocks encryption method, password, address, port, and moreReimport or edit manually
vmess://Usually Base64-encoded VMess JSON parametersReimport or edit manually
vless://VLESS UUID, address, transport, and security parametersReimport or edit manually
trojan://Trojan password, address, TLS, and transport parametersReimport or edit manually
HTTPS subscription URLRemote configuration endpoint and possibly an access tokenFetch remote content when the subscription is updated

An HTTPS URL may return a web page, login page, or another file, so being able to open it in a browser does not mean it can be imported as a subscription. Likewise, a port of 443 in a share link does not by itself confirm that TLS is enabled. Protocol, port, and transport security are separate fields; check them together.

2. ss://: Decode the Encryption Method and Password First

Shadowsocks share links commonly follow the basic SIP002 format: authentication information comes before @, the server address and port come after it, and an optional name can follow #. The authentication information is usually a URL-safe Base64 encoding of method:password. Older formats may encode a larger portion of the link, so its appearance alone is not enough to determine whether it is valid.

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

Base64 is an encoding, not a way to keep credentials secret. Anyone with the complete link can usually recover its password. Do not paste the original link into a public decoding website. To check its contents, review the fields in Shadowrocket after import and compare them with your existing configuration.

3. vmess://: Check the Outer Encoding and Inner JSON Separately

A common VMess share-link format puts Base64-encoded JSON after vmess://. The example below shows decoded data; it is not a complete share link to paste into a URL field. Export tools may use different combinations of fields, so check the actual import result.

{
  "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"
}

In this example, v is a share-link format field, not the Shadowrocket version. Even if the name and server address are correct after import, check the transport type, TLS, Host, and Path. A missing slash, incorrect path capitalization, or mismatched SNI can cause an entry to be added successfully but fail during the handshake.

4. vless:// and trojan://: Include Every Query Parameter

Common VLESS and Trojan share links use a URI-like format: credentials first, then the address and port, followed by additional parameters after a question mark. Both examples below use TLS, but their authentication methods differ. You cannot use one protocol in place of the other by simply changing the prefix.

vless://[email protected]:443?encryption=none&security=tls&type=tcp&sni=example.com#Demo-VLESS

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo-Trojan
FieldMeaningWhat to check
Content before @VLESS uses a UUID; Trojan uses a passwordDo not mistake the display name for an authentication credential
encryption=noneVLESS does not provide encryption at this protocol layerThis does not mean outer TLS is disabled
security=tlsSpecifies the TLS security layerCheck the SNI, certificate, and server configuration
type=tcpSpecifies TCP as the transport hereDo not copy this value if the actual configuration uses WebSocket
sni=example.comServer name used for the TLS handshakeDo not assume it can be omitted when the address is an IP

In a URL, & separates parameters and # introduces a remark. Reserved characters in a password, path, or remark must be percent-encoded according to the part of the URI where they appear. For example, the query parameter path /demo?mode=1 can be written as %2Fdemo%3Fmode%3D1. Do not encode the entire link repeatedly, or copy line breaks, Chinese punctuation, or quotation marks from surrounding text.

5. Single-Link Imports and Subscription Updates Follow Different Workflows

A single share link is a snapshot of server settings at a given point in time. A subscription URL, by contrast, is an endpoint that can be requested again. The address below illustrates the format only; token=xxxx is an obvious placeholder value and does not correspond to a real service. A subscription may return an encoded list of links or another supported format; its URL suffix alone does not tell you what it contains.

https://example.com/sub?token=xxxx

Choose an Import Method Based on What You Have

You have a single share link
  • Copy the complete link, including the protocol prefix, credentials, query parameters, and remark.
  • Open Shadowrocket and confirm the clipboard import prompt. If the system asks for permission to paste, allow it as needed.
  • Check the new entry in Home, then open its edit screen to verify the address, port, authentication, and transport fields.
  • If the upstream settings change, reimport the link or edit the entry manually. The entry will not automatically become associated with subscription updates.
You have your own subscription URL
  • In Home, tap + in the upper-right corner and set Type to Subscribe.
  • Enter the complete subscription URL and save it with a recognizable name.
  • Update the subscription, then check the server entries in its group.
  • Changes to remote content appear locally only after another update. Test the entries after updating.

A single-link import saves server settings; a subscription import saves a remote endpoint and its update relationship. Neither replaces valid authorization from the service provider.

A subscription update may add, replace, or remove entries it manages. Do not treat manual edits within a subscription group as permanent backups; a later update may overwrite them with remote settings. Record any differences before editing. To keep a separate configuration, use an entry that is clearly independent of subscription management and maintain it yourself.

Subscription tokens often act as access credentials. When troubleshooting a failure, record only the response status, error text, and stage where it occurred; do not share the full URL. If a token has been exposed, reset or revoke it in your own service management portal, then save the new URL in Shadowrocket.

6. After Import, Use Global Routing to Identify Where the Problem Occurs

A share link describes how to connect to a server; it is not a complete set of traffic-routing rules. Use Home to select a server and control the connection, and Config to manage rule configurations. When checking Global Routing, distinguish between a request that was not sent to the selected server and one that reached the server but failed to connect. Otherwise, you may keep editing a link that is already correct.

Config: Check Where Traffic Goes Under the Current Rules

Recommended

With an existing, valid rule configuration, let the rules determine where traffic goes. Check matching rules such as DOMAIN-SUFFIX, IP-CIDR, and GEOIP, and the target set by FINAL. Do not assume every request will use the server you just imported.

Best for: Checking whether everyday requests match the expected policy when you already have routing rules

Proxy: Temporarily Isolate Rule Effects

Route traffic handled by the app through the proxy for comparison testing. This cannot fix an incorrect password, UUID, or TLS setting, and it does not guarantee that all system traffic will use the proxy.

Best for: Checking whether Config rules are sending test requests somewhere else

Direct: Check Your Local Network Baseline

Connect traffic handled by the app directly. This helps check whether the local network is working, but opening a webpage in this mode does not prove that the newly imported server is available.

Best for: Comparing against the local network to rule out basic connection problems

Takeaway: Troubleshoot in Order—Parse → Update → Handshake → Routing

If no entry is created, check that the link is complete. If the subscription list does not load, check the URL and response. If an entry exists but cannot connect, check authentication and TLS. If the connection is established but specific requests fail, check Global Routing and the rules. Change one variable at a time, and restore the original mode after testing.

7. Common Issues and How to Fix Them

I copied a link, but no import prompt appeared. Why?

First, check that the clipboard content starts with a complete prefix such as ss://. Remove surrounding quotation marks, explanatory text added by a messaging app, and any line breaks within the link. Then check that the system did not deny paste access. You can enter an HTTPS subscription manually under Home → + → Type → Subscribe. Do not enter a single-server share link as a subscription URL.

The subscription update succeeded, but the servers still will not connect. Why?

A successful update confirms that subscription content was retrieved and parsed; it does not mean every server entry passed a connection test. Select the relevant entry in Home and check its port, authentication, transport, and TLS settings. Also check whether the remote service has disabled the entry. Downloading a subscription and completing a proxy handshake are separate results.

What should I do if a subscription update returns 401, 403, or a web page?

A 401 usually indicates that authentication is required; a 403 usually means the request was denied. Check your own service documentation for the specific cause. Verify that the token is complete and has not expired, and make sure you did not copy a management page URL by mistake. If the response is an HTML login page, get the subscription URL again from your existing management portal instead of repeatedly changing the server port.

Can I change vless:// to trojan:// and use the link as is?

No. A VLESS UUID and a Trojan password are different authentication fields, and the server listens for different protocols. Restore the complete original link and import it using the protocol configured on the server. Do not change the prefix just because both protocols use 443 or TLS.

The link imports, but there is a certificate error. Should I disable verification?

First, check the device's date and time. Then compare the original settings and verify the SNI, server name, and certificate validity. Pay particular attention to the TLS server name when the address is an IP. Disabling certificate verification is not a general fix: it weakens identity verification and will not resolve an incorrect UUID, password, or WebSocket Path.

Get Shadowrocket and Follow the Import Guide

Get Shadowrocket for iPhone or iPad on the App Store for a one-time payment of $2.99. The Mac (Apple Silicon and Intel), Windows, Android, and Linux versions are free. Check the App Store listing for current iPhone and iPad system requirements. Visit the download page to choose the option for your device, then follow the guide to import your own configuration.

This site does not provide, sell, or recommend nodes, subscriptions, or VPN services.

Download Shadowrocket