Oct 14, 2026 · Platform Guides · About 12 min read

v2rayN for Windows: Installation, Setup, Desktop vs. WPF, and Common Issues

Choose a v2rayN edition, extract and launch it, import a subscription, then configure the system proxy and routing. A practical Windows setup guide with common pitfalls.

At a Glance

Windows setup order: choose the desktop or WPF edition based on your system architecture, then extract the files, update your subscription, and select an active server. Finally, verify the local proxy, system proxy, and routing. This guide covers first-time installs and configuration migrations. Port numbers are shown as examples, not universal defaults. TUN is not a substitute for basic connectivity checks.

Choosing an Edition: Desktop vs. WPF

Interface options: The v2rayN desktop edition uses a cross-platform interface, while the WPF edition targets Windows and retains a classic desktop experience. The difference is primarily in the interface and runtime environment—not a guarantee of faster connections. Performance depends on the server configuration, selected core, network, and server status.

Desktop Edition

Recommended

First-time setup: Start with the desktop edition that matches your Windows architecture, then configure subscriptions, the system proxy, and routing using the options in its current interface. It’s recommended as a straightforward way to learn the desktop workflow, not for any protocol or speed advantage.

Best for: First-time setup and users who prefer a cross-platform desktop interface.

WPF Edition

Keep your familiar workflow: Choose this edition if you already know the classic Windows interface and want to keep using it. Before installing, check whether the package includes the required runtime. Don’t assume you need—or don’t need—an extra dependency based on the WPF name alone.

Best for: Users familiar with the classic interface who want to maintain their setup using established Windows workflows.

Check your architecture: In Windows, open Settings → System → About and check “System type.” Choose x64 for standard 64-bit Intel or AMD devices; for ARM devices, prefer an ARM64 package listed on the download page. “64-bit” doesn’t necessarily mean x64, and a working interface doesn’t guarantee that the core executable has the right architecture.

Download and Launch: Use a Writable Program Folder

Prepare the files: Choose the Windows package on the download page. Fully extract archives; for installer packages, follow the setup wizard. Don’t launch the main program directly from an archive preview window, as the core, data files, and relative paths may not load correctly.

  1. Check Your Architecture

    System information: Open Settings → System → About, note your system type, then choose the matching desktop or WPF package.

  2. Extract All Files

    Folder permissions: Extract the archive to a dedicated folder you can write to, such as D:\Tools\v2rayN. Don’t copy just the main program or mix in core files from an older version.

  3. First Launch

    Launch the program: Run v2rayN.exe from the extracted folder. If you see a missing runtime or file-loading error, fix the launch issue before setting up subscriptions.

  4. Keep the Logs

    Troubleshooting: Confirm that the main window appears and check the logs. For the first connectivity test, leave TUN off and don’t run another copy of v2rayN at the same time; this helps avoid port conflicts and proxy settings overwriting each other.

Permissions: Running as an administrator is generally not required for ordinary system proxy use. TUN may need permissions for a virtual network adapter or related services; follow the prompts for your version. Don’t permanently disable system protection to get past a single error. On a managed device, check your organization’s policies first.

Import a Subscription: Tell Update Links from Server Links

Add a subscription: In the main window, open Subscription Group → Subscription Group Settings. Add a group, enter a recognizable note, paste the full link into the subscription address field, and save. Subscription URLs often contain access tokens; don’t include them in screenshots, public tickets, or group chats.

Update in the right order: From the Subscription Group menu, try updating the subscription without a proxy first. If the subscription source is only reachable through a proxy, you’ll need a verified working server before choosing the update-through-proxy option. Enabling proxy updates won’t establish a connection when you have a subscription URL but no working server.

Keep configurations organized: Manage manually added servers separately from subscription servers. Updating a subscription may rebuild entries in that group, and changes to subscription-generated server settings may be overwritten next time. For a temporary test, copy the server to a separate group and record the original values first.

Cores and Servers: Check the Fields Before Connecting

Match the core to your setup: v2rayN is a management interface; the core handles the actual protocol. Check the core-related settings under Settings → Parameter Settings, then confirm the core in the startup log. VLESS and REALITY require an Xray core that supports those features. Don’t confuse the client, protocol, and core names.

VLESS + REALITY: What to Check

Core
Xray with support for the required configuration
Server port
Use the value provided by the server
serverName
Use the name provided by the server
Public key and shortId
Match the server requirements
flow
Use xtls-rprx-vision only if required by the server

Keep fields consistent: Don’t change subscription-provided transport, security, or fingerprint settings without a reason. Servers using the same protocol can still require different parameters.

VMess + WebSocket + TLS: What to Check

User ID
Must match the server configuration
Transport
WebSocket
Path
Use the server path; it is case-sensitive
Host
Use the value required by the reverse proxy or server
TLS name
Match the certificate and server requirements

Names can differ: The connection address, WebSocket Host, and TLS serverName can all be different. Set each one to match the server configuration rather than copying the same value into every field.

Sync your clock: In Windows, open Settings → Time & language → Date & time, check that the clock is accurate, and sync it. A clock that’s off can affect certificate validity checks and some protocol authentication. For TLS errors, check the time, server name, and certificate chain before enabling certificate verification bypass.

System Proxy: Verify the Local Endpoint and Port

Local endpoint: Go to Settings → Parameter Settings and check the local listening port and options such as allowing LAN connections under Basic Settings. The example below uses 127.0.0.1:10808 as a configured local mixed inbound. Use it for HTTP or SOCKS tests only if you’ve confirmed that the inbound supports both. The actual settings and startup log take precedence.

127.0.0.1
Loopback address for this device, not a remote server address
10808
Example local mixed inbound port used in this guide
443
Example remote TLS port; not a substitute for the local port

Enable the proxy: After confirming the core has started successfully, choose System Proxy → Set system proxy from the main window or tray menu. This changes Windows proxy settings and mainly affects apps that follow them. Command-line tools, games, and standalone networking components may need separate configuration; not all traffic is automatically routed through the proxy.

# PowerShell: Check whether the example local port is listening
Test-NetConnection -ComputerName 127.0.0.1 -Port 10808

# Test with curl.exe if available and the port supports HTTP proxy connections
curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 --head https://v2raymark.com/

How to read the results: TcpTestSucceeded set to True only means a TCP connection to that port succeeded. It doesn’t prove the server works—the port could even be in use by another process. An HTTP status from the request means it got a response, but check routing and logs to confirm whether it went through a remote server. A direct connection may also succeed under your rules.

Routing and TUN: Expand Only After Basic Connectivity Works

Choose a routing setup: Select a rule set for your needs from Routing in the main window, then check the details under Settings → Routing Settings. Rules are generally matched in order, so an earlier match may prevent later rules from taking effect. “Bypass LAN,” “direct,” and “proxy” describe where traffic goes—not server quality.

Configuration layerWhat it controlsFirst checks
System proxyWhether apps that follow system settings send requests to the local proxyWhether the browser and Windows proxy settings match
Routing rulesWhether traffic entering the core goes direct, through a proxy, or gets blockedRule order, destination domain, and final outbound
DNSHow domains are resolved and which domain information rules can accessWhether the DNS resolution path works with the expected outbound
TUNCaptures configured network traffic through a virtual network adapterPermissions, adapter, routes, and DNS capture status

When to use TUN: Enable it only when you need to capture traffic from apps that don’t follow the system proxy. First leave TUN off and verify that an active server works with an explicit proxy. Then enable TUN and test the target app. This helps separate server issues from virtual adapter, DNS, and system routing problems.

Check split routing: A regular webpage loading doesn’t mean every domain uses the same outbound. If some sites work and others don’t, check which rule matches the destination domain, then review DNS and remote connection logs. Don’t change DNS, routing, the core, and the server all at once; it’ll be difficult to tell which change made a difference.

Common Issues: Diagnose by Symptom and Keep a Recovery Path

Troubleshoot in order: Confirm the app and core are running, then check the local port, subscription contents, active server, system proxy, and routing. “Connection refused,” “timed out,” and “TLS handshake failed” occur at different stages; reinstalling the client won’t fix every issue.

The main window doesn’t appear after launching. Should I try again?
Check running processes: Look in the system tray and Task Manager; the app may already be running or minimized. If it really failed to launch, check that you extracted all files, the package matches your architecture, any runtime warning has been addressed, and security software hasn’t quarantined required files. Launching repeatedly can create multiple instances or port conflicts.
The subscription updated successfully, but no webpages load. What should I check?
Verify each layer: A successful subscription update only means the subscription was fetched and parsed. Confirm that an active server is selected, the corresponding core started successfully, and the local port is listening. Then test with an explicit proxy. If the log shows a remote connection timeout, check the server address and port, and whether your current network can reach them.
The browser can’t access the internet after I close v2rayN. What should I do?
Restore proxy settings: In the tray menu, choose System Proxy → Clear system proxy before exiting. If the program closed unexpectedly, open Windows Settings → Network & internet → Proxy and check for a manual proxy still pointing to the local port. Undo only settings left by this configuration; ask your administrator about proxy policies managed by your organization.
Can I overwrite the program folder while v2rayN is running?
Upgrade and migrate: Clear the system proxy and fully exit the program first. Back up your configuration and subscription details, then upgrade as directed by the new package. When switching interfaces or moving across major versions, use the program’s backup, restore, or import features where available. Don’t mix old and new databases or core folders. Keep a recoverable backup, then verify the local port and active server after migration.

You’re done when the client launches, the subscription parses, an active server is selected, the local inbound is reachable, and requests follow the expected outbound. Record the interface type, system architecture, core, and any changed fields for later reference. When asking for help, redact subscription URLs, user IDs, and other sensitive settings.

Client Downloads