v2rayN for desktop · v2rayNG and v2flyNG for Android
Choose your operating system first, then your processor architecture. Downloads are grouped by client, with version details on each card. For importing subscriptions and configuring routes after installation, see the setup guide.
For a first install, start with the Desktop edition. It uses Avalonia, a cross-platform interface suited to users who want a consistent experience across desktop operating systems. The classic WPF edition is Windows-only and suits users who prefer its familiar window layout and workflow. Both are v2rayN; the interface edition is separate from the server protocol. Don’t assume a share link will import based on the interface name alone.
These are x64 installers for compatible 64-bit systems. In Windows Settings, go to “System → About” and check your system type and processor information before choosing a download. After downloading the ZIP, extract all files to a dedicated folder before running the installer. Opening the installer directly from the ZIP preview may leave required files unextracted and make startup failures harder to diagnose.
After installation, launch the client and import a profile before enabling the system proxy. The system proxy affects apps that follow the system proxy settings; it doesn’t route all network traffic. When troubleshooting your first connection, leave TUN off and test the standard proxy path first. Enable TUN only if needed, following the setup guide and permission prompts. This helps keep interface choices, driver permissions, and server configuration issues separate.
System requirements and installation checks
Check
Installer requirements on this page
How to check
Processor architecture
x64; both downloads on this page are x64 packages
System type in System Information
Operating system and runtime
Windows 10 or 11 that is still supported is recommended; check the selected release notes for actual minimum requirements
Installer prompts and client release notes
Files and permissions
Extract all files; make sure the install location is accessible; handle elevated permission requests separately when enabling TUN
Launch the main interface as a standard user first
If the installer reports a missing runtime, note the exact component name and architecture shown in the prompt. Don’t assume every startup issue is caused by the server, and don’t try to fix it by copying files from other software folders. Before switching between the Desktop and WPF editions, back up your settings and quit the current app. Check that the new interface can read your settings before deciding whether to keep the old edition.
Open the Apple menu and choose “About This Mac” to check your chip. Choose the Apple Silicon version for an Apple M-series chip, or the Intel version for an Intel processor. Both packages serve the same purpose; the main difference is processor architecture. Don’t choose based on the computer’s appearance, purchase year, or screen size—the chip name is more reliable.
When the download finishes, open the DMG and drag v2rayN to Applications, then launch it from there. The disk image is an installer, not a place to run the app long-term. Once the app is copied, you can eject the disk image. Before updating, quit the client so macOS doesn’t report that files are in use or leave an old process managing the proxy.
If macOS blocks the first launch, check whether the alert concerns an incompatible architecture, an unsupported system version, or a security confirmation. For a security confirmation, review the relevant information under Privacy & Security in System Settings, then allow this specific app if appropriate. Don’t disable system-wide security protections or bulk-approve commands whose source and purpose you don’t understand.
System requirements and permission scope
Check
What to check
Installation notes
Chip
Apple Silicon requires arm64; Intel requires x64
Check the chip or processor name in “About This Mac”
System environment
macOS with a desktop interface; minimum version varies by release
Check the release notes if macOS reports a version requirement
Proxy permissions
System proxy and TUN have different permission scopes
Import a profile first, then enable the mode you need
A successful installation doesn’t mean the system proxy is enabled. After launching the app for the first time, select an imported server and check that the client’s proxy switch matches your macOS network settings. When testing an app, confirm that it follows the system proxy. If it has a manually configured proxy, check its address and port too. A working browser alone doesn’t prove that every app is routed through the client.
Choose this if you’re unsure which app architecture your device uses
v2rayNG is a graphical Android client, and this page recommends the Xray-core version for Android. Most phones released after 2015 can start with arm64, but some devices have 64-bit processors and still use a different app environment. If you’re unsure, choose the universal version and follow the compatibility message from Android’s installer. Universal and arm64 are architecture options, not feature tiers.
When you open the downloaded APK, Android may ask you to allow your browser or file manager to install apps. Grant permission only to the source you’re using, and turn it off again in Settings after installation if you prefer. When you start the app and connect, Android will ask for VPN permission so the client can route traffic. Before approving, make sure the request comes from the client you just installed. Special device administrator access is usually not needed.
After adding a subscription, update it to fetch the server list; adding the URL alone may not create profiles immediately. If the service stops when the screen locks or you switch apps, check battery optimization, background activity, and your device maker’s auto-start restrictions. Adjust settings only for the client you use; there’s no need to keep every app running in the background. Consider the resource cost of a persistent connection based on your needs.
v2flyNG is a good fit if you need V2Fly core behavior or already use compatible configurations. Before choosing an alternative client, check that it supports your protocol and transport settings. Switching clients isn’t a universal fix for connection problems. V2Fly and Xray are related technology ecosystems with different feature development; support for specific fields and protocols depends on the core bundled with the client.
When moving from v2rayNG to v2flyNG, keep your subscription details and manual settings, then import them into the new client. Don’t assume the apps share private data automatically. Before testing, stop the VPN service in the old client and let only one client manage the connection at a time. This makes it easier to identify the active configuration and avoids confusion from repeated changes to Android’s VPN authorization.
System requirements and installation checks
Check
What to check
Things to check
App architecture
arm64 or universal
Choose arm64 for most newer devices; use universal if unsure
Android compatibility
Your Android version must meet the APK’s requirements
Check the release notes and installer prompt for the minimum version
Required permissions
Install permission for the source app and VPN authorization
Check background restrictions separately after connecting
If Android reports “App not installed,” check available storage, architecture compatibility, and whether a version with a different signature is already installed. Back up existing settings before taking action; don’t uninstall first and look for your configuration later. Subscription URLs often contain personal access parameters. Hide them in screenshots, support requests, and shared clipboard contents.
When choosing a Linux installer, check both your distribution’s package format and your processor architecture. Debian and Ubuntu-based systems generally use deb packages; Fedora and some other distributions use rpm. Choose x64 for most 64-bit Intel or AMD computers, or arm64 for arm64 systems. A matching package format doesn’t guarantee compatibility with every distribution release; let your package manager check runtime libraries and dependencies.
You can open the downloaded package in your system’s graphical software installer. Review the dependencies and install location, then confirm the installation. If the package manager reports unmet dependencies, check your distribution version and software sources instead of forcing the install. After installation, launch v2rayN from the applications menu. It’s a graphical desktop client intended to run in a desktop session, not a background service.
Linux desktop environments don’t all handle the system proxy in the same way. After enabling the client’s system proxy, check whether the target app follows the desktop proxy settings. Browsers, apps with their own proxy settings, and command-line tools may use different configuration sources. Test with one app known to follow the proxy first, then check other programs. This helps pinpoint whether the issue is with the subscription, outbound settings, or the app itself.
System requirements and package compatibility
Check
Choosing an installer
How to check
Package format
deb or rpm
Your distribution’s software center and package manager
Processor architecture
x64 or arm64
Check system information: amd64 / x86_64 maps to x64; aarch64 maps to arm64
Runtime environment
A desktop session and the runtime libraries required by the package
Check dependencies in the installer; requirements vary by distribution
TUN permissions
Grant permissions separately based on the client and system requirements
Test the standard proxy first, then configure TUN if needed
If you want the client to start automatically, distinguish between launching after desktop sign-in and running at system startup. For normal desktop use, configure the former first and make sure the configuration file is readable at launch. Don’t run your entire graphical session with elevated privileges just to enable TUN. For full installation and autostart instructions, see the Linux installation and configuration guide.
How to choose a download
Start by identifying your operating system, then check your processor architecture, and finally choose an interface edition or package format. Each answers a different question: the OS determines which client to download, the architecture determines whether it can run, and the interface edition affects how you use it. x64, amd64, and arm64 in a filename don’t indicate server location or determine which protocols are supported. Following this order usually saves you from trying every installer.
All clients on this page are free to use, but the client and server service are separate. Installers include the software needed to run the client, not a personal subscription or ready-to-use server configuration. Get an authorized share link or subscription URL, and check its validity period and supported protocols before connecting. The provider determines availability, cost, and maintenance; you can’t infer these from the client version number.
The download links use a version manifest from the same site to update the version details and file URLs on each card. Static links remain available as a fallback if browser scripts aren’t enabled. Each client has its own release cycle, so a higher version number doesn’t mean it has more features and can’t be compared directly across clients. Choose an upgrade based on OS compatibility, the fixes you need, and your existing configuration.
Keep installers and personal settings separate
An installer is a program distribution file; subscription groups, server entries, and custom routes are personal settings. Before updating, use the client’s export or backup feature rather than keeping only the ZIP, DMG, or APK in your downloads folder. When switching clients, migrate using a share link or by adding the subscription again, then check custom fields one by one. Don’t hand another client the entire settings folder and assume it can read it.
Backups may contain server passwords or subscription access details, so store them somewhere only you can access. For a support request, include the error type, operating system, app architecture, and steps to reproduce the issue. Hide addresses, account details, and access parameters in configuration screenshots first. This provides useful troubleshooting details while reducing the risk of credentials leaking through screenshots or logs.
Setup steps after installation
First, import a share link or subscription
A share link adds one server profile; a subscription URL retrieves and updates a group of profiles. To import a share link, copy a valid link and use the client’s clipboard import option. To use a subscription, add a subscription group, enter the URL, and run an update. Don’t use a webpage URL in place of a subscription URL, or paste a subscription URL into a field that accepts only individual share links. After updating, check that profiles appear and select the one you want to use.
Next, choose a proxy mode and routing rules
On desktop, start by testing the system proxy. On Android, start the service through the system VPN permission prompt. Routing presets decide which outbound path requests use; the system proxy and TUN determine which app traffic enters the client. They aren’t interchangeable. If you’re not familiar with the rules yet, keep a clearly documented preset and avoid changing DNS, routing, transport settings, and core options all at once. Otherwise, it’s hard to tell which change affected the result.
Finally, test the apps you need
Once the client service is running, test it with the app you actually need to use. The connection indicator reports local service status; it doesn’t guarantee that remote requests will succeed. If one app works and another doesn’t, check the app’s proxy settings and routing matches before downloading anything again. If all apps fail, check in order whether the subscription has expired, server details are complete, and the system clock is correct, then review the specific error log.
Before quitting the client, stop the connection or restore the system proxy—especially when switching between desktop editions or testing multiple Android clients. A leftover proxy address can make your browser send requests to a local service that has already quit, leaving even regular websites inaccessible. If that happens, check the system proxy instead of reinstalling. For screenshots and step-by-step instructions, see the v2rayN and v2rayNG user guide. For permissions, platform differences, and routing details, see the cross-platform installation and configuration reference.
Download and upgrade FAQs
Do I need to install both the v2rayN Desktop and classic WPF editions?
No. New users can start with v2rayN Desktop; choose the WPF edition if you prefer the classic Windows interface. Don’t let both editions manage the system proxy at the same time. Before switching, quit the current client and back up your subscription groups and custom routing settings.
Should I choose arm64 or the universal Android version?
Most phones released after 2015 are best served by the arm64 version, but a 64-bit processor doesn’t guarantee a 64-bit app environment. If you’re unsure which architecture your device uses, choose the universal version. If the installer reports incompatibility, check your Android version and app architecture instead of repeatedly installing the same file.
Why does macOS say the app can’t be opened after download?
First, make sure you chose the right installer for Apple Silicon or Intel, then drag the app from the disk image to Applications. If macOS blocks it, read the alert and confirm that you want to open this specific app under Privacy & Security in System Settings. Don’t disable system-wide security protections.
Can I connect as soon as the client is installed?
The client doesn’t provide servers or subscription services. You’ll need an authorized share link, subscription URL, or server configuration. Import it, select a working profile, then enable the system proxy or Android VPN service. Subscription URLs may contain access credentials, so don’t share them publicly.
What settings should I keep before upgrading?
Keep your subscription groups, manually added servers, custom routing rules, and any client settings you want to reuse. Use the client’s export or backup feature and save the backup somewhere you can access. Quit the client before upgrading. Afterward, confirm your settings are still there and check the proxy mode and permissions again.