How to Import Subscriptions in v2rayN and v2rayNG: Subscription Groups, Base64, and URI Formats

Find the subscription settings in v2rayN and v2rayNG, add a subscription URL, and update the node list. Learn how common subscription formats differ.

At a glance

First, check whether you have a subscription URL, an individual node link, or a config file. Then open the subscription group settings in your client. Saving a URL creates a group, but you still need to update the subscription to fetch nodes. This guide covers desktop and Android setup, URI and Base64 formats, and common update errors—whether you're importing a subscription for the first time or troubleshooting an empty node list.

First, distinguish subscription URLs, node links, and config files

A subscription URL is usually an HTTPS link that the client uses to fetch a set of node configs and add them to a group. It may contain an access token and query parameters, so copy the full URL from your provider's subscription page. Don't copy your account homepage or remove anything after the question mark.

Text starting with vmess:// or vless:// is usually a share link for a single node. It describes one node; it isn't an HTTPS URL that periodically fetches a node list. Pasting one into a subscription URL field often results in an invalid URL or download error. Use the import-from-clipboard option on the main screen instead.

Subscription URL

Recommended

Enter the URL in the subscription group's URL field, then update the subscription. Nodes and parameter changes can be pulled into the client with later updates.

Best for: Initial setup and maintaining a group of nodes over time.

Single URI link

Use Import from clipboard or scan the node's QR code. This imports the config as it is now and usually doesn't create an ongoing update link to its source.

Best for: Temporary additions and troubleshooting a single node.

Full config file

May include inbound and outbound settings, DNS, and routing. A full config is different from a subscription node list and shouldn't be entered in a subscription URL field.

Best for: Users who understand the config structure and the correct import option.

Add a subscription URL and update it in v2rayN

Open the desktop app and select Subscription Group from the top menu. Button locations may vary slightly between UI frameworks and versions. Use Subscription Group Settings as your reference, and don't confuse Import share links from clipboard with the option for adding a subscription URL.

  1. Open group settings

    Select Subscription Group → Subscription Group Settings. Check for an existing group from the same source first to avoid duplicate groups with similar nodes.

  2. Enter the subscription URL

    In the settings window, click Add, enter a recognizable name, and paste the full subscription URL into Optional address (Url) or the corresponding URL field. Name the group as you like, but leave the URL unchanged.

  3. Save and select the group

    Save your changes, return to the main screen, and select the group you just created. An empty list at this point doesn't mean anything went wrong: saving the group hasn't fetched any nodes yet.

  4. Update the subscription

    Open the Subscription Group menu and select the update command for your subscription. The menu may offer options to update through or without a proxy. If you don't have a working proxy yet, try updating without one first.

  5. Check the import results

    Check the status area or logs to confirm the update completed, then review the node names and protocols in the selected group. Choose a node and configure the system proxy or TUN as needed; importing nodes alone doesn't route all your apps through a proxy.

Create a subscription group in v2rayNG

v2rayNG is an Android client powered by the Xray core. Subscription management is in the side menu; the + button in the upper-right corner of the main screen is commonly used to import a share link, scan a QR code, or add a config manually. Both routes can add nodes, but they're managed differently.

  1. Open subscription settings

    Tap the menu in the upper-left corner of the main screen and open Subscription Group Settings. If your version calls it Subscription Groups, make sure the page has fields for a group name and subscription URL.

  2. Add a subscription group

    Tap + in the upper-right corner and enter a name and subscription URL. Check the start and end of the URL for spaces, line breaks, or extra text added by a messaging app, then save.

  3. Return and update

    Go back to the main screen and select Update subscription from the more options menu in the upper-right corner. If you see Update current group subscription, switch to the target group before running it. To update every group, use the corresponding update all command.

  4. Select a node and connect

    Make sure the node list appears, select the config you want, and tap Connect. The first time you connect, allow the VPN connection when Android prompts you. This permission is requested when traffic is routed, not when you save a subscription.

If nodes import successfully but apps can't connect, treat a successful subscription update and a successful node connection as separate things. The first means the subscription response was parsed; the second also depends on server status, protocol settings, device time, and your local network. Don't repeatedly delete and recreate the subscription to fix connection issues.

Understanding URI and Base64 subscription formats

The subscription URL is the way to fetch content; the subscription format is the content returned. Common formats include plain text with one share URI per line, or a Base64-encoded text string containing a list of URIs. Clients recognize the formats they support, but content displayed in a browser isn't necessarily a valid subscription.

One URI per line

Outer format
Plain text across multiple lines
Common prefixes
vmess://、vless://
Node separation
Usually separated by line breaks
What to check
The protocol and parameters in each link

A VMess share link commonly includes an encoded JSON payload after the protocol prefix. Don't confuse encoding within a link with encoding the entire subscription.

Base64-encoded list

Outer format
An encoded text string
Decoded result
Usually a list of URIs, one per line
Common variants
Standard and URL-safe alphabets
Privacy
Reversible encoding, not encryption

Don't Base64-encode the subscription URL to try to fix its format. The client needs the original URL used to fetch the subscription, not a Base64-encoded version of that URL.

64
Characters in the standard Base64 alphabet, excluding padding
3 → 4
Standard Base64 encodes every 3 bytes as 4 characters
443
Default port for an HTTPS subscription URL when none is specified

These numbers help explain the format and how the request is made; they don't indicate node ports or connection speeds. The HTTPS port used to fetch a subscription can be completely different from the server port used by each imported node. Standard Base64 may end with the = padding character, but its presence or absence alone doesn't tell you whether the content is valid.

Troubleshoot empty lists and update errors by failure stage

Keep any working nodes, then update the target group. If no nodes appear, check the selected group, the request result, and the response format in that order. Don't assume Base64 is the cause or use a subscription converter instead of basic troubleshooting.

SymptomCheck firstWhat to do next
List is empty after savingWhether you ran an update and selected the right groupSelect the target group, update once, and clear any unnecessary search filters.
Connection timed out or DNS lookup failedWhether the subscription domain is reachable, plus your network and update methodCheck both a direct connection and an existing proxy route. Don't change node protocol settings first.
HTTP 401 or 403Whether the token has expired, account permissions, or server-side access restrictionsCheck the subscription status with your provider and copy the URL again. A 403 doesn't necessarily mean your account has expired.
HTTP 404Whether the path was truncated or the URL has changedGet the full URL again. Don't guess the path or remove query parameters.
Request succeeds, but parsing failsWhether the response is a login page, error page, or unsupported config formatCheck the log message and request a subscription output compatible with v2rayN or v2rayNG.
Only some nodes appearProtocol support, subscription filters, and client compatibilityClear group filters first, then check the missing nodes' protocols and parameters. Update the client if needed.

Sometimes a server returns HTTP 200 but puts a login or access-block page in the response body. The request succeeded, but the client can't find a recognizable URI. Fix the subscription URL or contact its provider instead of repeatedly Base64-encoding the page content.

If the provider only offers a full config in a particular format, ask for a subscription that uses compatible share URIs. Converting formats also requires mapping protocol fields, so changing the text encoding alone won't add parameters the client doesn't support.

Keep desktop and Android settings separate when sharing a subscription

You can add the same subscription to v2rayN and v2rayNG, but first check the number of devices and simultaneous connections your provider allows. Both clients fetch from the same URL independently; they don't push configs to each other. After updating one, you still need to update the other.

Share the subscription source, manage local settings separately

Desktop: v2rayN
  • Save the same valid URL in Subscription Group Settings.
  • After updating, select the current node independently.
  • Configure the system proxy, TUN, DNS, and routing separately.
Android: v2rayNG
  • Create a separate group in Subscription Group Settings.
  • Return to the main screen and update the subscription.
  • Manage the VPN connection and per-app proxy settings separately.

What you share is the source of the nodes, not all your device settings. The response may also vary depending on request parameters or how each client recognizes it.

A regular node subscription usually doesn't sync local listening ports, routing rules, DNS policies, or per-app lists, and it isn't a substitute for a full backup. Updating may overwrite manual changes to subscription nodes. For custom settings you need to keep, create a separate manual config and label its purpose clearly.

Download v2rayNChoose a client for your platform