How to Import a V2Ray Subscription: v2rayN and v2rayNG Menus and Link Formats

Find subscription settings in v2rayN and v2rayNG, and learn how to tell Base64 subscriptions from vless:// and vmess:// links.

At a glance

Add subscription URLs to a subscription group; import individual node links from the clipboard. This guide is for first-time v2rayN and v2rayNG users: identify the link type, follow the desktop or Android menu path to update nodes, then check protocol fields, connection status, and update errors. Saving a subscription does not mean its nodes have been downloaded, and seeing nodes does not mean proxying is handling app traffic.

1. Tell subscription URLs from node links

A subscription URL usually starts with https://. The client fetches the remote resource, retrieves a node list, and parses it into local configurations. A node share link describes a single node and commonly starts with vless:// or vmess://. These link types use different menus—don't paste them into the same field just because both can be copied.

What you haveHow to identify itWhere to import it
Subscription URLUsually an HTTPS URL that returns node dataURL field in a subscription group
VLESS share linkStarts with vless://Clipboard import for multiple links
VMess share linkStarts with vmess://Clipboard import for multiple links
Base64-encoded subscription contentUsually decodes to share links, one per lineGet the original subscription URL and add that instead
Account management pageOpens a login, plan, or node management pageFind the subscription option intended for your client

An HTTPS prefix alone doesn't mean a URL is usable. An account page and a subscription endpoint may share a domain but return completely different content. If the provider offers multiple subscription formats, choose one explicitly intended for v2rayN, v2rayNG, or a generic list of share links. Don't give the client a file for a different configuration system and expect it to parse it.

2. v2rayN: Add a subscription group, then update it

On desktop, create a group before updating it. In common versions, go to “Subscription Group” → “Subscription Group Settings” in the main window. The add button may appear as “Add” or “+” depending on the version; either opens a window for the group remarks and URL. The steps below use common menu labels in the Chinese interface. Button placement can vary between versions.

  1. Copy the subscription URL

    Copy the complete subscription URL intended for this client from the provider's page. Make sure it doesn't include explanatory text, leading or trailing spaces, or line breaks. Don't copy the account management page URL from your browser's address bar.

  2. Add a group

    Go to “Subscription Group” → “Subscription Group Settings” → “Add”. Enter a recognizable remark, such as “Daily”, and paste the URL into the “URL” field. The remark is only for local identification; it doesn't change the server configuration.

  3. Save and update

    Save the group, then go to “Subscription Group” → “Update All Subscriptions (without proxy)”. If this is your first setup and no usable nodes are available yet, try this option first. Watch the log at the bottom and wait for the request and parsing to finish.

  4. Select a node

    Switch to the new subscription group and check the node count and protocol column. Select a node, then choose “Set as active server” from the right-click menu. In some versions, you can also select a node and press Enter.

  5. Verify app traffic

    Select “Set system proxy automatically” under “System Proxy” at the bottom of the main window or in the tray menu, then test with a browser that uses the system proxy. Adding a subscription without enabling the system proxy won't automatically change how every app connects.

If you only have a single node link, you don't need to create a remote subscription first. In the main window, choose “Servers” → “Import bulk URLs from clipboard”, or use the shortcut shown in the interface. The common Windows shortcut is Ctrl+V. When importing multiple links, put each share link on a separate line. Manually imported nodes don't gain subscription updates just because you copied a link once.

If an update without proxy fails but an existing node still connects, try “Update All Subscriptions (through proxy)”. This only changes the network route used for the subscription request; it won't fix an invalid token, expired account, or incompatible response format. First make sure the active node works.

3. v2rayNG: Subscription groups and clipboard import

v2rayNG on Android uses the Xray core to handle connections; subscription management retrieves and converts node information. The usual path is the top-left “☰” menu → “Subscription group settings”. If your version displays the menu with a different icon, look for the “Subscription group settings” label. Don't enter a subscription URL on the single-node editing screen.

  1. Open group settings

    Go to “☰” → “Subscription group settings” and tap “+” in the top-right corner. On the new group screen, enter a “Remark” and “URL”. You can use the same remark as on desktop to make the source easy to recognize.

  2. Save the URL

    Paste the complete subscription URL and tap the save icon in the top-right corner. Return to the list and confirm the new group appears. Saving only creates a local record; the nodes haven't been downloaded yet.

  3. Update nodes

    Return to the main screen, open the “⋮” menu in the top-right corner, and select “Update subscription”. Wait for the result, then open the relevant group to view its nodes. If the request fails, check the error first instead of adding the same group repeatedly.

  4. Start a connection

    Tap a node, then tap the connection button on the main screen. The first time you connect, Android will ask to set up a VPN connection. Approve it, then check the notification shade and the app's connection status. This authorization creates a local traffic path; it doesn't guarantee the remote node is reachable.

Single-node import follows a different path: copy the complete vless:// or vmess:// link, then tap “+” → “Import from clipboard” on the main screen. A QR code is just another way to carry a link; scan it using “Scan QR code”. A QR code containing a subscription URL should still be handled as a subscription—not assumed to represent a single node.

4. Base64, VLESS, and VMess: What the fields mean

Base64 is an encoding, not a proxy protocol or a form of encryption. A common subscription format encodes multiple share links, arranged one per line. A VMess share link often encodes a JSON object after its protocol prefix. Both can contain long strings, but their structures and purposes differ. String length alone doesn't tell you which import option to use.

VLESS share link

Prefix
vless://
Identity
Usually a UUID in the user information
Transport
The type parameter describes the transport method
Security layer
security can specify TLS or REALITY

VLESS is not the same as REALITY. The security layer and transport must match the server configuration.

VMess share link

Prefix
vmess://
Common payload
Base64-encoded JSON
Address and port
add、port
Identity and transport
id、net

These fields are part of a common share-link format, not a core configuration file to use as-is. The importer converts them.

After importing, check the address, port, user ID, transport type, and security layer first. For WebSocket, also check the Host and path. For TLS or REALITY, verify the server name and related parameters. Don't change every node's port to 443 just because the import succeeded, or disable certificate verification to make an error go away.

443
Default port for HTTPS when none is specified
80
Default port for HTTP when none is specified
10808
Common examples of local proxy ports; check the client's actual settings

These three numbers refer to different things. The HTTPS port on a subscription URL is used to download the node list; a node's remote port is used to establish the proxy connection; and a local listening port accepts app requests. A reachable subscription URL doesn't prove that a node's port is reachable. When reviewing JSON fields, use the subscription configuration guide and glossary to distinguish client settings from core configuration.

5. Troubleshoot update errors, empty node lists, and connection failures

Start by identifying when the failure occurs. A subscription download fails while fetching the list; a parsing error occurs while reading the response; a connection failure happens when the client tries to connect through a node that's already listed. Mixing these issues up can lead to reinstalling the client repeatedly without checking the URL or field that actually failed.

SymptomCheck firstNext step
Request timed outCurrent network, DNS resolution, and whether updates are routed through a proxySwitch networks; if a node is available, compare with an update through the proxy
HTTP 401 or 403Token, account status, and access restrictionsCopy your unique subscription URL again and confirm access with the provider; a 403 doesn't always mean the subscription has expired
HTTP 404Check whether the URL path is complete and the endpoint has movedGet the current subscription URL again from your account page
Request succeeds, but no nodes appearCheck whether the response is a login page and whether the format is compatibleChoose a format intended for your client and check the group filters
Duplicate nodes appearCheck for duplicate groups or repeated manual importsOrganize groups by source and remove records you've confirmed are redundant
Nodes appear, but none connectRemote port, protocol parameters, device time, and core logsTry another node in the same group for comparison; don't assume the subscription import is at fault

Base64 content may contain line breaks, and some encodings omit the trailing padding characters. If parsing fails, don't randomly add or remove characters and retry. Ask the provider for a compatible raw subscription endpoint instead. Preserve &, %, and query parameters in the subscription URL. In particular, don't treat & in page source as the actual separator in the URL.

Copied a link, but the clipboard has nothing to import. What should I do?

First check whether you copied a node share link. If it's an HTTPS subscription URL, use subscription group settings instead. For a share link, confirm the prefix is complete and that it doesn't include chat text or quotation marks, then copy it again from a trusted source. On Android, also make sure the app is in the foreground when it reads the clipboard.

Will updating a subscription keep manually edited node settings?

Don't rely on subscription updates to preserve individual edits. The client may regenerate subscription entries, and the provider may change node identifiers. If you need to make manual changes, save a separate entry and label its purpose to avoid confusing it with the subscription source. You'll still need to sync it manually when the remote configuration changes.

Why can't my browser open pages when the latency test succeeds?

A port or latency test checks only part of the connection; it doesn't confirm that a complete request will succeed. Check the active node, system proxy, DNS, and routing rules, then review the actual connection logs. Test results don't replace checks for TLS, authentication, or access to the destination site.

6. Share a subscription across devices, but manage routing separately

Whether one account can be used on multiple devices depends on the provider's device and concurrency limits. If sharing is allowed, you can save the same subscription URL on both devices, but you must update each one separately. A successful desktop update won't push nodes to your phone. Even with identical node lists, active nodes, routing rules, and the apps whose traffic is proxied remain local to each device.

Two-device setup: share the source, verify each device independently

Desktop: v2rayN
  • Save the source URL in a subscription group and update it.
  • Select an active node and check that the system proxy is enabled.
  • Set routing for your needs; a subscription isn't a complete rule set.
Android: v2rayNG
  • Add the same URL separately and confirm that your account allows multiple devices.
  • After updating, select a node and approve the Android VPN connection.
  • If per-app proxying is enabled, check that the target app is included.

A shared subscription only keeps the node source consistent. Check the update time, active node, and traffic policy on each device.

How TUN relates to subscription updates

On desktop, TUN mode handles traffic; it's not required to download a node list, and there's no universal “subscription TUN field” across cores. Start with a minimal configuration to verify the node, then adjust traffic handling for your apps. Android VPN authorization likewise doesn't prove that the remote connection is working. For configuration boundaries, see the routing guide and TUN mode guide.

Download clients by platform