V2Ray Client Setup Guide
Subscription Import and Connection Testing
Follow this order for your first setup: import a subscription → choose a proxy mode → connect → verify. Get one configuration working first, then adjust routing rules and app coverage.
Before You Start: Client and Subscription URL
This guide is for users who have installed a client and are ready to set it up for the first time. If you haven’t installed one yet, choose a client for your operating system on the downloads page. On first launch, keep the default listening port and core settings; there’s no need to change every option to follow this guide. A repeatable connection test makes troubleshooting easier than starting with complex rules.
Before you begin, get a working subscription URL or a complete server share link. The client reads configurations and forwards connections; installing it does not provide a server. Subscription URLs usually come from your service provider’s account page. Make sure your account and service are active, then copy the URL. It may contain access credentials, so don’t share the full URL in public screenshots, chat logs, or online conversion tools.
These four steps work well as a roughly 10-minute first-time setup, though the actual time depends on whether the subscription is reachable. If menu labels differ, look for an equivalent feature rather than switching clients repeatedly. For background on protocols, cores, and subscription formats, see the protocol and core reference later. This guide focuses on the steps needed to connect.
Step 1: Import a Subscription
First, identify what you copied. A subscription URL is usually an HTTPS address that can provide a list of server configurations when updated. An individual share link usually starts with vmess://, vless://, or another protocol prefix and imports one server entry. They’re not interchangeable just because both are links. An account page URL in your browser is not necessarily a subscription URL.
v2rayN: Add a Group and Update the Subscription
Open the main window, go to Subscription Group Settings from the Subscription Group menu, and add a group. Enter a recognizable name in Remarks, paste the full subscription URL into the address field, and save. The remark is a local label and does not change the server configuration. Check the beginning and end of the URL for extra spaces, line breaks, or punctuation added by a chat app. Make sure you haven’t left out any parameters after the question mark.
Return to the main window, select the group you just saved, then choose Update from the subscription menu. If you don’t have a working connection yet, try “Update current subscription (without proxy).” This sends the subscription request without using the client proxy; it does not change how later web traffic is routed. If your provider requires a proxy to access the subscription, you’ll need another working connection first. A configuration you haven’t imported yet can’t handle this request.
When the update finishes, check whether server entries appear in the list and review the protocol name in the Type column. If the list is still empty, first make sure the new group is selected, then check the update message. The URL may lead to a login page, the subscription may have expired, or the content may use an unsupported format. Check the source of the subscription before adding the same group again.
v2rayNG: Save the Subscription, Then Update It
From the home screen menu, open Subscription Group Settings, add a group, and enter a remark and subscription URL. Save it and return to the home screen. Then choose Update current group subscription from the menu. If the interface only offers Update subscription, use that option and check which groups it updates. Saving the URL only records its source; updating it is what turns the remote content into server entries on the home screen.
For an individual share link, copy the full link and use a server import option such as “Import from clipboard.” Don’t save it as a subscription URL. After import, avoid editing the protocol, security, or transport fields; they must match the server configuration. Once the target entry appears on the home screen, continue to the next step. For help identifying formats, see the FAQ.
Step 2: Choose a Proxy Mode
Your server entries are ready. Now decide which apps send traffic to the client, and how the client forwards that traffic. These are separate decisions. System proxy or VPN mode brings traffic into the client; routing rules determine whether incoming requests use the proxy, connect directly, or are blocked. Changing routing rules alone usually won’t affect an app that isn’t sending traffic through the client.
v2rayN: System Proxy vs. Routing Settings
Start by finding the routing selector in the main window. For your first setup, choose one of the client’s standard routing presets and note its name. Preset labels vary by version, so don’t worry if there isn’t an exact match. Routing rules use conditions such as destination domains and IP addresses to choose an outbound route; they don’t necessarily send every request through the selected server. To troubleshoot the proxy route for a specific destination, you can temporarily switch to a route that proxies all traffic, then restore your original preset after testing.
Next, find System Proxy in the main window or system tray menu. “Set system proxy” usually adds the local proxy address to your system settings so apps that follow those settings can use the client. “Clear system proxy” removes this setting. “Set” does not mean the client can tell whether the server is available, and it doesn’t confirm that the connection works. Enable this setting after confirming that the core is running in the next step.
Browsers usually support the system proxy, but some terminal programs, games, and other apps have their own network settings. For your first test, use a browser that follows the system proxy; there’s no need to enable TUN or change network adapter settings yet. If an app isn’t using the proxy, check whether it follows the system proxy before changing the subscription or server protocol.
v2rayNG: Start with VPN Mode
Open Settings and check the operating mode. For your first setup, use VPN mode, which routes device traffic through Android’s VPN interface. “Proxy only” usually provides a local proxy listener that apps must be configured to use; it won’t automatically route traffic from other apps. When you use VPN mode, the system permission prompt is a normal part of setup.
Next, check Per-app proxy. For your first test, temporarily turn this restriction off so the browser you’re testing isn’t excluded. If you need per-app settings, confirm whether the mode includes selected apps or bypasses them: the first typically routes only selected apps, while the second typically excludes selected apps from the VPN. Follow the explanation in the app, and don’t assume an app will use the proxy just because it’s checked.
Keep a suitable routing preset for now; there’s no need to change DNS, domain rules, and custom rules all at once. That keeps troubleshooting focused if something goes wrong in the next step. For more on domain strategies and rule order, see the protocol guide. For now, test one connection with one app.
Step 3: Select a Server and Connect
You’ve imported the subscription and decided which traffic will use the client. Now choose a single server entry to test. Avoid updating the subscription while changing servers and routes; otherwise, it’s harder to match log results to what you just did. Check that the protocol and remark look right, but remember that a server’s name is just a label and doesn’t tell you how well it will perform.
v2rayN: Set the Active Server and Check the Core
In the server list, right-click the target entry and choose Set as active server. Some versions also let you select it by double-clicking. Make sure the active marker moves to the right row, then check the runtime information or logs at the bottom of the window. An open client window doesn’t guarantee that the core started successfully. Look for signs of startup failures, configuration parsing errors, or port conflicts.
Once the core is running, use the system proxy option to enable Set system proxy. The desktop client may not have a separate Connect button: the active server, running core, and app proxy settings all determine whether requests can be forwarded. If the client offers a restart service or restart core option, use it once after confirming the configuration, then check the new startup log. There’s no need to click it repeatedly.
If the logs show that a local port is already in use, check whether another instance of the client or a different proxy tool is running. Close the duplicate before trying again; this helps keep settings consistent. Only change the listening port if necessary. If you do, update any apps with manually configured proxy settings, or they won’t connect to the new address.
v2rayNG: Select a Server and Allow the VPN Request
Return to the home screen, tap the target server entry, and confirm that the selection marker changes. Then tap Connect. The first time you use VPN mode, Android asks permission for the client to establish a VPN connection. Check the app name in the prompt and allow it. Without permission, the client can’t route traffic from other apps through VPN mode, even if the configuration has been imported.
After granting permission, check the client’s connection status and the system VPN indicator. If the client quickly disconnects, open the logs and check the latest error. Android usually can’t have two standard VPN services routing traffic at the same time, so another VPN app may replace or conflict with this connection. Stop the other service and reconnect rather than assuming the subscription has expired.
If startup fails, start with the first error related to your last action. For a configuration parsing error, check the imported content and core compatibility. For a connection timeout, check the server address, network, and service status. A “started” status alone doesn’t prove that the remote connection works; some connections are only established when an app makes a request. Keep the selected server unchanged and move on to the final verification step.
Step 4: Verify the Connection
Your test should answer three questions: Did the app’s request reach the client? Did routing select the expected outbound? Did the request reach its destination? A page loading only proves that the request succeeded; it doesn’t prove that it used the proxy. Likewise, a system VPN indicator only shows that a VPN service is active. Combine what the app does with the client’s records to draw a reliable conclusion.
Check Traffic Routing with a New Request
Open a web page that should use the proxy and reload it while checking the client’s connection records or logs. If your version shows connection details, check whether the destination appears and whether its outbound matches the selected route. Default logs may not include every request, so missing individual entries don’t automatically mean the connection failed. You can temporarily increase the log level to gather useful details, then restore the original setting after testing.
To help check your exit IP, use a trusted IP lookup site and compare the results before and after connecting. This only shows the route used by that lookup request, not the route used by every app or domain. With split routing, the lookup site itself may match a direct-connect rule. If the IP hasn’t changed, check the route for that request before concluding that the client isn’t working.
Browsers may reuse existing connections or cached content. After changing modes, close and reopen the test page; if needed, restart the app and check a new connection. Don’t rely on repeatedly refreshing a cached page. On Android, check again that the browser is included in per-app proxy settings. On desktop, check whether a browser extension or the app’s own proxy settings override the system settings.
Narrow Down Problems in Order
If the app’s traffic isn’t reaching the client at all, check the system proxy on desktop or VPN status and app coverage on Android. If the request reaches the client but the connection fails, check the active server, configuration parameters, and remote service status. If only some domains fail, focus on routing and DNS-related logs instead of rebuilding the entire configuration. Change one setting at a time and retest the same destination to see what made a difference.
Also open a service you use every day that should connect directly, and make sure it still works. A slow connection and a failed connection aren’t the same thing, and a built-in latency test doesn’t measure actual download speeds. For your first setup, just confirm that traffic follows the expected route and the destination responds. For performance troubleshooting and more explanations of common issues, see the FAQ; there’s no need to optimize every setting during your first connection.
Restore Proxy Settings When You’re Done
When testing is finished, choose Clear system proxy in v2rayN before closing the desktop client. If you manually entered a local proxy address in an app, restore that app’s settings too; it may lose network access if the client stops listening while the address is still configured. In v2rayNG, tap Disconnect and confirm that the system VPN indicator disappears. Sending the app to the background doesn’t stop the connection.
After completing these checks, keep the server and routing settings you’ve confirmed work, then enable per-app proxy or custom rules one at a time as needed. Subscription updates usually refresh entries managed remotely; back up important local custom configurations separately and keep them safe. If an issue comes up later, check in this order—subscription content → traffic capture → core status → request verification. It’s usually easier to find the cause this way than by reinstalling everything.