VMess and VLESS Share Links: Single Server Links vs. Subscription URLs

Learn what VMess and VLESS share links contain, how they differ from subscription URLs, and how to import each in v2rayN and v2rayNG.

At a glance

When you get a link, first check whether it contains the settings for one server or points to a remote list of configurations. This guide is for anyone importing a configuration for the first time, moving to a new device, or troubleshooting subscription updates. Identify the vmess://, vless://, or HTTPS subscription URL, check the key settings, then import it in your client and verify that it connects.

Share Links vs. Subscription URLs: Settings or a Server List?

vmess:// and vless:// are typically share formats for a single configuration. The client reads the server address, port, credentials, and transport options from the link, then saves them as a local configuration. Copying two share links lets you import two entries at once, but that still does not create an updatable subscription.

A subscription URL is usually an HTTPS URL. The client visits it, retrieves the configuration list from the server, then parses and updates it. The URL may contain an account token; whether its path includes sub or ends in a particular file extension is not a reliable way to identify it. A regular webpage URL or a link to a single JSON file may not work as a subscription endpoint.

Subscription URL

Recommended

A set of configurations maintained over time. Use the update function to fetch the list again. If the provider changes server addresses or ports, or adds or removes configurations, the client must update successfully to get those changes.

Best for: Keeping configurations in sync when your provider offers a subscription URL.

Single share link

A snapshot of the settings at the time of import. Reimporting the same link usually won't pick up changes the provider has made since then.

Best for: Quick tests, checking one configuration, or moving a small number of known settings.

This recommendation assumes you have a trusted subscription source. A subscription is not a connection protocol, and it does not guarantee that every configuration in the list will work. VMess and VLESS are connection protocols; a subscription is a way to distribute and update configurations. They serve different purposes.

vmess://: Decode It, Then Check the Address, Transport, and TLS

A common VMess share format consists of vmess:// followed by a Base64-encoded JSON object. Base64 is an encoding, not encryption, so it does not hide credentials such as a UUID. Formats vary between tools, so not every Base64 string is a VMess configuration.

Here is the structure of a typical share link after decoding. The domain and UUID are illustrative only and do not point to a working service. These short keys belong to the share format; they are not a complete core configuration you can paste and run.

{
  "v": "2",
  "ps": "VMess example",
  "add": "edge.example.org",
  "port": "443",
  "id": "123e4567-e89b-42d3-a456-426614174000",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "edge.example.org",
  "path": "/gateway",
  "tls": "tls",
  "sni": "edge.example.org"
}

Being able to read the fields after decoding does not mean the client supports every combination. The GUI client parses the share format and generates a configuration; the core handles the connection. When troubleshooting, check both the imported configuration and the capabilities of the core in use.

vless://: Query Parameters Set the Transport and Security

VLESS share links commonly use a URI structure: the UUID comes before @, followed by the server address and port. Query parameters come after the question mark, and the label comes after the hash. This example shows VLESS with WebSocket and TLS; it is not a working connection link.

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.org&path=%2Fgateway&sni=edge.example.org#VLESS-WS-TLS
FieldExample valueWhat to check
encryptionnoneThis does not mean TLS is disabled; it is separate from the outer security setting.
securitytlsThis example uses TLS. Changing the label alone will not switch the server to REALITY.
typewsThe transport must match the server configuration.
path%2FgatewayURI-decodes to /gateway; avoid encoding it twice.
sniedge.example.orgThe server name used for the TLS handshake; set it as required by the server.

For a REALITY configuration, check the corresponding parameters, such as pbk, sid, and fp, against the source. Whether to use flow=xtls-rprx-vision depends on the server and transport combination. Don't add a Vision field to the WebSocket example above and assume that upgrades the protocol.

Bottom line: Check Each Setting After Importing; Don't Change the Protocol First

Start by checking five groups of settings: address, port, UUID, transport, and security. Test the connection only after confirming that the source settings are complete and the client supports that combination. Switching TLS, REALITY, or transport types at random can introduce new mismatches.

v2rayN and v2rayNG: Choose the Import Method for Your Link Type

The steps below use common Chinese menu labels. Button locations and wording may vary by version, so look for functions such as “Import from clipboard,” “Subscription group settings,” and “Update subscription.” Importing, selecting a configuration, starting a connection, and enabling the proxy are separate actions. Seeing an entry in the list does not mean setup is complete.

Import on Either Client: First Identify a Single Link or a Subscription

Desktop: v2rayN
  • Single link: Copy the full link, then choose “Server” → “Import bulk URL from clipboard” in the main window. You can also press Ctrl+V in versions that support this shortcut.
  • Subscription URL: Go to “Subscription group” → “Subscription group settings,” add a group, and enter a label and URL. Save it, then choose “Update subscription.”
  • After the update, select the configuration you want, choose “Set as active server” from the right-click menu, and configure the system proxy if needed.
Android: v2rayNG
  • Single link: Copy the full link, tap “+” in the upper-right corner, then choose “Import from clipboard.”
  • Subscription URL: Open the side menu and choose “Subscription group settings.” Tap “+” to add a label and URL, save, then return to the main screen and choose “Update subscription.”
  • Select the configuration you want and tap the connect button. The first time you connect, approve the VPN connection when prompted by the system, then check the connection status and logs.

You can add the same subscription to both clients, but update schedules, the selected configuration, and local routing settings won't sync automatically.

v2rayNG uses the Xray core; v2flyNG uses the v2fly core. Similar interfaces or the same subscription source do not mean they support exactly the same protocol extensions. For specific VLESS security and flow-control combinations, check the capabilities of the core in use. A link being recognized does not mean it will work.

  1. Before importing, make sure the clipboard contains only the link—not chat instructions, quotation marks, inserted line breaks, or Chinese punctuation at the end.
  2. After importing, open the edit screen and check the server, port, transport, and TLS settings. Don't rely on the label alone.
  3. After updating a subscription, check that entries appear in the intended group, then select one as the active configuration.
  4. Once connected, test with the application you actually use and check the logs to diagnose connection and routing issues.

Subscription Updates and Port Checks: Two Separate Connections

A subscription update uses the “client connects to the subscription server” path. Everyday traffic uses the “app connects to the local proxy, then the core connects to the remote server” path. One working does not mean the other will. A successful subscription download only confirms that the list was fetched and parsed; it does not mean every server in it is reachable.

443
Remote TLS port used in this example
10808
Local SOCKS port used by the command below
127.0.0.1
Local loopback listening address

These numbers show what to check; they are not universal defaults. The remote port comes from the configuration provider. For the local port, use the listening settings shown under v2rayN “Settings” → “Parameter settings.” If the local SOCKS inbound is listening on 127.0.0.1:10808, you can explicitly specify the proxy in a terminal with the command below.

curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 --head https://example.com/

socks5h tells the proxy to resolve the destination hostname. The 10-second and 20-second values set the connection timeout and total timeout for this command. If it fails, note the error instead of comparing just one run's timing. Check separately whether your browser uses the system proxy and whether the terminal explicitly specifies a proxy.

Common Import and Update Questions

Why does an HTTPS URL return “No valid configurations found”?

First, make sure you copied the subscription endpoint, not an account management page URL. Paste it into the URL field under “Subscription group settings,” then run an update. Don't treat a remote URL as a single VMess or VLESS link. If it still fails, check the logs for a sign-in page, access denial, or unsupported content format. Don't share your token while troubleshooting.

Why didn't the subscription update change anything after I imported a single link?

A single link is saved as a local snapshot and is not automatically linked to a subscription source. Add the actual subscription URL separately and update the relevant group. Don't put a share link in the subscription URL field or expect a new server configuration after changing the label.

Why did my manual changes disappear after refreshing the subscription?

Depending on the client version and update method, a subscription update may regenerate or overwrite entries in the group. To keep manual changes, copy the configuration to a separate local group and check the source of both entries so you don't select the wrong one next time.

Can I use an online decoder to inspect a share link?

A link may contain a UUID, subscription token, or server details. Check it in the client's edit screen first, or use a trusted offline tool. Don't post a full link, QR code, or unredacted logs in a public forum. If credentials have been exposed, reset them in your provider's dashboard and update the configurations on both clients.

Final Checks Before Moving to a New Device

A share link usually carries connection settings; a subscription usually provides a configuration list. Don't assume system proxy settings, per-app rules, DNS, routing, local inbound ports, or log levels will move with them. If the same source works differently on two devices, compare these local settings before blaming the remote service.

Download v2rayN and v2rayNG