Check the link prefix before choosing an import method: add HTTP or HTTPS subscription URLs under subscription groups, and import VMess or VLESS links from the clipboard. This guide is for first-time setup, missing nodes after import, and format errors during updates. Follow the steps to tell a URL from a subscription response, update your list, and pinpoint whether a problem lies with the network request or content parsing.
1. Subscription URLs vs. node links: how to tell them apart
“V2Ray link” doesn’t refer to one specific format. A subscription URL is used to retrieve a list of configurations and usually starts with https://. A node share link contains connection parameters and commonly starts with vmess:// or vless://. Each uses a different import method. Importing a subscription URL as a node usually won’t produce a usable configuration.
| What you have | How to identify it | Use this import method |
|---|---|---|
| Subscription URL | Usually an HTTPS URL identified by the provider as a subscription endpoint | Add it in subscription group settings, then update |
| VMess share link | Usually encoded parameters follow vmess:// | Import from clipboard |
| VLESS share link | vless:// is followed by a user ID, address, port, and query parameters | Import from clipboard |
| Subscription response | Multiple share links on separate lines, or text encoding the entire list | Use the corresponding subscription URL when available; import the response directly only if its format is supported |
An HTTPS prefix alone doesn’t mean a URL is a subscription. Account pages, payment pages, and sign-in pages also use HTTPS. Copy the URL explicitly labeled as the subscription URL, not the account page address from your browser. Subscription URLs may contain access tokens, so keep the full address private.
2. v2rayN desktop: add a group, then update subscriptions
In v2rayN, subscription management is under the “Subscription Group” menu in the main window. In the Chinese interface, the usual path is “Subscription Group” → “Subscription Group Settings.” Menu wording may vary by version. Look for a group list with fields for a name, URL, and update options—not the window for adding a server manually.
- Copy the complete URL. Copy the subscription URL from your provider, including all query parameters. Leave out quotation marks, explanatory text, and line breaks around it.
- Create a subscription group. Open “Subscription Group” → “Subscription Group Settings,” then choose “Add.” Enter a name, such as “Daily subscription,” and paste the full URL into the address field. Leave other fields at their defaults unless the provider specifies otherwise.
- Save your settings. Confirm and return to the main window. This adds the subscription source; an empty list at this point doesn’t necessarily mean something is wrong.
- Fetch configurations. Open “Subscription Group” → “Update all subscriptions (without proxy).” To update just one group, use the option for the selected group, if available, so you don’t affect other sources.
- Check the results. Switch to the group you just created and confirm that node names and protocols appear. Then select a node to use. An “update successful” message doesn’t guarantee that every node will connect.
If the subscription server is accessible only through a proxy and you already have a working node, try “Update all subscriptions (through proxy).” This isn’t required: updating through a proxy without a working proxy connection can fail. Try direct access first, then switch methods based on the error. Change one setting at a time.
3. v2rayNG on Android: use subscription settings and clipboard import separately
v2rayNG uses the Xray core. Importing happens in the client interface; the core handles the connection afterward. You don’t need to start a connection service or grant VPN permission to add a subscription. The system requests the relevant permission when you start a proxy connection.
- Open subscription management. Go to the main screen and tap the “⋮” menu in the top-right corner → “Subscription settings.” Some versions call this “Subscription group settings.”
- Add a subscription. On the subscriptions screen, tap “+,” enter a note and the subscription URL, then tap confirm or the save icon. Don’t paste a single
vless://link into the subscription URL field. - Return to the main screen and update. Tap “⋮” → “Update subscription.” If the menu offers “Update subscription (without proxy)” and “Update subscription (through proxy),” choose based on whether the subscription server is directly reachable from your current network.
- Select a configuration and connect. Once nodes appear in the list, select one and tap the connect button. The first time you connect, review and approve the system’s VPN permission prompt.
For a single VMess or VLESS share link, copy it first, then tap “+” → “Import from clipboard” on the main screen. QR code import works when the QR code contains a node link; a QR code on an account webpage may not contain a node configuration.
Import a subscription URL
- URL prefix
- Usually
https:// - Desktop menu
- Subscription Group → Subscription Group Settings
- Android menu
- ⋮ → Subscription settings
- Next step
- Save, then update subscriptions
Best for regularly retrieving configuration changes from the same source.
Import a node link
- URL prefix
vmess://orvless://- Desktop menu
- Main window → Import from clipboard; Ctrl+V is a common shortcut
- Android menu
- + → Import from clipboard
- Next step
- Select the imported node and test the connection
Best for a one-time import; it doesn’t create a subscription source that can be updated automatically.
4. Base64 subscriptions: the outer list and inner parameters are different
A common subscription response combines multiple share links, one per line, then Base64-encodes the entire text. After requesting the URL, the client decodes this outer layer to get the link list, then identifies the protocol on each line. Some services return a plain-text URI list, and others use formats specific to certain clients, so not every subscription is Base64-encoded text.
Base64 is an encoding, not encryption. Standard Base64 may include +, /, and trailing = padding. The URL-safe variant typically replaces two of those characters with - and _; some implementations also omit padding. The presence or absence of an equals sign alone doesn’t tell you whether the content is valid. Don’t replace characters or remove trailing content when copying.
- Outer encoding: Contains the complete subscription list; decoding it usually gives you multiple protocol links on separate lines.
- VMess inner encoding: Common
vmess://share links also Base64-encode a node’s JSON parameters, so they may need to be decoded a second time. - VLESS parameters: Usually expressed as a URI with an address, port, and query parameters—not parsed as VMess JSON.
- Response type: If the server returns a sign-in page, an error message, or a different configuration format, the HTTP request may succeed even though node parsing fails.
Check the response before checking the encoding
If you see “No valid nodes,” first confirm that the provider supplies a subscription format supported by v2rayN or v2rayNG. Check for truncation, encoding issues, and unsupported protocols only after confirming that the response is a link list. Don’t keep Base64-encoding the same text.
5. VMess and VLESS share links: which fields must be preserved
Common VMess share links put a Base64-encoded JSON object after vmess://. The decoded example below is for learning only. It uses a reserved example domain and a fictitious ID, so it won’t connect to a real server. Here, v is the version field in this share format—not the client version or server core version.
{
"v": "2",
"ps": "Example node",
"add": "node.example.invalid",
"port": "443",
"id": "12345678-1234-4234-8234-123456789abc",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "node.example.invalid",
"path": "/ws",
"tls": "tls",
"sni": "node.example.invalid"
}
add and port specify the server address and port; id is the user ID; and net specifies the transport. The example uses /ws as the WebSocket path and node.example.invalid as the TLS server name. These values must match the server’s actual configuration; don’t change them based on what’s “commonly used.”
Common VLESS share links look more like standard URIs. The example below is for structure only; use the complete link generated by your provider for an actual configuration.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=node.example.invalid&path=%2Fws&sni=node.example.invalid#Example%20node
- The user ID comes before
@, followed by the server address and port. Query parameters come after?, and#is usually followed by the display name. type=wsspecifies WebSocket; decodingpath=%2Fwsgives/ws. Percent encoding and Base64 are two different mechanisms.encryption=noneis a VLESS parameter; it doesn’t mean the transport lacks TLS. Checksecurityand related fields to determine the transport security method.- If a real link uses REALITY, preserve the public key, short ID, server name, fingerprint, and any applicable Flow parameters. Field names and compatibility depend on the share format and client version.
Using the same protocol name doesn’t guarantee that every combination will work. v2rayNG uses the Xray core, v2flyNG uses the V2Fly core, and v2rayN’s supported features also depend on the selected core. If a parameter isn’t supported, check the client and core capabilities rather than deleting security fields just to get the link imported.
6. Troubleshoot failed subscription updates, empty node lists, and connection problems
Troubleshoot each stage separately: requesting the subscription, parsing nodes, and connecting to a server. For timeouts, start by checking the request path. If an update succeeds but no nodes appear, check the response format. If nodes appear but won’t connect, check the server parameters and network. Changing the subscription URL won’t fix every connection issue.
I saved the subscription. Why is the list still empty?
Saving only records the source. In v2rayN, return to the main window and update from the “Subscription Group” menu. In v2rayNG, return to the main screen and choose “Update subscription” from the “⋮” menu. Then check the selected group filter in case the nodes were added to a different group.
The update timed out. Should I enable updates through a proxy?
Try updating without a proxy first. If the subscription server can’t be reached on your current network but you have a working node, switch to updating through a proxy. If you don’t have a working node, check your network, system time, and full URL first. Don’t rely on an unavailable proxy as your only way to update.
The request succeeded, but no supported nodes were found. Why?
Make sure you copied the subscription endpoint, not an account webpage, and select a format from the provider that supports your client. Check the client logs for an unsupported protocol or parsing error. Re-encoding a sign-in page, expiry notice, or empty response won’t turn it into a valid subscription.
The node imported, but webpages still won’t load. Why?
Select the node and start the connection, then check the runtime logs. On desktop, configure apps to use the system proxy or another configured traffic-routing method. On Android, confirm that the VPN service is running. Check the server address, port, TLS name, and transport path. A latency test alone doesn’t prove that all traffic will work.
Can I send someone my subscription link to check it?
Don’t share a full URL, user ID, or node link publicly. When asking for help, provide only the client version, update method, and redacted error details. If your full subscription URL has been exposed, use your provider’s reset option to replace the token, then update the saved URL in your client.
Before updating, note which configurations currently work. Afterward, check the group contents before testing nodes one by one. Logs can help identify DNS lookup failures, connection timeouts, and TLS handshake errors, but hide subscription tokens, server details, and user IDs before sharing screenshots. For more detailed steps, see the subscription import guide. For connection issues, see the Troubleshooting FAQ.