For desktop, choose v2rayN. For Android, choose v2rayNG by default, or v2flyNG if you need the v2fly core. Check your operating system and CPU architecture before downloading the right package.
Desktop: Uses a next-generation cross-platform UI. It’s a good choice for first-time installs and for users who want a consistent experience across desktop operating systems. Setting names and menu locations may vary by release branch; follow the interface in your current version when using a guide.
Classic WPF: Uses the familiar, stable Windows interface and suits users who already know it. These are two interface editions of the same client; you don’t need to run both to use basic subscription features.
The current downloads are ZIP archives. Extract the entire archive before opening the installer inside; don’t launch it from the archive preview.
Check
Package requirements
Before installing
Operating system and architecture
Windows x64; check the current release notes for the minimum supported Windows version
Check System type in System Information; confirm compatibility before installing on an older system
Package format
ZIP archive containing installation files
Extract the full archive and keep all required files together
Dependencies and permissions
Depends on the edition and features you use
Follow installer prompts for runtime requirements; configure TUN permissions separately
macOS: choose v2rayN by processor
Open About This Mac from the Apple menu and check the Chip or Processor entry.
Apple Silicon: If About This Mac shows an Apple M-series chip, choose the arm64 package. Use the build that matches your processor; don’t infer the architecture from the device’s purchase year.
Intel: If About This Mac shows an Intel processor, choose the x64 package. Both downloads serve the same purpose; the only difference is processor architecture, not the number of subscriptions you can import or the available proxy modes.
When the download finishes, open the DMG and follow the instructions in the disk image. After installation, eject the disk image and launch the client from Applications.
Check
Package requirements
Before installing
Processor
Apple Silicon: arm64; Intel: x64
Check About This Mac; don’t judge by the device’s appearance
System compatibility
Check the minimum macOS version for the current build
For older systems, check the release notes; matching the processor alone isn’t enough
Installation and permissions
DMG; grant network permissions as prompted by macOS
After installing the app, check system proxy and TUN permissions separately
Android: v2rayNG and v2flyNG
Most mainstream phones released since 2015 use arm64. If you’re unsure, check your device information or try the universal version.
v2rayNG uses the Xray core and is suited to everyday subscription management, routing, and per-app proxy settings on Android. For your first install, import your configuration with the default settings and test the connection before changing DNS or routing. Adjust settings one at a time to make it easier to identify the cause of any issues.
The arm64 package is for devices that support 64-bit apps. The universal version includes multiple architectures and is a good option when you’re not sure which one your device uses. For older devices and some custom Android systems, also check Android version and app architecture support.
The displayed version comes from app-level release information, while the filename comes from a specific package record; they may update at different times. Check the app’s About information for the installed version.
v2flyNG uses the v2fly core and suits users who need to retain V2Fly configuration behavior. Before choosing it, check the protocols, transport methods, and configuration fields you use. Different core names don’t mean every configuration is interchangeable.
When switching from another client, reimport the original subscription or a standard share link if possible. App-specific backup formats may not be compatible. After importing, check routing, DNS, and per-app settings; seeing a server name doesn’t confirm that migration is complete.
Both arm64 and universal packages are available. You can install both Android clients, but enable the VPN connection in only one at a time when testing.
Allow installation from your source and approve VPN access
When opening an APK, Android may ask you to allow the browser or file manager you’re using to install unknown apps. Grant this permission only to the app that opens the package, and revoke it afterward if you prefer. If Android reports a parsing error, check that the download is complete, there’s enough storage, and the system version and package architecture are compatible.
The first time you connect, Android displays a VPN connection request. Confirm it comes from the client you’re using before allowing it. The client uses Android’s VPN interface to route traffic; the device can’t run multiple VPN connections at once. Disconnect any other VPN before testing. If Android soon stops the client, check battery optimization and background activity restrictions.
Check
Package requirements
Before installing
App architecture
arm64 or Universal (multiple architectures)
For most newer devices, choose arm64; check system support on older devices
Android version
Must meet the minimum Android version required by the APK
Matching the architecture doesn’t guarantee compatibility with your Android version
Installation and connection
Allow installs from the source you’re using; approve the VPN request when connecting
Back up your configuration before upgrading; uninstalling may cause data loss
Linux: choose deb or rpm
Check your distribution’s package format, then choose x64 or arm64. The main downloads below are x64 packages.
Debian, Ubuntu, and distributions using the same package management system typically use deb. Choose rpm for distributions that use RPM package management. A matching package format means the package manager can recognize it, but doesn’t guarantee that all dependencies are available on your distribution.
Common 64-bit Intel and AMD desktop processors use x64, also listed as amd64 or x86_64. 64-bit ARM devices use arm64, also listed as aarch64. Check your system information rather than choosing based on the file extension.
The build identifier in an rpm filename also indicates its target environment. On older distributions, check system libraries and dependency compatibility before installing.
Check
Package requirements
Before installing
Package format
deb or rpm
Check which formats your system’s package manager supports
Processor architecture
x64 or arm64
Compare with the amd64 / x86_64 and arm64 / aarch64 labels
Runtime environment
A graphical desktop and system dependencies that meet the current build requirements
Check the installer’s dependency prompts; configure TUN permissions separately
After installation / test a basic connection first
Import your subscription, then check proxy settings
Launch the client and find Subscription Groups or the subscription management option. Paste the complete link and update it. Subscription URLs may contain tokens, so don’t include them in public screenshots, chat logs, or bug reports. Confirm that you’re authorized to use the configuration before importing it. The client downloads on this page don’t include server accounts or generate a usable subscription.
After the update completes, select a server and enable the system proxy or, on Android, the VPN connection. On desktop, confirm that your app follows the system proxy; on Android, confirm that VPN access is authorized. Keep routing and DNS settings simple at first, and change one setting at a time so you can return to a known working state if something goes wrong.
Once connected, adjust routing, DNS, and TUN mode settings as needed. Global proxy, rule-based routing, and TUN are separate controls: routing determines which outbound connection traffic uses, while the system proxy and TUN determine how traffic enters the client. Changing the routing mode alone won’t fix an app that isn’t sending traffic through the proxy.
Desktop or classic WPF: which v2rayN edition should you choose?
For a first installation, choose Desktop, which features a next-generation cross-platform interface. Choose WPF if you prefer the classic Windows interface. For either edition, extract the archive first, then install or launch the app as instructed in the package. Export your configuration before switching, and don’t let both instances manage the system proxy at the same time.
Should you download the arm64 or universal Android version?
Most mainstream phones released since 2015 use arm64, but confirm that your device supports 64-bit apps. If you’re unsure of the architecture or the arm64 package is reported as incompatible, try the universal version. It supports multiple architectures, but not necessarily every Android version.
Do you need a subscription after installing the client?
The client reads configuration and establishes connections; it does not include servers ready to use. You’ll need a subscription link or server configuration that you’re authorized to use, which you can add through subscription groups or the import option. Subscription links may contain credentials, so don’t share them publicly.
Do you need to uninstall the old client before upgrading?
Export your configuration and note your system proxy and routing settings before quitting the old client. In most cases, upgrade normally within the same app and release branch. Whether you need to uninstall depends on the installation method and signature compatibility. Don’t clear app data just to fix an installation failure; uninstalling may delete your existing configuration.
How should you handle a mismatch between the displayed version and the package filename?
The displayed version comes from app-level release information, while each download link points to a specific package record; they may update at different times. Don’t modify download URLs to guess other versions. Check the version in the installer or app after downloading. Back up your old configuration before installing if you need to migrate it.
Still can’t connect after installation? Visit the FAQ and troubleshoot subscription updates, system proxy, and routing settings.