For users who already have a subscription URL but are unsure where to paste it or cannot see nodes after importing. By following these steps, you can create separate subscription groups in v2rayN and v2rayNG, update configurations manually, and narrow down common issues by checking the response, network status, and core support.
First, distinguish subscription URLs from single-node links
A subscription URL is a configuration source that the client checks periodically, usually as a long address beginning with HTTPS. After the client requests it, the server returns multiple VMess, VLESS, and other node configurations. When node addresses, ports, or transport settings change, updating the subscription is enough—you do not need to add every node again.
A single-node link begins directly with vmess:// or vless:// and usually describes one node. If you paste one into the “Subscription URL” field, the client may report an update failure or show an empty list. In that case, use an option such as “Import from clipboard” instead of repeatedly updating the subscription.
Subscription URL
- Common prefix
- https://
- Response
- Multiple node configurations
- Update method
- Request again by group
- Best for
- Maintaining a node list over time
The token in the address usually identifies the subscription. Do not show the complete URL on public pages or in screenshots.
Single-node URI
- Common prefix
- vmess:// or vless://
- Number of configurations
- Usually one
- Import method
- Clipboard or QR code
- Update method
- Re-import the new link
The v: 2 field in a VMess link indicates the link format version, not the client version number.
Some subscription responses are Base64-encoded text, with one node URI per line after decoding; others return structured content that the client can read directly. Normally, you do not need to decode anything manually—v2rayN and v2rayNG parse the response during an update. If a browser shows a stream of letters, numbers, slashes, and equals signs, that does not mean the link is broken.
Add a subscription in v2rayN for desktop
v2rayN uses subscription groups to manage sources separately. Each group can store a name, subscription URL, and update options. Create the group first, then update it; saving the URL alone does not ensure that nodes have been added to the main list.
Open the group settings
Launch v2rayN and open “Subscription Groups” → “Subscription Group Settings” from the main window. If the interface uses a compact menu, expand the menu at the top of the window first.
Create a group
Click “+” in the group settings window to add a new subscription entry. Use a recognizable alias, such as “Office Backup” or “Home Line.”
Paste the URL
Paste the complete HTTPS subscription URL into the address field. Check the beginning, end, and line breaks to make sure explanatory text was not copied along with it.
Save the settings
Make sure the group is enabled, then save it. Return to the main window, open “Subscription Groups,” and choose “Update All Subscriptions” or update the group you just created.
Check the result
Wait for the status bar to show the update result, then review the server list. Select a node and press Enter to set it as the active server, then enable the system proxy if needed.
After a successful update, the main list usually gains multiple configuration rows, with the protocol, address, port, and alias shown separately. Double-click a row to inspect transport, TLS, SNI, path, and other fields. Avoid editing subscription-managed configurations manually, because the next update may overwrite local changes with the server’s content.
If the subscription includes VLESS, XTLS Vision, or Reality parameters but the imported result lacks those fields, check the core settings first. A common path is “Settings” → “Parameter Settings” → “Core Type”; Xray is usually the preferred core for these configurations. The Xray core can also read basic VMess and WebSocket configurations.
- To synchronize every source immediately, choose “Subscription Groups” → “Update All Subscriptions.”
- To update just one source, select its group from the group menu so unrelated requests do not run at the same time.
- If the list becomes too long after an update, filter it by group or note. Do not rely only on latency values to determine whether a configuration came from the current subscription.
- If a node is selected but the app is not using the proxy, check the system proxy switch instead of importing the subscription again.
Add a subscription in v2rayNG for Android
In v2rayNG, subscription groups and the current configuration list are separate layers: the group page stores subscription sources, while the main page shows nodes parsed during an update. Adding a group without running “Update Subscription” may leave the main page with no new configurations.
Open Settings
Open v2rayNG, expand the menu in the upper-left corner of the main screen, and go to “Subscription Group Settings.” The entry may move slightly at different screen widths, but its name still includes “Subscription Group.”
Add an entry
Tap “+” in the upper-right corner, enter a group name in the note or alias field, paste the complete subscription URL into the URL field, and leave the entry enabled.
Save and return
Tap Confirm or Save and return to the main screen. The subscription source is now saved, but you still need to run a network update.
Update the subscription
Open the main menu again and tap “Update Subscription.” Wait for the completion message at the bottom; do not switch networks or close the app immediately during the update.
Select a configuration
Tap the node you want to use in the main list to make it the current configuration, then tap the connect button. On the first connection, confirm local connection permission when prompted by the system.
If the phone’s clipboard contains a single-node link beginning with vmess:// or vless://, use “Import from clipboard” under the “+” menu in the upper-right corner of the main screen. The import adds one configuration directly, so there is no need to create a subscription group.
v2rayNG normally creates a local proxy endpoint on the device, with the SOCKS port commonly set to 10808. This port is used for communication between local apps and the core; it is not the server port in the subscription URL. If you changed the settings manually, use the local port actually shown under “Settings.”
Choose the right import method for the source
The same configuration can be shared through a subscription, a single-node URI, or a QR code, but the maintenance effort differs. For long-term use where nodes may change, a subscription group keeps things synchronized more easily; for testing one configuration temporarily, clipboard import is more direct.
Subscription group
RecommendedSave the source URL once, then synchronize node additions, removals, and parameter changes through updates. This works well when maintaining multiple configurations.
Best for: a fixed source, long-term use, multiple nodes
Clipboard import
Parse one VMess or VLESS URI directly. The steps are short, but you must obtain and import the link again when the source changes.
Best for: testing a single node, temporary configurations
Scan a QR code
A QR code usually contains a single-node URI and is useful for transferring an existing configuration to v2rayNG. Before scanning, make sure the QR code comes from a trusted configuration source.
Best for: quickly entering one configuration on Android
Do not identify the link type by its length. A VLESS URI can be long when it includes SNI, fingerprint, Public Key, Short ID, and Flow parameters; a subscription URL may contain only a domain, path, and a short token. The most reliable clues are still the link prefix and the provider’s explanation of what the address is for.
Subscription URL:
https://sub.example.com/client/token-demo
Single-node URL:
vless://[email protected]:443?security=reality&type=tcp&flow=xtls-rprx-vision#demo
The domain, user ID, and parameters in these examples are for illustrating the structure only. During an actual import, the VLESS user ID, server address, port, SNI, Reality public key, and Short ID must match one another; any missing field may leave the configuration visible but unable to connect.
How to troubleshoot an empty node list after importing
“Update succeeded but the list is empty” and “Subscription request failed” are two different problems. The former means the client may have received a response but found no supported nodes to parse; the latter usually occurs during connection setup, DNS resolution, the TLS handshake, or server response. Read the exact message first, then choose where to investigate.
- Copy the complete URL again: Delete the old URL from the group and copy it again from the original page. Check for spaces, non-ASCII punctuation, or line breaks at either end, and make sure you did not copy only the truncated display.
- Confirm that the link is still valid: Open the subscription URL on a normally connected network. If it returns an explicit expired, unauthorized, or access-limit message, resolve the permission issue with the subscription provider; local client settings cannot restore an invalid token.
- Try a different update route: If the current network cannot reach the subscription domain directly, connect using an already working configuration, enable an option such as “Update subscriptions through proxy,” and try again. If no configuration works, do not enable an update method that depends on a proxy.
- Check the response format: If the URL returns only a login page, verification page, or error message, the client cannot parse it as nodes. The subscription endpoint should return configuration data directly.
- Confirm protocol support: Subscriptions containing VLESS, Reality, or Vision parameters should use the Xray core. v2rayNG uses the Xray core by default; in v2rayN, check “Settings” → “Parameter Settings” → “Core Type.”
- Review the update log: Distinguish timeouts, DNS resolution failures, certificate errors, abnormal HTTP statuses, and a parsed node count of zero. Each points to a different fix; do not repeatedly delete client data without evidence from the logs.
If the update reports zero new nodes but existing nodes remain, the server content may simply be unchanged. Some clients retain the group’s existing configurations, while other update strategies may clear them before writing new data. Before updating, avoid manually combining same-named nodes from multiple sources, or it will be difficult to tell which records belong to the current group.
Another common cause is a filter hiding the nodes. For example, the main list may be filtered by group, note, or protocol, so newly imported configurations do not match the current conditions and the list appears empty. Clear the search box and filters first, then check the total record count.
Set group names and update order
Group names are stored locally and do not change the server’s content. Use names that distinguish the source and purpose; avoid generic labels such as “Subscription 1” and “Subscription 2.” As the number of configurations grows, clear names reduce accidental deletion, unwanted updates, and selection of the wrong node.
| Naming dimension | Example | Purpose |
|---|---|---|
| Network environment | Home network | Distinguish sources used under different network conditions |
| Use case | Daily primary | Identify the group selected by default at a glance |
| Validity period | Quarterly backup | Prompt a review of whether the source is still needed |
| Protocol scope | VLESS Reality | Make it easier to check whether the core and transport parameters match |
After adding a subscription for the first time, update it manually once to confirm that the URL is reachable and nodes can be parsed. An automatic interval is useful for routine changes, but it should not be too short; frequent requests may trigger server-side access limits and consume more mobile battery. Follow the update interval recommended by the subscription provider.
When updating multiple groups, update the backup source first and the primary source afterward. If one URL temporarily times out, the list will still retain a configuration that can be used for connectivity and further troubleshooting. Before deleting a group, confirm that none of its nodes is handling the current connection.
- Do not create multiple groups with different names for the same subscription, or the main list may fill with duplicate nodes.
- After changing a subscription URL, run one manual update immediately instead of waiting for the automatic task to verify it.
- When changing the source token, edit the existing group directly to preserve a clear classification structure.
- Subscription updates and traffic routing are independent. After nodes import successfully, check global mode, bypass LAN, or rule mode.
Common subscription import issues
The following cases cover the most common mistakes when adding a subscription. During troubleshooting, keep the group and error message, and work through network requests, content parsing, and node connections in that order. This is usually more effective than deleting everything and reinstalling.
Why are there no nodes after saving the subscription?
Saving only records the URL. In v2rayN, also run “Subscription Groups” → “Update All Subscriptions”; in v2rayNG, open the main menu and tap “Update Subscription.” Then clear any list filters.
What should I do if the update keeps timing out?
First confirm that the current network can resolve the subscription domain. If you already have a working node, connect through it and enable update through proxy; if not, switch to a network that can access the subscription URL directly.
Why does the link appear as a long string of characters in the browser?
This is usually a Base64-encoded subscription body. As long as the client can parse nodes during the update, there is no need to decode or edit the characters manually. The browser’s display alone cannot determine whether the subscription is valid.
Why did the import create nodes with the same name?
Check whether the same URL was added to multiple groups. Delete duplicate groups, update again, and name groups by source, purpose, or protocol instead of relying only on node aliases.
Why do the nodes appear but fail to connect?
This means the subscription import stage is complete. Next, check that the intended node is selected, the system time is accurate, and the core supports the protocol. Review connection logs for errors involving the port, TLS, SNI, or Reality parameters.
A subscription retrieves and maintains configurations in bulk; it does not automatically determine whether every node works on the current network. After a successful import, select a specific node, start the connection, and configure the system proxy and routing mode for your use case.