SETUP / ABOUT 10 MINUTES

V2Ray Setup Guide: Import Subscriptions, Proxy Modes, and Verify Connections

Starting with a working subscription URL, update the server list, choose a proxy mode, connect the client, and verify the result. This guide covers only the steps required for first-time setup; advanced routing and JSON fields are covered in the configuration documentation.

Before you start

Prepare the client and subscription URL

Before you begin, make sure the client is installed and opens normally. Use v2rayN on desktop and v2rayNG on Android; if neither is installed yet, visit the installer page and choose the version for your platform. A subscription URL is usually a complete link beginning with https://; it provides the client with server configurations. Copy it from the first character to the last, without spaces, line breaks, or explanatory text added by a chat app.

A subscription URL and a single-server sharing link are different entry points. A subscription can be updated inside the client and usually produces multiple server entries; a single sharing link generally imports one configuration. If the content starts with vmess://, vless://, or trojan://, use a client feature such as “Import from clipboard” instead of entering it in the subscription URL field. See the glossary for the relevant protocol names; for now, continue with the most common subscription workflow.

The client opens normally

The first launch produces no persistent errors, and the main screen, settings, and log entry are all accessible.

The subscription URL is complete

There are no leading or trailing spaces, the copied link was not truncated, and no extra explanatory text was included.

The system clock is accurate

The date, time zone, and automatic time synchronization are correct, preventing TLS handshakes from failing because of clock drift.

01

Subscription

Import the subscription and update the server list

In v2rayN, open “Subscription groups” or “Subscription settings” and create a subscription group. Give it a short, recognizable name, such as one based on its purpose or source, then paste the complete subscription URL into the address field. Save it, return to the main window, and choose “Update subscriptions.” Menu wording may vary slightly between versions, but the relevant options include subscription, group, and update. Do not click repeatedly while the update is running; wait for the client to finish fetching and parsing the data.

In v2rayNG, open the side menu and enter subscription group management. Tap the add button, enter a label and URL, and save. Return to the subscription list, select the group you just created, and run an update. When it finishes, return to the main screen; one or more entries should appear in the server list. If the list is still empty, reopen subscription management, confirm that the group is enabled, and check for spaces at either end of the URL. Pasting directly from the system clipboard is usually more reliable than typing the address manually.

Subscription group settings
  • Group name Common subscriptions
  • Subscription URL https://example.com/sub
  • Enable group

Once the server list appears, explicitly select the server to use. In v2rayN, you can usually double-click the target row or use the context menu to set it as the active server; in v2rayNG, tap a server entry on the main screen to make it the active configuration. After a successful selection, the interface shows its name or selected state. Do not move on merely because entries are visible—the client must know which configuration to load for this connection.

If an update reports a timeout, format error, or unrecognized response, do not repeatedly delete and reinstall the client. Paste the subscription URL again first, then find the first clear error in the log. A timeout usually means the URL is currently unreachable; a format error usually means the response is not subscription data the client expects; if the update succeeds but no servers appear, the group may be disabled or the returned list may be empty. For the distinction between subscriptions, nodes, and server entries, continue with the glossary.

02

Routing mode

Choose a proxy mode and routing scope

The proxy mode determines which requests are handled by the active server and which remain direct. For first-time setup, start with rule mode. It uses the client's built-in or subscription-provided routing rules and is suitable for everyday use; global mode sends a broader range of requests through the active server and is useful for temporarily ruling out routing-match problems. These modes do not indicate server quality or change the subscription—they only determine how traffic is sent through different outbound paths.

In v2rayN for desktop, find the mode options in the tray menu or the system proxy section of the main window. Common interfaces show options such as “Clear system proxy,” “Set system proxy,” and “Do not change system proxy.” For first-time use, choose the option that enables the system proxy and set the routing mode to rule mode. The system proxy sends requests from browsers and other system-aware software to v2rayN; the core then uses the routing mode to decide whether each request goes direct or through the active server.

In v2rayNG for Android, open the routing configuration from Settings or the main screen and select the configuration corresponding to rule mode. Some versions use predefined rule names, while others show more detailed domain policies. For first-time use, avoid changing domain matching, IP matching, or DNS policies one by one; keeping the defaults makes it easier to tell whether the issue comes from the subscription or custom rules. For a deeper explanation of routing, domainStrategy, and rule order, see the complete configuration reference.

Recommended for first-time setup

Rule mode

Routes traffic between direct and proxied connections according to routing rules. Use it for everyday operation after basic verification. If a particular page behaves unexpectedly, use the logs to inspect which rule matched.

For troubleshooting

Global mode

Sends a broader range of requests through the active server. If global mode works but rule mode does not, inspect routing rules or DNS policies first.

Do not change routing, DNS, local listening ports, and core parameters all at once during initial setup. After multiple changes, even a failed connection is difficult to diagnose. A safer order is to keep the default ports and DNS settings, select a server, and use rule mode; after the connection is verified, adjust traffic splitting for your actual needs. Each step then has a clear before-and-after state, and the logs are easier to read.

If an application does not follow system proxy settings, its requests may bypass the client even when the desktop system proxy is enabled. First complete this guide's verification in a regular browser; do not immediately configure advanced transparent proxy features. Once the basic flow works, check the application's own proxy settings or the inbound and routing chapters in the complete configuration reference. The goal is to establish one verifiable working path before covering every networked application.

03

Connect

Start the connection and monitor client status

Check the active server name once more before starting so you do not use an imported entry that has not been selected. v2rayN for desktop usually continues running in the system tray; after selecting the active server and enabling the system proxy, it starts the core process and loads the current configuration. The main-window log or a separate log window will gradually show configuration loading, listening ports, and runtime status. As long as errors are not repeating continuously, wait for startup to finish instead of interrupting it because of a single message.

In v2rayNG for Android, select a server on the main screen and tap the connection button at the bottom. The first time the system handles this type of connection, it displays an authorization prompt; approve it and return to the client. The connection button changes appearance, and a connection icon appears in the system status bar. If it immediately returns to the disconnected state, the core failed during startup. Open the log to find the cause instead of tapping the connection button repeatedly.

Check these three states during startup

  1. Active configuration: The main screen shows the server you just selected, not a blank entry or an old record that was deleted.
  2. Client status: The connection button, tray icon, or status text has changed to a running state and has not stopped immediately.
  3. Log output: The log contains core startup and local listening messages without persistent repeats of configuration parsing, port-usage, or handshake errors.

The most common desktop oversight is that the core is running while the system proxy remains disabled. In that case, the v2rayN log may look normal, but the browser continues using its previous network path. Return to the tray menu and check the system proxy status, making sure the current option is not “Clear system proxy” or “Do not change system proxy.” If another application, browser extension, or network tool is also modifying the system proxy, pause it first to prevent multiple programs from overwriting the same system setting.

Another common issue is that a local port is already in use. If the log clearly shows “address already in use,” “bind failed,” or a similar port-conflict message, close duplicate client instances and reconnect. Do not enter arbitrary port numbers without understanding their relationships: the system proxy, HTTP inbound, and SOCKS inbound must match the current client configuration. If you need to change a port, read the complete configuration reference to understand inbound listeners, then update all related settings consistently.

If the log reports certificate-time, handshake, or serverName errors, first confirm that the system date, time, and time zone are accurate, then update the subscription and select the server again. Clock drift directly affects TLS connection checks; a mismatch between the server name and transport parameters in the subscription can also abort the handshake. Basic users do not need to guess these fields manually. A better sequence is to preserve the log, update the subscription, and compare with another server from the same subscription.

04

Verification

Verify that the connection works as expected

Do not judge verification by the client button color alone. The button shows that the core has attempted to run, but it does not by itself prove that the subscription server, routing rules, and target page all work together. First open a normal page that is usually reachable directly to confirm that enabling the client has not disrupted basic connectivity; then open a target page that should use the current configuration and check whether it loads. Together, these tests provide an initial indication that both direct and proxied paths are working.

If a normal page opens but the target page does not, do not change every setting immediately. Return to the client, confirm that the server is still selected, and inspect the latest log. If there is no record of the target request, it may not have reached the client; check the system proxy, the browser's separate proxy settings, or whether the application follows system settings. If the target request appears and then fails, investigate the server connection, TLS parameters, or routing match.

If no pages load, pause the connection and confirm whether basic connectivity returns. Once the underlying network is working, restart the client and check whether the wrong system proxy mode was selected or the local listening port failed to start. On desktop, close and reopen the browser so it rereads the system proxy state. On Android, disconnect the current connection, make sure no duplicate network tool is running, and restart v2rayNG.

If a target does not work as expected in rule mode, temporarily switch to global mode for comparison. If global mode works but rule mode does not, the server and connection path are probably usable; focus next on routing rules, domain matching, and DNS settings. If both modes fail, check the subscription server, system clock, and connection errors in the log first. After the comparison, switch back to the mode you intend to use; do not mistake a temporary troubleshooting state for the final configuration.

Basic page loads

This indicates that enabling the connection did not incorrectly block normal network access on the device.

Target page loads

This indicates that the active server and its routing path can complete the request.

No repeated log errors

This indicates that the core continues running and the current configuration is not repeatedly failing within a short period.

After verification succeeds, keep the default settings for a while before customizing routing, DNS, or core options. Before changing advanced settings, note the current mode and ports so you can roll back if needed. Maintain the subscription server list with “Update subscriptions”; do not create the same group repeatedly just to refresh it. Otherwise, the main screen can fill with similarly named duplicate entries, making it difficult to tell which one is actually in use.

Quick fixes

Shortest troubleshooting sequence when the connection fails

Following the steps in order matters more than changing many settings at once. The six checks below move from the input and client selection to system status. Test once after each item to narrow the problem quickly.

  1. Confirm the subscription URL again. Check for leading or trailing spaces and truncation, save it, run one manual update, and confirm that the server list actually refreshes.
  2. Select the active server again. A visible list does not mean a server is selected. Return to the main screen, explicitly choose one configuration, and check whether the active name changes.
  3. Restore the default rule-mode settings. Temporarily remove recently added custom routing and DNS changes so the basic configuration can be verified first.
  4. Check the system proxy or system connection. On desktop, confirm that the system proxy is enabled; on Android, confirm connection authorization and the status icon.
  5. Check the system clock. Enable automatic time synchronization and confirm the time zone, then restart the client to prevent clock drift from affecting the handshake.
  6. Read the first clear error. Prioritize the earliest configuration parsing, port-usage, or connection error in the log; repeated messages that follow are usually consequences of the same issue.
Download v2rayN