Content beginning with vmess:// or vless:// is usually a single-node configuration. A provider's HTTPS subscription URL, by contrast, is an endpoint for retrieving a list of configurations. For a one-off node, import from the clipboard; to keep receiving node updates, use a subscription group. This guide explains the link fields, walks through the steps on desktop and Android, and covers updates and troubleshooting so you don't paste a URL into the wrong field.
Single-node share links vs. subscription URLs
A single-node link contains a snapshot of a configuration, usually including the server address, port, credentials, and transport settings. The client parses it into a local node entry. If the server address or credentials change later, the saved entry won't update automatically just because you imported it before. You'll need to import the new link or edit the entry manually.
A subscription URL points to a remote configuration resource. The client requests and parses its response, then updates the associated group. A typical response contains a set of share links, though some clients support other configuration formats. Subscription URLs usually start with HTTPS, but not every HTTPS link is a subscription: a website's home page, login page, or checkout page is not a node list.
Subscription URL: keep a node list up to date
RecommendedSave the URL once, then update the group when needed. The provider can change node names, connection settings, or the number of available nodes. Automatic updates depend on the client's settings.
Best for: providers that offer a compatible subscription, and users who need ongoing node updates.
Share link: add a node once
Parse links directly from the clipboard without contacting a subscription server first. You can paste multiple lines at once, but a bulk import still doesn't create an automatically updated subscription.
Best for: self-hosted nodes, temporary testing, or a single complete configuration.
Identify the content before choosing an import method
If you see a protocol prefix, use clipboard import. If the provider gives you a subscription URL, create a subscription group. Don't remove query parameters just to make the URL fit a client input field.
What's inside VMess and VLESS links?
A common legacy VMess share-link format consists of vmess:// followed by a Base64-encoded JSON object. Base64 is an encoding, not encryption. Decoding it typically reveals the address, port, UUID, transport, and remark. Different implementations may use different share-link formats, so no single decoding method applies to every VMess link.
The example below shows a decoded legacy-format link for learning purposes. The value of v identifies the share-link format version, not the client version; net and tls describe the transport and transport security settings. The example domain and UUID are illustrative and don't identify a working service.
{
"v": "2",
"ps": "Example node",
"add": "node.example.com",
"port": "443",
"id": "550e8400-e29b-41d4-a716-446655440000",
"aid": "0",
"scy": "auto",
"net": "tcp",
"type": "none",
"host": "",
"path": "",
"tls": "tls",
"sni": "node.example.com"
}
VLESS share links typically use a URI format. The credentials come before @, followed by the server address and port. Query parameters specify the transport, security layer, and other options; the fragment at the end is usually a remark. This is also a non-working example for illustration only.
vless://[email protected]:443?encryption=none&security=tls&type=tcp&sni=node.example.com#demo-node
encryption=nonemeans VLESS itself doesn't encrypt the payload. It doesn't mean the entire connection is unencrypted; this example also uses TLS.security=tlsandsnimust match the server configuration. Changing the address to an IP usually doesn't mean you can remove the original server name.type=tcpspecifies the transport. Other transports, such as WebSocket, may also require fields like a path or Host.- REALITY nodes may also include a public key, short ID, fingerprint, and flow-control settings. If any fields are missing, ask the provider for a complete link rather than filling them in based on a standard TLS example.
A QR code is usually just another way to carry this text; it can't fill in missing connection parameters. After scanning, check whether it contains a single-node link or a subscription URL. Whether the connection works depends on the client's parser, the runtime core, and the server configuration—not on how the QR code looks.
v2rayN: import a single node from the clipboard
v2rayN is a desktop configuration manager. Importing a node and enabling the proxy are separate steps. The instructions below use common Chinese menu labels; depending on the version, options may appear in the menu bar or the node list's context menu. After an upgrade, look for the same feature by name.
- Copy the complete link. Copy everything from
vmess://orvless://to the end. Avoid including quotation marks, periods, or explanatory text added by a chat app. For bulk imports, put each link on its own line. - Import the link. In v2rayN, open “Servers” → “Import bulk URLs from clipboard.” Some versions support
Ctrl+V; if the shortcut doesn't work, use the menu. Don't paste the link directly into the server address field. - Check the node details. Verify the remark, address, port, and protocol in the node list. Open the node editor to confirm that the transport, TLS, or REALITY settings were preserved.
- Select and start the node. Set it as the active server, then enable the system proxy or TUN if needed. Importing a node successfully doesn't mean your browser traffic is using the proxy.
- Test an actual connection. Check the client logs as you connect. A latency test only reports the result of one type of probe; it doesn't verify websites, DNS, and routing end to end.
v2rayN: create a subscription group and update nodes
To import a subscription, save its source first, then fetch its contents. If you've only created an empty group and haven't updated it, it's normal for the list to show no nodes. Before you begin, confirm that the provider's link is compatible with your client—not an endpoint intended for a different configuration format.
- Open “Subscription Group” → “Subscription Group Settings,” add a group, and give it a recognizable name, such as “Daily connections.”
- Enter the complete HTTPS subscription URL in the URL field and save it. Keep the token, path, and query parameters intact; copying only the domain won't work.
- Return to the “Subscription Group” menu and choose “Update current subscription.” To refresh every group, choose “Update all subscriptions.”
- For the first update, try connecting without a proxy. Only try updating through a proxy if you already have a working proxy and a direct request to the subscription endpoint fails. This avoids making the update depend on a node that isn't working yet.
- Check the update message and node list. Confirm that the new nodes appear in the right group, then select an active node and test the connection.
A subscription update may add, replace, or remove entries in a group, depending on the client version and settings. Before making manual changes you need to keep, export a backup or save them in a separate manual group. Don't assume local edits to subscription nodes, such as renaming them or changing their settings, will survive every update.
v2rayNG: clipboard import and subscription setup
v2rayNG is an Android client that uses the Xray core. Importing a single node and updating a subscription are separate workflows here, too. If you use v2flyNG, check whether its v2fly core and current version support the node settings you need. The fact that both clients can read subscription URLs doesn't mean they can run every node.
On Android, choose the import method that matches the content
If you received a single-node share link
- Copy the complete link and return to the v2rayNG home screen.
- Tap “+” in the top-right corner → “Import from clipboard.”
- Make sure the node appears in the list, select it, and start the connection.
- The first time you connect, read and approve the system VPN connection request.
If you received a subscription URL
- Open the side menu → “Subscription Group Settings.”
- Tap “+”, enter a remark and the complete subscription URL, then save.
- Return to the home screen and select “Update subscription” from the top-right menu.
- Check the update result, then select an available node from the group.
Menu labels may change between versions. Look for the “Import from clipboard” and “Subscription Group Settings” features, and don't save a single-node link as a subscription URL.
Desktop and Android clients can use the same compatible subscription, but each saves and updates its own local list. Updating on your computer won't refresh your phone. Routing rules, per-app settings, the system proxy, and TUN settings aren't synced just because both devices use the same subscription. Follow the provider's rules if it limits the number of devices or simultaneous connections.
Troubleshooting import failures, empty subscriptions, and timeouts
First, identify where the problem occurs: for parsing failures, check the link text; for fetch failures, check the subscription request; if an imported node won't connect, check its settings and the core logs. Repeatedly deleting the entire client configuration usually loses useful clues and won't fix expired server credentials.
Copied a link, but the client says there's nothing to import?
Paste the content into a local text editor and check that the protocol prefix is complete and that no line breaks or non-ASCII punctuation were added by a chat app. Don't manually add line breaks to encoded content. If the link looks intact but still isn't recognized, update the client and try again, or ask the provider to export a compatible format.
The subscription update completed, but the list is empty?
First, make sure you aren't viewing a different group or filtering the list. Then check the parsing results in the update log. A successful request doesn't guarantee that the response contains nodes: a login page, expiration notice, or unsupported format may produce no entries. Ask the provider to confirm the subscription status and the correct client endpoint.
Update timed out or returned 401 or 403?
For a timeout, check your network connection and system time, then try a direct update or update through an available proxy, depending on your network. A 401 or 403 means the server rejected the request. Check the complete token, account status, and access restrictions. Follow the provider's guidance on the specific cause, and don't retry rapidly over and over.
The node imported, but websites still won't load?
Make sure the node is selected and the connection is running, then check that the system proxy or Android VPN is active. Review the logs for authentication, handshake, and DNS errors, and verify the port, UUID, server name, and transport settings. Successful import only means the configuration was parsed; it doesn't prove the server is available.
A 404 from a subscription may mean the path is no longer valid or the provider has changed its endpoint. For a certificate error, first check the system time, domain, and network. Disabling certificate verification isn't a general fix. For more connection and latency-test troubleshooting, see the connection troubleshooting guide.
Treat share links and subscription URLs as credentials
A single-node link often contains an authentication UUID or password, while a subscription URL often includes an access token. Anyone who can access these may obtain node configuration or account-related information. Turning a link into a QR code, shortening its URL, or encoding it in Base64 doesn't make it any less sensitive.
- Redact sensitive details before troubleshooting. Hide UUIDs, passwords, subscription tokens, and complete QR codes in screenshots. Check logs for URLs with parameters before sharing them.
- Inspect links locally whenever possible. Don't submit real share links or subscription URLs to unfamiliar online decoders or conversion tools. If you need to convert a format, first check who will process the data and who can access it.
- Reset leaked credentials at the source. Reset the subscription URL or node credentials in the provider's dashboard, then import the new details and test them. Deleting a local entry can't revoke credentials someone else already has.
- Review changes after updates. A subscription source can change its configuration. Don't keep fetching updates automatically from an unknown source; make a local backup before changing an important configuration.
Keep two things in mind: a single-node link adds one configuration, while a subscription URL tells the client where to fetch configuration updates. Choose the right import method first, then verify the node settings and actual connection; this works better than switching protocols at random. For terminology, see the subscription glossary entry. For step-by-step proxy setup, read the user guide.