How to Import a Subscription Link: v2rayN and v2rayNG Entry Points and Common Formats

This guide shows where to import subscriptions in v2rayN and v2rayNG, explains the format differences between Base64 subscriptions and single-node links, and covers updating subscriptions and verifying nodes after import.

At a Glance

This guide is for first-time users who already have a subscription URL but are unsure where to paste it. After setup, you can create a subscription group in v2rayN or v2rayNG, fetch nodes, select an active configuration, and verify the import through logs, latency tests, and a real connection.

First, distinguish subscription URLs from single-node links

A subscription URL is not a single node. It is a remote resource that the client requests periodically. The server response usually contains multiple node records; after parsing them, the client places them in one subscription group. When node names, server addresses, ports, or transport settings change, update the group instead of editing each local configuration.

A single-node link describes one configuration. Common prefixes include vmess://, vless://, trojan://, and ss://. Import this content from the client’s clipboard or QR-code import function rather than saving it as a subscription URL. If a single-node link is pasted into subscription settings, the update may fail, the response may be unparsable, or the group may still contain zero nodes after updating.

Remote subscription URL

Content scope
One or more nodes
Import entry point
Subscription group or subscription settings
Ongoing maintenance
Run subscription update
Typical response
HTTP 200 with a text body

Best for centrally managing a node list on the server; the client stores the fetch URL and group information.

Single-node link

Content scope
One node configuration
Import entry point
Import from clipboard
Ongoing maintenance
Import again or edit manually
Protocol identifier
VMess、VLESS、Trojan、SS

Best for temporarily adding one configuration; it does not create a remotely updateable subscription group.

Base64 subscription body

Outer form
Continuous encoded text
Decoded result
Multi-line share records
Processing location
Parsed automatically by the client
Manual handling
Usually no need to decode it yourself

“Base64 subscription” describes the encoding used for the response body; it is not a new proxy protocol.

Structured subscription body

Outer form
JSON or a client-supported structure
Node count
Determined by the response content
Compatibility
Depends on the client and core
Typical symptom
Unsupported format or missing fields

Being able to open a URL in a browser does not mean its response uses a format the current client can recognize.

  • A URL beginning with http:// or https:// should usually be handled as a subscription URL first.
  • If the content begins with a protocol identifier and represents only one configuration, treat it as a single-node link.
  • A very long encoded string may be a subscription body; do not paste it directly into the “Subscription URL” field.
  • A QR code may contain either a subscription URL or a single-node link, so inspect the actual content after scanning.

Importing a subscription in v2rayN desktop

v2rayN runs on Windows, macOS, and Linux desktops. Depending on the release, the subscription entry may be called “Subscription Groups,” “Subscription Group Settings,” or something similar, but the workflow is the same: create a group, save the remote URL, then run an update manually. Saving the URL in settings alone does not guarantee that nodes will appear in the main list.

  1. Open the group settings

    Launch v2rayN and open “Subscription Groups” → “Subscription Group Settings” at the top of the main window. If the settings entry appears in a sidebar, choose the subscription-group item with the same name.

  2. Add a subscription

    Click “Add” or “+”. Enter an easy-to-recognize group name in the alias field, then paste the complete subscription URL beginning with https:// or http:// into the address field. Do not leave spaces or line breaks before or after the URL.

  3. Check the core

    To check the running core, open “Settings” → “Parameter Settings” → “Core Type”. VLESS and REALITY configurations generally require a compatible Xray core; VMess configurations likewise require a core that supports the transport combinations returned by the subscription.

  4. Save the group

    Confirm that the group is enabled and save it. If no new nodes appear when you return to the main window, saving may still have succeeded because a remote request may not have been sent yet.

  5. Update all

    Open “Subscription Groups” → “Update All Subscriptions”. For the first import, try updating without a proxy. If the current network can reach the URL only through an existing configuration, switch to updating through a proxy.

  6. Set an active node

    After the update finishes, select a node in the main list and enable it with Enter, the context menu, or “Set as Active Server”. Then configure the system proxy or enable TUN mode.

Check the status bar or logs after updating. A successful request usually reports that the subscription update completed, shows the number of added configurations, or records a list refresh. Failures may show a timeout, name-resolution failure, certificate error, abnormal HTTP status, or parsing error. A visible node name only confirms that the subscription body was parsed; it does not guarantee that the node can establish a connection.

The system proxy and subscription import are separate steps in v2rayN. The subscription writes remote configurations to the list; the system proxy lets applications that honor system proxy settings connect through the local listening port. Whether a terminal program follows the system proxy depends on its own settings, so browser access does not prove that all command-line traffic uses the same outbound route.

Importing a subscription in v2rayNG for Android

v2rayNG uses the Xray core to process configurations. On the first connection, Android asks you to authorize the VPN connection; this permission establishes the local VpnService channel and is separate from whether the subscription URL can be downloaded. Add and update the subscription first, then select a node and start the connection to make it easier to identify whether a problem lies in the remote subscription, configuration parsing, or the actual connection.

  1. Open settings

    Open the menu on the v2rayNG main screen and select “Subscription Settings” or “Subscription Group Settings”. The wording varies slightly by version; do not choose the manual configuration editor on the main screen.

  2. Add the URL

    Tap “+” in the upper-right corner and enter a subscription note and the complete URL. The note is only for local identification; you can use “Daily” or “Backup” without changing the server response.

  3. Enable the group

    Confirm that the subscription is enabled and save it. If several subscriptions are listed, you can enable them individually; during an update, the client requests each enabled item in sequence.

  4. Run the update

    Return to the main screen, open the upper-right menu, and select “Update Subscriptions”. Wait for the completion message, then check the node count and group name. Do not tap repeatedly while the update is running.

  5. Select a configuration

    Tap a node to make it the current configuration, then use the latency or connection test to check reachability. If the test returns no result, inspect the logs instead of repeatedly adding the same subscription.

  6. Start the connection

    Tap the connection button on the main screen. On the first run, confirm VPN permission when Android prompts you. Once the status bar shows a connection indicator, open the target app to verify real-world access.

Using one subscription on both platforms

v2rayN desktop
  • Save the remote URL in “Subscription Group Settings”
  • Select an active server after updating
  • Enable the system proxy or TUN as required by your applications
  • Check the request and core startup results in the logs
v2rayNG for Android
  • Save the same remote URL in “Subscription Settings”
  • Select the current configuration after updating
  • Confirm VpnService connection permission
  • Set the per-app proxy scope as needed

Both clients can use the same subscription source, but update records, the current node, and routing settings are stored separately on each device. Selection states are not synchronized between them.

If strict battery-saving policies are enabled, allow v2rayNG to run in the background. Battery restrictions usually do not block the first import, but they may pause network activity after the screen turns off, causing later updates to time out or connections to drop. Per-app proxying does not change the subscription content; it only determines which apps enter the local VPN channel after the connection is established.

v2flyNG and v2rayNG serve different purposes: v2flyNG uses the v2fly core, while v2rayNG uses the Xray core. Basic VMess configurations in the same subscription may be recognized by both, but compatibility can differ for specific flow control, REALITY, or core-specific fields. Even after the subscription parses successfully, check each node’s protocol, transport, and core support.

How to confirm nodes work after updating

Subscription import has at least four sequential stages: the URL request succeeds, the response format parses, the core can read the node configuration, and the target connection is established. Failure at any stage may ultimately look like “it does not work”. Checking each stage is more effective than repeatedly deleting and re-adding the subscription, and helps distinguish format problems from node failures.

200
Common successful subscription response status
4 types
Common share-link protocol identifiers
10808
Examples of common local proxy ports
2 clients
Update separately on desktop and Android
  1. Check the group: Confirm that new nodes appear in the expected subscription group, that the node count is not zero, and that the names are not an unrecognized block of encoded text.
  2. Check the protocol: Open the details for one configuration and verify that the protocol, server port, transport, TLS, SNI, or serverName fields are populated.
  3. Check latency: Run the latency test provided by the client. A timeout only means that the test path received no response; use the logs to distinguish an unreachable network from a failed handshake or a limitation of the test method.
  4. Check core logs: Start the current node and review the logs, focusing on port conflicts, unsupported configuration fields, DNS resolution, TLS handshakes, and routing matches.
  5. Check the local entry point: On desktop, confirm that the system proxy points to the port actually listened on by the client. If the interface shows the local mixed port as 10808, the application must use the same port rather than an outdated value from another device.
  6. Check real traffic: Open a destination that clearly requires the current route, then check whether the client logs show a new connection and its corresponding outbound. The connection button’s color alone cannot confirm that application traffic is using the proxy.

Latency is not enough to judge node quality on its own. Some servers do not respond to the probe method used by the client, while a real TCP or TLS connection may still succeed; conversely, a fast latency result does not prove that every protocol field is correct. Validate the test result, core logs, and target access together before using the node as a daily configuration.

Verification order
1. Update the subscription: check the HTTP request and parsing result
2. Select a node: confirm that the protocol and transport fields are complete
3. Start the core: check whether the local port is listening
4. Make a request: check which outbound handles the connection
5. Check routing: confirm that the destination is not incorrectly connected directly or blocked

Common import failures and fixes

The most common problem is not a missing “Import” feature, but an unexpected URL type, copied content, or request environment. Keep the original subscription entry and inspect the error before deleting anything. Deleting everything removes the group name, update method, and failure context, making diagnosis harder.

What should I do if updating says the subscription content is empty?

Copy the complete URL again and check that no spaces, line breaks, or Chinese punctuation were added at either end. Then use the same network to confirm that the URL returns content. If the request succeeds but the body is empty, the remote subscription may currently contain no configurations; the client cannot generate nodes on its own.

Why can a browser open the URL while the client cannot parse it?

A page loading in a browser only proves that the network request received a response. The content may be a login page, an error message, an HTML document, or a subscription structure unsupported by the current client. Check the response status and parsing error in the client logs, and make sure you obtained the subscription URL rather than a management-page URL.

Why is there only one node after import?

The remote body may contain only one item, or you may have pasted a single-node link. Check where it was saved: subscription URLs belong in subscription settings, while single-node links should be imported from the clipboard. If the group update log clearly says that only one item was parsed, trust the content actually returned by the server.

Is it normal for old nodes to remain after an update?

First confirm whether the old nodes belong to the same subscription group. Manually imported nodes are usually not removed by subscription updates, and nodes in other groups are unaffected. Some versions also offer options to retain, overwrite, or clear old configurations; check the update policy in the subscription group settings.

Should I re-add the subscription after a TLS certificate error?

First check the device date, time, and time zone, then confirm that the subscription domain matches the certificate name. Clock skew affects certificate validity checks. Re-adding the same URL will not fix system time, DNS, or certificate-chain problems and may leave duplicate groups behind.

What should I do if the subscription updates successfully but every node fails to connect?

This usually means the request and parsing stages completed, so move on to the node configuration and connection logs. Check the core type, protocol fields, server port, SNI, transport path, and routing rules. If different nodes show the same local port conflict, resolve the listening-port conflict on the device first.

  • Timeout: Switch networks and try again, check DNS resolution, and compare updates through a proxy with updates without a proxy.
  • Unauthorized: Confirm that the subscription URL is still valid, and avoid copying a redirected or truncated URL from the browser address bar.
  • Format error: Make sure you did not enter a single-node link, QR-code text, or webpage source into the subscription URL field.
  • Duplicate nodes: Check whether you created the same group more than once or kept both manually imported and subscription-imported configurations with similar names.
  • Old list returns immediately after updating: Check whether you updated a different group or whether the client reloaded a backup configuration.

How subscriptions, groups, and routing fit together

Subscription groups manage the node source and bulk updates; routing rules determine which outbound handles a connection. Updating a subscription does not automatically change “direct”, “proxy”, or “block” rules, nor does it replace custom domain or IP routing. If some destinations still connect directly after import, inspect routing priority instead of repeatedly updating nodes.

Keep groups organized by purpose, such as “Daily”, “Testing”, and “Backup”, and avoid creating multiple entries with nearly identical names for the same URL. You can record node-count changes before and after updates, but a higher count does not mean better quality. Choose based on protocol compatibility, connection logs, and the current network environment.

Separate routine updates from troubleshooting

Routine maintenance
  • Keep stable group names
  • Update subscriptions as needed
  • Spot-check the active node after updating
  • Keep one verified backup configuration
Troubleshooting
  • Read the update and core logs first
  • Distinguish the request, parsing, and connection stages
  • Check local ports and routing rules
  • Change one variable at a time

Subscriptions, nodes, cores, the local proxy, and routing are consecutive but independent stages. Verifying them in order quickly narrows down the failure boundary.

Treat the subscription URL as part of your personal connection configuration. Do not publish it on a public page or forward it to anyone who does not need access. When changing devices, create the subscription group again in the new client. If the URL has changed, replace the old record with the new URL provided by the source, then run a full update.

After importing, v2rayN users should also check system proxy or TUN settings, while v2rayNG users should check VpnService and the per-app proxy scope. Subscription updates only fetch configurations; they do not decide which apps, domains, or IPs use the proxy. Keeping these stages separate makes “the node exists but traffic is not routed through it” easier to diagnose.

Download v2rayN