v2rayN for Windows: Setup Guide

Choose the right v2rayN build, extract it, check runtime requirements, import a subscription, and configure the Windows proxy. Includes fixes for antivirus false positives and port conflicts.

At a Glance

This guide is for anyone setting up v2rayN on Windows for the first time or moving from the classic WPF interface to the desktop edition. Choose the right system architecture and interface, then check runtime requirements, import a subscription, enable the system proxy, and troubleshoot TUN or startup issues. For your first setup, enable only the system proxy and verify that one server can reach your target site before adding features. This keeps subscription, routing, and virtual adapter issues separate.

1. Choosing Between the Desktop and WPF Editions

v2rayN manages servers, subscriptions, routing, and local proxy access; the selected core handles the actual connection. The desktop edition uses a cross-platform interface, while the WPF edition retains the classic Windows interface. The difference does not come down to one supporting VLESS and the other not: protocol support also depends on the selected core and its version, as well as compatible server settings.

Choose Based on Interface and System Requirements

Desktop edition
  • A good choice for first-time users and anyone who prefers a familiar cross-platform interface.
  • Choose the package that matches Windows and your processor architecture. Do not run a package built for another operating system.
  • Check the current download listing for details on installation and dependencies.
WPF edition
  • Best suited to Windows users already familiar with the classic lists, menus, and system tray controls.
  • WPF is a user interface technology, not a proxy protocol or a specific core version.
  • Packages that depend on a framework typically require the matching .NET Desktop Runtime.

Do not switch editions just because a connection times out. First confirm that the current core starts and the server settings are correct; then consider switching.

In Windows 11, open Settings → System → About and check System type. Most Intel and AMD PCs use x64; ARM devices should not treat x64 and ARM64 as interchangeable native architectures. If the download page does not offer a compatible build, check the release's system requirements instead of repeatedly trying to run an incompatible program.

2. Installation Folder and Runtime Requirements

Choose a Windows package from the download page. Depending on the release, you may get an installer or an archive. Follow the installer's steps, or fully extract the archive and run v2rayN.exe from its folder. Do not launch the main program from the archive preview: only the executable may be temporarily extracted, leaving dependencies and core folders unavailable.

  1. Choose a folder

    You can put a portable build in a user-writable folder such as D:\Tools\v2rayN. Avoid temporary and protected system folders; the app needs to save settings, logs, and subscription data.

  2. Extract all files

    Keep the folder structure intact. If you are using an installer, complete the installation; the folder containing the installer is not the app's data folder.

  3. Check dependencies

    If startup prompts you to install .NET, note the framework name, major version, and architecture shown. For a WPF package, install the requested Desktop Runtime. Installing only the SDK or a runtime for another major version may not resolve the issue.

  4. First launch

    Start the app as a standard user first. Open Settings → Options to check the basic configuration, then review the main window's log. Make sure the interface is not open while the proxy core has failed to start.

3. Importing a Subscription and Choosing a Server

Subscription URLs often contain access credentials, so treat them like passwords. Do not include the full URL in public screenshots. If opening it displays a long string of text, that does not necessarily mean the URL is invalid: the client needs to parse the subscription response, not display a regular webpage. Check the subscription itself if it returns a login page, error page, or expiration notice.

  1. Add a subscription group

    In the main window, open Subscription Group → Subscription Group Settings and choose the add option. Enter a recognizable name and the subscription URL, then save. Depending on the interface version, the add option may appear as “Add” or a plus sign.

  2. Update the subscription

    Return to the Subscription Group menu. For the first update, choose Update all subscriptions (without proxy). If the interface has a separate Update via proxy option, leave it off and first check whether the subscription is reachable directly.

  3. Check the result

    Check the log for the update result, then switch to the relevant group. If the update succeeds but the list is empty, clear the search box and server filters, and make sure you have not selected a different group.

  4. Set an active server

    Select a server in the list, right-click, and choose Set as active server. Wait for the core to load the configuration before testing the connection. Clicking a row alone may not change the active server.

If the subscription is only reachable through a proxy, first connect to a working server, then choose Update all subscriptions (via proxy). This option cannot establish the first connection by itself. After importing VLESS, VMess, or other servers, keep the subscription's transport, TLS, SNI, and other settings unless there is a specific reason to change them. Avoid changing multiple fields just to see what happens.

4. Windows Proxy Settings and Local Ports

After setting an active server, use the system tray menu and choose System proxy → Set system proxy. If your version lists these commands directly in the tray menu, select the matching option. The system proxy setting tells apps that honor Windows proxy settings to send requests to the local proxy port; it does not automatically route every program through the proxy.

127.0.0.1
Loopback address
10808
Port used in the example below
10818
Example alternative port if there is a conflict

The ports above are examples for troubleshooting, not fixed defaults for every version. Open Settings → Options to check the current local listening port and listener type. Newer configurations may offer a mixed port that accepts both HTTP and SOCKS traffic. Some older configurations use separate ports; do not assume an adjacent port number is an HTTP listener based on an old guide.

System Proxy Checklist

Menu option
System proxy → Set system proxy
Proxy address
127.0.0.1
Example port
10808; use the value in your current configuration
Where to check
Windows Settings → Network & internet → Proxy

The proxy port in Windows must match an active HTTP or mixed listener.

One-off Command-Line Test

Test tool
Windows' built-in curl.exe
Proxy type
HTTP proxy
Proxy address
http://127.0.0.1:10808
Timeout
15 seconds

Specifying the proxy explicitly removes the question of whether an app reads the system proxy settings.

curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 15 -I https://www.microsoft.com/

Use this command only if the port accepts HTTP proxy traffic. Receiving an HTTP response header confirms that this request used the specified proxy; it does not mean every site or route is working. If the test says it cannot connect to the proxy, check the local listener. If the remote handshake fails, check the server. Start with a routing ruleset you understand; do not edit DNS and custom routes at the same time during your first test.

5. When to Enable TUN Mode

Consider TUN mode only if your browser works through the system proxy but an app that ignores system proxy settings still cannot connect. TUN uses a virtual network interface to capture traffic covered by its configuration and involves routing and DNS. A working system proxy does not guarantee that TUN permissions, drivers, or network adapters are ready.

Whether to keep the system proxy enabled as well depends on your configuration and use case; do not assume both must always be on. When troubleshooting for the first time, test each method separately. If an explicit proxy request succeeds but access fails under TUN, investigate the traffic-capture path instead of repeatedly switching the same server.

6. Troubleshooting Startup, Ports, and Web Access

Troubleshoot in this order: main program → core → local port → server connection → app settings. A visible window only confirms that the interface started; a latency result does not prove that your browser is using the proxy. Save a section of the log from the time of failure and investigate the specific error. This is more useful than reinstalling the client, changing ports, and switching routes all at once.

Nothing happens when I double-click. Is the installation broken?

Check the system tray and Task Manager to see whether an instance is already running. If there is no process, relaunch the app from its extracted folder and check for runtime prompts and security software alerts. If a framework is missing, install the matching architecture and major version as prompted; extracting the main program again will not help.

The log says the port is in use. Which program should I close?

Run the command below to find the listening process PID, then look it up under the Details tab in Task Manager. A common cause is an old instance that has not exited. Once you identify the process, close the corresponding app normally or change the local port to an unused one, such as 10818, and update the system proxy settings. Do not force-quit an unfamiliar system process.

The server test shows latency, but webpages still won't load. Why?

First confirm that the server is set as active, then check that the system proxy port matches the actual listener. A browser extension or an app's own proxy setting may override Windows settings. Compare with an explicit proxy command: if it works but the browser does not, check the browser's proxy settings first.

Webpages stopped loading after I exited. What should I do?

Before exiting, use System proxy → Clear system proxy in the tray menu. If the app has already closed unexpectedly, go to Windows Settings → Network & internet → Proxy and check whether a manual proxy still points to a local port. Revert only settings changed during this session; do not remove organization-managed settings on a work device.

netstat -ano -p tcp | findstr LISTENING | findstr ":10808 "

The final column in the command output is the PID. If there is no output, check that the port is correct and the core actually started. For an expired certificate, name mismatch, or TLS handshake failure, check the Windows clock and verify the subscription's SNI, server address, and transport settings. Do not treat “skip certificate verification” as a general fix. HTTP proxy protocol and HTTPS encryption to the destination are separate layers; do not change the local listener type just because a webpage uses HTTPS.

7. What to Keep Before Updating or Migrating

Once everything works, you can consider convenience settings such as launching at startup and automatically updating subscriptions. Before updating, close v2rayN and its core, then back up the actual data folder. Its location can vary by installation method, so do not infer it from the executable's path. When moving between the desktop and WPF editions, reimport your subscription and check routing and ports. Do not overwrite the entire folder until you have confirmed that the configurations are compatible.

Once these checks are complete, everyday use mostly involves updating subscriptions, choosing an active server, and checking the proxy status. If something goes wrong, follow the same troubleshooting order to distinguish installation issues from network problems and roll back to the last working configuration.

Download the clientChoose a package for your platform