This guide is for anyone using a subscription URL for the first time, unable to find the import entry, or unable to see configurations after an update. It covers the difference between subscription URLs and single-node links, the exact import paths in v2rayN and v2rayNG, common data formats, and the recommended order for troubleshooting timeouts, empty lists, and format errors.
First, distinguish subscription URLs from single-node links
A subscription URL is usually an HTTPS address. When the client requests it, the server returns a set of configurations. Each time you update the subscription, the client requests the same address again and refreshes the associated group with the latest results. The URL itself may not contain protocol names such as vmess or vless, so its appearance alone cannot tell you which nodes it contains.
A single-node link describes one configuration directly. Common prefixes include vmess:// and vless://. It is useful for temporarily importing one configuration, but it does not create a subscription that can be refreshed automatically. Pasting a single-node link into the “Subscription URL” field, or sending a subscription URL to “Import URL from Clipboard,” may result in an empty import.
After a client upgrade, menu labels may vary slightly, appearing as “Subscription Groups,” “Subscription Settings,” or “Subscription Group Settings.” The way to identify the right entry remains the same: if you need to save a URL and update it repeatedly, open Subscription Group Settings; if you are importing one text link beginning with a protocol prefix, use clipboard import.
Subscription URL
RecommendedSaves a remote address so multiple configurations can be updated by group and fetched again when names or parameters change.
Best for: long-term use, multiple configurations, and regular refreshes
Single-node URI
Directly imports one VMess or VLESS configuration without creating an ongoing update relationship.
Best for: temporary testing, moving one configuration, and checking protocol parameters
Batch text
Multiple protocol links placed one per line in a text block. The clipboard can parse them in batches, but this is still not a subscription.
Best for: offline migration of a small number of existing configurations
Add and update a subscription in v2rayN
Before you begin, copy the full subscription URL so you do not omit access parameters at the end. If the URL contains question marks, equals signs, or separators, keep them exactly as provided and do not truncate it manually. A subscription is an access credential, so do not paste it into public logs, screenshots, or shared documents.
Open the group settings
Launch v2rayN and select “Subscription Groups” → “Subscription Group Settings” in the main window. In some 7.x interfaces, you can open the management page directly from the group area on the left.
Create a subscription
Click “Add” or “+”, enter an easy-to-recognize name in the remarks field, and paste the complete HTTPS address into the URL field.
Save the group
Confirm that the group is enabled and save it. At this point, the subscription URL has only been recorded; new configurations may not have appeared in the server list yet.
Run an update
Return to the main window and select “Subscription Groups” → “Update All Subscriptions (Without Proxy).” If the current network cannot connect directly to the subscription URL, try updating through the proxy instead.
Select a configuration
After the update finishes, expand the relevant group and double-click a configuration, or use the context menu to set it as the active server. Then enable the system proxy.
If the clipboard contains vmess:// or vless://, do not create a subscription group. Use “Servers” → “Import Batch URLs from Clipboard,” then check the address, port, transport, and TLS-related fields. A single URI will not change automatically when you click “Update All Subscriptions.”
Add a subscription in v2rayNG for Android
v2rayNG has separate entries for subscription management and single-configuration imports. Subscription URLs belong in “Subscription Group Settings,” while QR codes and protocol links copied to the clipboard use single-configuration import. This guide is based on the 1.10.x interface; on some screen sizes, the side menu appears as a menu button in the top-left corner.
Open Settings
Open the side menu and go to “Subscription Group Settings.” Do not start with the single-configuration add button on the main screen.
Enter the address
Tap “+” in the top-right corner and enter the subscription name and complete URL. Enable automatic updates if needed, but a manual update is still recommended after the first addition.
Save and return
Save the subscription group, return to the main screen, open the top-right menu, and select “Update Subscriptions.” Wait for the completion message before checking the configuration list.
Select a configuration
Tap the target configuration in the list to make it active, then tap the connect button. The first connection triggers a system confirmation prompt for the network connection.
Check the result
After connecting, review the live log for DNS, handshake, certificate-name, or connection-timeout errors. Then retest by opening a regular HTTPS page in a browser.
If you copied a single-node URI, use “Import Configuration from Clipboard” on the main screen. Before importing, make sure the clipboard contains only the target link, without explanatory text before or after it. For batch imports, put one link on each line. A damaged line usually does not alter the protocol parameters on other lines, but the client may report that some entries could not be parsed.
- List is empty after updating: Return to Subscription Group Settings and confirm that the group is enabled and that there are no spaces at either end of the address.
- Update succeeds but the count is unchanged: Check that you are viewing the correct group and confirm that the server actually returned different content.
- The connect button immediately resets: Open the log and check the port, core startup status, and configuration parsing errors. Do not repeatedly delete the subscription.
- Need to switch cores: v2rayNG uses the Xray core. An Android client that uses the v2fly core is v2flyNG, but do not assume that both support exactly the same range of newer protocol parameters.
How to identify Base64, VMess, and VLESS formats
“Base64 subscription” usually means that the subscription response body is Base64-encoded. After decoding, it becomes a list of protocol links, one per line. Base64 is a text encoding, not a proxy protocol, and it does not determine whether a connection is encrypted. The client normally detects and decodes it during an update, so manual processing is not required.
A VMess single-node link usually starts with vmess:// and may be followed by encoded JSON data. After decoding, you can see fields such as the address, port, user ID, and transport. A VLESS URI usually expresses settings such as the security layer, transport, server name, fingerprint, and flow control through query parameters, making its structure easier to inspect at a glance.
Subscription URL
- Appearance
- Starts with https://
- Contents
- Multiple configurations returned remotely
- Updates
- Can be fetched again
- Import entry
- Subscription Group Settings
The URL is only the data entry point; the actual protocols are determined by the returned content.
Base64 list
- Type
- Text encoding
- Decoded result
- Multiple protocol URIs, one per line
- Common entry
- Subscription response body
- Manual editing
- Usually unnecessary
If an encoding error appears, first check whether the response is complete.
VMess URI
- Prefix
- vmess://
- Identity fields
- UUID
- Common transports
- TCP、WebSocket
- Import entry
- Batch URLs from clipboard
Even one missing character in the encoded content can cause the entire parse to fail.
VLESS URI
- Prefix
- vless://
- Identity fields
- UUID
- Parameter location
- Query string
- Import entry
- Batch URLs from clipboard
Reality, SNI, Flow, and other parameters must match the server configuration.
Subscription URL structure:
https://sub.example.com/client/feed?id=7319&token=8f2d1a
Single-node structure:
vmess://encoded configuration text
vless://[email protected]:443?security=reality&type=tcp&flow=xtls-rprx-vision#Example name
The examples above illustrate the structure only. Do not treat the sample address as a usable configuration when importing. With a VLESS URI in particular, security, type, flow, sni, fp, and the public key are interdependent; keeping only the address and port is usually not enough to establish a connection.
What the client actually does when updating a subscription
After you click Update, the client first requests the subscription URL. It then identifies whether the response is a plain-text URI list, Base64 text, or compatible structured content, parses each configuration, and writes the results to the corresponding group. A successful request does not mean every configuration parsed successfully, so check the update message, configuration count, and logs together.
Some subscriptions replace old entries when configuration names, server addresses, or protocol parameters change. A configuration generated by a subscription and edited manually may be overwritten by the remote data during the next update. For local changes that must be kept, copy the configuration as an independent entry and label its source in the name so it is not confused with automatically updated items.
- Request stage: Resolve the subscription domain, establish an HTTPS connection, and wait for the response. Failures at this stage usually appear as timeouts, DNS resolution failures, or certificate errors.
- Decoding stage: Identify the response body and attempt Base64 decoding. If the content has been replaced by a login page, error page, or gateway message, a format error may occur.
- Parsing stage: Read VMess, VLESS, and other configurations one by one, checking whether the required fields can be converted into the client’s internal structure.
- Write stage: Place the results in the specified subscription group and handle existing items according to their names or internal identifiers.
- Usage stage: The user selects an active configuration, the core reads its parameters, and the local listening port starts. This is the point at which an actual connection is made.
Troubleshoot import failures in this order
First determine whether the failure occurred during the request, decoding, parsing, or core startup stage. If the subscription update already reports an error, do not adjust the system proxy port first. If configurations appear but cannot connect, focus instead on protocol parameters, core logs, and the local listening state.
Does the subscription update keep timing out?
First use a browser to confirm that the subscription domain can establish an HTTPS connection, without exposing the page contents. In v2rayN, if a usable configuration already exists, select “Subscription Groups” → “Update All Subscriptions (Through Proxy).” Without a usable configuration, check the local network and DNS resolution first.
Did it report success but show an empty list?
Open Subscription Group Settings and check that the group is enabled, the URL has no leading or trailing spaces, and the current list is filtered to that group. If the response is actually a login page or error message, the client may not be able to parse any protocol links.
Does nothing happen after pasting a vmess link?
Make sure you are using “Servers” → “Import Batch URLs from Clipboard,” not the subscription URL field. When copying, preserve the entire link from vmess:// through the end without inserting a line break.
Are Reality parameters missing after importing VLESS?
Copy the complete URI again and check security=reality, the server name, fingerprint, public key, short ID, and Flow. If the source provides only the address, port, and UUID, add the remaining fields required by the server.
The configuration appears, but webpages will not open?
First confirm that an active configuration is selected and the system proxy is enabled, then check the core log. If the log says that a local port such as 10808 is already in use, change the local listening port under “Settings” → “Parameter Settings,” and update any proxy settings that depend on that port.
Cross-testing can help narrow the cause: if the same subscription updates in v2rayN but not in v2rayNG, first check Android network permissions, system time, and the client version. If both fail, check the subscription URL’s validity period, request parameters, and server response. Do not repeatedly change core settings before confirming that the subscription returns data correctly.
Post-import verification checklist
Importing a subscription only writes configurations into the client. Reliable use also depends on the active configuration, core support, system proxy or network state, DNS handling, and matching remote parameters. Following a fixed verification order helps prevent mistaking a disabled local proxy for a failed subscription.
- The target subscription group is enabled, and the expected number of configurations appears after updating.
- The active item belongs to the correct group, and its address, port, and protocol type are not empty.
- The v2rayN core starts successfully, and the local listening port is not occupied by another process.
- The desktop app has the system proxy enabled as needed; v2rayNG has completed the system connection confirmation.
- The core log does not continuously report handshake, certificate-name, Reality parameter, or DNS errors.
- After updating the subscription, select the active configuration again to avoid continuing to use an old entry that has been replaced.
- Use the correct entry for single-node links and subscription URLs; do not mix the two import methods.
When moving to another device, add the subscription URL to the new client and run an update instead of copying subscription-generated nodes one by one. This preserves the group relationship and allows future refreshes. Only configurations created locally and not supplied by the remote subscription need to be exported separately or entered again.