v2rayN for desktop / v2rayNG for Android · Four setup steps
V2Ray Subscription Setup Guide
Once the client is installed and you have a working subscription URL, follow this guide to make your first connection. The steps are import a subscription → choose a proxy mode → connect → verify it works. First, get one browser request through successfully. Then consider TUN, per-app proxying, or custom routing; troubleshooting is easier when you can identify which layer is causing the issue.
This basic walkthrough takes about 10 minutes, depending on subscription updates and network conditions. If you haven't installed a client yet, choose an installer on the download page. For extraction, runtime, and platform permission issues, see the complete client installation guide.
Step 1: Import a Subscription
A subscription URL is a link used to retrieve server configurations. It is not a client installer and usually isn't the URL for signing in to a service dashboard. Before importing, make sure the URL comes from a trusted source, the service is still active, and you have the complete link. When copying it, take care to include everything after the question mark; missing parameters can cause updates to fail. Subscription URLs often contain access credentials, so don't include the full link in public screenshots or share it with strangers.
v2rayN: Add a Group, Then Update
Open v2rayN, find “Subscription Group” in the top menu, and select “Subscription Group Settings.” Add a group and give it a name based on its source or purpose, such as “Everyday use.” Paste the subscription URL into the address field, make sure the group is enabled, and save. The name is just for identification; the URL is what the client uses to retrieve configurations.
Return to the main window and select Update Subscription from the “Subscription Group” menu. When setting up for the first time without a working proxy, choose an update option that doesn't use a proxy. Otherwise, the update may depend on a proxy connection that isn't working yet. When the update finishes, configurations should appear in the server list. Saving a group and updating its subscription are separate actions; the list may stay empty if you save the URL but don't run the update.
If the update reports success but the list is empty, select the relevant group and clear any server search filters. If the list is still empty, check the group's filter settings to make sure they aren't excluding every entry. For parsing errors, empty responses, or failed requests, check whether the URL has expired, whether you copied a dashboard link instead, and whether your current network can reach the subscription service. Don't start by changing protocol settings; the problem is usually still at the configuration retrieval stage.
Import a Subscription in v2rayNG
Open the v2rayNG side menu and select “Subscription Group Settings.” Tap the add option, enter a label and subscription URL, then save. Return to the main screen and select “Update Subscription” from the menu. Some versions offer options to update through or without a proxy. If this is your first setup and no configuration is connected, choose the option that doesn't use a proxy. Wait for the update to finish, then check the main screen for server configurations.
If you have a single share link rather than a subscription URL, use the add menu on the main screen to import a configuration from the clipboard. A single configuration differs from a subscription group in how it gets updated: you generally need to import it again or edit it manually, while a subscription can retrieve changes published by its provider. Don't paste a regular web page URL into the share-link import field, or paste a QR code screenshot as subscription text.
At this point, just confirm that the list contains configurations from the expected source. There's no need to adjust individual fields yet. Next, choose how app traffic should reach the client. A configuration appearing in the list doesn't mean your browser is using it.
Step 2: Choose a Proxy Mode
“Proxy mode” can refer to several different settings. System proxy or VPN mode captures app traffic; routing rules decide whether captured traffic goes through the proxy or connects directly; and the server configuration determines where proxied traffic connects. Keep these roles separate during initial setup: choose one traffic-capture method, use routing rules that are easy to test, and avoid running multiple proxy tools at once.
Start with Automatic System Proxy on Desktop
Find the system proxy option at the bottom of the v2rayN main window or in the tray menu, then select “Set system proxy automatically.” The client points the system proxy to a local listening address and port. Browsers that follow system proxy settings will then send requests through it. “Clear system proxy” removes these settings. “Do not change system proxy” leaves your current settings untouched; it's not the right choice if you want the client to configure traffic capture automatically.
Next, check the routing settings and choose a preset that fits your needs. Rule-based routing typically sends some destinations direct and others through the proxy. Global proxy rules send matching requests through the proxy outbound. “Global” doesn't mean every app is captured: an app that ignores system proxy settings may still connect directly. If you're only testing a browser, don't rush to enable TUN.
If your browser has an extension that manages proxies separately, disable it or set it to follow system settings; otherwise, it may keep using an old port. Enterprise policies and an app's own proxy settings can also override system settings. Keep the test path simple: confirm the browser follows the system proxy, then restore any extensions and app settings you need.
Start with VPN Mode on Android
v2rayNG is commonly used in VPN mode, where the system creates a local VPN interface to capture traffic when you connect. If your version has a run mode setting, make sure VPN is selected rather than a proxy mode intended for other programs to connect to manually. For the first test, turn off “Per-app proxy” to avoid excluding the test browser. Once the connection works, choose which apps to include or bypass as needed.
Android usually allows only one standard VPN service to be active at a time. Before connecting, stop other tools that use the VPN interface, including some local filtering and network debugging apps. In per-app proxy settings, “proxy selected apps” and “bypass selected apps” do opposite things. Read the current setting before enabling it; don't infer its meaning from the checkboxes alone.
When to Consider TUN Mode
TUN can capture traffic from more apps that don't follow system proxy settings, but it adds extra components such as a virtual network adapter, permissions, DNS, and routing. First complete the browser test below and confirm the subscription and server work; then enable TUN if needed. For regular browser use, the system proxy is usually enough. For administrator permissions and network settings on each platform, see the platform sections in the installation guide. Don't assume that a failed first connection means TUN is required.
Step 3: Select a Configuration and Connect
Return to the server list and choose a configuration with a clear source and complete settings. You don't need to run latency tests on every entry or sort them extensively before your first connection; choose one configuration and test the full setup. Selecting an entry, setting the active server, and running the core are separate states. In some interfaces, highlighting a row only means you're viewing it; you may still need to set it as the active configuration.
Desktop: Check the Active Server and Core Status
In v2rayN, select the desired row and use “Set as active server” in the context menu, or the equivalent option in your version. Then check the log area to confirm the configuration loaded and the core didn't exit immediately. Some versions reload the core automatically when you change the active configuration, so there may not be a separate Connect button. Check which configuration is active and what the logs show rather than looking for a button with a particular shape.
If you see a port-in-use error, close other proxy programs and any duplicate client instances, then try again. If you must change the local listening port, also update any apps where you entered proxy settings manually; they won't switch to the new port automatically. For configuration format errors or core startup failures, fix the startup issue first. Refreshing the browser or changing routes usually won't resolve these problems.
Android: Connect and Approve the System Prompt
On the v2rayNG main screen, tap the configuration you want to use to make it active, then tap Connect. The first time the VPN service starts, Android will show a connection request. Review it and approve access. If you deny the request, the client can't capture traffic in VPN mode, even if the server list is still there. After connecting, check that the app shows a running status and Android displays a VPN indicator.
The VPN indicator only confirms that the local VPN service is running; it doesn't prove the remote connection works. If the service disconnects as soon as the app goes into the background, check Android's background activity and battery restrictions for the app. Avoid changing broad system settings right away. Complete a test with the app in the foreground first to distinguish background management issues from configuration issues.
Keep the Subscription's VLESS Settings Unchanged
With VLESS, the server address, port, user ID, transport, and security settings must match the server. A subscription usually fills in these fields for you. On your first connection, don't change unfamiliar options to match values from another guide. Two VLESS configurations can use completely different transport combinations. The protocol label in a configuration name doesn't replace checking the actual fields.
Check REALITY Settings Against the Source
For a REALITY configuration, check the server-provided public key, Short ID, server name, and related fingerprint settings. The exact fields depend on the client interface. A resolvable address doesn't mean these parameters are correct; some errors appear only during the handshake. If the connection starts failing after a subscription update, update it again and check that all parameters are present. Confirm the client and core support the configuration, then ask the configuration provider to verify the settings.
Once the client is running without obvious startup errors, move on to the final step. Don't keep switching servers or changing multiple settings at once; make one specific request to see which route the traffic actually takes.
Step 4: Verify the Connection
Check both the app's behavior and the client logs. A lit Connect button, a VPN icon, or a latency test result alone doesn't prove that browser requests are using the proxy as expected. In your browser, open a site that should use the proxy under your current rules. Then check the client for connection or log entries from around that time.
First, Confirm the Request Reaches the Client
If v2rayN shows no trace of the request, first check that “Set system proxy automatically” is still selected, then make sure a separate browser proxy extension isn't overriding the settings. A browser that's been open for a long time may reuse an existing connection; fully quit and reopen it before trying again. On Android, check that the VPN service is still running and that per-app rules haven't excluded the test browser. At this stage, check how traffic is being captured rather than repeatedly changing server settings.
If the standard log level doesn't show each request, use the connection view available in your version or temporarily enable relevant access logs. Restore your usual log level after testing. Before sharing logs, redact subscription URLs, user IDs, and other account details. Destination domains in logs may also reveal personal browsing activity, so don't publish an unedited log.
Then Check Routing and the Remote Access Result
Once the request reaches the client, check whether it goes direct or through the proxy outbound. If the routing rules send the destination direct, a page loading successfully doesn't prove the proxy server works. Test a destination that should use the proxy, or briefly switch to a routing mode that's easier to assess. Restore your original rules after testing so temporary settings don't become your long-term setup by mistake.
A page showing old content doesn't necessarily mean a new network request was made. Try a new browser session or visit a page you haven't opened before, then compare it with the logs. An IP lookup site is only supporting evidence: with rule-based routing, the lookup site itself may connect directly. Different address families and destinations may also take different routes, so one result can't tell you how all app traffic is routed.
If the logs show requests going through the proxy outbound but pages keep timing out, try another working configuration from the same source, then check the subscription service and your current network. If only one site fails, consider an outage at the destination, a DNS issue, or a routing match problem. If every destination fails, check core startup, configuration parameters, and network reachability in that order. Change one thing at a time and test again so you can tell what made a difference.
Keep a Recoverable Setup After Testing
Once access works as expected, note the active configuration, system proxy mode, and routing rules. If you later enable TUN, per-app proxying, or more specific routing, verify the connection again after each change. Don't save a full subscription URL in an ordinary note or public screenshot; recording the source name and settings is usually enough.
When you're done on desktop, select “Clear system proxy” in v2rayN before exiting so the system doesn't keep sending requests to a local port that's no longer listening. On Android, use the client's Stop button to disconnect the VPN service. If you lose internet access after exiting, first check for leftover manual proxy or other traffic-capture settings rather than immediately reinstalling the client.
At this point, you've checked the subscription, traffic-capture method, active configuration, and access results. In daily use, keep an eye on whether the subscription needs updating and whether system upgrades have changed app permissions. To review the setup steps, return to subscription import. For installation requirements, LAN connections, or more in-depth connection issues, see the complete installation and setup guide for all platforms.