GUI clients and configuration guides

V2Fly Official Site
v2rayN Client

A central resource for four-platform client downloads, subscription import steps, and routing configuration, with practical menu paths, mode differences, and troubleshooting sequences.

Free forever Open source Chinese documentation Xray · V2Fly
Desktop clients

v2rayN

GUI clients for Windows, macOS, and Linux

Core family

Xray

Evolving alongside the V2Fly ecosystem

Maintenance model

Open source

Configuration behavior and release history are publicly reviewable

Platforms Windows · macOS · Android · Linux Clients v2rayN · v2rayNG · v2flyNG Cores Xray · V2Fly Attributes Free · Open source · Community maintained
Platform downloads

Choose a V2Ray client for your platform

Use v2rayN on desktop systems, or choose between v2rayNG and v2flyNG on Android. These links open the matching platform panel on the download page, where package types, architecture options, and system requirements are explained.

Desktop systems

Windows · v2rayN

Choose between a modern desktop interface and the classic WPF interface. For a first setup, the desktop version is a good starting point; if you prefer the familiar menus or classic layout, see the WPF version details on the download page.

Go to downloads
Desktop systems

macOS · v2rayN

Choose the Apple Silicon or Intel package for your processor. Open “About This Mac” in system settings to check the chip type. Subscription and routing menus remain broadly consistent with other desktop versions after installation.

Go to downloads
Mobile systems

Android · v2rayNG / v2flyNG

v2rayNG uses the Xray core and is a practical everyday choice; v2flyNG follows the V2Fly core and can be selected based on server configuration and personal preference. Most current devices use arm64; when unsure, try the universal build.

Go to downloads
Desktop systems

Linux · v2rayN

Choose deb for Debian, Ubuntu, and similar systems; choose rpm for Fedora, Rocky Linux, and similar distributions. The download page separates x64 and arm64 builds and lists the desktop environment requirements to check before installation.

Go to downloads
Configuration capabilities

The complete workflow from subscriptions to routing

A client does more than import a connection. Subscription updates, which applications use the system proxy, the order of routing matches, and when to enable TUN mode all affect real-world results. This section breaks six capabilities into practical settings, starting with where to configure them and then covering their limits and verification steps.

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

Check the address, group, and update status separately

In v2rayN, open “Subscription groups → Subscription group settings” to save a subscription URL, then select “Update all subscriptions” to fetch the server list. Group names organize sources without changing node parameters. If the list is empty after an update, check in order that the URL is complete, the response can be parsed by the client, the current network allows the request, and the client log shows no format warning. Unlike pasting individual share links, subscriptions are better for maintaining configurations that change over time.

Getting Started

A three-step path: install, import, enable

Start with a basic connection you can reproduce, then add automatic updates, routing, and TUN one step at a time. During initial setup, change only one option at a time so it is easier to identify where a problem occurs.

  1. 01

    Choose a platform and client

    On desktop, open the v2rayN panel for your platform; on Android, choose v2rayNG or v2flyNG based on the required core. Confirm the processor architecture and package type before installing so an incompatible build is not mistaken for a startup failure. After the first launch, keep the default routing and port until the basic connection works.

  2. 02

    Import a subscription and update the list

    Add the URL in the client’s subscription group settings, save it, and run an update. Once the server list appears, select a configuration and set it as the active server. If the list is empty, check the subscription update log first; if a node appears but will not start, check the core log instead. Keep these two troubleshooting paths separate.

  3. 03

    Start the core and choose how to route traffic

    After selecting an active server, start the core and choose the system proxy based on the applications you use. Test the system proxy first with ordinary browsers; evaluate TUN for applications that ignore system proxy settings. Once the basic connection is stable, add routing rules for bypassing LAN addresses, matching domains, and selecting specific outbounds.

Open-source ecosystem

How Project V, V2Fly, and Xray relate

Clients, cores, protocol settings, and subscription services each have different responsibilities. Understanding these boundaries helps determine whether an issue belongs to the interface, configuration content, core compatibility, or a remote service.

From Project V to a parallel family of maintained cores

Project V established the basic structure of the V2Ray configuration model: inbounds receive local traffic, outbounds define forwarding targets, routing matches traffic between them, while dns and log provide name resolution and runtime records. The V2Fly community continues to maintain V2Ray Core and related specifications, while Xray developed an independent core along the same technical lineage. They share many configuration concepts, but fields, protocol extensions, and release schedules may differ.

Therefore, “the client supports a particular share link” and “the current core can fully process its parameters” are two different questions. A GUI client can parse subscriptions, generate configurations, and manage processes; the core performs the actual protocol handshake, routing, and forwarding. When server parameters change, check both the client’s parsing capabilities and the core’s supported range rather than only whether the server name appears in the interface.

Open-source licensing and public collaboration

v2rayN, v2rayNG, v2flyNG, and the related cores are maintained as open-source projects. Source code, configuration formats, and change histories are managed publicly, while maintainers and community contributors continue to discuss features, fix issues, and improve compatibility. Open source makes it easier for developers to understand how configurations are generated and for advanced users to trace behavior differences through logs and field definitions.

Different components may use different open-source licenses. A license governs how code can be copied, modified, and redistributed; it does not mean every client is maintained by the same team. When using documentation, identify the component precisely: v2rayN menu paths do not map directly to mobile clients, and Xray extension fields should not be assumed to work in every V2Fly configuration. Consulting the documentation for each component reduces conceptual mix-ups.

Update mechanisms and compatibility checks

Client updates commonly change the interface, subscription parsing, configuration generation, and core management; core updates focus more on protocol implementation, transport behavior, routing, and DNS. When something works before an update but fails afterward, first record whether the change affected the client, core, or subscription, then review the logs layer by layer. Replacing multiple components at once makes it difficult to identify the variable that caused the result.

For routine maintenance, use a consistent order: update the subscription and observe the node list, start a known-good configuration, and only then adjust the proxy mode and routing. For long-lived rules, document their purpose, match conditions, and outbound tags. Even when menu layouts change, these semantics let you restore the original behavior without relying on a particular button location.

Desktop choice

v2rayN

A GUI client for Windows, macOS, and Linux that centralizes subscription groups, server lists, the system proxy, routing rules, TUN, and core logs. It suits users who maintain multiple configurations and monitor runtime status on desktop.

Android

v2rayNG

A mobile client built primarily around the Xray core, supporting QR code, clipboard, and subscription-based configuration import. Common tasks center on configuration lists, active nodes, routing settings, and connection logs.

V2Fly core

v2flyNG

A mobile option built around the V2Fly core, with a clear separation between interface actions and the usual subscription workflow. It suits scenarios that require compatibility with the V2Fly core or comparison of behavior between the two core families.

Featured FAQs

Separate subscriptions, cores, and proxy modes first

Most configuration issues can first be classified by when they occur. If the list is empty, focus on the subscription request and parsing; if the program will not start, focus on the core log; if only some applications are affected, focus on how traffic is being captured.

The server list is empty after a subscription update

First confirm that the complete subscription URL was saved, then review the network request and parsing messages in the update log. Opening a URL successfully does not mean its response uses a subscription format supported by the client. If the subscription source recently changed, also check whether the group still contains the old URL.

View the subscription import steps →

The browser still uses its original connection after startup

Check that an active server is selected, the core is running, and the system proxy is enabled in the tray menu. Some applications have their own proxy settings or ignore system settings; configure them separately, or use TUN after confirming permissions and checking for conflicts.

View the connection and verification steps →

The core exits immediately after startup

Find the first clear error in the log. Common clues include an occupied port, a missing outbound tag, an incorrectly typed configuration field, or missing transport parameters. Fix one item and restart; do not change the port, routing, and core at the same time.

View the complete troubleshooting path →

Global proxy or routing: which should you choose?

A global proxy is useful for briefly verifying that the node and core work correctly. Once the basic connection is confirmed, switch to routing and add rules one by one. Verify the default outbound first, then add LAN, domain, and IP rules to expose matching-order problems faster.

View the routing section →
Configuration insights

The latest v2rayN guides and troubleshooting articles

Practical instructions covering the main interface, log analysis, and JSON configuration structure. Each article focuses on one issue, making it easy to consult after completing the basic guide.

Getting Started

v2rayN main window explained: server list, subscription groups, log panel, and settings

A top-to-bottom tour of the main window, covering server-list columns, subscription-group tabs, the bottom log panel, and common settings entry points to build a clear operational map.

Read more
Troubleshooting

What to do when the v2rayN core fails to start: trace configuration errors from the log panel

A practical sequence for investigating occupied ports, missing configuration fields, transport mismatches, and damaged core files.

Read more
Advanced

V2Ray configuration structure explained: the roles of inbounds, outbounds, and routing

A concise JSON configuration walkthrough explaining the relationship between inbounds, outbounds, and routing, along with the role of log and dns.

Read more