Project V Clients and Configuration Docs Open Source

V2Ray Clients & Routing

A focused hub for v2rayN and v2rayNG downloads, subscription import steps, and routing rule configuration. Choose a client for your device, then select the Xray or V2Fly core required by the node protocol instead of conflating the client, core, and subscription service.

Free Forever Community Maintained Xray · V2Fly Chinese Configuration Docs
platform.outbounds

Choose a Client by Device

The platform determines the package type, while the node protocol determines the core capabilities. Choose your device first, then check whether the subscription requires Xray or V2Fly; the download page explains architecture, chip, and installer format choices.

Desktop Pick

Windows · v2rayN

Built for desktop users who need full system proxy support, subscription groups, routing rules, and log-based troubleshooting. The download page offers both a modern cross-platform interface and the classic WPF interface; start with the desktop version on most newer devices, or keep the familiar interface if you already have an established workflow.

Go to Downloads
Desktop Client

macOS · v2rayN

The desktop client follows v2rayN configuration logic for managing subscriptions, outbounds, and routing rules. Check your device’s chip architecture before downloading: choose the arm64 package for Apple Silicon and the x64 package for Intel. Confirm the architecture in system information rather than guessing from the purchase year.

Go to Downloads
Mobile Pick

Android · v2rayNG

v2rayNG uses the Xray core and suits subscriptions requiring Xray capabilities such as VLESS and REALITY, making it a straightforward choice for many mobile devices. Prefer an arm64 package on newer devices; if the processor architecture is unclear or broader compatibility is needed, choose the universal package on the download page.

Go to Downloads
Package Installation

Linux · v2rayN

For desktop Linux users who want to manage subscriptions, system proxy settings, and routing rules through a graphical interface. Match the installer to the distribution’s package system: Debian and Ubuntu generally use deb, while Fedora and Rocky Linux typically use rpm. Also choose the correct x64 or arm64 architecture.

Go to Downloads
routing.console

Rule Sets and Configuration Panels

A V2Ray client does more than connect to nodes. Subscriptions, cores, DNS, and routing jointly determine the result; the panels below explain each area separately and show configuration snippets that are easy to interpret.

JSON Configuration View config/routing
Proxy · Direct · Block

Routing Rules Match in Order

Routing rules send different traffic to different outbounds: domains that need a proxy use the proxy outbound, local networks and specified address ranges use direct, and categories that should not be accessed go to the block outbound. Rules are checked from top to bottom and matching stops at the first hit, so specific rules generally belong first and broad fallback rules later. Unlike a simple tool with only a global switch, V2Ray rule objects can combine domains, addresses, ports, network types, and inbound tags, making usage scenarios easier to maintain as a clear rule set.

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      }
    ]
  }
}

After changing rules, first check that the tags match the outbound names in outbounds, then review the actual matches in the client log.

setup.sequence

Complete a Basic Connection in Three Steps

Do not change many advanced options at once during initial setup. Import the subscription and establish a basic connection first, then add routing and DNS rules as needed; this makes each change easier to correlate with a specific result.

View the Full Guide →
  1. 01

    Import a Subscription or Share Link

    Copy the complete subscription URL, add it as a source in the client’s subscription group, and run an update. For a single vmess:// or vless:// link, use an entry such as “Import from Clipboard.” After importing, confirm that the list shows node names, protocols, and addresses. If it is empty, first check that the copied content is complete, the subscription is still accessible, and the update produced no error message.

  2. 02

    Choose a Node and Proxy Mode

    Choose a node from the subscription group, then enable the system proxy or the appropriate connection mode provided by the client. For an initial test, use a simple rule set so custom blocks, complex DNS, and multi-level outbounds do not affect the result at the same time. Node availability and network conditions change, so latency is only a reference; the real test is whether the target connection succeeds and whether the log shows handshake, resolution, or routing errors.

  3. 03

    Verify the Connection, Then Add Rules Gradually

    Once basic connectivity works, test common websites, direct addresses, and targets requiring a specific outbound to confirm that proxy and direct paths behave as expected. Then add rules such as direct access for private addresses or proxying for specific domains, changing only one group of settings at a time and keeping a restorable configuration. When something fails, check in this order: node, DNS, routing, and system proxy. This is usually more effective than repeatedly reinstalling the client.

project.v / ecosystem

How Project V, Cores, and Clients Relate

Understanding the ecosystem layers matters more than memorizing a single client name. A configuration works only when the graphical client, core, protocol fields, and subscription content fit together correctly.

Project V Protocol and Proxy Tool Ecosystem
Core Families

V2Fly

V2Fly continues Project V’s community-maintained path, interpreting configuration, implementing protocols, and handling underlying inbound, outbound, DNS, and routing capabilities. Objects such as inbounds, outbounds, routing, and dns in configuration files belong to the core layer, not to any particular graphical client interface.

Core Families

Xray

Xray developed an independent maintenance path from a related ecosystem foundation and extended capabilities such as VLESS and REALITY. If subscription nodes contain specific extension fields, they must be interpreted by a core that supports those fields. Choose Xray because its protocol and configuration capabilities match the nodes—not because all client names represent the same implementation.

Ecosystem History: From Core Capabilities to Graphical Interfaces

Project V originally brought together protocol implementations, configuration structures, and proxy capabilities. As desktop and mobile needs grew, the community created graphical clients for different systems. Graphical clients manage subscriptions, node selection, system proxies, logs, and configuration editing; the core establishes connections, applies routing, and handles protocol details. With these layers separated, interfaces can evolve around platform conventions while underlying capabilities continue along their own maintenance paths.

Therefore, “V2Ray client” is usually an ecosystem term rather than a single installer. v2rayN targets desktop systems, while v2rayNG and v2flyNG target Android; their interfaces, core paths, and use cases are not identical. Before downloading, identify the device platform and then check the node protocol to avoid import failures caused by the wrong architecture or core.

Open Source Licensing: Traceable Code, Documentation, and Changes

Project V-related cores and clients are maintained as open-source projects, with code released under the licenses each project declares. Open-source licenses specify the conditions for copying, modifying, distributing, and retaining license notices. For everyday users, the key point is that feature changes can be reviewed through release records, documentation, and community discussions. Developers extending or redistributing the software should read the applicable license text first.

Open source does not mean every client is released by the same team on the same schedule. v2rayN, v2rayNG, and v2flyNG each maintain their own interface adaptations and release processes, while the underlying cores follow independent change cycles. When configurations differ, confirm the client name, core family, and protocol parameters before reading the documentation for that combination.

Three Clients: Different Roles by Platform and Core

v2rayN is the main graphical client for desktop systems, covering Windows, macOS, and Linux. It is suited to managing multiple subscriptions, editing routes, switching the system proxy, and viewing runtime logs. v2rayNG is a commonly used Xray-based client on Android for nodes that require Xray protocol extensions. v2flyNG uses the V2Fly core and serves as a mobile option for the V2Fly path.

All three focus on similar node configuration and subscription workflows, but their capabilities cannot be assumed identical from their names alone. Some fields depend on core support, while some operations depend on system permissions and the graphical implementation. The safest selection order is: device platform, node protocol, processor architecture, then client interface.

Update Mechanics: Clients, Cores, and Subscriptions Change Separately

Updates generally occur at three levels. A client update changes the interface, system support, and configuration management; a core update changes protocol implementation, routing behavior, and low-level compatibility; a subscription update returns a new node list from the subscription source. These updates are independent: a failed subscription refresh does not mean the client must be reinstalled, and a client interface update does not automatically change node configurations.

When troubleshooting update issues, record the current configuration and check the logs first. For subscription failures, focus on the URL and network path; for protocol errors, check core support; when the system proxy has no effect, check the client mode and system settings. Classifying the problem at the right layer is usually more effective than replacing every configuration at once.

quick.checklist

Selected FAQs

These questions cover the parts most likely to cause confusion during first use. The complete workflow and troubleshooting order are provided on the guide page.

Why are there no nodes after importing a v2rayN subscription?

First confirm that you imported the complete subscription URL rather than truncated text. Then manually update the relevant subscription group and review the update message or log. If the URL is accessible but the list remains empty, check whether the response uses a subscription format supported by the client. Do not rush to delete all configuration; keeping the group makes it easier to determine whether the issue comes from the URL, network path, or parsing process. View the subscription import steps →

What is the difference between vmess:// and vless:// links and a subscription URL?

A share link usually represents one node and includes its address, port, identifier, and transport parameters; a subscription URL returns an updatable node list. Share links suit single-node imports, while subscriptions are designed to maintain multiple nodes over time. Their entry points may differ in the client, and a single-node link should not be entered into the subscription update field with the expectation that it will generate a remote list automatically. View import methods →

The client says it is connected, but webpages will not open. What should I check first?

Check in this order: node, DNS, routing, and system proxy. Start by switching to a node known to work, then check for domain resolution errors. Next, temporarily switch to simple routing to rule out an incorrect block; finally, confirm that system proxy mode is enabled. Change only one setting at a time and watch the logs so you can identify the failing layer. View the connection verification workflow →

How should I choose between v2rayNG and v2flyNG?

Start with the protocol requirements of the subscription nodes. Choose v2rayNG with the Xray core when Xray extensions are required. If the configuration falls within V2Fly’s supported range and you want to follow the V2Fly core path, choose v2flyNG. Similar interfaces do not guarantee identical underlying capabilities, so check the protocol, security parameters, and transport before importing. View the client selection guide →