Choose v2rayN for desktop and v2rayNG for Android. Check your OS and CPU architecture, then install the app, import a subscription, configure the proxy, and test the connection.
The classic, stable Windows WPF interface. Choose this edition if you're already familiar with its layout, menus, and settings.
Both downloads are ZIP files. Extract the entire archive before running the installer. Don't launch it directly from the archive preview.
Before you install
Check
What to look for
OS and architecture
Both Windows downloads on this page are x64. Open Settings > System > About and check your system type and processor information.
Runtime requirements
Follow the installer's stated minimum OS and runtime requirements. If it asks for the .NET Desktop Runtime, install the matching architecture; don't choose based on a similar name alone.
Install location
Choose a folder your account can write to. Extract the full archive first, and don't keep your configuration in a temporary extraction folder.
First launch
Import a configuration and test the local proxy first. TUN may require extra permissions, so there's no need to enable it on your first launch.
Desktop and WPF differ mainly in their interface frameworks; neither eliminates the need for a server configuration. Both editions need valid server details, and you'll need to provide your own subscription URL. If your current client connects successfully, there's no need to switch just for a different interface. Save your settings first, then try one edition at a time to make troubleshooting easier if anything goes missing.
If the app closes as soon as you open it, check that you extracted all the files, then review runtime requirements, folder write permissions, and security software logs. Don't run two copies against the same listening port at once; the second may fail to start its proxy because the port is already in use. For troubleshooting steps, see Common issues.
MACOS / APPLE SILICON · INTEL
v2rayN for macOS
Check the chip in About This Mac rather than guessing from the purchase year.
Choose this build if About This Mac lists an Apple M-series chip. Using the build that matches your Mac's architecture avoids differences introduced by translation.
Choose this build if About This Mac lists an Intel processor. When the download finishes, open the disk image and copy the app to Applications.
After copying the app, launch it from Applications instead of running it from the mounted DMG.
Before you install
Check
What to look for
Processor
Apple M-series chips use arm64; Intel processors use x64. Check About This Mac from the Apple menu.
macOS compatibility
Check the app's current requirements and any warning macOS displays. A matching architecture doesn't guarantee compatibility with older versions of macOS.
Install location
Move the app to Applications, then eject the disk image. Keep a backup of your personal configuration.
Network permissions
Follow macOS prompts for proxy or network permissions. Test the standard proxy first; TUN may require additional authorization.
If macOS asks you to verify the developer on first launch, confirm the download source and app name, then check System Settings > Privacy & Security for an option to open this app anyway. Grant permission only for the app in question; don't disable system-wide security just to launch a client. If macOS says the app is damaged, download it again and check the architecture rather than dismissing the warning.
After launch, check the system proxy status in the menu bar or main window. Whether your browser uses the proxy depends on system proxy settings and the browser's own options. Command-line tools may need proxy environment variables configured separately. Change one setting at a time to isolate issues with installation, permissions, or proxy routing. See macOS installation and permissions for details.
ANDROID / ARM64 · UNIVERSAL
Android client downloads
Choose v2rayNG first; consider v2flyNG if you need compatibility with an existing V2Fly configuration.
Try the universal build if you don't know your device's architecture. It includes components for multiple architectures but still requires a compatible OS version.
For Android setups that need Xray configuration support. After importing, check the transport, TLS, and server settings.
For users who have confirmed they need the V2Fly core and have an arm64 phone. Check configuration compatibility before switching your day-to-day connection.
For devices with an unconfirmed architecture. The universal package covers multiple CPU architectures; it doesn't make configuration fields interchangeable between the two cores.
Before you install
Check
What to look for
Package format
APK. Android may require you to allow your browser or file manager to install unknown apps.
CPU architecture
Choose arm64 for most modern phones. Check your device specifications if unsure, or try the universal build.
System requirements
Follow the installer’s compatibility warnings. The universal build is still subject to OS version, signing, and device policy requirements.
Connection permission
Approve Android's VPN connection request the first time you connect. Another app using the VPN service may need to be disconnected first.
Install permission is granted separately for each source app. For example, if you download an APK in a browser and open it in a file manager, the file manager may be the app that requests permission to install it. Revoke source-app permissions you no longer need after installation. If package parsing fails, first check that the download completed and your OS meets the requirements, then check the architecture. Changing subscriptions won't fix an installation problem.
v2rayNG and v2flyNG are separate apps, not lite and full versions of the same installer. Their core families differ, as does support for specific protocols and transport features. When testing an alternative, disconnect the current client, import the configuration into the other app, and test it separately to avoid contention for Android's VPN service. Once connected, review background battery settings so the OS doesn't suspend the app when the screen is locked.
LINUX / DEB · RPM
v2rayN for Linux
Check your distribution's package format, then choose x64 or arm64.
Usually the right format for Debian, Ubuntu, and their derivatives. Double-click the package to open your system's software installer and resolve dependencies.
amd64 and x86_64 both refer to x64; aarch64 refers to arm64. A file extension alone doesn't tell you whether a package is compatible.
Before you install
Check
What to look for
Desktop environment
Requires a Linux desktop session that can run graphical apps. This is a desktop client, not a package for deploying a background server service.
Package manager
Use your distribution's software installer. Don't install deb and rpm packages on the same system by renaming extensions or forcing conversion.
CPU architecture
Choose x64 if your system reports x86_64, or arm64 if it reports aarch64. Make sure the system architecture is supported by your processor.
Dependencies and permissions
Follow your package manager's prompts to install dependencies. Handle software installation permissions separately from the permissions needed to run TUN.
Even distributions that use RPM can differ in system library versions, desktop components, and package dependencies. If dependencies can't be resolved, save the complete installer error and check your distribution version and architecture before proceeding. Don't force the installation or copy system libraries from another distribution.
After installation, launch v2rayN from the application menu and test your configuration with the local listener and standard proxy first. Linux desktop system proxy settings usually apply only to apps that honor them; terminal tools may not follow them automatically. TUN involves virtual interfaces, routing, and permissions, so configure it separately after the standard proxy works. For an explanation of configuration fields, see the V2Ray configuration reference.
Install, upgrade, and connect for the first time
Before downloading, check three things: your OS, its architecture, and whether you need to keep an existing configuration. Package filenames can help identify the platform and architecture, but a working connection ultimately depends on the client supporting your configuration and server settings. Don't switch installers just because of a protocol name. Identify the core features your configuration needs, then choose a compatible client.
Prepare the client and server configuration separately
Installing the client doesn't mean you're ready to connect. This page provides the app; you'll need to obtain a subscription URL, share link, or configuration file yourself and make sure you're authorized to use it. Subscriptions may contain credentials, so don't share the full URL in public screenshots, forum posts, or troubleshooting logs.
Exit the old client before upgrading
Note your local listening ports, routing mode, DNS settings, and whether the system proxy or TUN is enabled. Export your settings using the client's built-in feature, or back up the data directory it actually uses after exiting the app. Data locations vary by OS and edition, so don't assume every platform stores its configuration in the install folder. Once your backup is saved, close the app and its tray process to avoid files being locked during the upgrade.
On the first launch after upgrading, check that your subscription groups and custom rules are still there, then verify your listening ports. If the list is empty, don't overwrite your backup. First check whether you launched another installation, switched accounts, or are using a different data directory. Keep a copy of the current configuration when restoring a backup so you can roll back if the formats differ.
Verify your first connection in order
Import a configuration. Add a subscription URL or import a share link in the client. Once imported, check the server details to make sure the address, port, transport, and TLS settings are present. If a subscription update fails, check the update log before changing your system proxy.
Select a server. Choose an imported configuration to test. On desktop, enable the system proxy if needed; on Android, approve the VPN request. Keep routing rules simple while testing, and avoid having multiple proxy apps take over the connection at once.
Confirm the proxy works. Run the client's connection test, then check access in a browser. A listening local port only confirms that the app has started; verify that requests actually reach the server. If an error occurs, record the exact log message and identify whether it's a DNS, authentication, timeout, or port-conflict issue.
If the browser works but another app can't connect, first check whether that app uses the system proxy instead of immediately switching servers. Likewise, a successful command-line test doesn't mean your browser uses the same proxy settings. For initial troubleshooting, stick to one server, one app, and one proxy mode. Change settings one at a time; this is usually easier than enabling several traffic-routing options at once.
Which should you choose: the Windows Desktop or classic WPF edition?
For a first install, start with the Desktop edition, which uses a modern cross-platform interface. The classic WPF edition is for Windows users who prefer its familiar interface and workflow. Both require a working configuration. Back up subscriptions, routing rules, and custom settings before switching editions, and avoid running both at once to prevent local port conflicts.
How do I know whether to download x64 or arm64?
On Windows, check System type in Settings > System > About. On macOS, check the chip in About This Mac: choose Apple Silicon for an Apple M-series chip or Intel for an Intel processor. On Linux, x86_64 maps to x64 and aarch64 to arm64. Check your Android device's processor specifications; most phones released since 2015 use arm64. If you can't confirm the architecture, try the universal build, but make sure your device meets the app's system requirements.
Should I download the deb or rpm package for Linux?
Start with your distribution's package format. Debian, Ubuntu, and their derivatives typically use deb; Fedora and openSUSE use rpm. The same package format does not guarantee compatible dependencies, so check the installer or package manager's messages. Match the CPU architecture too—don't install an x64 package on an arm64 system.
Can I switch directly between v2rayNG and v2flyNG?
v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Both may recognize basic subscriptions or share links, but they don't support exactly the same protocol fields, transport options, or newer features. Prefer v2rayNG if your configuration relies on Xray features. Before choosing v2flyNG, confirm that the server settings match formats supported by the client; a successful import alone does not guarantee a working connection.
What should I back up before upgrading?
Note your local listening ports, system proxy mode, routing rules, and DNS settings, then use the client's export or backup feature to save your configuration. Subscription URLs may contain credentials, so store them somewhere you control. Exit the old client before upgrading. On first launch, check that your settings are still there and test the connection again. Don't delete the old data directory outright.
Why can't I connect after installing the app?
The installer provides the client, not a ready-to-use server configuration. Import a subscription or server details you've obtained and are authorized to use, select a server, then enable the system proxy or Android VPN connection as needed. If you still can't connect, check that the server is valid, the local port isn't in use, and the proxy mode is correct. Then review the logs for the specific error.