Client downloads Platform → architecture → package format

V2Ray Client Downloads

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

Free, open-source clients Desktop and Android setup guides First-time setup guide →

v2rayN

Recommended 7.24.1

Windows x64 · Desktop or classic WPF edition

Desktop edition

Newer cross-platform UI · Recommended for first-time installs Download Desktop · x64

The Desktop edition uses a newer cross-platform interface, making it a good fit if you want a similar workflow across desktop operating systems. Check server settings, subscription groups, routing, and core settings separately; similar interfaces don’t mean system proxy behavior is identical on every platform.

Classic WPF edition

Classic, stable edition · Familiar Windows workflow Download WPF · x64

The WPF edition keeps the classic Windows interface and menu layout. The two editions aren’t different speed tiers: connection performance depends mainly on the server, route, protocol combination, and routing settings—not the UI framework.

Manage subscriptions and routing with a GUI · Connection support depends on the selected core and configuration

Windows installation requirements and steps

CheckRequirement
System and architectureFor Windows x64. Check your system type under Settings → System → About.
Package formatThe download is a ZIP archive. Extract it to a dedicated folder, then run the installer or client as directed by the files inside.
Runtime environmentSystem version and runtime requirements vary by release. If you’re prompted to install a missing runtime, add the compatible components listed in the prompt.
Permissions and traffic handlingSystem proxy and TUN have different permission requirements. For TUN, follow the client prompts to grant the required permissions.

Don’t launch the program from the ZIP preview window. Extract all files first so the app can access its resources, configuration, and components in the same folder. Choose an installation location your account can write to. If saving configuration fails, check folder permissions before considering a reinstall.

After installation, import a subscription or server configuration and select the entry you want to use. System proxy settings affect only apps that follow them; if a particular app bypasses the proxy, check its network settings first. Before switching between Desktop and WPF, export your configuration, quit the old app, and clear any leftover system proxy settings to prevent both instances from changing them at once.

After installation: import, route, and verify

The installer gets the app running. Server configuration, traffic routing, and routing rules must be set up separately.

  1. Import a configuration you’re authorized to use

    A subscription URL retrieves a set of server configurations; an individual share link imports one entry. Use the correct field for each. After importing, check the protocol type, address, port, transport, and security settings, then test a single entry. Subscription updates usually refresh the server list; they don’t necessarily sync local routing, DNS, or proxy mode.

  2. Check how apps send traffic through the proxy

    On desktop, system proxy settings mainly affect apps that follow them. On Android, VpnService handles traffic, with optional per-app proxy settings. Routing rules apply only to connections that reach the core; they don’t replace system proxy settings or VPN permission. First confirm how traffic enters, then decide which domains and addresses should use proxy, direct, or block.

  3. Check logs and test real connections

    Once the service is running, make a real request from the target app and use the logs to confirm whether a connection was established. Latency test results, app status, and actual download speed measure different things. For timeouts, check system time, configuration updates, transport settings, DNS, and logs in that order. Avoid changing several settings at once so you can identify the cause.

Updates and configuration migration

The client app, server configurations, and local settings are separate types of data. Handle each one when updating.

Back up first, then replace the app

Before updating, export the server configurations you want to keep, and separately note routing rules, DNS, listening ports, and per-app proxy settings. Export options vary between clients, so an export of server configurations isn’t necessarily a full backup. Backup files and subscription URLs may contain access credentials; store them securely.

You can usually update an app in place, but the result depends on system installation rules, app signing, and the installation method. If you see a signing or dependency warning, read the specific reason before choosing a migration plan. Don’t delete the old app or its configuration folder before backing up.

A core name alone doesn’t guarantee compatibility

Project V is the ecosystem behind related proxy tools. V2Fly continues development of the V2Ray core, while Xray is part of the related technology family and adds its own features. v2rayN manages desktop configurations; on Android, choose between v2rayNG and v2flyNG based on the capabilities of their respective cores.

These clients are released as open-source software; refer to each project and component for its specific license terms. When choosing a client, check the combination of protocol, transport, and security settings rather than looking for support for a single protocol name. After migrating, test one configuration before restoring complex rules.

Download and installation FAQ

Check installation requirements first, then troubleshoot connection settings. Switching packages won’t solve every problem.

Does downloading the client include a working server configuration?
The installer contains the client app, not a server configuration or subscription service. After installation, import a subscription URL or individual share link that you’re authorized to use, then check the protocol, transport, security settings, and routing. A free client does not mean the server service is free.
Which should you choose: the Windows Desktop or classic WPF edition?
For a first install, choose Desktop, which uses a newer cross-platform interface. If you’re used to the original Windows interface, choose the classic, stable WPF edition. Their interfaces and settings may differ, so export your configuration before switching. Avoid enabling system proxy or TUN in both at once.
Which Android package should I download: arm64 or universal?
Most phones released after 2015 are best suited to arm64, but make sure the operating system supports 64-bit apps. A 64-bit-capable processor doesn’t guarantee a 64-bit system environment. If you’re unsure of the architecture or arm64 is reported as incompatible, try the universal package, which supports more architectures and is usually larger.
Do I need to uninstall the old version before updating the client?
You can usually install over the existing version if it’s the same app, has the same signing key, and meets the system’s update requirements. Before updating, export your server configuration and separately note your routing, DNS, and per-app proxy settings. If you see a signing conflict, don’t uninstall right away. Check the package source and back up your data before deciding how to proceed.
Can I use Linux deb and rpm packages interchangeably?
Choose the package format used by your distribution. Debian- and Ubuntu-based systems typically use deb; Fedora- and RHEL-based systems typically use rpm. You’ll also need to match the x64 or arm64 architecture. A matching file extension doesn’t guarantee that dependencies are met. If the installer reports a dependency or runtime issue, check your distribution version and the package requirements first.
The app is installed, but traffic isn’t going through the proxy. What should I check first?
First, make sure you’ve imported and selected a working configuration. Then check that the service is running and that system proxy settings or VPN permission are active. Confirm that the app uses the system proxy, isn’t excluded by per-app rules, and that routing selects the expected outbound. An app opening successfully only confirms that its interface runs; it doesn’t mean a connection has been established.