This guide is for anyone using a vmess:// link, vless:// link, or subscription URL for the first time. The key distinction is simple: protocol share links import one node, while subscription URLs maintain a group of updateable nodes. Once you identify the link type, use the matching v2rayN or v2rayNG import option to avoid common mistakes such as pasting a subscription URL into the node import field or entering a single-node link in subscription settings.
Share links and subscription URLs are different types of data
Both vmess:// and vless:// are single-node share links. They contain the parameters a client needs to establish one proxy connection, such as the server address, port, user ID, transport method, and TLS settings. Importing one into a client typically adds one entry to the server list; importing another link is what adds another node.
A subscription URL is a network address that the client can request. After accessing it, the client retrieves a node list and parses it into multiple VMess, VLESS, and other configurations. The main benefit is not simply importing many entries at once, but keeping them updated: when the provider changes a server address, port, or node name, refreshing the subscription syncs those changes to the client.
The two can look confusingly similar. A share link states its protocol at the beginning, such as vmess:// or vless://, while a subscription URL usually starts with http:// or https://. Some subscription responses appear as long encoded text when opened in a browser. That does not make them single-node links. Check the original URL and the provider’s instructions, and do not split response-page content into separate imports.
| Comparison point | Single-node share link | Subscription URL |
|---|---|---|
| Typical prefix | vmess://、vless:// | http://、https:// |
| Contents | Connection parameters for one group of nodes | A node list that can be retrieved again |
| Import result | Usually adds one node | Creates a subscription group and generates multiple nodes |
| Future changes | Retrieve and import a new link | Refresh the subscription to sync the list |
| Best for | Temporary testing, single-node migration, and troubleshooting one setting at a time | Everyday use, multi-node management, and regular refreshes |
What vmess:// and vless:// links contain
A common VMess share format encodes a JSON object and places it after vmess://. The decoded fields typically include a version marker, node name, server address, port, user UUID, alter ID, encryption method, transport network, Host, path, TLS, and SNI. Encoding mainly makes the full string easier to copy; it does not encrypt or protect the node credentials.
A VLESS link is closer to a conventional URI: the user UUID appears in the user-info section, followed by the server address and port, while transport and security settings are placed in the query string. The fragment after the hash is used as the displayed node name. Common parameters include encryption, security, type, host, path, serviceName, sni, fp, pbk, and sid. The required fields depend on whether the server uses TCP, WebSocket, gRPC, TLS, Reality, or a combination of these.
Common VMess logical structure
Protocol → encoded JSON
JSON → address + port + UUID + transport parameters + TLS parameters + node name
Common VLESS logical structure
Protocol → UUID@address:port
Query parameters → encryption marker + security layer + transport method + SNI/Host/path
Fragment → name shown by the client
After importing, verify that related parameters are present as a complete set. For example, a WebSocket node needs both its path and Host; do not replace a TLS node’s SNI with the server IP; and a Reality node’s public key and short ID must match the server. The node name only helps identify the entry, so renaming it normally does not affect the connection. The address, port, UUID, security layer, and transport fields directly affect connectivity.
Importing a single node or subscription in v2rayN
v2rayN 7.x can recognize several types of share links from the clipboard. First copy the complete vmess:// or vless:// link without omitting its trailing parameters. Return to the main window and choose “Servers” → “Import bulk URLs from clipboard.” After a successful import, the new node appears in the current configuration list. Select it and press Enter, or use the context menu to set it as the active server, then check the running status at the bottom.
- Copy the original link: Copy everything from the protocol prefix through the end of the node name. Do not include line breaks inserted by a chat app or punctuation at the end of the sentence.
- Import from the clipboard: Open “Servers” → “Import bulk URLs from clipboard” and check whether a new row appears in the list.
- Verify key fields: Double-click the node and check that the address, port, user ID, transport protocol, security settings, and SNI are present and correctly assigned.
- Set the active node: Select the node, set it as the active server, start the core, and choose the system proxy mode you need.
- Check the runtime log: If the connection fails, first distinguish a timeout, certificate error, authentication failure, or port conflict instead of changing every parameter at once.
A subscription URL uses a different workflow. Open “Subscription groups” → “Subscription group settings,” create a group name, and paste in the complete subscription URL. Save it, then choose “Subscription groups” → “Update all subscriptions.” After the first update, the list is populated with nodes for that group. If the URL can only be accessed through an existing proxy, choose the corresponding update-through-proxy command when a working node is already available.
Refreshing a subscription may overwrite fields generated for that group, so avoid manually editing subscription nodes for long-term use. If you need to test transport settings, duplicate the node first and edit the copy. Your test configuration will then remain separate from the original subscription configuration when the next update runs.
Conclusion: identify the correct entry point before diagnosing an import failure
Adding only one node after a clipboard import is normal; seeing multiple nodes after a subscription refresh is also normal. If you give an https:// address to “Import bulk URLs” and no nodes are created, use “Subscription group settings” instead of repeatedly copying the same URL.
Importing a single node or subscription in v2rayNG
To import a single node in v2rayNG 1.9.x, copy the complete link, tap the plus button in the upper-right corner of the main screen, and choose “Import configuration from clipboard.” The configuration list will gain a new node. Select it to make it active, then tap the start button on the main screen. The first time, watch for the system’s network connection confirmation; without approval, the client cannot establish its local proxy channel.
- Import a single link: Copy vmess:// or vless://, tap the plus button, then choose “Import configuration from clipboard.”
- Create a subscription group: Open the menu in the upper-left corner, go to “Subscription group settings,” tap the plus button, and enter a note and subscription URL.
- Refresh the node list: Return to the main screen, choose “Update subscriptions” from the menu, and wait for the completion message.
- Select the active node: Tap the target configuration in the list, confirm that it is selected, and start the connection.
- Run a basic test: The client’s latency test only provides an initial reachability check. Confirm the connection with an actual webpage or application request.
If the clipboard contains explanatory text, multiple line breaks, and links, recognition may be incomplete. The safer approach is to copy one complete link at a time. VLESS query parameters are separated by &, and some text editors may alter the string and remove parameters. If security, type, or sni is empty after import, copy the link again from the original source.
If a subscription refresh succeeds but the list is empty, first confirm that the subscription group is enabled. Then check for spaces around the URL and verify that the device’s system time is accurate. If the response has expired or the server returned no content, repeatedly refreshing locally will not recreate the nodes; obtain valid subscription content instead.
When to use a share link and when to use a subscription
A single-node share link is more direct when you have one fixed node or are troubleshooting the port, SNI, or WebSocket path one field at a time. It does not add a whole set of configurations at once, making it useful for comparison tests: keep the original node, duplicate it, change one field, and compare the logs.
Subscriptions are better for long-term management when the node list is large or frequently changing. After a grouped update, the client can retrieve new nodes and remove old entries withdrawn by the provider. Separate work, test, and backup configurations by subscription name so you do not have to search repeatedly through dozens of similarly named nodes.
VMess share link
A single link usually stores node parameters in encoded JSON. It is useful for migrating an existing VMess configuration or checking fields such as WebSocket and TLS one by one.
Best for: migrating legacy configurations, single-node testing, and troubleshooting parameters
VLESS share link
Its parameter structure is closer to a standard URI and can represent TLS, Reality, WebSocket, or gRPC combinations directly. You should still verify the security-layer parameters after import.
Best for: a single VLESS node and checking Reality settings
Subscription URL
RecommendedIt carries a group of updateable configurations in one place, reducing the need to copy and maintain nodes individually. Save it to a subscription group rather than using the single-node import entry point.
Best for: everyday use, multi-node management, and regular updates
Conclusion: use subscriptions for routine maintenance and single-node copies for troubleshooting
Use subscriptions to keep the node list synchronized. When you need to change the SNI, transport path, or security settings, duplicate the target node and test the copy. This preserves subscription updates while making it clear which field affects the connection.
Troubleshooting order for import failures and connection failures
“Unable to import” and “imported but unable to connect” are different problems. The former usually involves the link format, clipboard contents, or import entry point. The latter means the client has recognized the configuration, so investigate the network, system time, authentication, and transport parameters. Identify the failure stage first to avoid repeatedly testing the network for a formatting problem or repeatedly importing the same link for a connection problem.
- No new node appears: Check that the protocol prefix is complete, the link has not been broken by line breaks, and no Chinese punctuation was appended. Also confirm that you used the clipboard import entry point.
- Subscription update reports a format error: Confirm that you entered the subscription URL itself, not a webpage title, QR code description, or individual vmess:// or vless:// link.
- The node times out immediately: Verify the server address and port, and check whether the current network can reach the server. Do not swap ports such as 443 and 80 simply because one is more common.
- TLS certificate error: First correct the system date, time, and time zone, then verify the SNI. Disabling certificate verification should not be treated as the default fix.
- Authentication failed: Recheck authentication fields such as the UUID, Reality public key, and short ID, and avoid dropping characters during manual entry.
- Connected but webpages do not open: Check whether v2rayN’s system proxy mode is enabled, or verify the connection status in v2rayNG. Then inspect DNS and routing rules to ensure requests are sent through the correct outbound.
v2rayN does nothing after copying vmess://?
Confirm that you used “Servers” → “Import bulk URLs from clipboard” and reduce the clipboard contents to one complete link. Remove quotation marks, spaces, and sentence-ending punctuation around the link before importing it again.
Why does pasting a subscription URL only produce an error?
An https:// subscription URL belongs in “Subscription groups” → “Subscription group settings,” followed by an update. It is not a single-node URL and cannot be handled through the vmess:// or vless:// import entry point.
Why does an imported VLESS node save successfully but keep timing out?
Check the address, port, UUID, security, type, and SNI in order. With Reality, also verify the public key and short ID. Change one field at a time and review the core log after each change.
Why did my custom node name revert after a subscription update?
Subscription-generated records refresh according to the remote content. If you need to keep a custom name or experimental parameters, duplicate the node first and edit the copy instead of treating the subscription record as a permanent manual configuration.
Why do actual requests fail even though the latency test returns a number?
A latency test does not cover every handshake and routing step. Check the system time, TLS logs, DNS resolution, and system proxy status, then verify with an actual webpage request. Do not judge node availability from a single millisecond value.
Three checks after importing
First, check configuration completeness. For VMess, pay attention to the address, port, UUID, encryption field, transport type, and TLS. For VLESS, in addition to the address, port, and UUID, check security, flow, transport type, and the related SNI, Host, path, serviceName, or Reality parameters. Missing fields do not always prevent saving, but they may trigger an error only when the core starts or the handshake begins.
Second, check the local proxy status. A running v2rayN core does not mean system traffic is already using the proxy; choose the system proxy mode according to your needs. The common local SOCKS port is 10808. If a browser or another program has a manually configured proxy, its port must match the client’s current listening port. When the core is healthy but an app has no network access, check the local port and system proxy before changing protocols.
Third, establish maintainable configuration habits. Use subscription groups to synchronize everyday nodes and single-node copies for testing. Node names can include the region, protocol, and purpose, but should never contain a UUID or full server credentials. After stopping use of a share link, remove it from clipboard history, public chats, and temporary text. If credentials have been exposed, obtain updated configuration rather than merely changing the displayed name.
- Confirm that the link type matches the import entry point: protocol links go into the node list, while network URLs go into a subscription group.
- Confirm that the core is running, the local listening port is not in conflict, and system proxy mode is enabled when needed.
- Confirm that the logs show no timeout, certificate, authentication, or DNS errors before testing with an actual request.