For desktop, choose v2rayN; for Android, start with v2rayNG. Check your operating system and processor architecture before downloading.
Project VXrayV2FlyFree forever · Open source
Choose a package by platform
The main download links prioritize common architectures; other packages and versions are listed on the same card. Check your device details before downloading.
Windows · v2rayN
v2rayN
Recommended
Windows · x647.24.1
Desktop edition
A modern cross-platform UI and a good place to start for new users.
Both the Desktop and classic WPF editions let you manage subscriptions, choose servers, and configure the proxy. The main differences are the UI technology and layout. Desktop uses a modern cross-platform interface, with menus arranged differently from the classic edition; WPF retains the familiar Windows workflow. The edition name says nothing about server quality and doesn't replace checking your protocol settings.
Extract the entire archive to a writable location, then run the installer included in the package. Don't launch the app from your archive utility's preview window, where associated files may not be extracted correctly. Keep the installation path stable to make upgrades and configuration files easier to manage. If you see a runtime warning, follow the installer or system instructions; don't look for replacement files on untrusted sites.
On first launch, add a subscription group and update it. Select a valid server, enable automatic system proxy configuration, and choose a routing mode. The system proxy only affects apps that follow that setting; it doesn't route traffic from every app. Before switching editions, back up your configuration and exit the old client. Running both at once can cause local port conflicts or competing proxy settings.
Windows installation requirements
Check
Requirements for packages on this page
How to check
Processor architecture
x64; these packages are not built for other architectures
Open System Information or About in Windows Settings and check System type
Operating system
Must be within the support range for the current client and runtime
Note your Windows version and check compatibility and runtime prompts during installation
Files and permissions
Extract all files, use a writable configuration location, and ensure enough disk space
Make sure your installation and user configuration folders aren't restricted by permissions
This page provides x64 packages. Similar-sounding processor names don't necessarily mean the same app architecture. On managed work devices, follow your organization's installation and proxy policies.
macOS · v2rayN
v2rayN
Desktop client
macOS · DMG7.24.1
Apple Silicon
If About This Mac shows an Apple chip, choose arm64.
Open About This Mac and check the chip or processor listed. Apple silicon uses arm64; Intel uses x64. Don't guess based on the device's appearance, purchase year, or macOS version—different models in the same product line may use different processors. Choosing the native package for your architecture can reduce reliance on compatibility layers.
When the download finishes, open the disk image and follow the included instructions to move the app to your Applications folder. Launch it from there. Don't keep running it from a temporarily mounted disk image; eject the image after installation and closing any related windows. If macOS shows a security warning, check the file's source and the warning, then follow the system's authorization steps. Don't disable system protection just to launch an app.
After importing a subscription, select a server and routing mode, then check that the system proxy is set for the network service you're using. Wi-Fi and Ethernet may have separate proxy settings, so check again when you switch networks. TUN mode may require additional permissions and take over network traffic. Start with the system proxy to make installation, configuration, and app traffic issues easier to distinguish.
macOS installation requirements
Check
Requirements for packages on this page
How to check
Chip
Choose arm64 for Apple silicon or x64 for Intel
Check the chip or processor listed in About This Mac
Operating system
Must be within the support range for the current Desktop edition
Check your macOS version and any compatibility prompts during installation or launch
App and network permissions
Allow app installation and required changes to proxy settings
Check macOS security alerts and the proxy settings for your current network service
If the app won't open, check the architecture and system warnings first. A failed subscription update is a network or configuration issue that occurs after installation, not necessarily a package problem.
Android · v2rayNG / v2flyNG
v2rayNG
Recommended · Xray core
Android · APK2.2.6
arm64
Recommended for most mainstream phones released since 2015.
v2rayNG is the recommended Android client and uses the Xray core, making it a good fit for configurations in that ecosystem. Most mainstream phones released since 2015 support arm64, but some devices only expose older app architectures to the system. Check what your device supports. The universal package covers more architectures, but it doesn't bypass the app's Android version requirements.
When you open the downloaded APK, Android may ask you to let your browser or file manager install unknown apps. Grant permission only to the app that starts the installation, and restore the previous setting afterward if needed. On first connection, Android will ask for VPN permission so the client can receive app traffic through the system interface. Stop any other VPN app first to avoid competing for the same connection.
After installation, add and update a subscription, select a server, and start the connection. If the connection often drops when the app is in the background, check battery optimization, background activity, and power-saving settings instead of repeatedly trying packages for other architectures. Subscriptions can contain access credentials, so hide the full address in screenshots. The client name, architecture, and error message are usually enough to describe an installation issue.
v2flyNG
Alternative · V2Fly core
Android · APK1.10.31
arm64
Choose the package for your device if your existing configuration uses V2Fly.
v2flyNG uses the V2Fly core and is an alternative when your existing configuration is compatible with it. The two Android clients have similar interfaces, but their protocol support, transport options, and configuration fields aren't necessarily identical. For configurations involving Xray-specific features, check that the client and core support them; switching to a universal package won't add protocol support.
Before switching from v2rayNG, save your existing subscription and settings, then import them into the new client. System permissions don't transfer between apps, so you'll need to approve the connection the first time. Test with only one client running. Check in order whether the subscription updates, the service starts, and apps can connect; this helps distinguish installation compatibility from network configuration issues.
Android installation requirements
Check
Installation and runtime requirements
How to check
App architecture
The arm64 package requires arm64 support; choose the universal package if you're unsure
Check your device specifications and watch for architecture incompatibility warnings in the installer
System and installation permissions
Meet the app's system requirements and allow APK installation
Check the Android version and permission to install unknown apps
Connection and background operation
Grant VPN permission and allow the client to run in the background
Check VPN permission, battery optimization, and whether another VPN app is running
“Can't install” and “Can't connect after installation” are problems at different stages. Get the app running first, then troubleshoot the subscription, transport settings, and network permissions.
Linux · v2rayN
v2rayN
Desktop client
Linux · deb / rpm7.24.1
deb · x64
For desktop distributions that use DEB packages.
Download DEB · x64The amd64 filename identifier corresponds to x64 architecture
On Linux, check both your distribution's package system and your processor architecture. Choose DEB for distributions that use DEB packages and RPM for those that use RPM. x64 may appear in filenames as amd64 or x86_64; arm64 may appear as aarch64. The file extension alone doesn't guarantee compatibility—package dependencies and system component versions matter too.
After downloading, open the package with your distribution's software installer or package manager so it can handle dependencies and keep an installation record. If it reports missing dependencies, check which packages and versions are required. Don't force past dependency errors or casually add repositories for other distributions. This is a desktop client and requires a working desktop session; headless machines with only a remote command line aren't covered here.
After launch, import a subscription and check the client's local listener and your desktop environment's proxy settings. Different desktop environments, browsers, and terminal apps may handle system proxies differently, so a running client doesn't mean every app is connected. For your first test, use an app known to follow the system proxy. If you need TUN mode, consult the advanced documentation for permissions, routing, and DNS handling rather than changing several layers of network settings at once.
Linux installation requirements
Check
Requirements for packages on this page
How to check
Package system
Choose DEB or RPM for your distribution
Check your distribution's documentation and use its package installer
Processor architecture
x64 or arm64, matching the package components
Check system information to distinguish amd64, x86_64, and aarch64 identifiers
Desktop and dependencies
A working desktop session and all package dependencies
Review the installer prompts and confirm the required graphical and runtime components
The same package format doesn't guarantee compatibility across distributions. Trust the installer's dependency report over assumptions based on a shared distribution family.
After installation: import a subscription and prepare to connect
Check installation, configuration, and app traffic separately. Finish each stage before moving on.
Prepare a valid subscription or server details
The client manages configurations and connections, but installing it doesn't give you access to a working server. Before you start, obtain a valid subscription address or a complete set of server details that you're authorized to use. A subscription groups multiple configurations behind one update link; manual setup requires you to enter the server address, port, protocol, transport, and security settings individually. Either way, the details must be correct—a server address alone won't connect.
A subscription address often contains an access token, so protect it like a password. When adding a group, use the remark field to identify it locally by purpose or source; don't share screenshots that show the full address. After importing the group, update it to load the actual configurations. If the update fails, check the copied address, subscription expiry, and network access first. Don't mistake a configuration issue for a broken download.
When importing from the clipboard or a QR code, check the detected protocol and transport settings. A link may parse successfully even if the current core doesn't support all its extension fields. Settings such as REALITY must match the server; don't reuse parameters from an unrelated configuration. If you're unfamiliar with the terminology, read the REALITY overview and compare it with the information from your server.
Verify app traffic before troubleshooting the server connection
Desktop clients usually route traffic through the system proxy; Android clients receive it through VPN mode. The system proxy is how apps send requests to the local proxy, while routing mode determines which outbound route handles requests the client has received. These are separate settings. Changing the routing mode won't help if app traffic never reaches the client.
For your first connection, select a valid server, enable a traffic capture method, then test with an app you use every day. Don't change DNS, TUN, custom outbounds, and complex routing rules all at once, or it'll be hard to identify the cause of a failure. Once access works, adjust routing rules as needed and keep a working baseline configuration you can restore.
If an app can't connect, check that the client service is running, its local port isn't in use by another instance, and the system clock is correct. Then verify that the server details and subscription are still valid. Browsers, command-line tools, and other desktop apps may use different proxy settings, so one app's results don't represent the whole system. See the quick start guide for setup steps, or the connection troubleshooting section for help with connection issues.
Back up before upgrading; recheck settings when switching clients
Save your current configuration before upgrading. Use the client's backup or export feature where possible, and separately record subscription groups, routing exceptions, DNS settings, local listening ports, and startup options. A subscription address alone won't restore custom rules, and copying one directory may not preserve system proxy settings or permissions. Backups can contain credentials, so store them securely.
Exit the old client before installing a new version, especially when switching between interface editions. Make sure the old instance has stopped managing the proxy before launching the new one, then check that it reads the configuration correctly. If the new interface uses a different configuration format, migrate using a supported import method rather than overwriting an unfamiliar directory. Keep the backup until you've updated the subscription and verified app access.
When switching Android clients, recheck protocol support and permissions. A subscription link can help you migrate, but core-specific transport settings may not carry over, and you'll need to grant VPN permission again. When moving between desktop platforms, check file paths, system proxy interfaces, and permission differences too. Verify the actual configuration and app access after upgrading; a successful installer alone doesn't mean the migration is complete.
Download and installation FAQs
Check the package type first, then look at permissions and configuration. Keep the original error message to avoid repeating the same checks.
Which v2rayN edition should I install on Windows: Desktop or classic WPF?
If you're new to v2rayN, start with the Desktop edition and its modern cross-platform interface. The classic WPF edition keeps the familiar Windows UI. Menus may be in different places, so back up your configuration before switching. Don't let both editions manage the system proxy at the same time.
Should I download the arm64 or universal Android version?
Most mainstream phones released since 2015 can use arm64, but check which app architectures your system supports. Choose the universal version for older devices or when you're unsure. It won't help if your Android version doesn't meet the app's requirements.
Can I connect right after installing the client?
The client reads your configuration and handles connections, but the installer doesn't include a usable server configuration. You'll need a valid subscription or complete server details. Import and update the configuration, select a server, then set the system proxy or grant the Android VPN permission.
How do I keep my subscriptions and routing settings when upgrading?
Use the current client’s backup or export feature to save your configuration, and separately note your routing rules, DNS settings, and local ports. Exit the old client before upgrading. When switching editions or clients, use an import method supported by the new version; don't overwrite directories unless you know what they're for.
What if the version in the filename doesn't match the version shown on the card?
The card shows the app's version, while each download link uses a separate package version field. They may not update at the same time. Check the downloaded filename and the client's About page after installation; don't edit version numbers in download URLs.
What should I check if a download fails or the installer won't open?
Make sure the download is complete and there's enough disk space, then check your operating system, processor architecture, and package format. Extract Windows ZIP files before running them. On Android, grant permission to the app that starts the installation. If it still fails, note the error message and package name, then follow the installation and connection troubleshooting steps.