Choose a ClientPlatform → Core → Traffic Routing
V2Ray Client Comparison
For desktop, choose v2rayN; for Android, start with v2rayNG. Android users with existing V2Fly configurations can also consider v2flyNG.
Start with your operating system, then check that the core supports the features your nodes require. Subscription management and traffic routing also affect how easy a client is to configure.
- v2rayN
- v2rayNG
- v2flyNG
Features and limitations
Three clients, compared by feature
This comparison is intended to help you choose a client; menus may differ across platforms and packages. Check core capabilities, system permissions, and the client interface separately. Scroll horizontally to view the table on narrow screens.
| Feature | v2rayN | v2rayNG | v2flyNG |
|---|---|---|---|
| Platforms | Windows、macOS、Linux | Android | Android |
| Core options | Can manage configurations for cores such as Xray-core and v2fly-core; available options depend on the package and current interface | Xray core | V2Fly core |
| Maintenance status | Actively maintained; check system and runtime requirements before upgrading | Actively maintained; check Android compatibility requirements before upgrading | Community-maintained; check recent updates and system compatibility before use |
| Ease of use | Basic imports are straightforward; understand what system proxy, TUN, and custom routing each do before configuring them | Easy to get started; after importing a configuration, grant VPN permission and check background restrictions separately | The basic workflow is similar to other mobile clients; first confirm that your configuration matches the core |
| Subscription groups | Manage subscriptions from multiple sources in one place and organize or update configurations by group | Supports subscription groups and updates, making it easy to maintain frequently used configurations on a phone | Supports subscription imports and group management; import results depend on protocol and field compatibility |
| Routing rule interface | Provides a graphical routing interface for editing domain, IP, and outbound rules | Offers routing settings for adjusting domain, IP, and per-app routing | Provides basic routing settings; available rule-editing options depend on the current interface |
| TUN and traffic routing | Offers TUN configuration options; support depends on the platform, routing core, and permissions | Uses Android's VPN service to create a virtual network interface; desktop system proxy steps do not apply | Also requires permission to use Android's VPN service, which follows a different permission flow from desktop TUN |
| Key features | Subscription groups, routing rules, system proxy management, and multiple core configurations | Mobile subscription management, per-app routing, and Xray configurations | Supports V2Fly configurations, making it easier to stay with an existing core setup |
| Best for | Desktop users who want to manage configurations centrally and fine-tune routing | Most Android users, especially those with existing Xray configurations | Android users who specifically need the V2Fly core and have confirmed their nodes are compatible |
Explore each client
Client reviews and configuration trade-offs
All three clients provide a graphical way to configure connections, but the interface, core, and operating system each play a different role. The interface stores subscriptions and generates configurations; the core handles protocols and routing; the operating system determines how apps send traffic to the local entry point. Keeping these layers separate is more useful than comparing feature names alone.
v2rayN: Desktop configuration management
Start with v2rayN on Windows, macOS, or Linux. Its desktop interface makes it easier to review subscription groups, routing modes, and system proxy status side by side. Long domain names, file paths, and JSON fields are also easier to check when editing rules. If you manage subscriptions from multiple sources, group them by purpose and update each group separately to reduce accidental deletions and duplicate imports.
Windows downloads are available in Desktop and classic WPF editions. Desktop uses a cross-platform interface, while WPF retains the classic desktop interface. These are different interfaces, not different node protocols, and neither is inherently faster. Choose based on system requirements and your preferred workflow. For macOS, select the Apple Silicon or Intel build; on Linux, check your processor architecture and package format first.
v2rayN offers extensive configuration options, so it's important to understand what each setting controls. The system proxy affects only apps that honor it; TUN handles traffic at a lower network layer. The routing mode determines which outbound the core uses for a request. Start with the system proxy to establish a basic connection, then enable TUN if your apps require it. Avoid changing multiple traffic entry points at once.
Don't choose a core by name alone. If an existing configuration relies on specific Xray features, use a core that supports them. Before switching to v2fly-core, check protocol and field compatibility. Having an option in the interface doesn't mean every configuration can be moved between cores unchanged.
Windows downloads · macOS downloads · Linux downloads
v2rayNG: A good starting point for most Android users
Powered by the Xray core, v2rayNG lets you import subscriptions, switch configurations, and set up per-app routing on Android. The basic workflow is to add a subscription group, update it, select a configuration, start the service, and grant Android VPN permission. The permission prompt is part of Android's network access controls; it isn't a subscription login and doesn't replace node authentication settings.
On Android, pay close attention to background operation. Battery optimization, background activity limits, and manufacturer-specific process management can interrupt the service. A connection may also need to be re-established when switching between Wi-Fi and mobile data. If it disconnects when the screen locks, check these settings and the client logs before blaming the core or switching clients.
Per-app routing sends only selected apps through the proxy entry point. Domain and IP routing determine the outbound used after traffic reaches the core. These settings act at different stages. Start with simple rules, confirm that your browser and target apps can connect, then add routing conditions gradually. Keep a configuration you can restore before each change.
Most newer phones can start with the arm64 package, but check your device's architecture before installing. The universal build is mainly for unknown or mixed architectures; it doesn't offer more features. If installation fails, check the Android version requirements and device architecture before trying to import the same subscription again.
View v2rayNG Android downloads
v2flyNG: Choose it for V2Fly configurations
v2flyNG is an Android alternative that follows the V2Fly core approach. It's suited to users with node configurations specifically intended for V2Fly who want to keep the same core behavior. Its advantage is configuration compatibility, not serving as a general replacement for v2rayNG. Comparing the two is useful only when you know what your configuration requires.
Similar protocol names don't guarantee support for the same parameters. If a subscription uses core-specific features, some fields may be missing after import or the client may fail to start. Before migrating, note the protocol, transport, TLS settings, and routing dependencies, then check whether the client preserves all required fields. Don't remove unfamiliar fields just to force the configuration to start.
This client also requires Android VPN permission and can be affected by background management or another VPN app already in use. Stop the existing connection before testing a switch to avoid mistaking a permission conflict for a failed node. Evaluate its maintenance based on actual update activity; don't assume it's better for older devices or uses fewer resources.
Narrow down your options by use case
Four common use cases
Choose a client that covers your main platforms first, then consider core requirements. Subscription count, device age, and labels like “advanced” don't replace checking configuration and system compatibility.
How to choose
Choose a platform, then verify your configuration
For desktop, choose v2rayN; for Android, start with v2rayNG. v2rayN is well suited to centralized subscription management and routing rule editing, while v2rayNG handles everyday Android connections and per-app routing. Reserve v2flyNG for Android setups that specifically require the V2Fly core; there's no need to keep switching clients on the same device just to compare them.
A client doesn't change the quality of the remote service, and its name alone can't tell you how fast a connection will be. To compare performance, keep the network, node, transport settings, and test destination the same, and rule out differences in routing and DNS first. Results from different configurations usually don't show which client performs better.
Once you've chosen a client, visit the downloads page and select a package for your platform and processor architecture. For your first import, follow the user guide. For cross-platform setup and system permission details, see the installation guide. If protocol or core terms are unclear, check the glossary before changing your configuration.