A subscription link is a remote configuration URL. When a client accesses it, the URL returns a set of node profiles, which are then saved locally with their protocol, server address, port, user ID, transport, and security settings. It is not a node itself, nor is it an ordinary web page to enter in a browser’s address bar.
Importing usually takes two steps: save the subscription URL, then run an update. After only the first step, the group may appear while the node list remains empty. v2rayN and v2rayNG place these menus differently, but the underlying process is much the same.
This guide is for users who already have a complete subscription URL but are unsure where to paste it. It covers the add and update paths in v2rayN 7.x and v2rayNG 1.10.x, the difference between Base64 subscriptions and individual share links, and common issues such as empty imports, timeouts, and duplicate nodes. By the end, you can configure subscriptions independently on desktop and Android.
First, tell subscription URLs apart from single-node links
Subscription URLs usually start with https://. The response may be Base64 text or structured data that the client can parse directly. One subscription can contain multiple VMess and VLESS nodes; when the provider updates its content, the client can fetch it again to sync the changes.
Single-node share links usually start with vmess:// or vless://. Each describes one node and is best added with “Import from clipboard.” If a single-node link is pasted into the subscription URL field, some versions reject it, while others save it but return no nodes during the update.
Subscription URL
- Common prefix
- https://
- Node count
- One or more
- Update method
- Fetch the remote content again
- Saved in
- Subscription group settings
Best for long-term use; nodes in the same group can be refreshed in batches.
Single-node link
- Common prefix
- vmess:// or vless://
- Node count
- Usually one
- Update method
- Import a new link again
- Saved in
- Local node list
Best for temporary additions; it does not automatically follow changes to the remote node list.
Add a subscription in v2rayN for desktop
The steps below refer to the Chinese interface in v2rayN 7.x. “Subscription Groups” near the top of the main window manages remote subscriptions, while “Import share links from clipboard” under the “Servers” menu is for individual VMess and VLESS nodes. Do not mix up these two entry points.
-
Copy the URL
Copy the complete subscription URL starting with
https://. Paste it into a plain-text field to check both ends, and make sure no line breaks, quotation marks, or explanatory text were included. -
Open subscription groups
Launch v2rayN, then open “Subscription Groups” → “Subscription Group Settings” and click Add to create a group.
-
Enter the URL
Enter an easy-to-recognize name in “Alias,” then paste the complete URL into “Optional URL” or the subscription URL field. Leave the group enabled and save it.
-
Update the subscription
Return to the main window and open “Subscription Groups” → “Update All Subscriptions (Without Proxy).” If a usable proxy is available and a direct connection times out, choose the proxy update option instead.
-
Activate a node
Once the nodes appear, select one record and press Enter or use the context menu to set it as the active server. Then choose “Auto Configure System Proxy” from the system tray menu.
After a successful update, the main list usually shows the address, port, protocol, transport, and subscription group name. Start with a real connection test for the group. This measures the time needed to establish an actual proxy connection and better reflects everyday browsing than a simple server response. For example, if three nodes on the same network return 184 ms, 326 ms, and a timeout, start web access testing with the 184 ms node.
If the nodes appear but the core will not start, check “Settings” → “Parameter Settings” → “Core Type.” Configurations using VLESS, REALITY, XTLS Vision, and similar features generally need an Xray core that supports the relevant fields. Changing the core type affects only the engine that runs the configuration; it does not change the subscription URL.
Add a subscription in v2rayNG for Android
v2rayNG uses the Xray core, and its subscription entry point is in the side menu. Saving the URL is not enough; return to the main screen and run an update. Seeing the subscription group name alone does not mean the node profiles have finished downloading.
-
Open settings
Open v2rayNG 1.10.x, tap the menu button in the upper-left corner, and go to “Subscription Group Settings.” Some minor versions may label it “Subscription Settings”; the function is the same.
-
Create a group
Tap the Add button in the upper-right corner, enter a label, and paste the subscription URL. Make sure the “Enable” switch is on, then save.
-
Fetch the nodes
Return to the node list, open the upper-right menu, and select “Update Subscription.” Wait for the completion message at the bottom, and avoid tapping repeatedly while the fetch is in progress.
-
Choose a node
Tap a node name to make it the active configuration. You can first run “Test Real Connection for All Configurations,” then keep entries with low latency and no timeouts.
-
Start the connection
Tap the circular connection button on the main screen and approve the system connection request. Once the status area shows upload and download traffic, test web access.
The local SOCKS port in v2rayNG is usually 10808. Ordinary apps on the phone do not need this port entered manually; the client takes over traffic through the system connection interface. Pay attention to the listener address and port only when debugging a browser or using the device as a LAN proxy.
To route only selected apps through the proxy, go to “Settings” → “Per-App Proxy,” enable it, and choose the relevant apps. This controls which traffic enters the core; the node’s domain, port, transport layer, and security parameters still come from the subscription.
- Fewer nodes after an update: The number of nodes returned by the remote subscription has changed, so the client rebuilt the group from the current content.
- Garbled node names: This is often caused by an encoding issue in the response text or an invalid remark field in an older format. Update the client first, then fetch the subscription again.
- Old and new nodes appear together: Check whether the same URL was saved in two subscription groups, or whether a share link was also imported manually.
Base64, VMess, and VLESS formats explained
Base64 is an encoding method, not a proxy protocol. A common subscription response combines multiple share links into one Base64-encoded block. The client decodes it first, then recognizes entries such as vmess:// and vless:// line by line. That is why a “Base64 subscription” can carry nodes using different protocols.
VMess share links often encode node parameters as a text block. After decoding, you can usually find the address, port, user ID, transport, TLS status, and WebSocket path. VLESS share links are closer to standard URIs: the user ID appears in the connection information, while transport, security, SNI, Flow, fingerprint, and other parameters appear in the query string.
Subscription response
├─ Base64-encoded multiline text
│ ├─ vmess://single node
│ └─ vless://single node
└─ Client-specific structured response
├─ Node fields
├─ Group information
└─ Update status
VMess + WS + TLS
- Protocol
- VMess
- Transport
- WebSocket
- Security layer
- TLS
- Key fields
- host、path、SNI
After importing, check that the path starts with a slash and that the server name is complete.
VLESS + REALITY
- Protocol
- VLESS
- Transport
- TCP
- Flow
- xtls-rprx-vision
- Key fields
- publicKey、shortId、SNI
The relevant fields should be written automatically by the subscription; do not fill them in from memory.
VLESS + WS + TLS
- Protocol
- VLESS
- Transport
- WebSocket
- Security layer
- TLS
- Key fields
- host、path、encryption
VLESS encryption is usually none; that does not mean outer TLS is disabled.
Base64 node collection
- Type
- Text encoding
- Content
- Multiline share links
- Line breaks
- One node per line
- Parsing action
- Decode, then import each entry
If the decoded result is empty, check the subscription response first instead of changing the node’s protocol fields.
Compatibility depends on the client and core versions. The client parses the subscription and generates the configuration; the core executes it. If a configuration imports successfully but will not start, subscription parsing may already be complete. The more likely causes are an unsupported new field, an incomplete parameter set, or mismatched transport settings.
v2flyNG uses the v2fly core and is suited to VMess, VLESS, and common transport combinations supported by that core. If a subscription contains settings that depend on Xray-specific extension fields, use v2rayNG and keep the client and core on mutually compatible versions.
Share one subscription between desktop and Android
The same subscription URL can usually be saved separately in v2rayN and v2rayNG. Each client fetches its own configuration and stores its node selection, routing mode, and local settings independently. Changing the active node on desktop does not automatically change the node selected on Android.
Recommended setup: save the same subscription on both clients
Desktop (v2rayN)
- Save the URL in “Subscription Group Settings”
- Choose direct or proxied updates as needed
- Use the system proxy and routing rules to control traffic
- The local SOCKS port is commonly 10808
Android (v2rayNG)
- Save the same URL in “Subscription Group Settings”
- Run “Update Subscription” from the main-screen menu
- Enable per-app proxying as needed
- Use real connection tests to filter nodes
Both clients use the same node source, but active nodes, update times, local ports, and routing settings are managed separately.
It is not recommended to copy an already parsed node list from one client to another for long-term use. A manual copy is only a static snapshot; changes to remote addresses, ports, or user IDs will not sync. Saving the original subscription URL directly in both clients keeps maintenance simpler.
Treat the subscription URL like account credentials. Do not post it publicly or show it in full in a screenshot. If you suspect it has leaked, reset the link where the subscription is provided, then delete the old group in the clients and add the new URL.
Troubleshooting failed imports and empty updates
When troubleshooting, confirm the entry point first, then check the network, and only then inspect the format. Do not start by changing protocol parameters one by one. Subscription-generated fields are interdependent; changing SNI, the path, Flow, or the public key at random can turn a fetch problem into a new connection problem.
Does pasting the URL report that it is invalid?
Paste the URL into a plain-text field first, then remove leading and trailing spaces, line breaks, and quotation marks. Confirm that it starts with https://, and check whether a chat app truncated it during copying. If the link starts with vmess:// or vless://, use “Import share link from clipboard” instead.
Did the update finish without adding any nodes?
In v2rayN, check the subscription update message and logs; in v2rayNG, check the response shown at the bottom. If the response is empty or cannot be parsed, verify the subscription output format. If the group is disabled, enable it in Subscription Group Settings and update again.
Does the subscription update keep timing out?
First confirm that the device clock and network access are working. In v2rayN, if a usable node is available, choose “Subscription Groups” → “Update All Subscriptions (Through Proxy).” In v2rayNG, connect to a working configuration first, enable proxy updates in Subscription Settings, and try again.
Can none of the imported nodes connect?
Run a real connection test on any one node first, then check the core log. Focus on the server port, user ID, transport, TLS, and REALITY fields. In v2rayN, also check “Settings” → “Parameter Settings” → “Core Type,” and make sure local listening ports such as 10808 are not already in use.
Do duplicate nodes appear after every update?
Open Subscription Group Settings and check whether the same URL was saved twice. Then determine whether the duplicate records were imported manually. Manual nodes are not managed by subscription-group updates, so review them and delete them separately.
- Confirm that you copied a subscription URL, not a single share link or the URL of an information page.
- Confirm that the URL is complete and has no spaces, line breaks, quotation marks, or extra punctuation at either end.
- Confirm that the subscription group is enabled, then run an update manually.
- If a direct fetch times out, try updating through an existing proxy.
- If nodes appear but cannot connect, check the core log and real connection test results.
- Only then verify compatibility among the protocol, transport layer, security layer, and client core.
A successful import means more than “the group was saved.” The node list should be populated, at least one node should pass a real connection test, upload and download traffic should appear after connecting, and the system or per-app proxy should work as expected. Checking in this order separates subscription fetching, node execution, and traffic takeover so each stage can be diagnosed independently.