Choose v2rayN for desktop and v2rayNG for Android. Confirm your operating system first, then choose the CPU architecture and package format.
All three clients are free and open source. This site organizes download links and configuration guides; each client’s own project maintains its releases and development.
Windows client
Both options below are x64 packages. Check your system type under “Settings → System → About” first.
Desktop: a modern cross-platform UI. A good choice for a first installation or if you want a similar interface across desktop operating systems. Menus may differ from the classic edition, so use the labels shown in your current interface when looking for subscription, routing, or system proxy settings.
WPF: the classic, stable edition. Its traditional Windows desktop interface suits users who know the classic layout and want to keep their familiar workflow. The choice is about the interface and runtime environment; using the same configuration in a different interface won’t improve connection quality.
System requirements and installation
Check
Requirement and guidance
Operating system and architecture
For modern 64-bit Windows. The downloads on this page are x64 and do not support 32-bit systems.
Runtime
Check the installer for the minimum supported OS version and required runtime components. Don’t rely on the filename to determine compatibility.
Permissions
Standard system proxy and TUN have different permission requirements. Enabling TUN may require administrator approval.
After downloading the ZIP, extract the entire archive to a location you can write to, then run the installer inside. Don’t launch it from the archive viewer or copy files from different versions into the same folder. Once installation is complete, open v2rayN and confirm the main window loads before opening subscription management.
If another proxy app is running, exit it first and check the system proxy settings. Multiple clients changing proxy ports can prevent browsers from connecting or leave a stale proxy behind after you quit. Start with a standard system proxy connection; once it works, try TUN if needed. This makes troubleshooting easier.
If you already have a configuration, export or back it up before switching between Desktop and WPF. Don’t assume the two editions automatically share all data. Check your subscription groups, routing rules, and listening ports in the new interface before removing the old installation.
macOS client
Open the Apple menu and choose “About This Mac.” Select a package based on the “Chip” or “Processor” field.
Apple silicon uses arm64. Choose this download if “About This Mac” shows an Apple M-series chip. Don’t guess based on the computer’s age or appearance; models in the same series may use different processors.
Intel uses x64. Choose this download if the Processor field shows Intel. A native-architecture package avoids the need for an extra compatibility layer. If you see an architecture mismatch warning, check the chip again instead of repeatedly changing permissions.
System requirements and first launch
Check
Requirement and guidance
Chip architecture
Choose arm64 for Apple silicon and x64 for Intel. The package should match your device’s native architecture.
OS compatibility
Use a macOS version supported by the selected build. If the system reports that your version is too old, check the compatibility requirements first.
Permissions
Grant network-related permissions when prompted. TUN and the standard system proxy use different connection methods.
Open the DMG and copy the app to the Applications folder, then launch it from there. Don’t keep running it from the mounted disk image; updates, permission records, or ejecting the image can disrupt future use. Once installed, you can eject the image and keep the downloaded file for your records.
If a security prompt appears on first launch, confirm the file’s source and the selected architecture, then follow the specific guidance under “System Settings → Privacy & Security.” Don’t disable system-wide security just to launch one app. If the app is reported as incompatible, check the OS version requirements first rather than assuming every error is a permissions issue.
After importing a configuration, confirm the app has started its service before setting the system proxy. Some apps don’t use the system proxy; they may need a proxy configured in-app, or you can consider TUN after confirming a standard connection works. See the Proxy Modes section of the user guide for details on each connection method.
Android client
We recommend v2rayNG. Consider v2flyNG only if you have a specific configuration or core compatibility requirement.
v2rayNG uses the Xray core and provides a graphical interface for importing subscriptions, configuring routes, and setting up per-app proxying. For most phones released since 2015, arm64 is a good starting point, but some devices still run a 32-bit system. Check which app architectures your device supports.
The Universal build includes multiple architectures, making it a practical choice if you can’t identify your device type. Its main difference from arm64 is the range of architectures bundled, not the proxy mode or subscription type. You’ll still need to import your own server configuration and grant the required system connection permission.
v2flyNG uses the v2fly core and is an alternative when you need compatibility with configurations for that core. A similar interface doesn’t mean every protocol, transport option, or configuration extension is interchangeable. Before switching, check which features your subscription uses; don’t rely on the file extension alone to determine compatibility.
Choose an architecture as described above: select arm64 if your system supports 64-bit apps, or Universal if you’re unsure. Each client can store its own configuration, but Android’s VPN connection is generally limited to one client at a time. Stop the other client before testing.
System requirements and connection permissions
Check
Requirement and guidance
Architecture and OS
The arm64 package requires a system that supports 64-bit apps. Check the installer’s compatibility prompt for the minimum Android version.
Installation permissions
If needed, allow the current browser or file manager to install apps. You can revoke permission for that source after installation.
Network permission
Confirm the system VPN permission when starting a connection. Battery optimization and auto-start settings may affect background operation.
Open the downloaded APK from your downloads list or file manager. If Android reports a conflict with an existing app, first check which client is installed and which release channel it came from; builds signed differently may not install over each other. Don’t rush to uninstall the existing app. Export any needed configuration first to avoid losing manually added servers and rules.
The first time you connect, Android displays a VPN permission prompt. This lets the client route device traffic locally; it doesn’t mean your configuration is ready to use. After granting permission, check that a server is selected, the service is running, and the subscription data is complete. If the connection drops in the background, check battery optimization, auto-start, and background data restrictions.
Per-app proxy settings determine which apps use the connection. When troubleshooting, check whether your test browser is included in the allow or exclude list, then check routing. Disconnect any other active VPN app first. See the user guide for setup steps, and the Client Choice notes for core differences.
Linux client
First check which package management system your distribution uses, then confirm the processor architecture. Choose deb or rpm based on compatibility, not just file size.
deb packages are for distributions that use the Debian package management system; rpm packages are for distributions that use RPM. Matching the format is only the first step; let your package manager check library dependencies and distribution compatibility. Don’t ignore dependencies to force an installation.
x64 is usually written as amd64 in deb filenames and x86_64 in rpm filenames; arm64 is usually written as aarch64 in rpm filenames. These names describe processor architecture, not client capabilities. Choose the build that matches your desktop computer or ARM device.
System requirements and desktop integration
Check
Requirement and guidance
Desktop environment
Requires a desktop session that can run graphical apps. This page provides GUI client packages.
Packages and dependencies
Choose deb or rpm for your distribution. The system package manager checks dependencies and base library versions.
Architecture and permissions
Choose x64 or arm64. TUN may require additional system permissions and routing configuration.
Open the package in your file manager and use your distribution’s software installer to check dependencies. If the desktop installer reports missing components, resolve the dependency sources and system compatibility issues before trying again. An rpm package is not guaranteed to run on every RPM-based distribution.
After first launch, confirm the client service is running before configuring the desktop system proxy. Desktop environments, browsers, and apps can handle proxy settings differently; opening the client window doesn’t mean every app is connected. Start by testing an app known to follow the system proxy, then check other programs.
TUN uses a virtual network interface, routes, and DNS. Record your existing network settings, confirm the standard proxy works, then follow the guide to configure each item. If a feature needs more permissions, grant only those required; don’t run your entire desktop session with elevated privileges.
AFTER INSTALL / CONFIGURATION
What to configure after downloading
The installer deploys the app; subscriptions, connection methods, and routing determine how it connects. Follow the steps in order to make issues easier to isolate than changing several settings at once.
First-time setup: import, then connect
Prepare a subscription URL or server settings you’re authorized to use. Add a group in the client’s subscription manager and update it. Once configurations appear in the list, select a server and start the service. Subscription URLs may contain credentials; don’t share the full URL in public screenshots or support requests.
Next, choose the system proxy or Android VPN connection and test with a specific app. A stopped service, an app that isn’t using the proxy, and an unreachable server are different issues and should be checked separately. Global and bypass modes control routing; they don’t start the service or grant system permissions.
Before updating, save your subscription groups, custom routes, and DNS settings, and note your listening ports and TUN status. Exit the old process before installing to avoid locked files. After launching the new version, check that it reads the correct data directory and configuration. Don’t immediately recreate all your subscriptions.
Version labels and package filenames identify a release; choose a package based on your OS, architecture, and build type. If something goes wrong after an update, check the logs and compare what changed. Once connected again, enable advanced features one at a time and keep a known-working configuration as a troubleshooting baseline.
Do I need a subscription or server configuration after downloading a client?
Yes. The client reads your configuration, routes app traffic, and runs the core; the installer does not include a working server or subscription. Prepare a subscription URL or server settings you are authorized to use, import them into the client, and then choose a proxy mode.
Which should I choose: the Windows Desktop or classic WPF edition?
If you’re new to v2rayN, start with the Desktop edition, which uses a modern cross-platform interface. Choose the classic WPF edition if you prefer the familiar Windows layout. Both are v2rayN. Back up subscription groups and custom rules before switching, and don’t let both instances manage the system proxy at the same time.
Should I choose arm64 or Universal for Android?
Most phones released since 2015 are a good starting point for arm64, but make sure the system supports 64-bit apps. If you can’t confirm the architecture, or arm64 reports an incompatibility, choose Universal, which includes multiple architectures. It’s usually a larger download and does not improve connection quality.
What should I back up before updating?
Back up subscription groups, custom servers, routing rules, and DNS settings. Note whether the system proxy and TUN are enabled. Exit the old client before installing the update. When you launch the new version, confirm it reads your configuration correctly before reconnecting. Backups may contain sensitive connection details, so store them somewhere you control.
The installation completed, but I can’t connect. What should I check?
First, confirm the subscription has been updated and a server is selected. Then check the system clock, whether the service is running, and any errors in the logs. On desktop, check the system proxy or TUN; on Android, check VPN permission and per-app settings. Test a known-working configuration before adjusting routing or DNS, and change one thing at a time.