vmess:// vs. vless:// Links and Subscription URLs: Differences and Import Guide

Learn how individual share links differ from subscription URLs, and how to import and update them in v2rayN and v2rayNG.

At a glance

A link starting with vmess:// or vless:// is usually a configuration for one server. A subscription URL, by contrast, is an endpoint for retrieving a list of configurations. Use share links for quick tests; for ongoing use, prefer subscriptions from a source you trust. This guide covers how to identify each type, import it on desktop and Android, update subscriptions, and troubleshoot issues—with a clear distinction between adding a configuration and connecting successfully.

Share Links vs. Subscription URLs: A Configuration Snapshot or an Update Source

An individual share link stores the connection settings for one server, typically including its address, port, user ID, and transport settings. After import, the client converts it into a local configuration. If the provider later changes the server port, the imported configuration will not update automatically; you’ll need to import it again or edit it manually.

A subscription URL usually starts with https://. The client requests the URL, retrieves a set of configurations, and adds them to a designated group. It may return one configuration or many; what makes it a subscription is its purpose and response, not the number of servers. A regular webpage URL is not necessarily a valid subscription, even if it opens in a browser.

Subscription URL from a trusted source

Recommended

A saved endpoint for retrieving a list of configurations again later. Useful when a provider may change server addresses, ports, or the available server list. Before updating, make sure the source is trustworthy and the format is supported by your client.

Best for: ongoing use, multiple servers, and regularly syncing settings

Single vmess:// or vless:// share link

Stores a snapshot of one specific configuration, making its settings easy to inspect individually. It does not sync continuously; exporting a single link from a subscription does not preserve the subscription’s update relationship.

Best for: quick tests, manual management, and sharing self-hosted server settings

In short: identify the URL type, then choose the right import option

For vmess:// or vless:// content, use the import-from-clipboard option. For a subscription URL explicitly provided as such, save it in subscription settings first, then run an update. Don’t keep pasting the same subscription URL as if it were an individual server link.

Link Structure: Check the Protocol, Transport, and TLS Separately

A common VMess share link has a Base64-encoded JSON payload after vmess://. Decoding it often reveals fields such as add, port, id, net, host, path, and tls. Field conventions can vary between generators, so rely on what the client parses and how the server is configured.

VLESS share links usually use a URI format: the user ID appears before the address, the port follows the host, and query parameters specify transport and security settings. The text after # is the display name. Common parameters include type, security, sni, and flow; REALITY links may also include pbk, sid, and fp. Don’t swap parameters just because their names look similar.

FieldWhat to checkCommon misconception
Address and portServer domain or IP address and the port it actually listens onPort 443 does not necessarily mean TLS is enabled
CredentialsVMess or VLESS user IDThe same display name does not mean the credentials are the same
TransportTransport type, such as TCP or WebSocket, and its associated settingsA WebSocket path is not the path in a subscription URL
Security settingsTLS or REALITY, server name, and any required fieldsVLESS does not encrypt traffic on its own; check the security layer settings
Display nameThe name used to identify the entry in the listChanging the display name does not change the server location or route

Base64 is an encoding, not a security measure. A QR code is simply another way to represent the link. Don’t submit a complete link to an unfamiliar online decoder. You can check the fields in the client’s editor, but don’t change the user ID, path, or server name without information from the server side.

443
Common HTTPS port; use the node’s actual settings
10808
Example of a local inbound port; not the remote server port
1
Typical number of server configurations in a single share link

Importing into v2rayN: Clipboard and Subscription Groups Are Separate

These steps use the menu labels found in common Chinese-language versions of v2rayN; wording and locations may vary by version. Copy the complete link, removing any quotes, explanatory text, or line breaks added by a messaging app. Preserve query parameters and percent-encoding exactly as they appear in the link. Don’t delete characters from the entire link just because the display name contains spaces.

  1. Import a single share link: Copy the complete vmess:// or vless:// link, then in the main window choose “Servers” → “Import bulk URLs from clipboard.” Many desktop versions also support Ctrl+V; if the shortcut doesn’t work, use the menu.
  2. Check the parsed configuration: Open the newly imported entry in the server list and check the protocol, address, port, transport, and security settings. Seeing an entry means the link was parsed; it does not mean the settings have been verified by a successful connection.
  3. Save the subscription URL: Go to “Subscription groups” → “Subscription group settings,” add a group, enter a recognizable name and the complete subscription URL, then save. A name like “Daily subscription” is fine; don’t put an access token in the name.
  4. Retrieve the server list: From the “Subscription groups” menu, choose “Update current subscription (without proxy)” or “Update all subscriptions (without proxy).” If your current network cannot reach the subscription site but you already have a working proxy, try the corresponding update option that uses a proxy.
  5. Select a configuration and verify it: After the update, select a server and set it as active, then check the system proxy status in the main window. Apps that need the system proxy may require an option such as “Automatically configure system proxy.” Selecting a server alone does not mean all app traffic is going through the core.

Importing into v2rayNG: Save the Subscription, Then Update It

v2rayNG is an Android client that uses the Xray core. Parsing a share link, updating a subscription list, and routing Android traffic through the VPN are three separate steps. The first two provide configurations; connecting is when the app requests or uses VpnService authorization. A successful subscription update does not prove that the VPN is running or that traffic from every app is routed through it.

  1. Single link: Copy the link, open v2rayNG, tap “+” in the top-right corner, then choose “Import from clipboard.” If you have a QR code, use “Scan QR code” in the same add menu and make sure it comes from a trusted source.
  2. Subscription URL: Open “Subscription settings” in the side menu, tap “+,” enter a name and URL, then save. Don’t enter a single vmess:// share link where a subscription URL is required.
  3. Get the server list: Return to the configuration list, open the top-right overflow menu, and select “Update subscription.” Some versions let you update a specific group; after the update, check the intended group rather than relying on the currently selected filter.
  4. Connect and authorize: Select a configuration and tap the connect button. The first time you connect, allow the VPN connection when prompted by Android. If another connection is already using the system VPN, resolve the conflict first, then check the connection status and logs.
  5. Check per-app settings: If only some apps bypass the proxy, check “Per-app proxy” under “Settings.” Confirm whether the current mode proxies only selected apps or bypasses selected apps; don’t infer its behavior from the checkmarks alone.

Use the Same Subscription on Both Clients

Desktop: v2rayN
  • Save the URL in subscription group settings.
  • Run an update manually and confirm the intended group has configurations.
  • Configure the system proxy and routing rules separately.
Android: v2rayNG
  • Save the same URL in subscription settings.
  • Update the subscription, then select an active configuration.
  • Handle VPN authorization and per-app proxy settings separately.

Run updates on each client separately. Both can use the same source for their server lists, but routing, DNS, and app traffic settings usually aren’t synced through a standard node subscription. Before using both clients at once, check whether the provider limits the number of devices.

How Subscription Updates Work: Refreshing the List Does Not Sync Every Setting

A typical server subscription returns a set of share links, sometimes Base64-encoded as a whole or in another format supported by the client. A successful HTTP request only means the server returned something. If the response is a login page, an error message, or an unsupported format, the client may still report that there are no valid configurations.

When you update, the client usually rebuilds or replaces the server entries in the corresponding subscription group. Manually edited names, addresses, or transport settings may be overwritten, and the order of entries may change. Don’t treat an entry in a subscription group as a permanent manual copy. If you need to keep your changes, save a separate copy in a manual group and remember that it will no longer follow the source subscription automatically.

Import and Update Troubleshooting: Identify Where It Fails

First distinguish between “can’t parse,” “can’t retrieve the subscription,” and “configuration added but won’t connect.” These failures happen at different stages and require different troubleshooting. For a subscription timeout, check the retrieval path; if a server won’t connect, check its settings and core logs. You usually don’t need to delete and re-import the entire subscription group.

Why does the client say there are no valid configurations after I copy a link?

Check that the link starts with a complete vmess:// or vless:// prefix. Make sure you didn’t copy only the display name, miss the end of the link, or get a truncated link from a messaging app. If you copied an HTTPS subscription URL, save it in subscription settings and run an update instead. Don’t change its protocol prefix yourself.

The subscription opens in a browser, but the client can’t update it. Why?

The browser may be showing a login page rather than the subscription data, and it may use a different proxy route from the client. Check that the URL is complete, then look in the update log for a timeout, HTTP status, or parsing error. Try updating through a proxy only if you already have a working one; otherwise, you could depend on a server you haven’t retrieved yet.

Why does the connection time out even though the server imported successfully?

Open the configuration and check the server address, remote port, transport type, TLS server name, and any required REALITY parameters. Then check the system clock, network, and logs. Port 443 only tells you which port is in use; it does not confirm that TLS is configured correctly. Don’t use disabling certificate verification as a substitute for troubleshooting.

Why did my manual changes revert after updating the subscription?

The subscription group is rebuilt from the remote list, so local changes may be replaced at the next update. Copy configurations you need to manage separately into a manual group, give them a descriptive name, and after updating check that the active server is still the one you intended.

Why are some apps still connecting directly after a successful subscription update?

A subscription only provides configurations. On desktop, check the system proxy and each app’s own proxy settings. On Android, check that the VPN is running, along with per-app selections and routing rules. Even if traffic reaches the core, a direct-routing rule may send it outside the proxy; check the logs to find out.

After importing, check three things: the configuration is in the right group, the intended server is active, and the target app is using the expected outbound route. To learn more about user IDs, transport layers, and routing fields, see the Glossary and Protocol Reference. Don’t infer protocol capabilities from a server’s display name alone.

Download v2rayNDesktop and Android clients