Preparation
Before You Start: Check the Client, Subscription URL, and System Time
Before you begin, prepare an installed client and a complete subscription URL. Use v2rayN on desktop and v2rayNG on Android. If the client is not installed, visit the client page first, choose the package for your operating system and processor architecture, install it, and then return to this guide. If the system asks for permission to access the network on first launch, allow the client to establish a network connection. Otherwise, local security policies may interrupt the connection even after the subscription imports successfully.
A subscription URL is usually a complete link beginning with https://, provided by the subscription service. Copy the entire value, including any trailing parameters; do not mistake the subscription page URL for the subscription URL. Treat the subscription URL as a configuration credential and do not publish it on public pages, screenshots, or shared documents. This guide explains how to import it in the client; it does not provide subscription services or manage account status on the provider's behalf.
Also confirm that the device date, time, and time zone are set to synchronize automatically. VLESS, VMess, and Trojan configurations commonly depend on TLS or time-sensitive validation, so a significant clock difference can make the client appear to start while the connection fails during the handshake. After synchronizing the time, close other tools that modify the system proxy so multiple programs do not control the same setting. Once preparation is complete, create a subscription group first, then retrieve the configuration list from it.
Subscriptions and Configuration Lists
Import a Subscription and Retrieve Configuration Entries
v2rayN Desktop: Add a Subscription Group
Open the v2rayN main window, go to “Subscription Groups” in the left menu, and open the subscription group settings. Select Add Group to reveal fields such as “Remarks,” “Address (url),” and “Auto-update interval (minutes).” Use the remarks field to distinguish sources with an easy-to-recognize name; paste the complete subscription URL into the address field; and leave the auto-update interval at its default for now. Adjust it after the basic connection works. Save the group and return to the main window.
Saving the group only tells the client to remember the URL; the server list may still be empty. Open the “Subscription Groups” menu again and select “Update All Subscriptions (Without Proxy)” or the update action for the current group. For first-time setup, updating without a proxy is usually preferable because no active configuration is available for the subscription request yet. When the update finishes, configuration entries should appear in the main area, with fields such as “Alias,” “Address,” “Port,” “Transport Protocol,” and “Subscription Group.”
If the list does not change, do not keep clicking the connection button. Reopen the subscription group settings and check that the URL has no extra spaces, the group is enabled, and the client's bottom status bar or logs contain no subscription request errors. If the service requires an active account, confirm on the provider's site that the subscription URL is still valid. For more complete guidance on empty subscriptions, incompatible formats, and update failures, see the Help Center.
v2rayNG for Android: Add a Group and Update It
Open v2rayNG, enter the subscription group settings, and tap the add button. Enter the remarks and subscription URL, make sure the group is enabled, and save it. Return to the configuration page and select Update Subscription from the menu. When the update finishes, selectable entries should appear in the configuration list. If the list is still empty, switch to the subscription group you just created, update it once more, and confirm that the list filter matches the group.
On Android, you can also import a single configuration from the clipboard, but subscription group management is more suitable for first-time setup. A subscription group can update multiple configurations together and makes their sources easier to distinguish. A single share link and a subscription URL are different: the former usually creates one configuration, while the latter retrieves a set of configurations. The rest of this guide uses the subscription-generated list and does not require manually entering protocol, port, or transport parameters.
Traffic Handling and Routing
Choose System Proxy and Routing Modes
After importing configuration entries, decide which application traffic the client should handle and how those connections should select an outbound route. These are related but distinct settings: the system proxy directs requests from apps that support system proxy settings to the client, while the routing mode decides whether those requests use a proxy, a direct connection, or blocking. Choosing routing rules without enabling an appropriate traffic-handling method may leave browsers and other apps on their original connections. Enabling the system proxy without confirming the routing rules may cover a different traffic scope than expected.
v2rayN Desktop: Configure the System Proxy Automatically
Find “System Proxy” in the v2rayN status bar at the bottom and select “Set System Proxy Automatically.” Once enabled, the client points the local system proxy to the running local proxy port, allowing compatible browsers and desktop apps to send requests through it. The status bar should clearly show “System Proxy: Set System Proxy Automatically.” To disable handling temporarily, restore the system proxy setting from the same location instead of terminating the client process, preventing the system from retaining a dead local port.
Next, open “Routing Settings” and choose a preset that matches your needs. “Bypass Mainland China” typically sends common mainland China and local-network addresses directly while routing other matching connections through the active configuration. “Global” is useful for briefly determining whether an access problem is caused by split-routing rules. “Direct” sends ordinary requests without using the proxy and is useful for leaving the proxy environment or making a comparison. For first-time setup, start with “Bypass Mainland China,” then adjust it after verifying the connection.
v2rayNG for Android: Confirm the Routing Preset
In v2rayNG, open Settings or Routing Settings, find the predefined rules option, and choose a routing preset that matches your intended scope. Save it and return to the configuration list. Android manages the connection through its system connection interface, so there is no desktop-style “System Proxy” status bar to find. When the connection is actually started, the system displays a connection permission prompt once. For now, save the routing rules; the next step is to select a configuration and start the connection.
Routing rules are not speed tiers and do not change server parameters in the subscription. They determine the outbound route based on domains, IP addresses, or predefined categories. If a page loads in global mode but not in split-routing mode, check the routing match result instead of repeatedly importing the subscription. For the use cases of VMess, VLESS, Trojan, and REALITY, and the relationship between the Xray and V2Fly cores, continue to the protocol reference; no manual protocol edits are needed for the first connection.
Simplified Choices for First-Time Setup
- Desktop Traffic Handling
- Set the system proxy to “Set System Proxy Automatically.”
- Basic Routing Preset
- Start with “Bypass Mainland China,” then adjust the rules after verification.
- Comparison Check
- Switch to global mode briefly to determine whether the issue comes from split-routing rules.
Active Configuration and Runtime Status
Select a Configuration and Connect
Before connecting, the configuration list, routing mode, and traffic-handling method should all be ready. Next, explicitly choose an active configuration from the list. The client does not automatically decide which entry to use just because a subscription update completed, so a populated list does not mean that you are connected. Confirm the active configuration, the Core runtime status, and the system proxy status together.
v2rayN Desktop: Set an Active Server
In the v2rayN main list, click a configuration and use the context menu to set it as the active server, or use the corresponding shortcut provided by the client. The row should show its active state. Then check the bottom status bar to confirm that “Core Type” displays a core type supported by the subscription configuration and that the system proxy remains “Set System Proxy Automatically.” If the Core has not started, restart the service from the client menu and check the logs for successful configuration loading and local listening.
Do not try several configurations in rotation at this point. Keep one configuration fixed and complete the full verification so you can distinguish subscription, routing, and configuration-availability issues. If the log says a protocol field cannot be recognized, the current core family may not match the configuration type. If it reports address resolution or connection timeouts, first check the local network, configuration address, and subscription status. See the troubleshooting section of the Help Center for detailed error categories.
v2rayNG for Android: Select a Configuration and Start
In the v2rayNG configuration list, tap the entry you want to use to make it the current configuration. After confirming the selection, tap the circular connection button at the bottom of the page. On the first connection, Android displays a system connection permission dialog; confirm it to start the client. The connection button and top status area change with the runtime state. If it remains disconnected, open the logs to check whether the configuration loaded successfully.
Keep v2rayNG allowed to run in the background during the connection. Power-saving policies on some devices restrict background network activity after the screen turns off, causing a connection that works initially to stop after the device is locked for a while. After basic verification, allow v2rayNG the necessary background activity in the system app settings. The exact path varies by device, but the principle is the same: power-saving policies should not terminate the client prematurely.
Results and Log Checks
Verify That the Proxy Is Working
A running connection button is only the first confirmation; you must also check whether real application requests follow the routing rules. Start with simple, repeatable actions and do not change the subscription, routing, and system proxy at the same time. Keep the active configuration unchanged, open a browser page that normally loads reliably, then visit a page that should be handled by the proxy rules. Check whether both types of request produce the expected results.
Check Whether the App Uses the System Proxy
v2rayN's automatic system proxy mainly covers apps that follow system proxy settings. Browsers usually use this setting directly, but some apps have their own proxy options or do not read the system proxy. If the browser works but one particular app cannot connect, check that app's network settings before assuming the client has failed. If the app offers a “Use system proxy” option, keep it enabled. If it is fixed to direct connection, its requests will not enter v2rayN's routing process.
After v2rayNG establishes a system connection, Android generally routes device traffic through it. If only certain apps are unaffected, check whether v2rayNG has app filtering or per-app proxying enabled, and confirm that the target app is within the intended scope. For first-time setup, avoid enabling complex per-app rules at the same time, since they make it harder to tell whether a request is included or excluded.
Check the Status Bar and Runtime Logs
Return to the client and check its runtime state. v2rayN should continue to show the active Core and automatic system proxy at the bottom, and the logs should not repeatedly report configuration-load failures, domain-resolution failures, or connection timeouts. v2rayNG logs show the connection process. If they contain only startup records and no corresponding requests, the target app's traffic usually is not reaching the client. If requests are recorded but connections fail, inspect address resolution, protocol compatibility, and network status based on where the error occurs.
Logs help identify which stage failed; they do not require editing the configuration line by line. First determine whether the error occurred during subscription update, Core startup, connection to the target address, or routing matching, then adjust the relevant setting. Return to the first step for subscription update failures; check protocol and core compatibility when the Core cannot load; compare routing modes when only specific pages fail; and check the system proxy or system connection when no app produces request records. Rolling back by stage is easier to diagnose than changing several settings at once.
Use Global Mode for a Brief Comparison
If the client reports a normal connection but a target remains inaccessible, briefly switch the routing mode to global and test again. If it works in global mode, the active configuration can establish a connection and the issue is more likely in the current split-routing rules. If it still fails globally, prioritize checking configuration availability, the local network, and protocol compatibility. Switch back to the original routing mode after the comparison so a temporary test setting does not become the long-term configuration.
After verification, record the working combination: subscription group name, active configuration, routing preset, and traffic-handling method. When you update the subscription later, refreshing the configuration list usually does not change the system proxy or routing settings. If a client upgrade resets the interface state, these four items provide a quick recovery checklist. If the connection remains unstable, use the Help Center to investigate symptoms such as an empty subscription, Core startup failure, connected but unable to access, or an issue affecting only some apps.
Basic Setup Complete
How to Update and Stop After Setup
After confirming that the basic connection works, set a reasonable automatic update interval for the subscription group. Updating a subscription only synchronizes the configuration list; it does not determine whether each configuration actually works. If the active configuration is removed after an update, choose another available entry from the list. If it remains, you can usually continue using it. Do not use an excessively short update interval as a connection test; frequent refreshes will not fix local proxy or routing settings.
When stopping on desktop, first restore the system proxy to direct connection or clear the system proxy in v2rayN, then exit the client. This prevents browsers and other apps from pointing to a closed local port. On Android, stop the system connection with the v2rayNG connection button and wait until the status returns to disconnected before exiting. The next time you use it, you generally only need to confirm that the subscription has not expired, select an active configuration, and connect again.
At this point, the four steps—importing a subscription, choosing a proxy mode, connecting, and verifying the result—form a complete workflow. To compare the design trade-offs of VLESS, VMess, Trojan, Shadowsocks, and REALITY, or to check compatibility among Xray, V2Fly, and clients, continue to the protocol and core technical reference. To download the package again or switch platforms, return to the client page and choose the appropriate version.
Next Steps
Protocol Selection and Troubleshooting
After the basic connection works, open the protocol reference or Help Center based on the issue at hand. Avoid changing too many parameters during first-time setup.