Project V Ecosystem · GUI Setup Guide

V2Ray GUI Clientv2rayN / v2rayNG

Choose an open-source client for your device, then configure your connection step by step—from subscription import to traffic routing.

Choose by operating system
Protocols and security
  • VMess
  • VLESS
  • Trojan
  • SS
  • REALITY
Core families
  • Xray
  • V2Fly

Client downloads

Choose a package for your system

Use v2rayN on desktop, v2rayNG as the first choice on Android, and consider v2flyNG when you need the V2Fly core. Check your device architecture, then find the matching download on the downloads page. After installation, you’ll still need a valid server configuration or subscription URL to connect.

Windows

v2rayN comes in a desktop edition and a classic WPF edition. The desktop edition uses a cross-platform interface, making it a good fit if you want a similar experience across desktop systems. The WPF edition retains the classic desktop interface, so choose based on your preferences. For both editions, configure the protocol, transport, and security layer to match your server; the interface alone does not determine connection support.

Before installing, check the system requirements and runtime dependencies. If you already have a working configuration, note your subscription groups, routing rules, and local listening settings before upgrading. This makes it easier to pinpoint problems if something goes wrong.

Go to downloads

macOS

v2rayN provides separate downloads for Apple Silicon and Intel Macs. Check your chip in About This Mac, then choose the matching architecture. Chip architecture and protocol type are unrelated: the former determines whether the app can run, while the latter determines how the client connects to the server. You don’t need to change the protocol in your subscription just because you switched computers.

First, confirm that the standard system proxy works. Then configure broader traffic routing if needed. If the system asks for authorization, read its prompt carefully and make sure it refers to the client you downloaded.

Go to downloads

Android

v2rayNG uses the Xray core and is the recommended choice for Android. v2flyNG uses the V2Fly core and is an alternative for users with compatible configurations. Most devices use arm64; if you’re unsure which architecture to choose, check the universal build details. After importing a subscription, confirm that its entries use protocols and security layers supported by the selected core. Repeatedly importing the same incompatible configuration into both clients won’t fix the issue.

You’ll need to grant the system’s VPN permission to connect. If the connection drops when you switch apps, check battery optimization, background activity permissions, and whether another app is using the VPN interface. These system behaviors do not necessarily mean your subscription is invalid.

Go to downloads

Linux

v2rayN offers deb and rpm packages for both x64 and arm64. Choose the package format used by your distribution, then select the matching processor architecture. The GUI client helps you manage subscriptions, choose servers, and adjust routing on desktop. Package format does not affect protocol support; that depends on the core used by the client.

System proxy settings in a desktop environment may not apply to every app. If your browser connects but another program does not, first check whether that program uses the system proxy. Then consider TUN mode and any required permissions; reinstalling the client should not be your first step.

Go to downloads

Configuration features

Subscriptions, protocols, and traffic routing

Choose a configuration topic on the left. The interface examples illustrate settings, but menu names may differ between clients. Use the details provided by your server and the capabilities of your current core when entering parameters.

Update subscription (without proxy)
Update subscriptions automatically
subscription

A subscription URL groups server configurations in one place, making it easy to sync entries regularly. In v2rayN, use subscription groups to organize sources; in v2rayNG, add a URL in subscription settings and update it. For your first import, keep the original URL and check that recognizable entries appear in the group before connecting. If an update fails, distinguish an expired URL from an unreachable network or an incompatible response format. Whether to update through a proxy depends on whether the subscription URL is reachable. Subscriptions are easier to sync than pasting share links one by one, but an update may overwrite manually edited entries.

See how to import a subscription →

Open-source ecosystem and configuration boundaries

Project V, V2Fly, and Xray

V2Ray is one of the core projects in the Project V ecosystem. Understanding the relationship between the client, core, and protocol is more useful than memorizing a list of settings: the client provides the interface, the core handles connection logic, and the protocol defines how the two sides communicate. Desktop and mobile devices can use different clients, but the server parameters must be represented correctly in each one.

Project background: from core to GUI

Project V grew out of a modular approach to network proxy tools. V2Ray brings inbound and outbound connections, routing, and transport together in one configuration system. V2Fly continues the community maintenance and development of V2Ray, while Xray grew from related code and developed its own implementations in areas including protocols and security layers. They are not simply two skins for the same program, and similar names do not guarantee that configurations are interchangeable.

GUI clients build on these capabilities with subscription groups, share-link parsing, menu-based settings, and log viewing. When you select an option in the interface, the client typically converts it into a configuration the core can understand. Saving successfully only means the input was accepted; check the core logs and server status to confirm that it can start and connect.

That’s why setup guides need to identify both the client and the core. A menu called “Routing” may offer different presets in different clients, and the same share link may have fields interpreted differently by each implementation. When moving to another device, test a basic connection before bringing over custom rules. This makes issues easier to troubleshoot than migrating every existing setting at once.

Choosing a core: start with configuration compatibility

Both Xray and V2Fly can handle a range of proxy configurations, but their supported fields, transport combinations, and extensions change as they evolve. For features such as REALITY, choose a core that explicitly supports them. Use existing V2Fly configurations in a format it supports; changing a protocol name alone will not produce the same result.

Connection quality also depends on server load, network route, transport, and device performance. A protocol name alone cannot guarantee lower latency, less battery use, or higher speeds. On mobile, pay particular attention to background connection stability, frequent reconnections, and features you don’t need. If you have no specific requirement, keep the defaults and change one setting at a time to see what actually makes a difference.

If a subscription contains multiple protocols, let the client generate configurations using its supported features. If the logs report an unknown field, a missing required parameter, or an unsupported security layer, check the import and core capabilities first, then ask the configuration provider to confirm the parameters. Switching servers repeatedly while keeping the same invalid field usually won’t fix a startup problem.

Open-source licensing: check each layer

v2rayN, v2rayNG, and v2flyNG are open-source GUI clients whose core code uses GPL-family licenses. V2Fly’s v2ray-core and Xray-core use the MPL 2.0 for their core code. The client, core, and bundled dependencies may have different licenses. Check the licenses and third-party notices included with the specific release; a core’s license does not automatically apply to the entire package.

For users, open source means the implementation can be studied and the community can collaborate on issues, compatibility, and improvements. It does not tell you whether a configuration source is trustworthy or mean every subscription service is safe. Treat the client as a tool, and independently check who operates the server, who provides the subscription URL, and what may be recorded in logs.

When reporting an issue, share only the error type, relevant setting names, and essential details about your environment. Subscription URLs, authentication fields, and full configurations may contain credentials, so don’t post them publicly. Troubleshooting usually requires the context around an error, not a full copy of your personal configuration.

Updates: manage the app and subscriptions separately

Updating the client, updating the core, and updating a subscription are different operations. A client update mainly affects the interface, parsing logic, and feature integration. A core update can change protocol and configuration behavior. A subscription update syncs server entries. If only a subscription update fails, that does not mean the client installation is damaged. If the core won’t start, deleting and rebuilding all subscriptions should not be your first step.

Before updating, note your working configurations and custom settings. After the update, keep your existing connection method and test regular browsing and commonly used apps before trying new features one at a time. If you change the core, DNS, routing, and traffic handling mode all at once, it’s difficult to tell which change caused a problem.

The homepage provides platform links and setup guidance; download packages are listed on the downloads page. Decide whether to update based on your current issue, feature needs, and release notes—not just a version number change. For easier long-term maintenance, keep configurations simple, give every custom rule a clear purpose, and remove rules you no longer need.

Which client should you use?

v2rayN: Designed for desktop use, v2rayN is well suited to managing multiple subscription groups, viewing logs, and maintaining common routing rules. Interfaces, system proxy integrations, and permission behavior can differ across desktop platforms, so don’t assume instructions for one will apply to another. If you already have a configuration, first confirm that your usual protocols and custom rules load correctly before changing the interface or core settings.

v2rayNG: Built for Android and powered by the Xray core, v2rayNG brings subscriptions, share links, and connection settings together in a mobile interface. System VPN permission, per-app proxy settings, and background activity policies all affect which traffic is handled. If an app can’t connect, check both your proxy rules and whether the app is excluded from traffic handling; reimporting the subscription may not help.

v2flyNG: For Android users who need the V2Fly core, v2flyNG is an alternative when you have a compatible configuration. Its name is similar to v2rayNG, but don’t assume they have the same underlying capabilities. Check the protocol and transport parameters before choosing. If your configuration relies on a specific core extension, use a client that supports it rather than repeatedly removing or changing essential fields after import.

All three clients require you to provide a valid connection configuration. A GUI manages configurations; installing it does not create a server. If you’re new to setup, start with the setup guide. For protocol, security layer, and core compatibility, see the protocol guide. If subscription updates or connections fail, use the FAQs to narrow down the cause.

Configuration guides

Routing, certificates, and subscription management

Once the basic connection works, configure rules and management features one at a time. The three articles below cover traffic routing, handshake errors, and organizing multiple subscriptions. Read the one that matches your current issue; there’s no need to change every setting first.