Choose v2rayN for desktop, or v2rayNG or v2flyNG for Android. Check your operating system and CPU architecture before downloading the matching installer.
Free foreverOpen sourceGraphical client
The client manages subscriptions, servers, and proxy settings; you’ll need to obtain a working subscription link or server details separately. For a first install, keep the setup guide open and follow the steps.
Windows installer
v2rayN
Top pick
Windows · x647.24.1
Desktop uses a newer cross-platform UI, while classic WPF retains the familiar Windows desktop layout. For a first install, Desktop is a good choice. If you’re used to WPF, you can stick with the classic, stable version.
Open Settings → System → About and check System type
OS compatibility
Use a supported Windows version; check the installer for the minimum requirement
Check for Windows updates and note any runtime requirements
Extraction and folder
Extract all files to a local folder you can write to
Keep the installer and included files together in the extracted folder
Permissions
Use standard permissions for a regular proxy; TUN may require additional permissions
Test the system proxy first, then configure TUN if needed
System type is a better guide to installer choice than your computer model. If your processor is x64 and you’re running 64-bit Windows, choose the x64 build here. For other architectures, first confirm that your OS can run the software; being able to open this download page doesn’t mean the client will run. The two downloads differ in interface, not speed or server capability.
Close any older client before running the installer. If you’re told a runtime component is missing, check which component and architecture are required; don’t copy runtime files from another computer at random. The included programs and files usually each serve a purpose, so keep the installer’s folder structure intact. Moving only the main executable can leave it unable to find required components.
After opening v2rayN for the first time, import a subscription and select a server before setting up the system proxy. Desktop and WPF may place menu items differently, so use the setting names in a guide rather than relying on button positions. Back up your subscription groups, routing, and DNS settings before switching versions. Close one client before opening the other to avoid both changing the system proxy.
macOS installer
v2rayN
Recommended
macOS · DMG7.24.1
Check your chip under About This Mac: choose Apple Silicon for an Apple M-series chip, or Intel for an Intel processor. Use the native build for your chip when available.
Check the app and system prompts for compatibility
Check your macOS version and use a supported release
App location
Copy the app to Applications before launching
Don’t run it from a mounted DMG long-term
Network permissions
Grant system proxy or virtual network interface permissions as needed
Review permission prompts in System Settings
Don’t choose an architecture based only on the device’s purchase year; models from the same period may use different chips. Once the app is copied, you can eject the disk image. Keep the downloaded file in case you need to reinstall. If macOS blocks the app, read the full message and determine whether it concerns compatibility, app security, or a damaged file. Avoid disabling system-wide security just to run one app.
Once the client starts, you still need to import server details and choose a proxy mode. The system proxy generally affects apps that follow system proxy settings. TUN uses a virtual network interface and requires additional permissions; there’s no need to enable it immediately after installation. Start with a simple setup to confirm the server works, then see the TUN mode guide for more options. This makes it easier to tell client issues from network issues when troubleshooting.
Android installers
v2rayNG
Top pick
Android · Xray core2.2.6
For Android, start with v2rayNG to import subscriptions, manage servers, and create a local VPN connection. Most mainstream phones released after 2015 can usually use arm64, but check your device’s actual system architecture.
Consider the universal build if you’re unsure of the architecture
The displayed version and package path may not update at the same time. Check the actual filename and the About page after installation; don’t edit the download URL manually.
Choose v2flyNG if you need an Android graphical client from the V2Fly core family. Before switching, check whether your subscription’s protocols and transport settings are supported by the version you plan to use. Don’t migrate settings based on interface similarities alone.
For devices that need broader architecture support
You can manage configurations in both Android clients, but enable only one VPN during connection tests. Otherwise, Android may replace the first VPN connection and lead to misleading results.
Check device specifications and system architecture; consider the universal build if unsure
OS version
Follow the compatibility requirements shown by the APK installer
Check Settings → About phone and the installation prompt
Install permission
Allow the app you use to open the APK to install it
Follow the system prompt to allow installs from that source
VPN permission
Approve the system VPN request the first time you connect
Check the app name before allowing the connection
Background operation
If using the client continuously, check battery optimization and background restrictions
Adjust these settings as needed in the system app settings
arm64 describes the runtime architecture, not a feature tier. A device may have a 64-bit-capable processor but still be unable to install an arm64 build if its OS uses a 32-bit runtime. The universal build doesn’t bypass minimum OS requirements, signature conflicts, or installation policies. If you see “App not installed,” check the installer’s message before trying another build.
Updating an app already installed under the same name usually requires a compatible signing key. If Android reports a conflict, export or back up your existing configuration first; don’t uninstall right away, as that may erase subscriptions and custom settings. Granting VPN permission only lets the app manage network traffic; it doesn’t confirm that the remote server connected. Test web access and check the logs.
Linux installers
v2rayN
Recommended
Linux · desktop graphical client7.24.1
Choose deb or rpm based on your distribution, then match the x64 or arm64 architecture. The primary downloads below are x64; ARM desktop users should use the matching arm64 links.
Open the package with your system’s software installer and check its dependency prompts. The same package format isn’t guaranteed to work across all distribution versions; pay particular attention to the target environment in an rpm filename.
Choose deb or rpm based on your distribution’s package manager
Check your system documentation and the formats supported by its software installer
CPU architecture
amd64 / x86_64 means x64; aarch64 means arm64
Check the hardware details under System About
Desktop environment
Requires a desktop session that can run graphical apps
This page covers desktop use, not installation as a background service
Dependency compatibility
System libraries and distribution version must meet the package requirements
Read dependency and conflict messages from the software installer
Proxy behavior
Whether an app follows the system proxy depends on the desktop and app settings
Test with an app that is explicitly configured to use the proxy
Don’t rename a deb file to rpm, and don’t force installation past dependency warnings just because the system lets you open the file. If the installer reports an unmet dependency, first check the package’s target environment. Packages with the same format can still rely on different system libraries. No fixed minimum distribution version is listed here because compatibility depends on the actual package and system environment.
Not every Linux desktop app uses the system proxy. Client startup, server selection, and enabling the proxy are separate steps; check each one during testing. If you plan to enable TUN, review permissions and routing changes, and note the original state so you can restore it later. For custom routing and DNS, see the advanced configuration guide. Keep network setup separate from the initial installation.
Choosing an installer and first-time setup
Narrow down your choice with three questions before downloading: which operating system the device runs, which CPU architecture the OS uses, and whether you have existing client settings to keep. The operating system determines the platform, the architecture determines the package, and existing settings tell you whether to back them up first. Checking all three is more effective than trying several downloads and helps prevent losing track of existing subscriptions after an update.
Check the architecture before comparing interfaces
On this page, x64, amd64, and x86_64 refer to the same class of 64-bit desktop architecture; arm64 and aarch64 refer to 64-bit ARM. These are not server protocols or speed tiers. The installer must match the device’s runtime environment. Both Windows downloads here are x64; Desktop and WPF differ in interface, not processor architecture.
The Android universal build supports more architectures, but that doesn’t make it the best choice for every device. Phones that support arm64 can usually use the matching build directly; consider universal for older devices, unusual systems, or when the architecture is unclear. On macOS, check the chip listed in About This Mac. On Linux, match both the package format and architecture before installing.
Know the difference between the client, core, and server
v2rayN, v2rayNG, and v2flyNG are graphical clients that organize server details, subscriptions, and proxy options in an interface. The core handles the connection, while the server is the remote endpoint. Downloading a client doesn’t provide a server service. Even after installation, you can’t establish a working connection without valid settings. That’s why you still need to import a subscription after launching the client.
Desktop users usually start with v2rayN. Android users can start with v2rayNG, which uses the Xray core, and consider v2flyNG when they specifically need the V2Fly core. Protocol support varies between cores and versions, especially for subscriptions with specific transport or security settings; check that your settings are compatible. The same protocol name doesn’t guarantee that every extended field can be reused as-is. See the glossary for related definitions.
Make your first connection, step by step
Install and open the client. Check that the main interface displays correctly and that the installer reported no dependency or permission errors. Don’t enable multiple proxy tools at the same time yet.
Import a subscription or a single server. Use the configuration from your service provider and check that the expected entries appear in the group. A successful subscription update only means the configuration was retrieved; it doesn’t mean every server is reachable.
Select a server and choose a mode. On desktop, start with the system proxy. On Android, approve the VPN prompt. Routing rules determine which requests use the proxy, so don’t rely on the toggle alone.
Test a real request. Open an app that should use the connection and check whether it works. If not, review the client logs. Once the basic connection is confirmed, adjust DNS, routing, or TUN.
Updates and migration tips
Before updating, confirm that the current client works and note which proxy mode you use. Use the client’s backup or export feature if available, and save your subscription groups, manually added servers, custom routing, and DNS settings. Configuration storage may change between versions; the same product name doesn’t guarantee that an in-place update will preserve your data.
After backing up, quit the client before running the new installer. On desktop, closing the window may leave the app running in the system tray; use the client’s Quit command. On Android, disconnect the VPN first, then follow the system’s update prompt. After updating, check the version and configuration, then test a known-working server before restoring other advanced settings.
Switching from Desktop to WPF, or from one Android client to another, is a configuration migration. First check whether the target client can import the existing format, then verify that protocol, routing, and DNS fields are intact. You can import the subscription again, but custom groups and local rules may not come with it. That’s why backing up and taking notes matters.
The version shown on the page and the download link come from separate fields in the version list, so they may briefly be out of sync. Check the actual installer filename and the client’s About page to confirm the installed version. Don’t build a new filename from the displayed version or install multiple packages just to make the labels match. Keep your working configuration and update only if needed.
If the connection stops working after an update, compare your settings before and after. System proxy status, selected server, routing mode, and DNS are common sources of change. Adjust one setting at a time and record the result. Changing the core, DNS, TUN, and server settings all at once makes troubleshooting harder. For more details, see subscription management and advanced configuration.
Installation prompts and connection issues
First distinguish between a failed download, a failed installation, and a successful installation with a failed connection. A download failure occurs while the browser retrieves the file. Installation failures often involve architecture, OS version, permissions, or package dependencies. Connection failures point to server settings or proxy status. These are different stages with different causes, so redownloading isn’t the answer to all of them.
The downloaded file won’t open
Make sure the browser finished downloading the file and didn’t leave a temporary file behind. Extract ZIP archives, open DMGs with the system disk image utility, install APKs with the system installer, and use a package installer suited to your distribution for deb and rpm files. Use the right app for each file type; changing the extension doesn’t change the file’s contents. If the browser reports a failed download, use the matching link to download it again.
The installer reports an incompatibility
Note the full installer message and check the architecture and OS version first. On Android, distinguish an architecture mismatch from a signature conflict or an installation permission issue. On Linux, check the package format and dependency versions. On desktop, look for runtime requirements. Don’t delete existing settings or force installation past warnings to get around the message; identify which stage failed before taking action.
The client starts, but I can’t access websites
First check that the device itself is online, the system clock is correct, and the subscription is still valid. Then check the selected server and proxy mode. On Android, make sure another app hasn’t replaced the VPN connection. On desktop, confirm that the app you’re testing actually uses the system proxy. Matching log timestamps to the affected request is usually more useful than relying on a connection icon alone.
If the client opens reliably and the subscription updates, but one server keeps timing out, check that server’s settings and status first. If only some apps are affected, look at their proxy settings, routing, and DNS rather than immediately replacing the installer. Visit the Help Center to find next steps by symptom.
Frequently asked download questions
What else do I need after downloading a client?
You’ll also need a subscription link or server configuration from your service provider. The installer provides the interface and runtime components; it doesn’t create a working server. Install the client, then follow the setup guide to import your configuration, choose a server, and enable the right proxy mode.
Which should I choose: the Windows Desktop or WPF version?
For a first install, Desktop is a good starting point: it uses a newer cross-platform interface. If you prefer the classic Windows layout, choose WPF. Both versions manage servers and subscriptions, but menus and interactions may differ. Back up your configuration first, and don’t enable system proxy in both clients at the same time.
What’s the difference between Android arm64 and universal builds?
The arm64 build is for compatible 64-bit ARM systems. Most mainstream phones released after 2015 are good candidates, but check your device’s actual system architecture. The universal build supports more architectures and may suit devices with unknown architecture or mixed-device use. A 64-bit-capable processor doesn’t necessarily mean the installed OS is 64-bit.
The version shown on the page doesn’t match the download filename. Which should I trust?
The displayed version and installer path are maintained separately and may not update at the same time. Check the actual filename at the download link and the client’s About page after installation. Don’t edit the download URL based on the version shown. Back up your configuration before updating, and keep your current working version if in doubt.
Will updating the client keep my subscriptions and routing settings?
That depends on the client version, installation method, and where it stores its configuration; an in-place install is no guarantee. Before updating, use the client’s backup or export feature, and note your subscription groups, routing, DNS, and proxy mode. Check each setting after the update, then test a server known to work.
The client installed, but websites won’t load. Should I download it again?
Start by checking your local network, system clock, server settings, system proxy or VPN status, and client logs. A successful install only means the program runs; it doesn’t confirm that a server is reachable. Download the installer again only if the installation failed, files are missing, or the client won’t start.