Skip to content
Client GuidePlatform first · Core compatibility

V2Ray Rankings
Client Picks & Downloads

Choose a client by platform: v2rayN is the desktop pick, while v2rayNG is the Android pick. Consider v2flyNG when you need a V2Fly core, and compare options based on platform and setup requirements.

Subscriptions, routing, and traffic handling

Setup order: first get a single configuration working, then organize subscriptions and routing rules. Choose a topic below for settings examples and guidance on when to use each option.

v2rayN / Subscription groups / Settings overview
Subscription groupName by source
Use proxy when updating subscriptionsChoose based on reachability
Server filteringKeep the entries you need

Subscription management: v2rayN lets you put links from different sources into separate groups, then filter servers by name after updating. For the first import, make sure the link is still valid, save the group, and run an update. A populated list does not mean a connection is active: you still need to select a server and configure the system proxy. If an update fails, distinguish an unreachable link from a format parsing error before deciding whether to enable “Use proxy when updating subscriptions.” Compared with managing lists on a phone, desktop groups make it easier to organize multiple configurations in one place. Keep filters narrow enough that they do not hide entries you need.

Read the subscription groups section →
Downloads

Choose a client by platform

Choosing a download: start with the operating system, then check the processor architecture and package format. This guide explains how to choose; download links and system requirements are on the downloads page.

Windows

v2rayN · Top desktop pickDesktop / WPF edition

Editions: the v2rayN desktop edition uses a cross-platform interface, while the WPF edition retains the classic desktop experience. New users can start with the desktop edition to learn the configuration workflow. If you already know the classic menus, choose the WPF edition based on your environment and feature needs. For either edition, extract or install it before launching the client; do not run it directly from a compressed archive preview.

Getting started with configuration: after importing a subscription, select a server and check the local proxy port and system proxy status. If a browser connects but another app does not, first check whether that app follows the system proxy, then consider TUN. Do not assume every issue is server-related, and avoid changing routing, DNS, and core settings all at once before verifying a basic connection.

Go to downloads

macOS

v2rayNApple Silicon / Intel

Choosing a chip: check the chip type in About This Mac. Apple Silicon uses arm64; Intel uses x64. Choosing the native architecture avoids extra compatibility layers. Do not rely on the computer's appearance, purchase year, or download size to identify the right build. v2rayN provides desktop configuration management; the basics of subscriptions, active servers, and routing are the same across desktop platforms.

Permissions: on first launch, follow the system prompts to grant app permissions. For system proxy or TUN, check the required authorization and network extension setup as well. Running other proxy or VPN tools at the same time can cause routing and DNS settings to override one another. If a connection fails, keep just one traffic-handling tool active, then check the app logs, system proxy status, and subscription fields in that order.

Go to downloads

Android

v2rayNG · Top pickv2flyNG · Alternative

Core selection: v2rayNG uses the Xray core as its primary selection criterion and suits Android users who need the corresponding protocol support. v2flyNG is an alternative for the V2Fly core. Both are graphical clients, so choose based on whether the core can correctly parse your configuration—not on the assumption that the recommended order is a speed ranking. If your existing setup works, there is no need to switch just because of the ranking.

Architecture and background operation: most recent mainstream phones can use arm64. If you are unsure about the architecture, check the universal build and device requirements. After installation, import a subscription, refresh the list, select a configuration, and approve the system VPN request. If the connection drops when the screen locks, check battery optimization and background limits. If the handshake never succeeds, check the protocol parameters, system clock, and server reachability.

Go to downloads

Linux

v2rayNdeb / rpm

Choosing a package: select deb or rpm based on your distribution's package system, and confirm whether the processor is x64 or arm64. Package format and architecture are separate requirements; matching file extensions do not mean a package suits your device. Desktop users can manage subscriptions and servers with v2rayN. For dependencies and runtime requirements, follow the downloads page and system prompts.

Desktop environment differences: desktop sessions may handle system proxy settings differently, and terminal programs may not inherit the desktop proxy configuration. First check which proxy method the target app uses, then verify the local listening address and port. TUN requires extra attention to permissions, virtual adapters, and existing routes. Keep a recoverable copy of your configuration before making changes, especially when connected remotely; avoid replacing all network rules at once.

Go to downloads
View all clients →
How we choose

Open-source ecosystem and core boundaries

How these picks work: this ranking organizes clients by platform support and setup needs; it does not score them. v2rayN is the desktop pick, and v2rayNG is the Android pick. If you need V2Fly core compatibility, consider v2flyNG.

Project V: from a collection of tools to a client ecosystem

Ecosystem background: Project V grew around composable network proxy components, with V2Ray as one of its best-known core projects. In everyday use, “V2Ray” is often used broadly for related clients and protocol configurations. But the graphical app installed on a device, the core that handles network connections, and the configuration supplied by a server are different things. Understanding these three layers helps distinguish an interface name from a protocol name and explains why the same subscription may be parsed differently by different clients.

Scope of each component: a graphical client stores configurations, lets you choose servers, generates runtime parameters, and manages services. The core handles connections, transport, routing, and DNS logic. A toggle in the interface does not mean every core implements it using the same fields. Before following a tutorial, check which client, core, and connection method it covers, then match those details to your setup. Similar menu names do not mean you can copy every step as-is.

Xray and V2Fly: related branches, not interchangeable names

How they relate: V2Fly continues the community development of V2Ray, while Xray is another core branch built on related technical foundations. They share some protocol concepts and configuration structures, but evolve independently, so a new feature in one should not be assumed to work in the other. Check requirements such as REALITY against the actual capabilities of Xray. For existing V2Fly configurations, review the specific protocol, transport, and security fields before deciding whether to migrate.

Choosing a client: start with the server requirements, then choose a client and core that support those parameters. v2rayN suits centralized desktop management; v2rayNG provides a common way to use Xray configurations on Android; v2flyNG offers an option for the V2Fly core. This order describes a practical starting point, not a comparison of network quality. Connection performance also depends on server status, network path, device environment, and matching parameters; the client name alone cannot tell you how well it will work.

Open source: evaluate clients and cores separately

Open-source basics: v2rayN, v2rayNG, and v2flyNG are open-source clients; Xray and V2Fly also have their own open-source code and licensing terms. Open source means the code can be inspected, used, and modified under the applicable license. It does not mean every component uses the same license or that the graphical client and underlying core are published by the same maintainers. Before modifying, redistributing, or integrating components, read the license for each one instead of assuming a client's license covers all its dependencies.

Configuration responsibility: open-source status does not replace the need to understand your settings. Subscription links may contain access credentials, so hide links, server authentication details, and personal configuration directories before sharing screenshots. When asking for help, provide the error type, steps to reproduce, and runtime environment with sensitive fields removed; this is usually more useful than publishing an entire configuration. This site covers client selection and usage. Identify the client project, core project, and configuration source separately.

Updates: application updates are not subscription updates

What gets updated: client updates mainly affect the interface, configuration conversion, and service management; core updates affect protocol implementation and runtime behavior; subscription updates fetch server entries again from an existing link. Each addresses a different issue. If no new configurations appear, check the subscription link and update logs. If the core does not recognize a field, check its capabilities. If importing fails in the interface, check the client's format support. Repeatedly refreshing a subscription cannot add a missing core feature.

Order of changes: when an existing setup is stable, save the configuration and read the release notes before changing one component at a time. After an update, test a basic connection with the original server first, then check custom routing, DNS, and TUN. If you change the client, subscription, and routing setup together, it will be hard to identify the cause even if the connection returns. The home page does not use release frequency as a recommendation criterion. Find downloads on the downloads page, and setup instructions in the guides and advanced usage sections.

Protocol and security layers: check the full configuration for compatibility

How the fields fit together: VMess, VLESS, and Trojan are proxy protocols; transport describes how data is carried; TLS and REALITY settings relate to the security layer. A matching protocol name only means some requirements are similar; it does not guarantee that the full configuration is compatible. The address, port, identity fields, transport path, server name, and flow requirements must all match. An incorrect value in any one of these fields can let an import succeed but still prevent a connection.

Troubleshooting order: first check the system clock and server parameters, then use the logs to determine whether the issue is a parsing error, connection timeout, or handshake failure. For parsing errors, check the format and supported fields. For timeouts, check the local proxy and whether the destination is reachable. For handshake failures, check the security layer and server name. Do not switch protocols repeatedly without evidence or treat disabling security checks as a standard fix. Use the glossary to understand fields and the advanced guides to learn how rules work together.

Subscriptions and routing: connect first, then refine one layer at a time

Start with a minimal setup: for your first configuration, import one entry, select it, start the connection, and verify that it works. A status showing that the service has started only means the local process or service is running; it does not mean every app is using the proxy or that the remote handshake has completed. Confirm the result in a browser or target app before adding subscription groups, routing rules, and DNS optimizations. This gives you a clear baseline for troubleshooting.

Verify traffic routing: routing needs identifiable domain or address information, while DNS affects name resolution and rule matching. Changing only one side can make rules look correct without producing the expected matches. With FakeDNS, also confirm that your traffic-handling method preserves the mapping, and watch for compatibility issues in some apps. Record rules and logs before and after changes, and add exceptions only for specific needs. Do not assume someone else's full configuration is a suitable default for every device.

Technical notes

Setup steps and troubleshooting

Where to start: follow the installation guide for a first setup; if an existing setup cannot update, see subscription troubleshooting; for security-layer errors, check the system clock and SNI. Each article focuses on one type of issue, making it easier to troubleshoot without introducing too many variables at once.

View all articles →