Client Downloads / Platform and Architecture

V2Ray Client Downloads

For desktop, choose v2rayN; for Android, start with v2rayNG. Confirm your operating system first, then choose the processor architecture and package type.

Install in this order: choose a package → install the client → import a subscription → set up the proxy

New here? Read the Getting Started guide →

Desktop client / x64

Windows downloads

The same client comes in two interface editions. Desktop has a newer cross-platform UI, while WPF is the classic, stable edition with a familiar Windows desktop layout. If you’re new, try Desktop; if you’re used to WPF, stick with the classic edition.

Before you install

Windows requirements and where to check
ItemRequirements and checks
SystemUse a supported Windows 10 or 11 environment where possible. Follow the installer’s prompts for specific dependencies.
ProcessorBoth packages on this page are x64. Check your system type under Settings → System → About.
InstallationMake sure the configuration location is writable. If a runtime is missing, follow the setup instructions for your version.
PermissionsSystem proxy and TUN have different permission requirements. Review the permission prompts before enabling TUN.

Don’t run the program from the archive preview. Extract all files to a separate folder first, then run the installer. Keep Desktop and WPF in different folders to avoid overwriting configuration files. Once installed, import a subscription before choosing a system proxy mode.

How to choose

Check the architecture first, then the package type

The download options differ by runtime environment, not connection quality. Choose a package that matches your operating system, processor, and client configuration needs.

x64 and ARM64

x64 is common on Intel and AMD desktop devices and may also be labeled amd64 or x86_64. ARM64 may appear as aarch64 or arm64-v8a. These labels refer to processor instruction sets, so don’t treat them as interchangeable just because your system says “64-bit.” On Android in particular, a 64-bit processor doesn’t necessarily mean the current system supports 64-bit apps.

Choosing the wrong architecture usually causes an error during installation or startup; changing the subscription repeatedly won’t help. Check your device details in the system’s About page, then download the package for your platform. A universal APK supports multiple architectures; it doesn’t improve network performance.

Client and configuration compatibility

v2rayN is for desktop systems; v2rayNG and v2flyNG are for Android. v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Support for protocols and transport options varies by version. The presence of VMess, VLESS, or Trojan in a subscription doesn’t guarantee that every advanced setting is supported.

Check which client and version the configuration provider recommends. If an import reports an unsupported transport or field, check compatibility instead of switching package architecture. Project V, V2Fly, and Xray are related open-source technology ecosystems. For hands-on use, start with the GUI client; learn more about the core concepts in the user guide.

What to do after installation

Import a subscription and set up the proxy

The package only installs the client. You’ll need to obtain server addresses, authentication details, and subscription content separately. Installing the client doesn’t establish a connection.

01 / Install and launch

Make sure the app opens successfully

After installation, launch the client from your system’s app list. On Windows, extract the package fully; on macOS, copy the app first; on Linux, resolve dependencies; on Android, grant installation permission. If the app quits before reaching its main screen, check system compatibility, runtime requirements, and file permissions first. Changing the subscription address won’t usually help at this stage.

Keep the default listening settings for the first run. Note the client’s local port and make sure another proxy app isn’t using it before importing anything. Don’t leave multiple old client windows running, or you may mistake which configuration is active.

02 / Subscription and servers

Add a group, then update the subscription

In v2rayN, subscription groups are usually added under Subscription Group Settings: enter a label and address, save, then update the subscription. In v2rayNG, add the address under Subscription Group Settings, then return to the main screen to update. Menu wording can vary by version; the goal is to save the address first, then fetch the server list.

A single share link and a subscription URL are different types of content. Use the import option that matches the link format. After updating, select a server manually; seeing a list doesn’t mean the client is routing app traffic yet.

03 / Proxy and verification

Choose a mode, then test real-world access

On desktop, start with system proxy mode so apps that follow the system proxy use the local connection. If you need to route other apps, review the TUN permission, routing, and DNS requirements first. On Android, confirm the system VPN request after tapping Connect, and check that no other VPN service is running.

Check both the client logs and access from your apps. A latency test only reflects one test method; it can’t confirm that everything works. If a browser works but another app doesn’t, first check whether that app uses the system proxy, then decide whether you need a different routing mode.

Preserve settings and troubleshoot

Back up before updating; isolate the cause if something fails

Update the client and subscription separately

A client update replaces the app; a subscription update refreshes server configurations in a group. They’re independent. Reinstalling the client usually won’t fix an expired subscription, changed credentials, or an incorrect update URL. Check the address in Subscription Group Settings first, then use the logs to determine whether the issue is the URL, a failed network request, or an unsupported format.

Before upgrading, stop the connection and quit the client. Use its backup or export feature to save essential settings. Record subscription groups, custom routes, local listening ports, DNS, and TUN status. Before migrating between versions, review what has changed and decide what to restore. Don’t copy every file from the old folder over the new version.

Troubleshoot by stage

If a download doesn’t complete, check your browser’s download history, available storage, and network connection. If installation fails, check the system version, architecture, package type, and signature of any older version. If the app won’t start, check runtime dependencies and permissions. If it starts but won’t connect, check the subscription, selected server, system proxy, routing, and DNS. Record the exact error; it’s more useful than a vague “won’t open.”

When switching clients, quit the old one and clear its system proxy settings first. The new client may use a different local port, so update any proxy settings entered manually in other apps. After testing, make sure only the intended proxy or VPN service is running to avoid conflicting routes and inconsistent results.

For subscription issues, see Troubleshooting subscription update failures. To compare permissions and routing across platforms, follow the cross-platform installation and setup guide. You don’t need to change every advanced setting before downloading: get a basic setup working first, then add custom rules as needed.

Download FAQs

Choosing and updating a client

Which should you choose: Desktop or classic WPF for Windows?

For a first installation, try the Desktop edition with its newer cross-platform interface. Choose the classic WPF edition if you prefer the familiar Windows desktop layout. Check the runtime requirements for your chosen version, and extract each package to a separate folder.

Should you download the arm64 or universal Android version?

Most mainstream phones released since 2015 can start with arm64, but confirm that the system supports 64-bit apps. Choose the universal version if you’re unsure of the device architecture or can’t install the arm64 package. It includes multiple architectures and is usually larger; it won’t improve connection speeds.

Why can’t I connect after downloading the client?

The client doesn’t include a ready-to-use server configuration. Import a subscription URL or share link you’re authorized to use, update the server list, and select a server. Then set the system proxy or start the Android VPN connection. Check the logs and test access in your apps to confirm it’s working.

What settings should I keep before updating the client?

Stop the connection and quit the old client first. Use its backup or export feature to save subscription groups, custom routes, and essential settings. Store backups securely because they may contain sensitive configuration. After updating, check the listening port, system proxy status, and routing mode before resuming normal use.

What should I do if macOS says the app can’t be opened?

First, make sure the download matches your Mac’s chip, then drag the app into the Applications folder. After verifying its source, check System Settings > Privacy & Security for an Open Anyway option. If macOS reports that the app is damaged or unsafe, don’t bypass the warning; download it again and check compatibility.

Which Linux package should I use: deb, rpm, or arm64?

Choose the package format for your distribution: Debian- and Ubuntu-based systems generally use deb, while Fedora- and RHEL-based systems generally use rpm. Then check whether your processor is x86_64 or ARM64. A matching package format doesn’t guarantee compatibility with every release, so check the package manager’s dependencies and system library requirements.