Choose v2rayN for desktop and v2rayNG for Android. Find the right download by operating system, processor, and package format, then import a subscription.
Free to useOpen sourceGUI configuration
Choose a package by platform
Each of the four platform sections lists the relevant package options. The primary button is the usual choice; other architectures and the classic interface are available alongside it.
Windows downloads
Both packages are x64. Start with Desktop for a new installation; consider WPF if you’re already familiar with its classic interface.
v2rayN
Windows · x64 · 7.24.1
Recommended
Desktop uses a next-generation cross-platform UI. WPF is the stable classic edition, with a familiar Windows desktop layout.
Extract the files before installing. Both downloads are ZIP archives. After downloading, extract the entire archive in your file manager, then open the installer and instructions in the extracted folder. Don’t launch the installer from the archive preview. Make sure your account can read and write to the folder, and avoid placing configuration files in a protected system directory.
Desktop and WPF differ mainly in their UI technology and layout; neither is inherently faster when connecting to the same server. Choose based on your preferred workflow, system compatibility, and required settings. If your old setup contains many custom rules, export a backup first and verify each setting in the new interface. Don’t overwrite your only working configuration.
Windows requirements and installation checks
Check
What to check
Processor architecture
This page provides x64 packages. Check System type under System Information or About in Settings. These packages won’t install on 32-bit Windows.
Operating system and runtime
Use a 64-bit version of Windows that’s still supported. Check the package notes for the minimum OS version and desktop runtime requirements. If startup fails, install the required dependencies for the matching architecture.
Files and permissions
Make sure you have enough space to extract the files. Standard proxy use and virtual network adapter features have different permission requirements; enabling TUN may require elevated privileges.
If nothing happens when you double-click the app, check Windows error messages, runtime prompts, and client logs. Don’t treat running as administrator all the time as a universal fix. See how to troubleshoot v2rayN startup crashes to distinguish missing dependencies, folder permissions, and corrupted configuration.
macOS downloads
Open About This Mac from the Apple menu. If it shows an Apple M-series chip, choose Apple Silicon; if it shows an Intel processor, choose Intel.
v2rayN
macOS · DMG · 7.24.1
Desktop client
Choose the package built for your processor whenever possible. Don’t identify the architecture by the device’s appearance or purchase year.
Run the app from Applications. Open the DMG and follow its instructions to install the app. Move it to Applications, then launch it from there. The first launch may trigger a security prompt. Verify the download source, then go to System Settings → Privacy & Security and look for the option to allow this app to open.
Being allowed to launch doesn’t mean system proxy or virtual network permissions are ready. After importing a configuration, test browser connectivity with the system proxy first, then enable TUN if needed. After an OS upgrade, app migration, or reinstall, you may need to approve permissions again. On managed devices, follow your organization’s policies rather than bypassing administrator settings.
macOS requirements and installation checks
Check
What to check
Processor architecture
Apple M-series chips use arm64; Intel processors use x64. Choose the matching native package to avoid additional compatibility variables from architecture translation.
Operating system version
Check your macOS version in About This Mac first. The minimum supported version depends on the package; the DMG format alone doesn’t indicate compatibility.
Installation permissions
You’ll need permission to write to Applications. Handle first-launch approval, security prompts, and network permissions separately. Don’t disable system-wide protections.
If macOS says it can’t verify the developer, or the client launches but can’t route traffic, follow the macOS security approval and network permissions guide. Confirm the app opens normally before troubleshooting proxy or network permissions. Avoid changing several settings at once.
Android downloads
v2rayNG is the recommended choice. Most mainstream phones released after 2015 use arm64, but choose the universal version if you can’t confirm the architecture. The device must still meet the minimum OS requirements.
v2rayNG
Android · Xray core · 2.2.6
Recommended
A good fit for everyday Android use. Manage configurations with subscription groups, route traffic through an authorized VPN connection, and set up per-app proxy rules.
The arm64 package includes components for that architecture and is suitable for devices that support 64-bit apps. The universal package supports more architectures and is usually larger. Some phones have 64-bit processors but don’t support 64-bit apps at the OS level. If installation fails, check both the OS and app architecture—not just the processor name.
When you open the 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 revoke it after installation if you like. The first time you connect, Android will also ask you to authorize the VPN connection. If another app is using the VPN slot, check whether you need to stop it before connecting.
v2flyNG
Android · V2Fly core · 1.10.31
Alternative
Choose this option when you specifically need the V2Fly core and your configuration is compatible with it. Check the protocol, transport, and settings before installing; a similar-looking interface doesn’t guarantee the same feature support.
v2flyNG and v2rayNG use different core implementations, so their protocol support and compatibility with newer settings may differ. If a subscription item won’t import, check which features the configuration requires before choosing a client. Repeatedly importing the same configuration won’t add core features that aren’t supported, and randomly toggling settings won’t resolve compatibility issues.
Before switching, save your subscription URLs, manual configurations, and per-app lists from the current client. Import a few known-working configurations into the new client and check connectivity and DNS behavior before moving the rest. You can keep both clients installed, but enable only the connection you need at a time so it’s clear which rules are handling traffic.
Android requirements and installation checks
Check
What to check
Operating system and architecture
Check your Android version under Settings → About phone, then choose a package that matches the device’s supported app architecture. The universal version isn’t necessarily compatible with every older OS.
Installation requirements
Make room for the download and installation, and allow app installs from the current source if needed. If Android reports a signature conflict, back up your settings first; don’t uninstall the only client with a working configuration.
Connection permissions
The first connection requires Android VPN authorization. For extended background use, check battery optimization settings, but don’t grant permissions unrelated to connecting.
If Android says “App not installed,” check available storage, OS version, architecture, and signature compatibility with any existing installation—in that order. If the issue occurs during an update, keep the old configuration. If installation succeeds but the app disconnects in the background, check battery-saving settings; that’s a separate issue from package architecture.
Linux downloads
Choose deb or rpm based on your distribution, then select x64 or arm64 for your processor. These are desktop GUI clients, not server deployment tools.
v2rayN
Linux · deb / rpm · 7.24.1
Desktop GUI
Choose deb for Ubuntu, Debian, and similar distributions. Choose rpm for Fedora and other RPM-based distributions, and make sure the package dependencies suit your system.
Open the package with your system’s software installer. It will show the package architecture and dependencies. The same deb or rpm extension doesn’t guarantee compatibility across distributions; check system library versions and the package’s build target. If dependencies can’t be met, verify your distribution instead of forcing the installation past dependency checks.
After installation, launch the client from your desktop app menu and check that the main window and logs open normally. Some desktop environments require additional tray support. If you can’t find the tray icon after closing the window, check desktop extensions and the client’s background settings. Configure autostart as a desktop session startup item after user login; don’t run the entire GUI client as a system administrator.
Linux requirements and installation checks
Check
What to check
Package format
Debian-based distributions generally use deb; RPM-based distributions use rpm. Before installing, check the software installer’s dependency information and your distribution’s compatibility requirements.
Processor architecture
x86_64 and amd64 correspond to x64 packages on this page; aarch64 corresponds to arm64. Don’t confuse distribution bitness with package format.
Desktop and permissions
A working graphical desktop environment is required. Package management and TUN configuration may require authorization; using the client’s regular interface doesn’t require an administrator session.
If the desktop app starts but your browser isn’t using the proxy, check your desktop environment’s proxy settings and the client’s own proxy rules before deciding whether you need TUN. For the full installation, autostart, and tray setup, see the Linux deb/rpm installation and login autostart guide.
What to do after downloading
Handle installation and connection testing separately. Complete each step before moving on so it’s easier to find the cause if something goes wrong.
Install and launch the client
Confirm the package matches your operating system and processor, then install it using the appropriate package format. On first launch, check the interface, logs, and required permissions; don’t change DNS, routing, and TUN settings all at once. If the app itself won’t start, resolve system dependencies and folder permissions first. Changing subscriptions won’t fix a startup problem.
Import a subscription and select a server
Add a subscription URL you’re authorized to use under subscription groups, then update it and check the import results. For a manual configuration, verify the address, port, protocol, and transport settings individually. Don’t share subscription links publicly; they may contain personal access credentials. After importing, select the server you want to use.
Enable the proxy and test traffic
On desktop, start by enabling the system proxy; on Android, authorize the VPN connection. A system proxy only works with apps that follow the system settings, so it may not route traffic from every program. Test the apps you use and check client logs; a toggled-on switch alone doesn’t prove the connection works. Configure TUN and related routes separately if you need a virtual network adapter.
The client app, core capabilities, and subscription are separate parts of your setup. An upgrade may change where settings are located or how configuration is stored, but it won’t automatically fix incorrect server-side parameters. Before upgrading, note your client, proxy port, routing mode, and key DNS settings, then quit the app so it doesn’t overwrite files while they’re being saved.
Back up at least your manual servers, subscription groups, and custom routing rules. Backups may contain credentials, so restrict access and don’t store them in a public sharing folder. When moving between interfaces or clients, use import and export features where available, then check that all fields carried over. Don’t assume folders can be swapped just because they have the same name.
Check the package version separately from the card
The version shown on a card comes from app-level information, while download links are updated for individual platform packages. These fields may be published at different times, so a filename may not match the card. To confirm a package version, check the downloaded file and the version shown in the installed client. Don’t assume a single version label means every platform package is up to date.
After updating, test the connection with a simple configuration you know works, then restore your custom rules. If something goes wrong, note the full error, OS version, and package type, then check for changes to dependencies and permissions. For core differences and settings across three clients, see the client selection guide. For protocol names and network modes, see the glossary.
Download and installation FAQs
First identify whether the issue occurs during download, installation, startup, or connection, then follow the relevant steps.
Which Windows package should you choose: Desktop or WPF?
For a new installation, choose Desktop, which uses the next-generation cross-platform interface. If you prefer the classic Windows layout, choose the stable WPF edition. Both downloads are x64 packages, so the interface name does not indicate processor compatibility. Before switching, export your subscriptions, servers, and custom rules. Don’t reuse an active configuration directory directly.
Should you download the Android arm64 or universal version?
Most mainstream phones released after 2015 are best suited to arm64, but confirm that the device’s operating system supports 64-bit apps. If you can’t confirm the architecture, or the arm64 package reports incompatibility, try the universal version. It still requires an operating system that meets the client’s minimum requirements. Before installing, check the OS version, available storage, and permission to install from the selected source.
Why can’t I connect after installing the client?
The client manages configurations and forwards traffic; its installer does not include a working subscription or server. Add a subscription or connection details you’re authorized to use, import them, select a server, then enable the system proxy or authorize the VPN connection. If the connection fails, check the logs first instead of repeatedly switching installers.
What should I back up before updating the client?
Save your subscription groups, manually added servers, custom routing rules, and DNS settings, then quit the client. Backups may contain subscription URLs and credentials, so store them somewhere access is restricted. After updating, check the proxy port, routing mode, and TUN settings. Don’t assume every interface version can reuse the same configuration directory.
The version shown on the download card differs from the filename. Which should I trust?
The version shown on the card comes from an app-level version field, while the download URL comes from a platform package field; the two may not be updated at the same time. To identify a package’s version, check the downloaded filename and the version shown in the installed client. The card alone doesn’t confirm that packages for every platform have been updated.
What should I do if macOS says it can’t verify the developer?
First confirm the download source and processor architecture. After trying to open the app, check Privacy & Security in System Settings and use the option macOS provides to allow it, if appropriate. Managed devices may require administrator approval. Don’t disable system-wide protections just to run the client. Confirm network permissions and system proxy authorization separately.