This guide is for users who already have a subscription URL but are unsure where to paste it. It covers v2rayN 7.x and v2rayNG 1.10.x: distinguish subscription URLs from single-node share links, then import, update, organize, and troubleshoot both clients.
First distinguish subscription links from single-node share links
Check the beginning of the link. An address starting with https:// that returns a batch of node records is usually a subscription URL. Content starting with vmess://, vless://, or trojan:// usually describes a single node. The two types use different import paths, and pasting one into the wrong place commonly results in “saved successfully, but the list is empty.”
A subscription URL is a data source that can be requested repeatedly. The client stores the URL, label, and update options, then fetches the node list again whenever you run “Update subscription.” A single-node share link directly carries the server, port, user identifier, transport, and TLS parameters; after import, it does not automatically follow changes to a remote node list.
Subscription URL
- Common prefix
- https://
- Number of entries
- Usually multiple nodes
- Update method
- Request the remote URL again
- Saved under
- Subscription group
Best for regularly syncing added or removed nodes, names, and parameters.
Share link
- Common prefix
- vmess、vless、trojan
- Number of entries
- Usually one node per link
- Update method
- Delete and import again
- Saved under
- Server list
Best for temporarily testing one configuration or checking specific protocol parameters.
Add and update a subscription in v2rayN
The steps below use the v2rayN 7.x desktop interface. Start the client and open the main window. If menu labels differ slightly, follow the three-level structure—subscription groups, add URL, update subscription—and do not paste a subscription URL into the manual VMess server dialog.
-
Open subscription groups
From the main window, open “Subscription groups” → “Subscription group settings,” then click “+” to create a group. Name it after its purpose or provider.
-
Paste the URL
Paste the complete HTTPS subscription URL into the URL field. Make sure there are no spaces at either end, then save the group.
-
Check the core
Go to “Settings” → “Parameter settings” → “Core type.” Choose the Xray core for configurations that include VLESS, XTLS, or REALITY.
-
Run an update
Return to the main window, open “Subscription groups,” and select “Update all subscriptions.” When it finishes, check the status bar for added, removed, and failed counts.
-
Select a node
Select a node in the server list and set it as the active server, then enable the system proxy if needed. Importing nodes alone does not automatically change the system traffic entry point.
After a successful update, the server list shows the protocol, alias, address, and port. Filter by group first, then run a latency test on one node. A latency value only shows that the test target responded; it does not represent actual download speed. If 50 nodes import within about 2–5 seconds but the latency column is empty, check whether the core started instead of repeatedly adding the same subscription.
Common local ports in v2rayN include SOCKS port 10808. Use the local listener settings under “Settings” → “Parameter settings” as the source of truth. When a browser or command-line tool uses a manual proxy, the protocol and port must match; sending an HTTP proxy request to a SOCKS port fails immediately.
- Save the subscription group before updating; an unsaved URL will not enter the update queue.
- If the list contains duplicates, first check whether two groups use the same URL instead of deleting nodes one by one.
- If old nodes remain after an update, check the option to remove old configurations in the group settings.
- When the log shows a timeout, first test whether the subscription URL is reachable, then decide whether to update through the current proxy.
Add an Android subscription in v2rayNG
The subscription entry in v2rayNG is under group management, not the single-node import menu in the lower-right corner. The steps below use v2rayNG 1.10.x. Before importing, copy the subscription URL to the system clipboard and confirm that you copied the URL—not a plan name or expiration date from the webpage.
-
Open settings
Open the side menu and select “Subscription group settings.” Tap “+” in the upper-right corner to add a new subscription source.
-
Enter the subscription
Enter an identifiable name in the label field and paste the complete subscription URL into the URL field. Enable automatic updates if needed, then tap Save in the upper-right corner.
-
Update the group
Return to the main screen, open the upper-right menu, and select “Update subscription.” Wait for the bottom message confirming completion, then check the configuration count.
-
Switch configurations
Tap the target node to make it the current configuration. Tap the connect button and confirm that the status bar shows a connected state before testing access.
-
Check the log
When the connection fails, open “Log” and inspect the first error. Prioritize DNS resolution, connection timeouts, certificate names, and refused ports.
If you have a single vmess://, vless://, or trojan:// link, do not create a subscription group. Copy the complete share link first, then use “+” → “Import from clipboard” on the main screen. After importing, open the configuration details and verify the address, port, transport, TLS, SNI, and path.
Groups, updates, and node synchronization across both clients
The desktop and Android clients can save the same subscription URL, but they do not transfer local configurations directly to each other. Synchronization means that both clients request the same remote subscription source separately. After nodes are added or removed remotely, update each client once for the lists to match.
Recommended setup: use the same subscription source on both clients
Desktop (v2rayN)
- Create subscription groups by purpose
- Use the Xray core for VLESS configurations
- Filter nodes by group after updating
- Check the system proxy status before connecting
Android (v2rayNG)
- Save the same complete subscription URL
- Select the current node again after updating
- Set per-app proxying as needed
- Use the runtime log to locate parameters when a connection fails
Both node lists are generated from the same remote data source; group names, the current node, and local routing settings are still stored independently by each client.
Organize groups by source or purpose rather than creating many duplicate subscriptions by protocol. If one subscription includes both VMess and VLESS, keep it in a single group; the protocol column already distinguishes them. Adding the same URL repeatedly creates identical node names from different sources, making update troubleshooting harder.
Automatic updates are not real-time push notifications. Clients usually request the subscription at startup or at the configured interval; sleep, lost connectivity, or background restrictions can delay scheduled tasks. When the remote list changes, a manual update is the clearest option. Record the current node name before updating; if it is removed, select an active configuration again from the new list.
| Check | v2rayN | v2rayNG |
|---|---|---|
| Where the subscription is saved | Subscription group settings | Subscription group settings |
| Single-node entry | Import batch URLs from the clipboard | “+” → “Import from clipboard” |
| Action after updating | Confirm the active server | Select the current configuration again |
| Troubleshooting entry | Main window log | Log in the side menu |
vmess, vless, and trojan share link formats
A VMess share link commonly consists of vmess:// followed by Base64 text. Decoding it usually yields a JSON object containing the address, port, user identifier, transport network, path, and TLS fields. Base64 only represents text; it is not encryption and does not indicate whether a node is usable.
VLESS and Trojan usually use a standard URI structure. The server address and port appear in the host portion, while transport, security, SNI, fingerprint, and Flow parameters appear in the query fields after the question mark. Text after the hash is the node label. Omitting query fields during copying can leave the address correct but cause the handshake to fail.
VMess + WS + TLS
- User identifier
- id field
- Transport
- WebSocket
- Path
- /ray
- Security layer
- TLS
Share content is often wrapped as Base64-encoded JSON; after importing, verify host, path, and SNI.
VLESS + Reality
- Transport
- TCP
- Security layer
- Reality
- Flow
- xtls-rprx-vision
- Fingerprint
- chrome
Use the Xray core, and preserve the public key, short id, and server name in full.
Trojan + TLS
- Authentication data
- URI user information
- Common port
- 443
- Security layer
- TLS
- Server name
- SNI parameter
The password, server name, and certificate domain must all match.
Base64 subscription body
- Outer layer
- Base64 text
- Decoded result
- Multiline share links
- Each line
- One node configuration
- Import entry
- Subscription group
Some subscriptions return a plain-text list of links directly; whether Base64 is used depends on the subscription source.
vless://[email protected]:443?type=tcp&security=reality&flow=xtls-rprx-vision&sni=www.example.com&fp=chrome&pbk=AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abc&sid=1a2b3c4d#VLESS-Reality
trojan://[email protected]:443?security=tls&type=tcp&sni=www.example.com#Trojan-TLS
The addresses above only illustrate field positions. Real VLESS links must obtain the UUID, Reality public key, and short id from the configuration source; authentication data in Trojan links must also remain complete. Manually changing security, type, or flow does not convert one server configuration into another protocol.
After decoding, a traditional Base64 subscription usually becomes multiple share links, one node per line. The client first fetches the subscription body, then decodes it and identifies the protocol on each line. If the body is a login page, error message, or expiration notice, the client may show “0 configurations detected” even when the HTTP request succeeds. Check the content returned by the subscription URL instead of changing the local port.
vmess://: verify id, add, port, net, host, path, tls, and sni.vless://: verify UUID, security, type, flow, sni, fp, pbk, and sid.trojan://: verify the authentication data, server address, port, security, and sni.- The label after
#only changes the display name; it is not used for connection authentication.
Troubleshoot failed subscriptions, empty node lists, and connection errors
Troubleshoot in four layers: can the subscription be fetched, can the nodes be parsed, can the core start, and does traffic enter the proxy? Do not delete every configuration at the outset. Keep the original group and logs; the error message usually shows which layer failed.
Does the subscription update keep timing out?
First confirm that the device network works, then use a browser to test whether the subscription URL returns content. If the URL is reachable only through an existing node, enable update through the proxy in the subscription settings and confirm that the current node is connected.
Did the update succeed but leave an empty list?
Check the recognized count in the update log. If it shows 0 configurations, verify whether the response is a Base64 node list, plain-text share links, or an error page, and confirm that the subscription token has not expired.
Why do the same nodes appear more than once?
Open the subscription group settings and check whether two identical URLs were saved or the same group was created twice. Remove the duplicate group and run one complete update; do not clean up the generated nodes individually.
Why can’t a node connect after import?
Check the first error in the core log. For VLESS Reality, verify the core type, server name, public key, short id, fingerprint, and Flow. For WebSocket configurations, verify host and path.
Connected successfully, but webpages still connect directly?
In v2rayN, check that the system proxy is enabled and verify the routing mode. Applications using a manual proxy must connect to the correct local protocol and port, such as SOCKS 127.0.0.1:10808.
A connection refused log usually means the target address is reachable but the specified port is not accepting connections; a timeout may indicate a network path, DNS resolution, or unreachable remote service. For a TLS name error, check SNI. For a Reality handshake error, verify the public key, short id, fingerprint, and server name. Different errors cannot all be fixed by switching the local proxy port.
If v2rayN imports successfully but v2rayNG does not, first confirm that both clients copied the same complete URL, then compare their versions and core support. VLESS configurations with newer Xray parameters should use the Xray core in v2rayNG. If a compatibility configuration requires the V2Fly core, use v2flyNG, but select Reality and XTLS parameters according to the core’s capabilities rather than changing only the protocol name.