v2rayN · v2rayNG · v2flyNG

V2Ray Desktop client downloads

This site collects download links and configuration notes for three graphical clients — v2rayN, v2rayNG and v2flyNG — across Windows, macOS, Android and Linux, with subscription import steps and a JSON configuration reference for each platform, covering everything from installation to routing rules.

  • Free forever
  • Open-source code
  • Xray / V2Fly core
  • JSON configuration reference
  • Subscription import steps

Configuration topics

Four settings areas, four reference snippets

Subscriptions, routing, cores and system proxy are the four settings adjusted most often in daily use. Each topic gives a configuration snippet you can copy directly, along with what it solves and where to look first when something breaks; the full field list and examples live on the configuration reference page.

{
  "remarks": "Main subscription",
  "url": "https://example.com/sub?token=xxxx",
  "autoUpdateInterval": 360, // Unit: minutes
  "enabled": true
}

A subscription is the middle layer between node information and the client: one subscription URL points to a set of configurations maintained on the server, and the client re-fetches it at a set interval, so nodes can be added or removed without editing the configuration by hand. In v2rayN you set the auto-update interval for each subscription separately in the subscription group; 6 to 24 hours is the usual range — too short means frequent requests, too long means node changes arrive late. When an update fails, first check that the subscription URL is complete, then check the local clock and network status, and finally read the response shown on the log page. On Android, pull down on the subscription group page to refresh manually.

Subscription fields and update mechanics →

Three steps

From install to connection

The full steps are laid out by platform on the tutorial page; this is the short version. There is no way to skip a step: nodes only appear after a subscription imports successfully, and routing only matters once a node is connected.

  1. Get the client

    Pick the matching installer for your system on the download page. One client each for desktop and Android is enough — there is no need to install several at once, and configuration files work across both platforms.

  2. Import a subscription

    Copy the subscription URL provided by your server, create a new entry in the client's subscription group and paste it in, then save and update once manually; the node list appears on the servers page right away.

  3. Choose a mode and connect

    On desktop, turn on system proxy or TUN mode first, then select a node and connect; on Android, make sure VpnService permission is granted before connecting, and a persistent notification appears in the status bar afterwards.

Read the full tutorial →

Project V · V2Fly · Xray

Open-source ecosystem and where the clients come from

None of the three clients is a standalone project; each is a graphical layer inside the Project V ecosystem. Understanding how the client, the core and the configuration file divide the work makes it easier to track down an unrecognized field or a failed connection.

Project V is a collection of proxy tools built around V2Ray. It started with community developers and later split into two main core branches, V2Fly and Xray. The core handles protocol implementation, encryption and transport and offers no graphical interface; the clients most people actually touch — v2rayN, v2rayNG and v2flyNG — sit on top of a core and wrap configuration files, subscription management and system integration into a clickable interface. The practical benefit of this layering is that the same configuration file can move between clients, switching clients does not mean reconfiguring nodes, and when troubleshooting you can judge the interface and the core separately.

V2Fly and Xray are the two active core lines today. V2Fly continues the original Project V implementation and keeps a conservative protocol range; Xray builds on V2Fly and adds newer protocols and transport features such as VLESS, XTLS and REALITY, with a faster release cadence. v2rayN and v2rayNG use the Xray core by default and also keep V2Fly core builds for cases that need compatibility with older protocols — v2flyNG is the Android client for the V2Fly core. Both cores share the same JSON configuration structure and almost identical field names, though a few newer protocol fields work only under Xray; if an imported configuration reports an unrecognized field, check which core you are running first.

All three clients are released under open-source licenses, with source code available for inspection and free for the community to build and redistribute. A direct result of that openness is that configuration formats, field meanings and protocol implementations all have public discussion records, so an unfamiliar field can be checked against the core documentation. The clients themselves contain no node information and rely on no central server: nodes come from your own server or subscription, the client only opens connections according to the configuration file, and subscription URLs and node details stay on your machine.

Updates happen on two levels. Client versions follow interface features and core releases, while subscription content is maintained on the server and pulled by the client at an interval; the two do not affect each other. There is no need to switch clients often in daily use — the more common situation is that configuration fields evolve with the core version, so if an unrecognized field appears after an upgrade, compare it against the matching chapter of the configuration reference. The reference material on this site follows the configuration structure of current mainstream versions, field examples keep to the common syntax, and the actual values are whatever your server delivers.

Recent posts

Configuration and usage notes

Common questions about subscription updates, node selection and protocol differences are written up as standalone articles, one topic each, with the matching configuration syntax.

VMess vs VLESS: four things regular users should know

Four side-by-side points explain how VMess and VLESS differ in authentication, transport dependencies, encryption and client compatibility, and when those differences actually matter in daily use.

Read the full article →

Subscription formats explained: converting between base64, native JSON and share links

Compares base64 subscriptions, native JSON configurations and vmess/vless share links, explains which format fits which situation, and points out where fields are most often lost during conversion.

Read the full article →

v2rayNG essentials: VpnService always-on, battery whitelist and per-app proxy

Walks through three system-level settings in v2rayNG: VpnService permission and the persistent notification, adding v2rayNG to the battery whitelist so it is not killed in the background, and choosing per app whether traffic goes through the proxy or connects directly.

Read the full article →

See all articles →

FAQ

Four frequently asked questions

A one-line answer up front; the glossary and configuration reference pages have the details, and the tutorial page has the matching steps.

VMess or VLESS: which one to pick?

For everyday use either one works; VLESS has a lighter structure and is more commonly paired with REALITY. If an existing configuration connects fine, there is no need to switch — changing protocols requires matching changes on the server.

Glossary →

The node list is empty after importing a subscription — what now?

First check that the subscription URL is complete and the client's local time is accurate, then update manually once. Most failures come down to a truncated URL or no network connection, and the update log records the returned status.

Tutorial page →

What are geosite and geoip in routing rules?

Two rule sets split by domain and IP range: geosite groups by site, geoip groups by regional IP range. Routing rules use them to match traffic, and they come from rule files bundled with the core.

Glossary →

Can desktop and Android share the same subscription?

Yes. Subscription content and the configuration file format are shared across both platforms; only the way each client parses them differs. Import the same subscription on each, and node changes take effect on both.

Configuration reference →