10-minute quick setup

v2rayN Guide: Subscriptions, Proxy Modes, Connections, and Testing

Starting with a working subscription URL, complete the import, mode selection, server connection, and result verification in order. Each step explains where to find the menu, what status to expect, and what to confirm before continuing.

Preparation

Pre-flight checks: client, subscription URL, and system time

Before you begin, install either the v2rayN desktop app or v2rayNG for Android, and prepare a subscription URL that has not expired. A subscription URL is usually a link beginning with https:// that points to a server configuration list maintained by the provider. It differs from a single vmess:// or vless:// share link: a subscription can import multiple configurations at once and sync server changes later through updates.

Do not paste the subscription URL into a browser address bar or alter any characters in it. When copying, select everything from the first character through the last, making sure no spaces, line breaks, or punctuation from a chat app are included at the end. If the subscription comes from a QR code, use the client's scan or clipboard import feature instead of typing the long URL by hand.

Also confirm that the device's date, time, and time zone are correct. Some transport configurations rely on TLS; a large clock difference can allow the client core to start while preventing the connection from completing. On desktop, check that no other tool is changing the system proxy, since multiple programs may repeatedly overwrite the setting. On Android, make sure another VPN connection is not still active, or the new connection may be unable to take control normally.

If the client is not installed yet, visit the client downloads page and choose the appropriate system. You do not need to edit JSON or change core parameters for a first setup. After installing the client and obtaining a subscription URL, continue to Step 1.

Step 1

Import a subscription: add server configurations to the client

Add a subscription in v2rayN for desktop

Open the v2rayN main window and find “Subscription Groups” in the top menu, then open “Subscription Group Settings.” Depending on the version, the menu may be labeled “Subscription Group Settings” or something similar, but the entry is always under the subscription menu. In the settings window, choose “Add,” enter an identifiable name such as “Daily subscription” in the remarks field, and paste the complete subscription URL into the address field.

The remarks are only for local identification and do not change the subscription. After pasting, check that the beginning and end of the URL are intact and that there are no extra spaces. Save the settings and close the window. Back on the main screen, open “Subscription Groups” again and choose “Update all subscriptions,” or update the group you just added. The client will request and parse the subscription, then write the server configurations to the main server list.

After the update, the main list should contain one or more server configurations. It will typically show an alias, address, port, transport, and subscription group. There is no need to edit each item yet. Once the list is no longer empty and the bottom log is not repeatedly reporting parse errors, continue to mode selection. If an error appears, do not keep clicking Update; open “Quick fixes for common issues” later on this page and check the URL, network, and logs in that order.

Add a subscription in v2rayNG for Android

Open v2rayNG, go to the top-right menu, and choose “Subscription Group Settings.” Tap the add button, enter a name for the subscription, and paste the URL into the subscription address field. Save it, return to the main screen, and choose “Update subscriptions” from the top-right menu. Keep the app in the foreground during the update, then check the main list after the completion message appears.

After a successful import, selectable configurations appear on the main screen. Tap one; it is usually shown as highlighted, checked, or selected. This does not establish a connection yet—it only imports the configuration and selects the active item. Do not combine multiple URLs in one subscription field. If you have several subscriptions, create separate groups so updates and troubleshooting remain clear.

Step 2

Choose a proxy mode: define the traffic scope

After importing server configurations, do not test speed immediately. First decide how the proxy should handle traffic. The most common initial confusion is the difference between “system proxy” and “routing mode”: the system proxy determines whether an app sends requests to the client's listening port, while routing mode determines whether requests already inside the client go direct, are blocked, or use the proxy exit. They operate at different layers and must be configured separately.

Basic choices in v2rayN for desktop

At the bottom of the v2rayN main window, find the “System Proxy” status area and choose “Automatically configure system proxy.” Once enabled, browsers and desktop apps that follow the system proxy settings send network requests to v2rayN. This is suitable for an initial verification because the setting is explicit and can be restored from the same menu when you are finished.

Next, find “Routing” or “Routing Settings.” For a first setup, choose a preset rule that bypasses the local network and mainland China, keeping local addresses and covered direct destinations on their original route while sending other matches to the proxy. Names vary by version; focus on whether the rule description clearly includes direct access for local networks and split-routing logic.

With “Global” routing, more traffic entering the client is sent to the proxy exit. This makes it easier to determine whether a single website is affected by split-routing rules, but everyday use may send requests that should go direct through the proxy. Start with a preset split-routing rule; switch to global routing temporarily only after confirming the server works and a target is still bypassing the proxy because of the rules.

Basic choices in v2rayNG for Android

v2rayNG uses the system VPN interface to handle device traffic. Select a server configuration and tap the connection button on the main screen to request a connection. The first time, the system displays a connection permission dialog; confirm it so the client can create a local VPN tunnel. This permission only allows the app to handle traffic at the system level; it does not prove that the remote server is reachable. Confirm the actual result in Steps 3 and 4.

If only selected apps should use the proxy, choose an include or exclude mode in the “Per-app proxy” section of Settings. For a first setup, keep the default scope, complete one full verification, and narrow it later. Enabling per-app rules too early can make the client appear connected while the current browser is not using the proxy. Start with the client's built-in routing options rather than importing several rulesets from unknown sources.

Setting Scope Recommended for first setup
System proxy Handles desktop apps that follow the system proxy settings v2rayN: choose automatic system proxy configuration
VPN handling Handles traffic from Android apps allowed into the tunnel Complete system permission on the first connection
Split routing Determines whether requests inside the client go direct or through the proxy Start with a preset rule that allows direct access to the local network
Global routing Sends requests entering the client through the proxy exit Use for short diagnostic comparisons, not as the default
Step 3

Connect to a server: start the core and confirm the active configuration

Select one configuration in the server list before connecting. Do not judge availability by its name or switch rapidly between multiple configurations. The goal of the first connection is a clear, observable connection with easy-to-read logs, so keep one configuration selected and wait for startup to finish.

Connection sequence in v2rayN for desktop

Click the target configuration in the server list, then choose “Set as active server” from the context menu, or use the shortcut provided by your version. The active server usually shows a change in color, icon, or font state. Then confirm that “System Proxy” at the bottom still reads “Automatically configure system proxy.” v2rayN generates runtime parameters from the active configuration and starts the core; the bottom status bar shows the current server and proxy state.

Then check the log area below the main window. During a normal startup, the logs show configuration loading, a local listening port, and core startup, without repeatedly printing the same error. A local listening address often appears as 127.0.0.1 followed by a port number. This means the client is waiting for app traffic on the local machine, not showing the remote server address.

If switching the active server does not change the page result, right-click another configuration, set it as active, and wait a few seconds before testing. Do not switch rapidly: closing the old connection, generating the new configuration, and starting the new core all take time. Repeated clicks mix multiple startup cycles into the logs and make it harder to identify the failed configuration.

Connection sequence in v2rayNG for Android

Tap the target configuration in the main list to make it active, then tap the circular connection button on the main screen. Complete system permission the first time, then return to the client and watch the status at the top or on the button. A running connection icon means the local tunnel has been established; confirm remote communication with the actual access result.

To view the connection process, open Logs from the top-right menu or from Settings. Focus on entries that appeared after connecting rather than treating old history as a current error. If timeouts continue, try another configuration in the same subscription group. If every configuration shows the same error, check the local network, system time, and whether the subscription update just completed successfully.

Step 4

Verify that it works: cross-check the page, exit, and logs

A client status of “Connected” only shows that the local startup process completed; it does not by itself prove that the current app's traffic is using the proxy. Effective verification combines page access results with client logs and, when possible, compares network exit information before and after connecting. This distinguishes a core that did not start, an app that is not using the proxy, and a remote configuration that cannot communicate.

Test with a new browser window first

Close the test page that has been open, open a new browser window, and visit a page normally used to check the network exit or connection status. A new window reduces interference from old connections, page cache, and existing long-lived connections. Do not only refresh a tab that has been open for a long time, because some browsers reuse the existing connection and may not show the proxy change immediately.

During verification, first open a familiar page that normally loads to confirm that basic connectivity was not interrupted. Then visit the target that should be handled by the current proxy configuration. If the first page works but the target fails, the issue is more likely the server configuration, routing match, or remote connection. If no pages load, check the system proxy port, active server, and client logs first.

Check whether the client receives requests

In v2rayN, open the log window at the bottom, keep it visible, and reload the test page. If the browser is using the system proxy, the logs usually show a new connection entry or target information. If nothing new appears, return to the “System Proxy” menu, confirm automatic configuration is still enabled, and check whether the browser has its own proxy settings.

In v2rayNG, view the live logs or connection statistics while connected. Reopen the test page; new request entries indicate that traffic has entered the client. If those entries then show a timeout or refused connection, the issue is with the selected server or its transport parameters, not the system handoff.

Compare the exit result before and after connecting

For a clearer result, record the network exit address while disconnected, then connect and reopen the lookup page. An exit change together with matching request entries in the client logs usually confirms that the proxy is working. If the exit does not change, do not immediately assume the server is unavailable: check whether routing rules marked the test page as direct, then temporarily use global routing for comparison.

After the comparison, restore the split-routing rules you plan to use long term. Global routing is useful for isolating rule issues, but everyday routing should assign exits according to domains, IPs, ports, and app scope. For a systematic explanation of rule order, TUN mode, DNS, and advanced routing, continue with the routing and split-routing chapter in the complete manual.

Quick troubleshooting

Quick fixes for common issues: narrow down the cause by symptom

The list is still empty after a subscription update

Return to Subscription Group Settings and check that the URL is complete, especially for trailing spaces and punctuation added during copying. After confirming it, run one update and review the response status and parse messages in the logs. If the URL returns a regular webpage, login page, or error text, the client cannot parse it as a server list; ask the subscription provider to verify the URL.

The client is running, but the browser is unchanged

On desktop, first check that “System Proxy” is set to automatic configuration, then check whether the browser has its own proxy settings, proxy extension, or option to ignore system settings. On Android, confirm that the connection button shows a running state, then check whether per-app proxy was enabled and the current browser excluded. After adjusting the settings, close old tabs and test again in a new window.

Still cannot connect after switching servers

Select another configuration in the same subscription, set it as the active server, and wait for startup to finish. If several configurations show the same timeout, check the device's network stability, system time, and whether the subscription updated successfully. If only one fails, temporarily disable it and keep the error time and configuration name from the logs for further investigation.

The logs say the port is already in use

Exit other proxy tools, then fully quit and reopen the current client. If the same port conflict remains, open the client settings and check the local SOCKS or HTTP listening port. Change it to an unused port and restart. Make sure the system proxy configuration and the client's actual listening port match; do not change only one of them.

The quick-troubleshooting rule is to change one thing at a time: verify the subscription, then the active server, then system traffic handling, and finally the specific log error. Do not change the server, routing, DNS, and local port simultaneously, or you will not know which change fixed the issue. For configuration-level investigation, see the daily maintenance and troubleshooting chapter in the complete manual.

After setup

Everyday use: update, switch, and disconnect

After the first setup is complete, everyday maintenance comes down to three actions: update the subscription regularly, switch the active server when needed, and restore the system proxy or disconnect when finished. An update syncs the configuration list but may not automatically switch the active item. If the previous configuration was removed, select a new one from the updated list and set it as active.

Before quitting v2rayN for desktop, open the system proxy menu at the bottom and choose “Clear system proxy” or the equivalent option, then exit the program. This prevents the system from pointing to a local listening port that is no longer running. In v2rayNG for Android, tap the connection button to disconnect when finished, wait for the system status to recover, and then close the app.

Once the basic connection is stable, consider TUN mode, custom routing, DNS handling, automatic subscription updates, and multiple subscription groups. These features affect a broader range of traffic and should not all be enabled before the first connection has been verified. Concepts, configuration boundaries, and advanced paths are covered in the complete guide from zero to advanced use; this page remains a quick workflow you can repeat whenever needed.

Quick start complete

Four-step result check

The subscription list contains configurations, the proxy mode is defined, the active server is running, and the test page results match the logs.