Choose your operating system first, then select a package architecture.
Use v2rayN on desktop. For Android, v2rayNG is the recommended choice, while v2flyNG is an alternative for existing V2Fly configurations. After installation, continue with subscription import and routing setup.
Existing configurationCheck subscription and protocol compatibility
Choose a package for your platform
The downloads below are grouped by client and package type. Version labels appear in each card’s details; you don’t need to enter a subscription URL before downloading. Check your device’s operating system and architecture to avoid trying incompatible packages.
v2rayN
Recommended7.24.1
Windows packages are available in two interface editions, both for x64. Start with Desktop if this is your first install. If you’re used to the classic interface, choose WPF instead.
A new-generation cross-platform UI for users who want a similar experience across desktop operating systems. This is a ZIP package: extract it fully before running the installer inside.
Keeps the classic stable-version interface and familiar workflows. Back up existing settings before migrating, especially subscription groups, custom routing, and DNS settings. Don’t delete the old directory outright.
v2rayN-Setup-x64-7.24.1.zip
These are two editions of the client, not different node services. Choosing an installer doesn’t create a subscription or replace node configurations you’ve purchased or manage yourself.
Windows system requirements and installation prep
Check
Requirements for packages on this page
Where to check or what to do
Processor architecture
x64; not a native ARM64 package
Settings → System → About → System type
Operating system
64-bit Windows; check the current release requirements for the minimum version
Note your Windows edition and build number for compatibility troubleshooting
Before you install
Fully extracted ZIP, writable folder, and sufficient disk space
Don’t run the installer directly from the ZIP preview window
Runtime dependencies
Dependencies may vary between interface editions
If a runtime is missing, follow the specific error message; don’t install unknown components
Once you’ve confirmed your architecture, choose one edition; you don’t need both. On first launch, import your configuration, select a node, and then enable the system proxy. The system proxy only affects apps that follow system proxy settings, so an app connecting directly doesn’t necessarily mean the client failed to install.
If installation succeeds but the app won’t start, quit any old client processes and check whether two instances are trying to use the same listening port. Security software alerts, missing runtimes, and configuration parsing errors are separate issues. Record the full error instead of repeatedly switching packages just because the window closes unexpectedly. See Troubleshooting for steps.
v2rayN
7.24.1
Open About This Mac from the Apple menu. If it shows an Apple chip, choose Apple Silicon; if it shows an Intel processor, choose Intel. The two DMGs are for different architectures, so don’t choose based only on the device’s purchase year.
For devices with an Intel processor. Even if the app has the same name, use the x64 package rather than trying to open the arm64 installer.
v2rayN-64.dmg
Open the DMG and follow the installer prompts to move the app to the Applications folder. Launch it from there instead of running it from the mounted disk image.
macOS system requirements and installation prep
Check
Requirements for packages on this page
Where to check or what to do
Processor
Apple silicon requires arm64; Intel requires x64
Apple menu → About This Mac
Operating system version
Must meet the minimum macOS version for the current client release
Check your macOS version in About This Mac; confirm compatibility before installing on an older system
Package format
DMG disk image
Mount the image, install the app, then eject it
Network permissions
Grant permissions for the mode you plan to use
System proxy and TUN have different permission requirements; treat them separately
If a system security alert appears on first launch, check the app name and source, then use the standard authorization steps in System Settings. Don’t disable system-wide security just to launch an app. If macOS reports an outdated version or incompatible architecture, address that specific requirement instead of reinstalling the app repeatedly.
After installation, first test a connection using the standard system proxy, then explore TUN if needed. Network extension authorization, administrator permissions, and node availability are separate concerns: granting more permissions won’t fix an incorrect address or port. Before updating, quit the old process so it doesn’t keep proxy settings active and interfere with testing the new version.
v2rayNG
Recommended2.2.6
An Android client powered by Xray. Most mainstream phones released after 2015 can start with arm64. If you’re unsure which app architectures your device supports, or arm64 is reported as incompatible, try the universal build.
For systems that support arm64-v8a apps. A 64-bit processor is one clue, but check which app architectures the device’s operating system actually supports.
Supports more architectures and is useful across a wider range of devices. A larger package doesn’t mean more features or faster node connections.
v2rayNG_2.3.11_universal.apk
The version label on the card and the filename come from different fields in the release manifest, so they may differ during a release transition. Check the actual version on the app’s About page after installation.
v2flyNG
Alternative1.10.31
An Android alternative powered by V2Fly. It’s suited to setups with configurations compatible with this core; don’t assume every protocol option supported by another client will transfer directly.
Choose this package for devices that support the arm64 app architecture. Before importing a configuration, check that its protocol and transport settings are supported by the current version.
An alternative when you’re unsure of your device architecture. The universal build covers more installation architectures; it can’t add support for configuration options the core doesn’t support.
v2flyNG_1.10.31-fdroid_universal.apk
When testing both clients, stop the active VPN before starting the other one. Android usually allows only one active VPN service at a time.
Android system requirements and installation prep
Check
Requirement or selection guide
What to do
App architecture
Choose arm64 if arm64-v8a is supported; otherwise, check whether the universal build is compatible
Check device information or the architecture details provided by the system
Operating system version
Must meet the minimum Android version required by the selected APK
Settings → About phone; follow the installer’s compatibility message
Install permission
The browser or file manager you use to install the app needs the required permission
Allow installs from this source only for the app you’re using
VPN permission
Approve the system VPN prompt when you start the app
Stop other VPNs first to avoid service conflicts
When the APK download finishes, open it from your downloads or file manager. If the installer says “App not installed,” first check the architecture, available storage, Android version, and signature conflicts with an existing installation. Don’t uninstall the old app right away. If uninstalling turns out to be necessary, export your settings first and make sure you can still access your subscription.
After launch, import a subscription or single-node configuration, then select an active node. If the connection drops frequently when the screen locks, check battery optimization and background activity restrictions; this isn’t directly related to choosing the universal APK. If a configuration isn’t supported, compare its protocol settings with the client core’s capabilities rather than deciding based on the app name alone.
v2rayN
7.24.1
Choose the package format used by your distribution, then select the processor architecture. Debian- and Ubuntu-based systems typically use deb; distributions with RPM-based package management use rpm. A matching package format doesn’t guarantee compatibility with every version of a distribution.
For compatible RPM-based desktop environments. Before installing, check the dependencies and system compatibility reported by your package manager; don’t force installation past dependency errors.
Check this section if your system reports aarch64 or arm64; x86_64 corresponds to the x64 downloads above. Don’t convert a package by changing its file extension.
Linux system requirements and installation prep
Check
Requirements for packages on this page
What to do
Processor architecture
x86_64 is x64; aarch64 is ARM64
Check system information instead of guessing from the distribution name
Package format
deb or rpm, matching your package management system
Open the package with your distribution’s graphical software installer
Desktop environment
A graphical session and the runtime dependencies required by the current release
This page covers the graphical client, not server installation
Compatibility
System libraries and package dependencies must meet the installer’s requirements
Review dependency errors; older distributions may not run the current package
Use your system’s graphical software installer to install the package, register its files, and check dependencies. If the package downloads but the installer refuses to continue, note the dependency names and your system version. Changing the file extension, ignoring dependencies, or copying libraries from another system will usually make the problem harder to diagnose.
Launch the app from your applications menu after installation. Verify your subscription and node first, then configure the proxy. System proxy behavior varies between desktop environments, and some apps need separate proxy settings. If your configuration requires TUN, check the routing and permission requirements too. An app opening successfully only confirms that its interface launched; it doesn’t verify an outbound connection.
After installation: subscriptions, proxy, and updates
A download gets the app installed; connecting requires a valid node configuration. Before first use, have an existing subscription ready. Open subscription management in the client, add the URL, and update it. Confirm that the update created a node list, then select a node and connect. Don’t change your subscription, DNS, and routing all at once, or it’ll be hard to pinpoint the cause of a problem.
On desktop, start with the system proxy for a basic test. On Android, approve the VPN prompt. When testing, distinguish between “node connection failed” and “the app isn’t using the proxy.” For the first, check the node address, port, and protocol settings. For the second, check the proxy mode and app settings. Once connected, add rules for direct connections within mainland China, private addresses, or ad blocking as needed.
Before updating, save your subscription groups, routing rules, custom DNS, and other manually configured settings. Node details you can retrieve again from a subscription aren’t the same as locally edited rules; having the subscription URL doesn’t mean every setting can be restored. Quit the old process before installing. After the update, check that the selected node, listening port, and proxy mode match your previous setup.
All three clients are part of the open-source proxy ecosystem, but support varies by core and version. v2rayNG uses Xray, while v2flyNG uses V2Fly; similar names don’t mean their configurations are fully interchangeable. If a setting isn’t supported, check Protocols first, then choose a client based on your protocol and transport needs.
First identify whether the problem occurs during download, installation, startup, or connection. These questions focus on choosing an installer; for node timeouts and DNS issues, see Troubleshooting.
Should you choose the Desktop or classic WPF edition for Windows?
For a first install, start with Desktop, which uses a new-generation cross-platform interface. Choose WPF if you prefer the classic interface and familiar workflows. Both are v2rayN, and all packages on this page are x64. Back up your settings before switching, and don’t let both versions manage the system proxy at the same time.
Which Android build should you choose: arm64 or universal?
Most mainstream phones released after 2015 can start with arm64, but a 64-bit processor doesn’t guarantee that the system supports the corresponding app architecture. If installation reports an incompatibility, check your device architecture and try the universal build. It supports more architectures and is usually larger; that doesn’t mean it will connect faster.
What should you check first if the download won’t install?
Check the package format, processor architecture, operating system version, and available storage. Fully extract the Windows ZIP; choose the DMG for your Mac’s chip; grant the app performing the installation the required permission on Android; and use a package manager suited to your Linux distribution. Note the exact error, then follow the relevant steps on the troubleshooting page.
Can you connect as soon as the client is installed?
The installer provides the client app, not a ready-to-use subscription or node. Import a valid configuration you already have, select a node, then configure the system proxy or mobile VPN. Subscription links may contain credentials, so don’t share the full URL publicly. Follow a setup guide to configure the client for the first time.
Do you need to uninstall the old client before updating?
You don’t need to remove your existing setup right away. Use the client’s backup or export feature to save your settings, and note your subscription groups, routing rules, and custom DNS. Then quit the running app. Whether you can install over the existing version depends on the package and installation method. After updating, confirm your nodes and rules are still there before reconnecting.
The version shown differs from the downloaded filename. Which should you trust?
The version label on the card and the package path come from different fields in the release manifest, so they may not match during a release transition. Don’t edit the version number in the download URL. After installation, check the actual version on the client’s About page. For feature compatibility, check which configuration options that version supports.