First identify what you have: a subscription URL, an individual node link, or downloaded subscription text. Then choose the matching menu. This guide walks first-time v2rayN desktop and v2rayNG Android users through saving a group, updating subscriptions, selecting a node, and verifying traffic. It also covers empty lists, clipboard parsing errors, and update timeouts.
Subscription URLs, share links, and Base64: what's the difference?
A subscription URL retrieves a list of configurations; it is not a server itself. It usually starts with https:// and may include an access token in the path or query string. The client fetches the node data by requesting this URL. Saving it to a group only registers the source; the server list appears after you update the subscription.
An individual share link usually starts with a protocol prefix such as vmess:// or vless:// and contains connection parameters for one node. Importing from the clipboard is simply a way to read this text; it is not another protocol, nor does it mean the client will automatically save the original subscription URL.
| What you have | What it contains | Where to import it |
|---|---|---|
| HTTPS subscription URL | Returns a node list when requested; may require an access token | Subscription group settings |
| Single protocol link | Connection details for one node, including its address and authentication | Import from clipboard |
| Multiple protocol links | Multiple node entries separated by line breaks | Bulk import option that supports this format |
| Base64-encoded subscription text | Often a set of multiline share links encoded as a whole | Update using the original subscription URL whenever possible |
| Web page or full configuration file | Could be a sign-in page, error page, or core configuration | Check the content type first; there is no universal subscription import option |
Base64 is an encoding, not encryption or another name for VMess. A traditional VMess share link may contain a node's JSON encoded after the protocol prefix. A traditional subscription may then encode the entire set of multiline links again. These two layers encode different data, so don't treat any string of letters and numbers as an individual node. Subscriptions may also return unencoded multiline text; whether it works depends on the client's parser and the format served.
v2rayN: Add a group, then update subscriptions
The steps below use menu names commonly found in the Chinese desktop interface. Button locations may vary by version, and “Add” may appear as a plus sign. Look for the functions named “Subscription Group Settings” and “Update Subscription.” Copy the full subscription URL from a trusted account portal; don't copy the page title or the URL of the entire sign-in page.
-
Open group settings
From the main window, go to “Subscription Group” → “Subscription Group Settings” and select “Add.” A group links a subscription source to the client; it is not a top-level setting in the core's JSON configuration.
-
Enter the URL
Enter a recognizable name in “Remarks,” such as “Personal subscription.” Paste the full HTTPS URL into “Optional URL” or the equivalent subscription URL field. Don't enter it in the “Address” field for an individual server.
-
Save and update
Save, return to the main window, then go to “Subscription Group” → “Update All Subscriptions (without proxy)” to make the first request. To update just one group, use the option for the current group if your version provides one.
-
Check the list
Switch to the new group and check for node names, addresses, and ports. If the list is empty, clear any search filters, then check the update result or logs. Don't keep adding the same URL.
-
Select a node
Select a node and use “Set as active server” from the context menu, or the equivalent option in your version. Then configure the system proxy and test by visiting a website. A successful import alone doesn't mean traffic is using the proxy.
If the subscription URL isn't reachable directly but the client already has a working node, activate that node first, then select “Update All Subscriptions (through proxy).” These update options determine the network route used to fetch the subscription; they don't change the protocols of the returned nodes. If you have no working node yet, repeatedly trying to update through a proxy usually won't help.
v2rayNG: Use separate options for subscriptions and clipboard imports
The Android version of v2rayNG uses the Xray core. The client manages subscriptions, while Xray parses and runs the connection configuration generated by the client. Don't enter a subscription URL in the UUID, server address, or transport path fields; those are parameters for an individual node.
-
Open subscription settings
Open the side menu, select “Subscription Group Settings,” then tap “+” in the upper-right corner. Some versions shorten this to “Subscription Settings.” Look for the group management screen with fields for a name and URL.
-
Save the group
Enter a name for the group, paste the subscription URL into the “URL” field, and tap the save or confirm icon. If there's an “Enable updates” option, make sure the group is included in updates.
-
Fetch nodes
Return to the main screen, open the menu in the upper-right corner, and select “Update subscription.” If you can choose a group, select the target group or all groups. Wait for the result, then check the nodes in that group.
-
Start the connection
Tap the target node to make it the active configuration, then tap the start button on the main screen. On first use, approve Android's VPN connection request. If permission was denied, try starting the connection again and approve the system prompt.
If you have just one vless:// or vmess:// link, copy the entire link, then tap “+” → “Import from clipboard” on the main screen. Make sure the clipboard contains no explanatory text, quotation marks, or code fences. This usually creates a local node entry; it does not create a subscription source that can be updated later.
Check node parameters and local listeners after import
Check the remote node first, then the local proxy endpoint. The server port in a subscription is not the same as a local listening port on your computer. For example, a node might use remote port 443, while the local mixed proxy listener might use 10808. These are examples only; use the values configured for your node and client, not the example values as universal defaults.
Subscription node fields
- Server address
- The domain or IP provided by your subscription provider
- Remote port
- Keep the value in the subscription, such as 443
- Authentication parameters
- Keep fields such as UUID intact
- Transport and security
- Check the WS path, TLS name, or REALITY parameters
These fields determine how the client connects to the remote server. Don't change them based on guesswork before updating.
Local proxy endpoint
- Listen address
- Usually 127.0.0.1 for local use
- Listen port
- Use the value shown in the client's settings, such as 10808
- Proxy type
- Check whether the listener uses HTTP, SOCKS, or mixed mode
- Traffic entry point
- Desktop system proxy or Android VPN interface
The local port must match the proxy address used by the app. Don't copy the remote port.
In v2rayN, go to “Settings” → “Parameter Settings” to check local listener options, and use the logs to confirm that the core has started. If your browser has its own proxy extension, make sure it isn't pointing to an old port. The system proxy affects only apps that follow system settings, so it doesn't prove that every program is using the proxy.
- More than zero nodes: only confirms that the client recognized at least some of the returned content.
- A successful latency test: confirms only that the selected test method worked; it doesn't mean browser requests took the same route.
- A successful website visit with a matching request in the logs: stronger evidence that the app's traffic is passing through the client than the status icon alone.
- A site going direct with rule-based routing: may be expected. Check the routing mode before concluding that the import failed.
Use subscriptions for ongoing updates and individual links for quick tests
You can use both methods, but don't rely on manual imports to maintain a subscription. To compare nodes, put temporary ones in a separate group and keep the original subscription group and source intact. An update may overwrite or recreate nodes in that group, so local edits aren't guaranteed to persist.
Save the subscription URL
RecommendedSave the source in subscription group settings so you can fetch updates to addresses, ports, and the node list later. This works when the provider explicitly offers a compatible subscription format, and gives you the same source to troubleshoot if updates fail.
Best for: long-term use, regular updates, and organizing nodes by source
Import an individual link
Add one node from the clipboard to test its protocol settings or use it temporarily. It usually isn't linked to subscription updates, so if the server parameters change, you'll need a new link or update the settings manually.
Best for: testing a single node, temporary connections, and isolating configuration issues
Import offline text
Use this only for bulk text formats explicitly supported by the client. First check whether the text is multiline links, an encoded block, or a complete core configuration. Different importers may accept different formats.
Best for: offline migration, compatible text you already have, and backups in controlled environments
Empty subscriptions, update timeouts, and clipboard errors
Change only one thing at a time while troubleshooting. Keep any working nodes and note whether the problem occurs while requesting the subscription, parsing its content, or starting the connection. A request timeout and a parsing error are different problems; changing a node's UUID won't fix an HTTP error from the subscription server.
Why is the node list empty after saving a subscription?
Return to the main screen and run “Update subscription,” then switch to the correct group and clear any search filters. If the update reports success but the list is still empty, check that the group is enabled, the URL returns a compatible format, and your account has available nodes. Adding a group does not itself mean the list has been fetched.
The subscription update keeps timing out. Should I enable the proxy?
If you have a working node, connect through it first, then try updating through the proxy. In v2rayN, choose the corresponding update menu; in v2rayNG, adjust the subscription update proxy option for your version. If you don't have a working proxy, first check whether your current network can reach the subscription service. Don't depend on a proxy that isn't connected yet.
The clipboard import says it can't recognize the link. What should I do?
Copy the complete share link again, including its protocol prefix, and remove any surrounding explanatory text. If you have an HTTPS subscription URL, paste it into subscription group settings instead. If you have a block of Base64 text, ask the provider for the original subscription URL or a format supported by your client. Don't keep changing the encoded characters.
What should I do if the logs show 401, 403, or a certificate error?
A 401 or 403 usually means you should check your access credentials, account status, or server-side access restrictions; it doesn't automatically mean the client is broken. For a certificate error, first check your system date, time, and time zone, then verify the domain and whether you need to sign in to the network. Don't hide the problem by disabling certificate verification. If needed, send your provider a redacted error report.
Why did my manually edited node settings disappear after an update?
The subscription is the source of configuration for that group, so an update may replace local entries with server data. Copy nodes you want to test into a separate manual group and note why you changed them. For lasting parameter fixes, ask the provider to update the subscription source rather than repeating the edits after every update.
After importing, check in this order: the group contains nodes, the target node is selected, the core is running, and app requests can be verified. If problems persist, see Advanced Configuration to learn how inbounds, routing, DNS, and outbounds differ. If these concepts are new, start with Quick Reference so you don't mistake a subscription management issue for a core routing problem.