For anyone who has received vmess:// or vless:// text but is unsure where to paste it. This guide breaks down both link types, explains how they differ from HTTP subscription URLs, and covers clipboard and QR code imports in v2rayN and v2rayNG, plus a practical troubleshooting order.
Share Links and Subscription Links Are Different Entry Points
Both vmess:// and vless:// are single-node share links. After parsing one link, a client usually adds one server profile containing the address, port, user ID, transport, and security settings. Import three share links in bulk and you get three independent profiles; they will not update automatically if the original text later changes.
A subscription link is usually a web address beginning with https://. After the client requests it, the server returns a set of node records, possibly as Base64-encoded aggregate text or structured data the client can parse. A subscription group stores the address used to fetch the list, so you can update it manually or on a schedule; additions, removals, and parameter changes appear locally on the next fetch.
Single Share Link
Importing it creates one local node, useful for temporary testing, one-off migration, or checking a protocol configuration. If the parameters change later, import it again or edit the profile manually.
Best for: receiving just one vmess:// or vless:// address
Subscription Link
RecommendedFetch a group of nodes at once and let the subscription group manage updates. Desktop and Android clients can each save the same subscription address.
Best for: maintaining multiple nodes across devices over time
| Comparison | Share Link | Subscription Link |
|---|---|---|
| Typical prefix | vmess://、vless:// |
https:// |
| Result of one import | One link per node | One subscription group contains multiple nodes |
| Update method | Re-import or edit the profile | Update manually or automatically according to client settings |
| Common entry points | Import from clipboard or scan a QR code | Subscription group settings or subscription settings |
What vmess:// and vless:// Store
A common VMess share format puts an encoded JSON object after vmess://. After decoding, v is usually 2, add is the server address, port is the remote port, and id is the UUID. net and type describe transport settings, while fields such as tls and sni describe the security layer. Generators may omit empty fields, but the address, port, and user ID must form a valid outbound configuration.
The VMess JSON below illustrates the fields. It uses a reserved domain and cannot establish a connection directly; its purpose is to show which settings the client receives after import.
{
"v": "2",
"ps": "VMess WS example",
"add": "node.example.com",
"port": "443",
"id": "8f4c756b-3d92-4f9a-9f52-3e4b1d6a7280",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "node.example.com",
"path": "/gateway",
"tls": "tls",
"sni": "node.example.com"
}
The VLESS format is closer to a standard URI: the user ID comes before @, the server and port follow it, transport and security settings appear as query parameters, and the display name comes after #. Because the fields are readable, troubleshooting can start by checking whether security, type, flow, sni, pbk, and sid are missing.
vless://[email protected]:443?encryption=none&security=reality&sni=www.example.com&fp=chrome&pbk=Yfg3cV9mR7wP2nK6aB4dL8sQ1xT5uH0jE9zN2pM6rA0&sid=6ba85179&type=tcp&flow=xtls-rprx-vision#VLESS%20REALITY%20example
Conclusion: The Protocol Name Is Only the First Check
If import succeeds but the connection fails, do not check only VMess or VLESS. Compare the port, transport type, TLS or REALITY, security server name, path, and flow one by one. Any mismatch with the server can cause the handshake to fail.
Import a Share Link from the Clipboard in v2rayN
The steps below use the Chinese interface of v2rayN 7.15.4 as a reference. Menu labels may change across 7.x releases, but the workflow is the same: copy the complete share text, then let the client scan the clipboard for supported URIs. Do not add quotation marks when copying, and do not select explanatory text shown by the chat app.
If you receive multiple links, put each URI on its own line. v2rayN’s bulk importer recognizes supported protocols line by line; ordinary descriptions, blank lines, and unrecognized text normally do not create profiles. Check the number of newly added entries immediately after importing instead of turning on the system proxy right away.
- Launch v2rayN, wait for the main window to appear, and confirm that the core components have loaded normally.
- Copy the complete
vmess://orvless://text. For bulk imports, put one link on each line. - Open the “Server” menu and choose “Import Bulk URLs from Clipboard.” Some 7.x interfaces also support Ctrl + V when the server list has focus.
- Find the new entry in the server list, double-click it to open the editor, and check the address, port, UUID, transport, and security type.
- Right-click the target node and set it as the active server. Then choose “System Proxy” or TUN mode according to your use case.
- Go to “Settings” → “Parameter Settings” and check the local listening ports. The test configuration in this guide uses SOCKS
10808and HTTP10809; if another program is using a port, switch to an available port and restart the core.
Check the Fields Before Testing Connectivity
For VMess over WebSocket, pay particular attention to Host and Path. For example, if the server path is /gateway but the client uses /, the expected transport will fail even when the address, port, and UUID are correct. For VLESS REALITY, also verify security=reality, Server Name, Public Key, Short ID, Fingerprint, and flow=xtls-rprx-vision.
After selecting a node, open the v2rayN logs and identify whether the failure occurs during DNS resolution, TCP connection establishment, or the handshake. For a port-in-use error, fix the local listener first; for a connection timeout, check the remote address and network; for a handshake error, return to the node editor and compare the security parameters. This sequence is more effective than repeatedly deleting and re-importing the profile.
Import with the Clipboard or QR Code in v2rayNG
The steps below use the common v2rayNG 1.10.31 interface as an example. v2rayNG uses the Xray core and can recognize VMess, VLESS, and VLESS REALITY configurations. Android may restrict background activity; a successful import only means the configuration was added to the list. Continued connectivity also depends on the app’s running state and system network settings.
When the text is on the same device, clipboard import takes the fewest steps; when the QR code is displayed on another screen, scanning is more convenient. A QR code is simply a graphical encoding of a share URI. Scanning it produces exactly the same fields as pasting the text and does not turn a single-node link into a subscription.
- Copy the complete share link and open the v2rayNG main screen.
- Tap the add button in the top-right corner and choose “Import from Clipboard.” After a successful import, the node name appears in the configuration list.
- If the link is shown as a QR code, choose “Scan QR Code,” grant camera permission, and keep the entire code inside the viewfinder.
- Tap the new profile to select it, then open the editor and check the address, port, user ID, transport protocol, and security options.
- Tap the connection button on the main screen and confirm that the system establishes a local proxy connection. To limit the apps covered, open the per-app proxy option under “Settings” and configure its scope.
- To check the local port, open “Settings” from the side menu and view the local SOCKS listening port. The example in this guide uses
10808; when configuring another app manually, enter the same port.
Import Options: Choose the Entry Point Based on Where the Link Is
Link on the Current Device
- Long-press to copy the complete URI
- Choose “Import from Clipboard”
- Check the node name and port after importing
QR Code on Another Screen
- Choose “Scan QR Code”
- Keep the image complete and sharp
- Check the REALITY or TLS fields after scanning
Importing the same URI through the clipboard and QR code should produce identical node fields. If they differ, check whether the QR code has expired or the text was truncated.
Troubleshooting Import Failures and Connection Failures
First distinguish between a parsing failure and a connection failure. A parsing failure means no new entry appears after import and usually involves the link text, encoding, or client support. A connection failure means the profile was created but the runtime log reports a timeout, refused connection, or handshake error. Use a different troubleshooting path for each type.
No valid link found after pasting?
Make sure the text is copied continuously from vmess:// or vless:// through the end. Remove leading bullets, Chinese quotation marks, and the final period; for bulk text, put one URI per line and import it again.
VMess creates a node, but the name and address are empty?
This usually means the Base64 content is incomplete or the decoded JSON is malformed. Copy the original link again and check whether the chat app inserted a line break. Do not manually fill in unknown values for add, port, or id.
VLESS REALITY Keeps Failing the Handshake After Import?
Check the security type REALITY, Server Name, Public Key, Short ID, Fingerprint, and flow in order. When the server uses Vision, the client flow usually needs to match it.
The Node Shows Connected, but the Browser Cannot Open Web Pages?
On desktop, check v2rayN’s system proxy status and make sure the browser is not locked to a different proxy port. On Android, confirm that the v2rayNG connection is still running. Then check the logs for DNS errors or local port conflicts.
Multiple Nodes with the Same Name After Repeated Imports?
A share link has no subscription group update relationship, so the client usually treats a second import as a new profile. Compare the address, port, and UUID first; after confirming the duplicate, delete the old entry. For long-term multi-node use, switch to subscription group management.
| Symptom | Check First | Next Step |
|---|---|---|
| Import count is 0 | Protocol prefix, line breaks, and text integrity | Copy the original URI again |
| Profile exists but connection times out | Remote address, port, and current network | Review the core connection logs |
| TLS handshake error | SNI, Host, and system time | Compare each item with the configuration source |
| REALITY handshake error | pbk、sid、fp、flow | Import the complete link again |
| Browser is not using the proxy | System proxy status, 10808, and 10809 | Use the same ports in the app and client |
Also check the device time. TLS and REALITY handshakes depend on a correct time environment, and a significantly incorrect system date can cause certificate or handshake errors. Set the date and time zone to automatic, restart the client, and test the connection again to rule out local time issues.
When to Switch from a Single Node to Subscriptions
For testing one node, a share link is the most direct option. As the number of nodes grows, copying them one by one leads to duplicate entries and stale parameters. When addresses, ports, transport paths, or REALITY parameters change, old local links do not update themselves. Ask the configuration provider for a clear subscription address, then save it in the client so updates are tracked.
In v2rayN, the subscription entry is usually under “Subscription Group” → “Subscription Group Settings.” Add a group, enter its alias and subscription address, save it, then choose “Update All Subscriptions.” In v2rayNG, open “Subscription Settings,” add the address, return to the main screen, and update the subscription. Do not mistake dozens of imported single-node profiles for one updateable group.
- To temporarily verify one VMess or VLESS node: import it from the clipboard.
- To move one node from desktop to Android: import the same URI or QR code, then verify the fields again.
- To maintain a dozen frequently changing nodes: use a subscription group instead of replacing them one by one.
- If only one node in a subscription is failing: check that node’s parameters first; you do not need to delete the entire subscription immediately.
- To preserve a manually modified profile: duplicate it as an independent node and rename it so the next subscription update does not overwrite it.
Conclusion: Choose Based on Whether Updates Are Needed
A single-node share link answers “import this one configuration,” while a subscription answers “keep this group of configurations up to date.” Node count is not the only factor; the need for ongoing synchronization is the more reliable criterion.
Keep Complete Parameters and Limit Exposure When Sharing
A share URI usually contains the UUID, server address, and transport parameters required for a connection, so treat it like a credential. Keep the content intact when copying; when forwarding it, confirm the recipient and scope of use, and do not publicly post a link that is still active. If the source has updated its connection identifier, delete the old profile and import the new content.
After troubleshooting, you can add the protocol, region, or purpose to the node name, such as “VLESS REALITY Daily” or “VMess WS Test.” The name is only for local identification and does not affect the connection; the address, port, user ID, transport layer, and security parameters determine the actual result.