Setting up v2rayN on Windows for the first time? Choose the right package for your system architecture, check the runtime requirements, import your subscription, start the core, and configure the system proxy. This guide explains how to choose between the Desktop and WPF versions and use local ports and logs to troubleshoot cases where the app opens but websites won’t load. For users with a subscription who haven’t completed setup yet.
Desktop or WPF: Which Version Should You Choose?
Start with the interface and runtime requirements—not the assumption that one version offers faster connections. “Desktop” refers to the cross-platform UI edition, while WPF uses Windows-specific UI technology. Both rely on a proxy core; connection quality also depends on your server, protocol, routing, and core configuration.
How to Choose: Interface and Runtime Requirements
Cross-Platform Desktop
- A good fit if you prefer a cross-platform interface.
- Before installing, check the release notes for Windows and runtime requirements.
- The menus may differ from the classic interface, so older screenshots may not match.
Classic WPF
- A good fit if you’re used to the classic Windows interface.
- Packages that depend on a runtime require the matching .NET Desktop Runtime.
- Back up existing settings first, then check whether the old and new versions use compatible configuration files.
Choose the version that meets your system’s requirements, verify that it connects, and consider switching interfaces later.
Check your system information to confirm the architecture. In Windows, go to Settings → System → About and look for “System type.” Choose the x64 package for an x64 device; for ARM64, use a native package if the publisher offers one. Check the system architecture, app architecture, and runtime architecture separately.
Where to Extract v2rayN and How to Install Required Runtimes
Extract all the files before launching the app. Use a dedicated folder your account can write to, such as D:\Tools\v2rayN; your user folder works too if you don’t have a D: drive. Don’t run the app from inside the archive or extract only the executable—the configuration folder, core files, or other resources may be missing.
-
Choose a Package
Open the Windows section on our download page and choose a package by architecture (x64 or ARM64) and edition (Desktop or WPF). Check the package’s runtime requirements as well.
-
Extract All Files
In File Explorer, select “Extract All” for the archive. Open the destination folder, make sure the main program and its supporting folders are intact, then run
v2rayN.exe. -
Install Required Runtimes
If a startup message says .NET is missing, note the required version and architecture. If needed, install the matching Desktop Runtime for WPF—not just the standard Runtime. For self-contained packages, follow the release notes.
-
Check the Core Files
Check the startup results in the main window’s log. If you see a “file not found” error, first confirm that the archive was fully extracted. Then open Windows Security → Virus & threat protection → Protection history to check for blocked files.
There is no single runtime version that works for every release. An update may target a different runtime, and an older version of .NET already installed on your PC may not meet the new package’s requirements. Follow the package notes and startup error instead of installing unrelated components at random.
How to Import a Subscription and Connect to a Server
Create a subscription group, update it, then select a server. v2rayN is a client and doesn’t create working servers when installed. Your service provider supplies the subscription URL, which often contains a private token. Treat it like an account credential—never share it in public screenshots or paste it into online conversion tools.
-
Create a Subscription Group
In the Chinese interface, go to “Subscription Group” → “Subscription Group Settings,” select “Add,” enter a name and subscription URL, then save. If your version has a “+” button, add the group from the same management page.
-
Update the Subscription
If you don’t have a working proxy connection yet, select “Subscription Group” → “Update All Subscriptions (without proxy).” Use the through-proxy option only when you already have a working proxy connection.
-
Select an Active Server
Select a server in the list, right-click, and choose “Set as active server.” Then check the log to confirm that the core starts. Menu labels may vary slightly by version; look for the active server status.
-
Check the Server Settings
Double-click a server to check its protocol, address, port, and transport settings. Keep subscription-provided VLESS, VMess, and other settings as they are; don’t change them just to make the fields look consistent.
A successful update only means the server list was retrieved—it doesn’t mean every server can connect. If the list is empty, check whether you pasted an account-management page URL instead of a subscription URL, then confirm that the subscription hasn’t expired and whether it requires a specific format. If the format isn’t supported, ask your provider for a subscription format the client can read rather than repeatedly changing the system proxy.
How to Enable the System Proxy and Find Your Local Port
Confirm that the local listener is working before enabling the system proxy. The core accepts connections on your device; the system proxy tells apps that follow Windows proxy settings to connect to that local endpoint. They’re separate settings. If you select a server but don’t enable the system proxy, your browser may still connect directly.
Go to Settings → Parameters to find the local listening port. Depending on the version, it may be under “Basic Settings” or “Inbound Settings.” This guide uses 10808 as an example; it isn’t the default for every version. Older configurations may have separate SOCKS and HTTP ports, while newer ones may offer a mixed listener. Use the port that matches the actual inbound type.
Browser uses the system proxy
- Address
- 127.0.0.1
- Example port
- 10808
- Inbound type
- HTTP or mixed listener
- Proxy status
- Configure system proxy automatically
Use this example only if port 10808 actually supports HTTP. Don’t enter a SOCKS-only port as an HTTP proxy.
Test from the Command Line
- Test client
- curl.exe
- Proxy type
- SOCKS5
- Example port
- 10808
- DNS resolution
- Resolved by the proxy
Run the command below only if this port supports SOCKS. This test won’t change the Windows system proxy.
Right-click the v2rayN icon in the taskbar notification area and select System Proxy → Configure system proxy automatically. Then go to Windows Settings → Network & internet → Proxy and check that the proxy address and port match your local HTTP or mixed listener. If your browser has its own proxy rules, check whether they override the system settings.
curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com
This command is a connectivity check, not a speed test. socks5h sends domain name resolution through the proxy. An HTTP response means the request got a response, but check the logs to confirm which outbound connection was used. Terminals don’t usually inherit the Windows system proxy, so a failed terminal test alone doesn’t prove that the browser proxy is broken.
Do You Need to Change Routing or Enable TUN?
For your first connection, keep routing rules simple and easy to verify. Don’t enable multiple traffic-capture methods at once. The system proxy determines which apps send requests to the client; routing rules determine which outbound connection handles traffic after it reaches the client. That’s why traffic may still go direct even when the system proxy is enabled.
- Check which routing rule matches: After sending a test request, check the logs for the destination, outbound tag, and any errors. If the request doesn’t appear in the logs, check the app’s proxy settings first.
- Reload after changing rules: Save the configuration and confirm that the core reloads successfully. Existing long-lived connections may continue using the old route; restart the app you’re testing if needed.
- Enable TUN only if needed: TUN can capture traffic from apps that don’t follow system proxy settings, but it requires the right permissions and virtual network configuration. First make sure a standard proxy connection works.
- Handle local network access separately: Printers, shared folders, and internal domains need appropriate direct-connection and DNS settings. Don’t force all traffic through a remote server indefinitely just to troubleshoot.
Don’t switch proxy cores at random to get rid of an error. The core must support the server’s protocol and any extensions, especially specific VLESS transport and security settings. If you see an “unsupported field” error, check the core type and version requirements instead of deleting fields from the subscription.
Troubleshooting: App Won’t Open, Timeouts, and Port Conflicts
Troubleshoot in this order: can the app run, is the local port listening, and can it connect to the remote server? This helps avoid unnecessary changes. A visible main window only confirms that the interface started. If the core process has exited, the system proxy may still point to your device, but there’s no active proxy endpoint.
Nothing Happens When I Double-Click the App. Should I Reinstall?
First, check Task Manager for another running instance, then check the extracted folder and any runtime messages. If the window flashes and closes, open Event Viewer → Windows Logs → Application, find the relevant error, and note the faulting module before taking action.
How Do I Fix “Address Already in Use”?
First close any duplicate client instances, then identify the process using the port. If you need to change the port, go to Settings → Parameters and update the local listening port. Save and restart the core, then update the system proxy so it doesn’t keep pointing to the old port.
The Subscription Update Timed Out. Should I Select “Through Proxy”?
Only if you already have a working server. If you don’t, check the subscription URL, account expiration, and local network first. If your regular connection can’t reach the subscription endpoint, ask your provider how to retrieve it.
The Server Passes a Latency Test, but Websites Won’t Load. Why?
First, check what the test actually measures: a successful TCP connection doesn’t mean the protocol handshake succeeded. Check the core logs for authentication, TLS, and DNS errors. Then sync the clock in Windows Settings → Time & language → Date & time and recheck the subscription settings.
Use the command below to check ports. If a listening entry appears, the last column shows the process PID; find the matching process in Task Manager under Details. Don’t terminate an unfamiliar system process just because of its port number, and don’t let separate HTTP and SOCKS listeners compete for the same address and port.
netstat -ano | findstr ":10808"
For remote timeouts, test a different server independently and check that the address, port, TLS server name, and transport path match the provider’s settings. Before sharing logs, redact the subscription URL, user ID, and requested destinations. Don’t post your full configuration publicly.
How to Exit and Update v2rayN
Clear the system proxy before exiting and back up your settings before updating. This prevents Windows from sending app requests to a local port that’s no longer listening, and gives you a fallback if the new version uses an incompatible configuration.
- From the tray menu, select System Proxy → Clear system proxy, then exit the app. After an unexpected shutdown, check Windows proxy settings manually for a leftover address.
- Back up the client’s configuration folder and any custom routing rules. These backups may contain sensitive information, so store them somewhere secure.
- Exit the old instance before updating to avoid overwriting core files that are in use. When switching editions, test the new version in a separate folder rather than mixing files from both versions.
- After restarting, check the active server, core logs, local port, and system proxy in that order. Then test by loading a website.
Once you’ve checked these four items, consider options like launching at startup, scheduled subscription updates, or TUN. The goal of initial setup is a connection path you can verify—not enabling every feature at once. Keep a known-good configuration so you can pinpoint changes more easily when troubleshooting later.