Step 1: Import a Subscription and Update the Server List
Copy the full subscription URL from your service provider’s account page, then open the client. A subscription URL retrieves a list of servers and lets you update it later; it is usually a web address. Entries beginning with vmess:// or vless:// are typically single-server share links. They use different import options, so don’t assume they’re interchangeable just because both can be copied. When copying, leave out any explanatory text, quotation marks, or line breaks. Don’t share the subscription URL in public chats, screenshots, or support requests.
Add a Subscription Group in v2rayN
Open the main window, find “Subscription Groups” or a similar menu, and open the group settings. Choose Add, enter a recognizable label such as “Daily subscription,” and paste the URL into the subscription address field. Keep the other settings at their defaults, save, and return to the main window. The URL is saved at this point, but servers won’t appear until you update the subscription.
Choose Update Subscription from the subscription menu. During initial setup, when no proxy is available, try updating without using the current proxy first. If your network cannot retrieve the subscription and the device already has a working connection, choose the option to update through the proxy if appropriate. Wait for the task to finish, check the status message or log at the bottom, then select the group you just added. On success, server entries will appear. Their protocol, address, and other details come from the subscription; you don’t need to enter them individually.
Add a Subscription Group in v2rayNG
Open the side menu and go to “Subscription Group Settings” or the equivalent subscription management screen. Tap Add, enter a label and the full URL, then save and return to the main screen. From the main screen menu, choose Update Subscription and wait for the completion message. If your version has group filters, select the group you just added to view the results. If the current filtered list is empty, don’t immediately add the same URL again.
For a single-server share link, copy it and use an option such as “Import from clipboard” on the main screen. The imported server will appear in the list, but unlike a subscription, it won’t receive future updates from the provider automatically. A QR code is simply another way to share configuration, so check its source before scanning. For more on the difference, see Share Links vs. Subscription URLs. You don’t need to inspect the link’s individual fields before connecting for the first time.
Confirm the Servers Have Loaded Before Continuing
If the update finishes but no servers appear, first check that the URL is complete, the subscription is still valid, and the logs show no timeout, access denied, or parsing errors. A regular sign-in URL on your provider’s account page is not the same as a subscription URL; a link that opens a login page may not be importable. Don’t keep clicking Update or bypass errors by disabling certificate checks. For possible causes, work through the FAQ.
Once servers appear, keep the provider’s default settings and don’t immediately change transport, TLS, or protocol parameters. Server names in a subscription are labels and don’t guarantee how well a route will perform; you’ll need to test the connection. You now have a server to select. Next, choose which apps’ requests the client should handle.
Step 2: Choose a Proxy Mode and Routing Rules
Keep two things in mind: the proxy mode determines how traffic enters the client, while routing rules decide whether traffic handled by the client is proxied, connected directly, or blocked. Enabling system proxy doesn’t mean every app will follow it, and choosing global routing doesn’t capture traffic that never entered the client. For your first test, use one traffic-routing method before expanding coverage.
Start with System Proxy on Desktop
In the v2rayN main window or system tray menu, find “System Proxy” and choose “Set system proxy” or a similar option. This adds the local proxy to your system settings and is a good first test with apps such as browsers that follow system proxy settings. Don’t select an option that keeps the current settings and assume traffic routing is enabled. If your browser has a proxy extension, it may override system settings; make sure it isn’t configured to use a different proxy during testing.
Next, check the routing options and keep the client’s default rules for your first test. Preset names vary between versions; make sure the current setting is not “Direct.” To briefly test whether a specific destination is reachable through the proxy, switch to global proxy routing only if you understand what it does, then restore the previous setting afterward. “Global” describes routing for traffic that reaches the client; it does not guarantee that all device traffic is captured.
Use TUN Only If Needed
If your browser works but a particular app ignores system proxy settings, consider using TUN. It routes traffic through a virtual network interface and may require administrator privileges, system approval, or additional network components. Save your current settings first, close other tools that route network traffic, and follow the client’s prompts to grant permissions. Don’t change DNS, import custom routes, and enable several modes at once during your first test; if something breaks, it will be hard to identify the cause.
TUN coverage still depends on routing rules, app exclusions, and the system environment. An enabled toggle alone doesn’t mean every request is going through the proxy. For help with virtual adapters and permissions, see the cross-platform installation and setup guide after your basic connection works. If you’re only testing a browser, system proxy is enough; you don’t need to enable TUN to complete this guide.
Check VPN Permission and App Coverage on Android
v2rayNG typically routes traffic through Android’s VPN interface. The first time you tap Connect, Android displays a VPN permission prompt. This permission creates a local traffic-routing tunnel; it does not provide a remote server. Check the client’s per-app proxy or bypass settings. If the browser you’re testing is excluded, its requests may not enter the client even when the connection is active.
For your first test, keep the default routing rules and avoid setting up a complex app list. If the device already has another VPN connection, decide whether to disconnect it first to prevent both from competing for the system VPN interface. Once you’ve confirmed the routing mode and test app, select a server and connect. There’s no need to learn the full rule syntax at this stage.
Step 3: Choose a Server and Connect
Return to the server list and choose an entry with a working status and valid configuration. If the client offers a connectivity test, use it to help narrow down your options, but remember that results apply only to that test’s destination and conditions; they don’t replace testing in the actual app. Don’t judge availability by a server name’s region or route description, and there’s no need to repeatedly test the entire list.
Set the Active Server on Desktop
In v2rayN, select the server you want and choose “Set as active server” or a similar option from the right-click menu. Some versions also let you switch servers by double-clicking; follow the prompt in your version. Check the active-server marker or status bar to confirm the selected server is in use, not just highlighted. Then make sure system proxy or TUN is still enabled as needed.
v2rayN usually loads the core automatically when you switch the active configuration, so there may not be a prominent Connect button. Check the logs for a successful startup, configuration loading errors, or local port conflicts. If a port is already in use, close duplicate client instances or other programs using the same port instead of changing to an unfamiliar port right away. If you have changed the local listening port, update the system proxy port to match.
Connect on Android
On the v2rayNG main screen, select the server you want to use, then tap Connect. The first time Android asks to set up a VPN connection, review the prompt and grant permission. If you deny it, no traffic-routing tunnel will be created; tap Connect again and approve the request. After connecting, you’ll usually see a status change in the client and a VPN icon in Android. These indicate that a local service or tunnel is running, but only an actual request can confirm the remote server is working.
If the status quickly returns to disconnected, check the client logs and system permission prompts first. If it works in the foreground but drops when the screen is locked, check battery optimization and background activity restrictions, then allow the background activity the client needs. You don’t need to grant every permission. After switching servers, wait for the configuration to reload before making a new request; existing connections may not move to the new server immediately.
Change One Setting at a Time When Troubleshooting
When a connection fails, note the error type and when it occurred, but avoid sharing logs that contain a subscription URL or full configuration. For a parsing error, check the subscription import. For a permission error, check the traffic-routing mode. For a timeout, try another server without changing other settings. Certificate or handshake errors may require checking the device date and time and the service settings. Don’t disable security options at random and hope for the best.
Once startup errors are gone from the logs and the connection status remains active, move on to the final step. A running process does not prove that traffic from your target app is being proxied; verify by making a request from the app itself.
Step 4: Verify the Connection and Restore Your Network
In the browser you plan to use, first open a familiar HTTPS page that you can currently access, then visit the destination you want to test. Use a new tab and reload the page to avoid relying on cached content. A page loading is a useful first result, but it doesn’t show which route the request took. Check the routing rules and client activity to find out.
Cross-Check the App and Client Logs
After making a new request, check the client logs for the matching domain, destination address, or connection. What appears in the logs depends on the client version and logging level, so a lack of detail doesn’t necessarily mean the request never reached the client. Don’t leave extensive debug logging enabled. If the request appears but is marked as direct, check whether the current routing rules send that destination directly before changing anything. Don’t reinstall the client as a first step.
If you use an exit IP lookup page as an additional check, first make sure its requests are routed through the proxy. A proxy exit IP only confirms the route used for that lookup. A local network IP may simply mean the rules send that site directly; it doesn’t prove the client has stopped working. The same applies with TUN enabled. For a clearer picture, consider the target app’s behavior, routing rules, and logs together.
If a browser works but another app doesn’t, first check whether that app follows system proxy settings, is excluded by per-app rules, or needs a restart to reconnect. Don’t assume the subscription has expired. If every app fails, restore basic network access first, then check the server and permissions. For deeper troubleshooting of DNS, UDP, and an app’s built-in proxy settings, see the FAQ troubleshooting guide or the cross-platform guide. You don’t need to solve every scenario during initial setup.
Disconnect and Check That Your Network Is Restored
After testing, if you no longer need the proxy, clear the system proxy in the desktop client. If you used TUN, turn it off as well, then exit the program normally. Closing the main window may only minimize it to the system tray; the core may still be running. If your browser can’t connect after you force-quit the process, check whether the system proxy still points to the stopped local port. Remove any leftover setting and test again.
On Android, tap Disconnect, confirm the client status has stopped, and check that the system VPN indicator is gone. Open a regular webpage to make sure everyday network access is back. If other network tools are running, check them separately rather than attributing every change to this client. Knowing how to disconnect and restore your settings is part of first-time setup and helps prevent old settings from being mistaken for new problems.
For everyday use, you’ll usually just update the subscription, choose a server, and enable the traffic-routing mode you need. The server list may change after an update, so confirm the active server again. When setting up another device, configure permissions for its platform rather than copying local paths and network settings from a different device. For full installation steps, see the cross-platform installation and setup guide. To solve a specific issue, search by symptom on the FAQ page.