Package selection / subscription import

V2Ray Client Downloads
Choose a package for your operating system

Choose v2rayN for desktop and v2rayNG for Android. Check your processor architecture before downloading the right package. After installation, open subscription groups and import your existing subscription.

Choose a platform and package ↓

Choose a platform and client

Choose an operating system, then check the architecture and package format on its card. Version details change as downloads are updated; compatibility also depends on your device and environment.

v2rayN / Windows

Recommended7.24.1

Choose an interface edition on the same client card. Desktop uses a modern cross-platform UI. The classic WPF edition retains the traditional Windows interface and is a stable classic option. Stick with WPF if you’re used to it, or start with Desktop for a first install.

Desktop edition

x64 · ZIP Download Desktop edition

A modern cross-platform UI. Download the ZIP, extract it, then run the installer inside. Don’t launch it from the archive preview.

Classic WPF edition

x64 · ZIP Download classic WPF edition

The stable classic Windows edition. Save your subscription URL and custom routes before switching interface editions, so interface differences aren’t mistaken for a lost subscription.

Windows requirements and installation

CheckRequirements and actions
System and architectureFor Windows x64. Check Settings → System → About for your system type. For older Windows versions, confirm compatibility with the current release separately.
Installation environmentMake sure you have enough space to extract and install the package. If the installer reports a missing runtime component, install the component it specifies.
PermissionsUse the system proxy as needed. TUN uses a virtual network adapter and routing, and usually requires administrator privileges.

Exit any running instance before extracting and installing the package. On first launch, check the logs for core startup errors before adding a subscription group. If a port is already in use, look for another proxy process; don’t run two clients that compete for the same listening port.

The system proxy only affects apps that follow the system proxy settings. Opening the client’s main window doesn’t mean browser traffic is being proxied. After importing a subscription and selecting a node, review system proxy settings, then test access to a real site.

Import your subscription and test the connection

Set up the client in this order: configure, test, then route traffic. Troubleshoot installation and connection issues separately, and avoid changing several variables at once.

Save a subscription group

Open subscription group settings and enter an easy-to-recognize alias and the full subscription URL. The URL may contain a private token, so avoid copying extra spaces, line breaks, or punctuation added by a chat app. The https://example.com/sub?token=xxxx URL in this guide is for format illustration only; it won’t provide nodes.

View subscription import steps →

Update the subscription and test a node

After saving the group, update the subscription and confirm that the server list contains configurations. If the update fails, check whether the URL has expired, then choose whether to update through the proxy based on your network. Select a node and run a real connection latency test. TCPing only helps check whether a port is reachable; it can’t replace a real request test.

About real connection latency tests →

Choose system proxy or TUN

For a first desktop setup, start with the system proxy and identify which apps use it. If you need to route more traffic, learn about TUN permissions and routing changes first. On Android, approve the VPN connection request when prompted; then verify it with an actual site request and your exit IP.

View proxy mode settings →

Keep a recoverable configuration

Before updating the client, save your subscription URL, custom routes, and port settings. Manage nodes that can be re-fetched from a subscription separately from configurations you added manually. When something goes wrong, note the key error in the logs and determine whether it’s an installation, core startup, subscription update, or node connection issue. Reinstalling repeatedly isn’t a substitute for troubleshooting.

Check which clients are right for you →

Package selection FAQs

Check your operating system, architecture, and installation method first. For subscription updates and connection issues, see the FAQ.

Windows Desktop or classic WPF: which should you choose?

For a first install, start with the Desktop edition, which uses a modern cross-platform UI. The classic WPF edition is a stable Windows version for users who prefer the traditional interface. Both downloads are x64. Save your subscription URL and custom settings before switching, and don’t let both instances manage the system proxy at the same time.

Android: arm64 or universal?

Most phones released after 2015 will use arm64, but check which app architectures your device actually supports. Try the universal package for older devices, systems limited to 32-bit apps, or when you’re unsure of the architecture. If installation fails, check the Android version, available storage, and the signature of any existing app. Don’t keep installing over the old version.

What’s the difference between Apple Silicon and Intel packages for macOS?

The Apple Silicon package is for M-series chips; the Intel package is for Intel processors. Open About This Mac from the Apple menu and check the Chip or Processor field, then choose the matching DMG. The same package format doesn’t mean the same processor architecture, so use the native package for your Mac.

Linux: should you download deb or rpm?

Debian, Ubuntu, and related distributions generally use deb packages; Fedora, RHEL, and related distributions generally use rpm. Check whether you need x64 or arm64, and let your system’s package installer check dependencies. Distributions using the same format may still require different dependency versions, so don’t force an installation past dependency errors.

Why are there no nodes to connect to after installing the client?

The client manages configurations; its installer doesn’t include a subscription URL or nodes. Get a subscription URL you’re authorized to use, save it in a subscription group, and update the subscription. Then select a node and run a real connection latency test. Once it passes, configure the system proxy or enable TUN if needed, then check your exit IP.

What should you save before updating the client?

Save your subscription URL, subscription group aliases, custom routing rules, and port settings. Use the client’s export feature to back up configurations where available, then exit the old instance before installing the new package. After launch, check your subscriptions and routes, then run a real connection latency test again. Don’t share backup files or screenshots containing tokens.