Desktop and Android clients

V2Ray Client Download
Choose an OS and installer

Choose v2rayN for desktop and v2rayNG for Android. Check your OS and CPU architecture, then install the app, import a subscription, configure the proxy, and test the connection.

Already installed? Continue to the setup guide →

WINDOWS / X64

v2rayN for Windows

One client, two desktop editions. Desktop is a good place to start for a new install.

v2rayN

Recommended
Windows desktop client7.24.1

Desktop edition · x64

Download v2rayN · Desktop

A modern cross-platform UI. A good fit for first-time installs and users who want a consistent workflow across desktop systems.

Classic WPF edition · x64

Download v2rayN · WPF

The classic, stable Windows WPF interface. Choose this edition if you're already familiar with its layout, menus, and settings.

Both downloads are ZIP files. Extract the entire archive before running the installer. Don't launch it directly from the archive preview.

Before you install

CheckWhat to look for
OS and architectureBoth Windows downloads on this page are x64. Open Settings > System > About and check your system type and processor information.
Runtime requirementsFollow the installer's stated minimum OS and runtime requirements. If it asks for the .NET Desktop Runtime, install the matching architecture; don't choose based on a similar name alone.
Install locationChoose a folder your account can write to. Extract the full archive first, and don't keep your configuration in a temporary extraction folder.
First launchImport a configuration and test the local proxy first. TUN may require extra permissions, so there's no need to enable it on your first launch.

Desktop and WPF differ mainly in their interface frameworks; neither eliminates the need for a server configuration. Both editions need valid server details, and you'll need to provide your own subscription URL. If your current client connects successfully, there's no need to switch just for a different interface. Save your settings first, then try one edition at a time to make troubleshooting easier if anything goes missing.

If the app closes as soon as you open it, check that you extracted all the files, then review runtime requirements, folder write permissions, and security software logs. Don't run two copies against the same listening port at once; the second may fail to start its proxy because the port is already in use. For troubleshooting steps, see Common issues.

Install, upgrade, and connect for the first time

Before downloading, check three things: your OS, its architecture, and whether you need to keep an existing configuration. Package filenames can help identify the platform and architecture, but a working connection ultimately depends on the client supporting your configuration and server settings. Don't switch installers just because of a protocol name. Identify the core features your configuration needs, then choose a compatible client.

Prepare the client and server configuration separately

Installing the client doesn't mean you're ready to connect. This page provides the app; you'll need to obtain a subscription URL, share link, or configuration file yourself and make sure you're authorized to use it. Subscriptions may contain credentials, so don't share the full URL in public screenshots, forum posts, or troubleshooting logs.

Exit the old client before upgrading

Note your local listening ports, routing mode, DNS settings, and whether the system proxy or TUN is enabled. Export your settings using the client's built-in feature, or back up the data directory it actually uses after exiting the app. Data locations vary by OS and edition, so don't assume every platform stores its configuration in the install folder. Once your backup is saved, close the app and its tray process to avoid files being locked during the upgrade.

On the first launch after upgrading, check that your subscription groups and custom rules are still there, then verify your listening ports. If the list is empty, don't overwrite your backup. First check whether you launched another installation, switched accounts, or are using a different data directory. Keep a copy of the current configuration when restoring a backup so you can roll back if the formats differ.

Verify your first connection in order

  1. Import a configuration. Add a subscription URL or import a share link in the client. Once imported, check the server details to make sure the address, port, transport, and TLS settings are present. If a subscription update fails, check the update log before changing your system proxy.
  2. Select a server. Choose an imported configuration to test. On desktop, enable the system proxy if needed; on Android, approve the VPN request. Keep routing rules simple while testing, and avoid having multiple proxy apps take over the connection at once.
  3. Confirm the proxy works. Run the client's connection test, then check access in a browser. A listening local port only confirms that the app has started; verify that requests actually reach the server. If an error occurs, record the exact log message and identify whether it's a DNS, authentication, timeout, or port-conflict issue.

If the browser works but another app can't connect, first check whether that app uses the system proxy instead of immediately switching servers. Likewise, a successful command-line test doesn't mean your browser uses the same proxy settings. For initial troubleshooting, stick to one server, one app, and one proxy mode. Change settings one at a time; this is usually easier than enabling several traffic-routing options at once.

See the complete installation and subscription import guide →

Download and installation FAQs

Which should you choose: the Windows Desktop or classic WPF edition?
For a first install, start with the Desktop edition, which uses a modern cross-platform interface. The classic WPF edition is for Windows users who prefer its familiar interface and workflow. Both require a working configuration. Back up subscriptions, routing rules, and custom settings before switching editions, and avoid running both at once to prevent local port conflicts.
How do I know whether to download x64 or arm64?
On Windows, check System type in Settings > System > About. On macOS, check the chip in About This Mac: choose Apple Silicon for an Apple M-series chip or Intel for an Intel processor. On Linux, x86_64 maps to x64 and aarch64 to arm64. Check your Android device's processor specifications; most phones released since 2015 use arm64. If you can't confirm the architecture, try the universal build, but make sure your device meets the app's system requirements.
Should I download the deb or rpm package for Linux?
Start with your distribution's package format. Debian, Ubuntu, and their derivatives typically use deb; Fedora and openSUSE use rpm. The same package format does not guarantee compatible dependencies, so check the installer or package manager's messages. Match the CPU architecture too—don't install an x64 package on an arm64 system.
Can I switch directly between v2rayNG and v2flyNG?
v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Both may recognize basic subscriptions or share links, but they don't support exactly the same protocol fields, transport options, or newer features. Prefer v2rayNG if your configuration relies on Xray features. Before choosing v2flyNG, confirm that the server settings match formats supported by the client; a successful import alone does not guarantee a working connection.
What should I back up before upgrading?
Note your local listening ports, system proxy mode, routing rules, and DNS settings, then use the client's export or backup feature to save your configuration. Subscription URLs may contain credentials, so store them somewhere you control. Exit the old client before upgrading. On first launch, check that your settings are still there and test the connection again. Don't delete the old data directory outright.
Why can't I connect after installing the app?
The installer provides the client, not a ready-to-use server configuration. Import a subscription or server details you've obtained and are authorized to use, select a server, then enable the system proxy or Android VPN connection as needed. If you still can't connect, check that the server is valid, the local port isn't in use, and the proxy mode is correct. Then review the logs for the specific error.
More connection and configuration help →