Subscription Link Import Guide: Where to Add Subscriptions in v2rayN and v2rayNG

This guide shows where to add and update subscriptions in the v2rayN desktop app and v2rayNG Android app. It also explains common formats such as Base64, vmess://, and vless://, and what to check first when an import fails.

At a glance

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.

7.15.x
v2rayN 7.x interface covered in this guide
1.10.x
v2rayNG interface covered in this guide
10808
Common local SOCKS or mixed listening ports

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

Recommended

Saves 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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.

  1. 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.
  2. 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.
  3. 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.
  4. Write stage: Place the results in the specified subscription group and handle existing items according to their names or internal identifiers.
  5. 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.

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.

Get a GUI client Choose v2rayN or v2rayNG for your platform