First identify whether you have a single node configuration or a subscription URL that retrieves a list of nodes. Then choose clipboard import, QR code scanning, or subscription settings. This guide is for users who have installed a client and are importing a configuration for the first time. It explains key fields, steps for both clients, and what to check when updates fail. After importing, also check core compatibility, traffic routing, and routing rules.
Share Links vs. Subscription URLs: Configuration Snapshots and Update Channels
A vmess:// or vless:// share link usually describes a single connection configuration, including the server address, port, user ID, and transport parameters. Importing it into a client creates a snapshot of the configuration at that point in time. If the server address or port changes later, the imported entry usually won't update by itself; you'll need to import it again or edit it manually.
A subscription URL is usually an HTTPS URL containing an access token. The client requests data from that URL and parses the returned list of nodes into configurations. The response may contain a set of encoded share links or use a specific configuration format. Whether it can be imported depends on the client's parser; an HTTPS prefix alone doesn't guarantee compatibility.
Subscription URLs: Maintain a List of Nodes
RecommendedIf the provider supports your client's format, subscriptions make it easier to fetch multiple nodes and keep them updated. Updates require the client to make a request; changes aren't pushed to your device in real time.
Best for: multiple nodes, changing server addresses, or a list you need to maintain over time.
Share Links: Import a Single Configuration
Useful for transferring one specific configuration or testing an individual node outside a subscription. A QR code is simply another way to carry the same text; it doesn't provide subscription updates.
Best for: self-hosted nodes, temporary tests, or checking a single connection's settings.
Choose the Right Import Method: Check the Content First
If you have a complete vmess:// or vless:// link, use node import. If the provider explicitly identifies a URL as a subscription, add it in subscription settings. Don't mistake an account login page, order page, or help page for a subscription URL.
Link Formats: Encoded VMess Data and VLESS Query Parameters
A common VMess share link format places Base64-encoded JSON after vmess://. Decoding it may reveal fields such as add (address), port, id (user ID), net (transport), host, path, and tls. This is a convention for sharing configurations, not a complete JSON configuration that can be passed directly to the core. Not every export tool uses exactly the same VMess link variant.
VLESS share links typically use a URI format. The synthetic example below is for illustrating the structure only: example.com is a reserved example domain, so this configuration can't connect to a server. It uses TCP with TLS and doesn't include REALITY or other combinations.
vless://[email protected]:443?encryption=none&security=tls&type=tcp&sni=example.com#demo-tls
| Field | What the example means | What to check |
|---|---|---|
UUID@address:port | User ID and server endpoint | Must match the server configuration. Don't replace it with a local proxy port. |
encryption=none | VLESS encryption field | This doesn't mean the connection has no TLS; check the security layer settings as well. |
security=tls | Use TLS for the security layer | The server must support these settings. The certificate and server name must also match. |
type=tcp | TCP transport marker in this share link format | The importer maps this to core fields. Don't change it to a different transport name without a reason. |
sni=example.com | TLS server name | The connection address and server name don't have to be the same. Use the values specified by the provider. |
#demo-tls | Node name | Used mainly to identify the node in the list. Changing its name won't fix authentication or connection errors. |
If a link uses REALITY, it configures the connection's security layer; it isn't a standalone proxy protocol at the same level as VMess or VLESS. Check the public key, short ID, server name, fingerprint, and any flow parameter against the server and core versions. An importer recognizing VLESS doesn't guarantee that it preserves all these additional parameters correctly.
v2rayN: Clipboard Import, QR Scanning, and Subscription Updates
The steps below use common menu labels in the Chinese-language v2rayN interface. Labels and locations may vary by version and desktop implementation. Look for the functions to import URLs from the clipboard, scan a QR code on screen, and configure subscription groups. The client parses share links and manages configurations; the core establishes the actual connection. Check compatibility for both separately.
Import a Single Share Link
- Copy the entire line, starting with
vmess://orvless://. Leave out surrounding instructions, quotation marks, and line breaks inserted by chat apps. - Open v2rayN and select “Servers” → “Import bulk URLs from clipboard.” Some interfaces also support
Ctrl+Vin the main window; you can use the menu instead. - If the QR code is displayed on your screen, select “Servers” → “Scan QR code on screen.” Show the entire code and close any windows covering it. This scans the screen; it doesn't open a camera.
- Check the new entry. Open its editor to verify the protocol, address, port, transport, and TLS settings, then use the list's right-click menu to set it as the active server.
Add a Subscription URL
- Go to “Subscription Group” → “Subscription Group Settings” and add a group. Enter a recognizable name, paste the complete subscription URL into the address field, and save.
- Return to the main window and use the update subscription function under “Subscription Group.” If no working proxy is available yet, try updating without a proxy first. Updating through a proxy only makes sense when you already have a working connection.
- Make sure nodes appear under the target group, not just the group name. Saving a URL and fetching its contents are separate steps; a successful save doesn't mean the subscription downloaded successfully.
- Select a node, enable the system proxy if needed, and check the routing mode. The node configuration only affects real traffic when the traffic you need is routed through the client.
v2rayNG: Clipboard Import, Camera Scanning, and Subscription Groups
v2rayNG is an Android client that uses the Xray core. It can accept the same types of share links as the desktop client, but importers, settings, and update behavior can vary by version. Don't assume a full application settings file exported by a desktop client can be used as subscription content on Android.
- Import from clipboard: Copy the complete share link, open v2rayNG, and tap “+” in the top-right corner → “Import from clipboard.” Once imported, tap the node to make it the active configuration.
- Scan with the camera: Tap “+” → “Scan QR code” and grant camera permission when prompted. If the QR code is on another screen, keep all four corners visible and make sure the screen is bright enough. Check the new node after scanning.
- Add a subscription: Open “Subscription Group Settings” from the side menu, tap “+”, enter a name and subscription URL, then save.
- Fetch nodes: Return to the main screen, open the more menu in the top-right corner, and select “Update subscription.” If the current screen filters by group, make sure you're viewing the group you just added.
- Start a connection: Select a node and tap the connect button. The first time you connect, approve Android's VPN connection request. This system permission lets the local service handle device traffic; it isn't another subscription account.
Some versions also offer an option to scan a QR code from an image; its name and location may vary. If you don't see it, copy the original text or display the QR code on another screen. Don't upload an image containing credentials to an online scanner just to read a QR code.
Use Both Clients: Share the Source, Manage Runtime Settings Separately
Desktop: v2rayN
- Add a subscription in a compatible format and run the first update manually.
- Check that the selected core supports the node's transport and security layer.
- Enable the system proxy if needed and configure desktop routing separately.
Android: v2rayNG
- Before using the same subscription, confirm that your account allows multiple devices.
- Update the list separately and check the active node and VPN connection status.
- Check per-app settings to make sure the apps you want are included.
Sharing a subscription doesn't sync settings: each client manages its own update schedule, active node, routing, and app coverage.
After Import: Check These Three Layers
A node appearing in the list only confirms that the client parsed an entry. It doesn't prove the server is online, authentication is valid, or all parameters are supported. Share formats and protocol implementations are different layers: a client may save a field while the running core rejects the configuration because of an incompatible version or combination.
- Configuration: Compare the settings with the provider's original information. Check the address, port, UUID, transport path, server name, and security layer. Pay close attention to encoded paths and query parameters; chat apps may alter characters and cause problems.
- Core: Check the startup log for unknown fields, unsupported transports, or configuration errors. v2rayNG uses Xray; v2flyNG uses V2Fly. They're not just different interfaces, and you shouldn't assume every additional VLESS parameter works with both.
- Traffic routing: On desktop, check the system proxy or the method you're using to route traffic. On Android, check the VPN service, per-app settings, and routing. Subscriptions usually provide nodes only; they don't automatically configure every traffic policy for you.
Interpret connection tests in context. A successful TCP latency test usually means only that the target port was reachable under the test conditions; it doesn't prove that TLS, user authentication, or web requests work. Check that the core starts, try an actual connection, then review the logs for connection and routing results. This is often more effective than repeatedly importing the configuration.
Troubleshooting: Start with What You See
After pasting, it says there are no valid configurations. Is the link broken?
First check the beginning of what you copied. If it's an HTTPS subscription URL, enter it in the subscription group address field. If it's a share link, make sure the prefix is complete and no non-ASCII punctuation was added. In v2rayN, use clipboard import under “Servers”; in v2rayNG, use clipboard import under “+”. If it still fails, check whether the client supports that link format.
A subscription update timed out. Should I just enable proxy updates?
Try updating through a proxy only if you already have a working node and a valid proxy route. First check your device's network, subscription domain resolution, and update logs. If the current node is also down, changing the update method won't restore the connection. When asking the provider whether the URL has changed or the subscription has expired, share only the error type, never the full URL.
An update returns 401 or 403, or imports a web page. What should I do?
A 401 usually indicates an authentication issue; a 403 means the request was denied. The exact reason depends on the server's rules. Check whether the token was truncated, the account is active, and you selected the right client format. If the response is a login page or other HTML, get the actual subscription URL again. Don't try to import web page content as a node list.
The QR code scanned successfully. Why won't the connection work?
A QR code only transfers text; it doesn't verify the remote configuration. Open the node editor and check the port, transport, TLS, or REALITY parameters one by one, then review the core logs. If the certificate name is wrong, correct the server name or server certificate instead of disabling certificate verification.
Why did my manually edited node name and settings change after a subscription update?
An update may replace entries with the content returned by the subscription. That's how list management works. Copy configurations you want to keep into a separate manual group before updating. If the provider changes node IDs or list order, check which node is selected afterward.
Protect Your Credentials and Check After Importing
User IDs and related authentication parameters in share links are connection credentials. A subscription URL's token usually lets anyone who has it read the node list, so keep it secret as well. Base64 is an encoding, not a security measure, and QR codes don't add access controls. Before sharing a troubleshooting screenshot, cover the complete link, QR code, UUID, and subscription token.
- Get configurations from trusted sources. Don't paste links into public online decoding tools or post subscription URLs in public forums.
- Confirm that the subscription group actually fetched nodes and note when it was updated. If you use automatic updates, still watch for failure messages; a scheduled task doesn't guarantee a successful update.
- Select the active node, check that the core is running, then verify that the system proxy or Android VPN service is routing the traffic you need.
- If credentials are exposed, reset the subscription token or relevant authentication details in the provider's control panel, then replace the old configuration on every device that uses it.
For more on how clients and cores work together, see Concepts at a Glance. For the full process from installation to your first connection, continue with Getting Started. Share links transfer configurations; subscriptions retrieve and update node lists. Whether a connection works still depends on the server, core, and local settings.