This guide is for users trying v2rayN for the first time. It starts with system architecture, runtime requirements, and extraction paths, then covers core selection, subscription import, system proxy, language, and startup settings. The final checklist confirms that the client is actually ready to use.
Check your system and runtime before downloading
Before you begin, check your device's operating system and processor architecture. In Windows, open Settings → System → About and check whether System type shows x64 or ARM64. On macOS, open About This Mac from the Apple menu and check whether the chip is Apple silicon or Intel. If the package architecture does not match the device, the program may fail to start or exit when it tries to launch the core.
The v2rayN 7.x desktop interface requires the .NET 8 runtime. If the download page offers packages with a bundled runtime and packages that require a separate runtime installation, beginners should choose the desktop package with clear instructions for their architecture. With a lightweight package, install the matching .NET 8 Desktop Runtime first. Only the desktop runtime is needed here; do not confuse the standard Runtime, ASP.NET Core Runtime, and Desktop Runtime.
- Windows x64: Common on desktops and laptops with Intel or AMD processors.
- Windows ARM64: For devices with ARM processors running the corresponding Windows version.
- macOS Apple silicon: Choose the build for Apple silicon to avoid relying on translation.
- macOS Intel: Choose the Intel build; do not use the Apple silicon version directly.
Extract the files, launch v2rayN, and verify the core
After downloading, fully extract the archive to a fixed directory. On Windows, use a simple path such as D:\Apps\v2rayN; on macOS, place it in an application directory that the current account can read and write. Do not run it long-term from an archive preview window, because the main program needs configuration, resource, and core files from the same directory.
Keep the path short and avoid locations that are frequently synced, cleaned up, or write-restricted. v2rayN stores subscription groups, server lists, logs, and interface settings. Insufficient directory permissions may cause settings not to persist, nodes to disappear after an update, or the language to revert to the default on the next launch.
Full extraction
Extract the archive to a fixed directory and confirm that the main program, configuration directory, and core-related files are all present. Do not copy only the executable file.
First launch
Launch v2rayN. If Windows shows a network access prompt, grant permission only for the scope you actually need. If macOS asks you to confirm the opening, verify the app name and download source before continuing.
Set the core
Go to Settings → Parameters → Core type, choose Xray or v2fly according to the node protocol, save, and return to the main interface.
Check the logs
Open the log panel and start the core once. Make sure messages such as “file not found,” “permission denied,” or port conflicts do not keep appearing.
Verify after restarting
Exit the client and open it again. Confirm that the language, Core type, and local port settings are still retained.
Having no nodes on the first launch does not mean the installation failed. The main program manages servers, subscriptions, routing, and the system proxy; the selected core establishes the connection. At this stage, the most useful checks are that settings can be saved, the core starts, and the local listening port is not conflicting with another service.
How to choose the Core type
v2rayN is a graphical client; the core parses node parameters and handles the actual traffic. Choose the Core type based on the node protocol and transport rather than on the name that looks most familiar. For common VLESS, VMess, and Trojan configurations, the subscription usually supplies the required parameters. Your main task is to match the protocol with a core that supports it.
For everyday use of VLESS, Reality, XTLS Vision, or newer Xray features, Xray is usually the right choice. If your setup mainly uses traditional VMess, WebSocket, and TLS configurations and the server is explicitly deployed for v2fly, you can choose the v2fly core. Restart the core after switching; an existing process will not automatically adopt the changed Core type.
Xray core
RecommendedCovers common VLESS, VMess, and Trojan configurations and supports Xray capabilities such as Reality and XTLS Vision.
Best for: new subscriptions, VLESS nodes, and everyday connections
v2fly core
Suitable for traditional VMess, WebSocket, and TLS configurations deployed according to v2fly specifications; exact capabilities depend on the core version.
Best for: existing VMess nodes and configurations that specify v2fly on the server side
If a subscription mixes several protocols, do not repeatedly switch the global Core type because of one failing node. Check that node’s protocol, transport, security type, and subscription notes first, then determine whether the core is incompatible or the node parameters have expired. For subscription-imported configurations, avoid changing the UUID, public key, short ID, SNI, or transport path without a clear reason.
Import a subscription and check key parameters
After installation, you will usually need to import a subscription. Copy the complete subscription URL from your provider, create a group in v2rayN’s subscription group manager, paste and save the URL, then update the subscription. Menu labels may change across 7.x releases, but the workflow remains: create a subscription group, save the URL, and update the server list.
After a successful update, the main list should show server names, addresses, ports, protocols, and transports. Select one node as the active server, then test latency or start the connection. A latency result only shows whether a test request returned within the time limit; it does not by itself prove that web access, DNS resolution, and routing are all working.
VLESS + Reality
- Protocol
- VLESS
- Transport
- TCP
- Flow
- xtls-rprx-vision
- Security
- Reality
- Fingerprint
- chrome
The public key, short ID, SNI, and other fields should come from the subscription and match the server configuration exactly.
VMess + WS + TLS
- Protocol
- VMess
- Transport
- WebSocket
- Path
- Provided by the subscription
- Security
- TLS
- Port
- Commonly 443
Host, path, and TLS server name must not be filled in from guesswork; they should match the server configuration.
When adding a single node manually, the most common mistake is treating the server address, TLS server name, and WebSocket Host as the same field. They may match in some configurations, but can be completely different in others. VLESS Reality also involves the public key, short ID, fingerprint, and target server name; a single mismatched character can cause the handshake to fail.
- Copy the subscription URL in full. Do not include spaces or line breaks automatically added by a chat app.
- After updating, check whether the server count changed before deciding that the subscription worked.
- A node name is only a label; the protocol, address, port, and security parameters determine how the connection works.
- Updating a subscription may overwrite manual changes in that group, so record important temporary adjustments first.
Configure the system proxy, language, and startup behavior
Once a node is running, decide how application traffic should enter v2rayN. When the system proxy is enabled, browsers and desktop apps that follow the system proxy settings send requests to the local listening port. Programs that do not read system proxy settings will not enter the client automatically; configure an HTTP or SOCKS proxy separately, or use another interception method provided by the client.
For the first verification, start with the system proxy because its scope is clear and it is easy to disable. After confirming that web access and logs look normal, configure routing rules. Do not change the system proxy, DNS, routing rules, and in-app proxy settings all at once, or it will be difficult to identify the cause of a failure.
| Setting | Suggested value | Why it matters and how to check |
|---|---|---|
| Interface language | Choose a familiar language | Adjust it under Settings → Parameters, save, and restart the client as prompted. |
| Start on system boot | Enable after the connection is stable | Complete one manual start-and-exit cycle first, so an incorrect configuration does not run automatically after every login. |
| Local port | Keep the current working value | A common mixed-proxy port is 10808. If it is already in use, switch to an unused port and update the application settings accordingly. |
| System proxy | Enable manually during verification | Restore the system proxy before exiting the client to prevent apps from continuing to send requests to a local port that is no longer available. |
| Log level | Keep the default for everyday use | Increase log detail only while troubleshooting, then restore the default to prevent rapid log growth. |
The system proxy entry points and permission prompts differ between Windows and macOS, but the method is the same: record the proxy state before enabling it, let v2rayN configure the proxy, and restore it before closing the client. If web access stops working after the client exits unexpectedly, first check the system network settings for a proxy still pointing to 127.0.0.1 and the old port.
What order should you use to verify the first connection?
Verify the connection from inside the client outward, layer by layer. Confirm the active server first, then the core process and local listening port, followed by the system proxy, DNS, and target website. Blaming the node immediately when a webpage will not load can overlook local issues such as a port conflict, a disabled system proxy, or a node that was never set as active.
- Check the active node: The main interface should clearly show the selected server, rather than leaving you only in the subscription list.
- Check the core log: After startup, it should show local listening information instead of repeated restarts or an immediate exit.
- Check the port: The port in Parameters should match the log, and other apps configured manually should use that same port.
- Check the system proxy: Confirm that the proxy is enabled and that the system network settings are not pointing to another port left over from an old directory.
- Check access logs: Opening a test page should create a new connection record. No record at all usually means the traffic never entered the client.
- Check the routing result: If there is a connection record but the destination is unreachable, check the routing rules, DNS, and node status next.
For a basic test, open two sites of different types and watch for separate connection records in the logs. Then confirm that access returns to normal after disabling the system proxy. Do not rely on latency numbers alone. A node showing 80 ms or 200 ms is only a reference for that test; actual download speed also depends on line bandwidth, the destination server, peak-hour congestion, and the transport.
If you use routing rules, keep the client’s defaults during the initial test, then add custom domain or IP rules one at a time. Rules generally route traffic to the proxy, direct connection, or a blocked outbound based on matching conditions. A broad rule earlier in the list may match first, preventing a later specific rule from running. After making changes, create a new connection and check the destination and outbound result in the log.
Common first-install problems and fixes
Nothing appears after double-clicking. What should I check first?
First confirm that the archive was fully extracted and that the system architecture matches the downloaded package. Check that the .NET 8 Desktop Runtime is installed as well. Then look for a permission or security prompt, and try moving the program to a short path that the current account can read and write.
The subscription update succeeded, so why is the server list still empty?
First confirm that you updated the subscription group you just created, then check the HTTP status and parsing messages in the operation log. An incomplete URL, an expired address, or a response that is not a supported subscription format can all leave the list empty. Reinstalling the client repeatedly is not a substitute for checking the subscription.
The node test shows latency, but webpages will not open. What should I do?
Check whether the node is set as the active server and whether the system proxy is enabled. Watch for a new log entry while opening a webpage. If there is no access record, the traffic never entered v2rayN. If there is a record but the connection times out, check the node parameters, Core type, DNS, and routing outbound.
What should I do if no webpages load after I exit v2rayN?
Open the system network settings and disable any HTTP, HTTPS, or SOCKS proxy still pointing to 127.0.0.1. Once the client exits, the local port stops listening, so a leftover system proxy keeps sending requests to an unavailable port.
Why do the language or settings revert after restarting?
Common causes include insufficient write permission for the program directory, running from a temporary extraction path, or launching different v2rayN directories in turn. Keep one fixed directory, exit normally once after saving the settings, and restart from that same directory to verify.
Change one thing at a time when troubleshooting. If you suspect a port conflict, change the local port and restart the core first; do not also switch the node, Core type, and routing rules. Keep the relevant log after each change so you can tell whether the result improved, stayed the same, or introduced a new error.
If you need to start over, first export or record the working subscription and custom rules, then disable the system proxy and exit the client. Re-extracting the files does not solve every problem: an expired subscription, changed server parameters, a significantly incorrect system clock, or network restrictions can all recur in a new directory.