v2rayN and v2rayNG Subscription Import: Where to Add Links and How Base64/URI Formats Work

Learn where to add and update subscriptions in v2rayN for desktop and v2rayNG for Android, plus how Base64 subscriptions differ from vmess:// and vless:// links.

At a glance

Check the link prefix before choosing an import method: add HTTPS subscription URLs to a subscription group, and import vmess:// or vless:// node links from the clipboard. This guide covers saving, updating, selecting a server, and connecting on desktop and Android, along with how to identify Base64 subscriptions, troubleshoot update errors, and reuse a subscription across devices. For first-time setup or when a subscription appears to be added but the server list is empty.

First, tell subscription URLs and node links apart

A subscription URL is a web address used to retrieve a list of servers, and usually starts with https://. After saving the URL, the client must fetch it and parse the response to build the server list. A web dashboard login, a plan page, and a subscription URL are different things. Copy the link labeled “subscription URL” or the one marked as compatible with your client.

By contrast, vmess:// and vless:// usually describe a single node. They contain connection parameters and aren’t meant to be opened as web pages. Pasting a node URI into a subscription URL field may trigger an unsupported URL scheme error; importing an HTTPS subscription URL as a regular node may result in a “no servers found” message.

HTTPS subscription URL

Recommended

Save it to a subscription group, then update the group. Updates can retrieve changes such as added or removed nodes and URL changes, depending on the subscription provider.

Best for: ongoing use and regularly updated server lists.

VMess / VLESS share link

Copy the complete URI and import it from the clipboard or a QR code. The imported connection details are a snapshot; they won’t update automatically if the original node changes.

Best for: testing a single node, a temporary transfer, or connection details provided individually by an administrator.

v2rayN: Add a subscription group and update servers

v2rayN is a desktop client. These steps apply to macOS and can also help you navigate the Windows and Linux interfaces. Button locations and labels may vary between releases, but the basic flow is always the same: create a group → enter the URL → save → update. The menu names below are common in the Chinese interface. If “Update without proxy” is labeled “Direct” in your version, choose the equivalent option.

  1. Open subscription groups

    In the main window, go to “Subscription Group” → “Subscription Group Settings,” then click “Add” or “+.” Don’t open the manual VMess/VLESS server settings.

  2. Enter the URL

    Enter a recognizable name in “Alias,” such as “Daily subscription.” Paste the full HTTPS URL into “Optional address (Url)” or the subscription URL field. Make sure it has no surrounding quotes, spaces, or line breaks, then save.

  3. Run an update

    Return to the main window and select “Subscription Group” → “Update all subscriptions (without proxy).” Try this first if you don’t have a working server yet. If the URL is only reachable through an existing proxy and you have a working connection, choose the option to update through the proxy instead.

  4. Check the server list

    Switch to the group you just created and confirm that server entries appear. Check that the protocol, address, and port are complete, then right-click a server and choose “Set as active server.” Some versions let you select one by double-clicking.

  5. Enable the proxy

    Make sure the core is running, then choose “System Proxy” → “Automatically configure system proxy.” Test access in a browser and check the logs for connection errors. A successful import only means the server list was parsed; it doesn’t mean system traffic is going through the proxy.

If you received one or more node URIs rather than a subscription URL, copy the complete text and use “Server” → “Import bulk URLs from clipboard.” You don’t need to create a subscription group. Bulk imports usually put one URI on each line. Don’t include explanatory text, code fences, or ellipses from a chat message.

v2rayNG: Subscription settings and update options

v2rayNG is an Android client that uses the Xray core. Its menus differ from desktop v2rayN, but the process is the same: save the subscription, then update it. Don’t confuse “Import from clipboard” with subscription management: the former is mainly for node links, while the latter saves a URL that can be fetched again later.

  1. Open subscription management. Open the top-left side menu, select “Subscription Group Settings,” and tap “+” in the top-right corner. Enter a remark, paste the subscription URL in “Optional address (URL),” then tap the confirm button in the top-right corner to save.
  2. Return to the update list. Go back to the main configuration screen, open the top-right menu, and select “Update subscription.” Wait for the update to finish, then check the configuration list. Saving a URL in subscription settings alone doesn’t mean it has been fetched successfully.
  3. Select a node and connect. Tap the configuration you want to use, then tap the connect button in the bottom-right corner. The first time you connect, Android will show a VPN connection request. Approve it so the client can create a local tunnel to handle traffic.
  4. Check the connection status. Review the client status and logs, then test access. The Android VPN icon means a tunnel has been established; it doesn’t guarantee the remote server is reachable or that DNS, authentication, and transport settings are correct.

To import a single node, tap “+” in the top-right corner of the main screen, then “Import from clipboard.” To scan a QR code, tap “+” → “Scan QR code.” A QR code is just a way to encode text, not a separate proxy protocol. After scanning, check whether it contains a node URI or a subscription URL; add the latter through subscription management.

How Base64, vmess://, and vless:// formats relate

Base64 is an encoding for representing binary data as text, not encryption or a proxy protocol. Traditional universal subscriptions often combine multiple node URIs into one text block and Base64-encode the whole block. The client decodes it, then parses the URIs line by line. Some subscriptions return plain-text URIs or different content depending on the client, so subscription formats don’t all look the same.

443
HTTPS default port; another port can be specified explicitly
4 characters
Each standard Base64 group encodes up to 3 input bytes

A common VMess share link has a vmess:// prefix followed by Base64-encoded JSON containing the server address, port, user ID, and transport settings. VLESS share links usually use a URI structure, with the user ID, host, and port in the main part and TLS or transport options in the query string. Don’t assume a VLESS URI can be decoded by treating everything after the prefix as Base64.

HTTPS subscription URL
  → Fetch subscription content
  → Identify the outer encoding (such as Base64)
  → Get one or more vmess:// or vless:// URIs
  → Parse them into server entries in the client

vmess:// share link
  → Commonly Base64-encoded JSON
  → Read the address, port, identity, and transport settings

vless:// share link
  → Parse the URI body, query parameters, and remark
  → Read the address, port, identity, and transport settings

If the response starts with an HTML page, it’s often a login page, access verification page, or error page—not a parseable node subscription. A successful HTTP request and a successful subscription parse are separate steps. Even a 200 status can return a body with no nodes at all.

Subscription update failed? Check the network, response, and nodes

Read the update log before deciding to recreate the group. Repeatedly deleting and adding the same broken URL won’t fix access or format issues. Keep any working nodes, and identify whether the failure happened while fetching the subscription or later, when connecting.

SymptomWhat to check firstNext step
Request timed out or DNS lookup failedThe client hasn’t received the subscription response yet; this is a network access issue.Check the network and DNS, then compare updates made directly with updates made through an existing proxy.
Returns 401 or 403Common causes include an expired token, access restrictions, or a security check.Copy the subscription URL again from the provider’s platform and check your account status. Don’t assume the exact cause from the status code alone.
Parsing failed or 0 nodes detectedThe response may be a web page, an incompatible format, or empty.Choose a subscription format compatible with v2rayN/v2rayNG, then check the group filter and update log.
Nodes appear, but authentication failsThe subscription was fetched successfully; the issue is with the node settings or server.Update the subscription and select the node again. Check the account’s validity period, identity settings, and device time.
Client starts, but the browser can’t connectPossible causes include system proxy settings, per-app rules, DNS, or node connectivity.Check local traffic routing and connection logs separately. Don’t classify the issue as “subscription not imported” again.

Using a subscription on Mac and Android: what syncs and what doesn’t

Whether you can use one subscription on multiple devices depends first on the provider’s device, concurrency, and access limits. Saving the same URL in multiple clients doesn’t mean your account allows simultaneous connections. Check the service terms, then import the URL on each device. You don’t need to copy the entire runtime configuration from your Mac to Android.

Use the same subscription on both devices; update each separately

Desktop v2rayN
  • Save the provider’s URL in a subscription group.
  • Choose an active server after updating.
  • Configure system proxy and routing rules separately.
  • If auto-update is enabled, check the update interval and when it runs.
Android v2rayNG
  • Save the same URL in subscription group settings.
  • Return to the main screen and update the subscription.
  • Choose nodes and per-app proxy settings separately.
  • If the provider resets the token, update the URL on this device too.

What’s shared is the subscription source, not every local setting. The server lists may still differ depending on update times, client compatibility, and the content returned by the provider.

Subscriptions usually sync node connection details, but not local routing, DNS, system proxy status, per-app lists, or the currently selected node. QR code sharing usually copies static details for a single node. To keep up with updates from the provider, save the subscription URL. Use a node URI or QR code only when you need to transfer a temporary configuration.

Download v2rayNChoose a client for your platform