The Desktop edition uses a newer cross-platform interface, making it a good fit if you want a similar workflow across desktop operating systems. Check server settings, subscription groups, routing, and core settings separately; similar interfaces don’t mean system proxy behavior is identical on every platform.
The WPF edition keeps the classic Windows interface and menu layout. The two editions aren’t different speed tiers: connection performance depends mainly on the server, route, protocol combination, and routing settings—not the UI framework.
Manage subscriptions and routing with a GUI · Connection support depends on the selected core and configuration
Windows installation requirements and steps
Check
Requirement
System and architecture
For Windows x64. Check your system type under Settings → System → About.
Package format
The download is a ZIP archive. Extract it to a dedicated folder, then run the installer or client as directed by the files inside.
Runtime environment
System version and runtime requirements vary by release. If you’re prompted to install a missing runtime, add the compatible components listed in the prompt.
Permissions and traffic handling
System proxy and TUN have different permission requirements. For TUN, follow the client prompts to grant the required permissions.
Don’t launch the program from the ZIP preview window. Extract all files first so the app can access its resources, configuration, and components in the same folder. Choose an installation location your account can write to. If saving configuration fails, check folder permissions before considering a reinstall.
After installation, import a subscription or server configuration and select the entry you want to use. System proxy settings affect only apps that follow them; if a particular app bypasses the proxy, check its network settings first. Before switching between Desktop and WPF, export your configuration, quit the old app, and clear any leftover system proxy settings to prevent both instances from changing them at once.
v2rayN
Desktop client7.24.1
macOS · Choose based on the chip shown in About This Mac
If About This Mac shows an Apple M-series chip, choose the arm64 package. Prefer the package that matches your processor architecture; don’t rely on the device’s purchase year, since different models sold around the same time may use different processors.
If About This Mac shows an Intel processor, choose the x64 package. The two DMG files are for different processor architectures, not different feature tiers. If macOS says the app can’t run, check the architecture and system compatibility before troubleshooting the installation.
DMG disk image · Configure system proxy and routing separately
macOS requirements and first launch
Check
Requirement
Processor
Apple Silicon uses arm64; Intel uses x64. Check About This Mac in the Apple menu.
Package format
DMG disk image. Open it and follow the included instructions to move the app to the Applications folder.
System compatibility
Check the current release’s runtime requirements and system prompts. Confirm compatibility before installing on an older version of macOS.
System permissions
Grant permissions based on the proxy mode you use. Permission for network extensions or traffic handling is separate from importing a subscription.
After installation, launch the client from Applications rather than running it from the mounted disk image. If you see a security warning, verify the download source and read the warning before using macOS Privacy & Security settings. Don’t disable system security globally just to install one app.
When migrating settings from another desktop system, compatible server parameters may carry over, but check local paths, network interfaces, system proxy settings, and permissions again. Test one configuration before restoring your full routing rules; this helps distinguish server configuration issues from local traffic-handling issues. Before quitting the client, check whether system proxy settings need to be restored.
Most phones released after 2015 are suited to arm64, but check that the operating system supports 64-bit apps. Processor capability and the system environment don’t always match. If you see an architecture incompatibility warning, check your device details before trying the universal package.
The universal package supports more architectures and is usually larger. It doesn’t provide faster connections or automatically fix incorrect subscription settings. You’ll still need to import a valid configuration and allow the system to create a VPN connection on first launch.
Xray · VpnService · Per-app proxy
v2flyNG
Alternative1.10.31
Android · V2Fly core · Check protocol compatibility first
A fit for users who need V2Fly configuration support. Before choosing, check the server’s required protocol, transport, and security fields. Don’t assume compatibility based on the client’s name alone; being part of the Project V ecosystem doesn’t mean every extended feature is the same.
Choose the universal package if you’re unsure of your device’s architecture. When migrating from v2rayNG, keep a backup of your existing configuration and check routing and DNS settings one by one. Switching packages alone won’t convert settings specific to a different core.
V2Fly · Alternative Android client · Configuration support depends on the core
Android requirements and permissions
Check
Requirement
System compatibility
Requires an Android version supported by the current APK. Check the installer and release requirements for the minimum version.
Device architecture
For 64-bit Android, arm64 is preferred. If you’re unsure, choose the universal package, while still meeting the Android version requirements.
Installation permission
Follow the system prompt to allow your browser or file manager to install apps. You can revoke this permission afterward.
Connection permission
Using VpnService to handle traffic requires system VPN permission. Typically, only one VPN service can run in the same user environment at a time.
Background operation
For a persistent connection, configure battery optimization and background permissions as needed. The settings location varies by device.
If the installer says “App not installed,” check whether the cause is an outdated Android version, architecture mismatch, insufficient storage, or a signing conflict. The universal package mainly broadens architecture support; it won’t bypass other installation requirements. If you already have configurations, back them up first. Don’t uninstall the old app right away or you may lose server details saved only on the device.
The VPN confirmation prompt on first connection grants system permission to handle traffic; it isn’t a server login. After granting permission, check the service status and logs. If the connection often drops when the screen locks, review battery optimization and background restrictions. If only some apps bypass the proxy, check the per-app include or exclude mode instead of repeatedly changing packages.
Choose deb for systems using Debian’s package management. In filenames, amd64 refers to the commonly used x64 architecture and isn’t limited to a particular processor brand. For ARM desktop devices, choose the arm64 package and make sure your distribution provides the required runtime dependencies.
Choose rpm for systems using RPM package management. x86_64 corresponds to x64, while aarch64 corresponds to arm64. The right package format is only the first step; check runtime libraries and distribution compatibility, and don’t force installation by ignoring dependency errors.
Graphical desktop · deb / rpm · x64 / arm64
Linux requirements and desktop proxy setup
Check
Requirement
Runtime environment
Requires a graphical desktop and the dependencies of the current client. Not intended for terminal-only environments.
Architecture
Choose x64 for amd64 / x86_64, or arm64 for aarch64. Don’t choose based on the distribution name alone.
Package management
Choose deb or rpm based on your distribution. Use its software installer to review dependency and compatibility warnings.
Traffic handling
Whether apps use the desktop system proxy depends on the desktop environment and each app’s settings. TUN has additional permission requirements.
Open the correct package with your distribution’s software installer. Review dependency warnings before proceeding. Even with the right file extension, an older runtime or a different distribution release may cause installation to fail. Don’t convert packages or ignore dependencies by default.
After launch, test a single configuration in the client before setting up the desktop system proxy. Browsers, download tools, and other apps may not use the same proxy settings. If the client connects but a particular app still connects directly, check which proxy source that app uses. With TUN, also check permissions, network interfaces, and any existing network management services.
After installation: import, route, and verify
The installer gets the app running. Server configuration, traffic routing, and routing rules must be set up separately.
Import a configuration you’re authorized to use
A subscription URL retrieves a set of server configurations; an individual share link imports one entry. Use the correct field for each. After importing, check the protocol type, address, port, transport, and security settings, then test a single entry. Subscription updates usually refresh the server list; they don’t necessarily sync local routing, DNS, or proxy mode.
Check how apps send traffic through the proxy
On desktop, system proxy settings mainly affect apps that follow them. On Android, VpnService handles traffic, with optional per-app proxy settings. Routing rules apply only to connections that reach the core; they don’t replace system proxy settings or VPN permission. First confirm how traffic enters, then decide which domains and addresses should use proxy, direct, or block.
Check logs and test real connections
Once the service is running, make a real request from the target app and use the logs to confirm whether a connection was established. Latency test results, app status, and actual download speed measure different things. For timeouts, check system time, configuration updates, transport settings, DNS, and logs in that order. Avoid changing several settings at once so you can identify the cause.
The client app, server configurations, and local settings are separate types of data. Handle each one when updating.
Back up first, then replace the app
Before updating, export the server configurations you want to keep, and separately note routing rules, DNS, listening ports, and per-app proxy settings. Export options vary between clients, so an export of server configurations isn’t necessarily a full backup. Backup files and subscription URLs may contain access credentials; store them securely.
You can usually update an app in place, but the result depends on system installation rules, app signing, and the installation method. If you see a signing or dependency warning, read the specific reason before choosing a migration plan. Don’t delete the old app or its configuration folder before backing up.
A core name alone doesn’t guarantee compatibility
Project V is the ecosystem behind related proxy tools. V2Fly continues development of the V2Ray core, while Xray is part of the related technology family and adds its own features. v2rayN manages desktop configurations; on Android, choose between v2rayNG and v2flyNG based on the capabilities of their respective cores.
These clients are released as open-source software; refer to each project and component for its specific license terms. When choosing a client, check the combination of protocol, transport, and security settings rather than looking for support for a single protocol name. After migrating, test one configuration before restoring complex rules.
Download and installation FAQ
Check installation requirements first, then troubleshoot connection settings. Switching packages won’t solve every problem.
Does downloading the client include a working server configuration?
The installer contains the client app, not a server configuration or subscription service. After installation, import a subscription URL or individual share link that you’re authorized to use, then check the protocol, transport, security settings, and routing. A free client does not mean the server service is free.
Which should you choose: the Windows Desktop or classic WPF edition?
For a first install, choose Desktop, which uses a newer cross-platform interface. If you’re used to the original Windows interface, choose the classic, stable WPF edition. Their interfaces and settings may differ, so export your configuration before switching. Avoid enabling system proxy or TUN in both at once.
Which Android package should I download: arm64 or universal?
Most phones released after 2015 are best suited to arm64, but make sure the operating system supports 64-bit apps. A 64-bit-capable processor doesn’t guarantee a 64-bit system environment. If you’re unsure of the architecture or arm64 is reported as incompatible, try the universal package, which supports more architectures and is usually larger.
Do I need to uninstall the old version before updating the client?
You can usually install over the existing version if it’s the same app, has the same signing key, and meets the system’s update requirements. Before updating, export your server configuration and separately note your routing, DNS, and per-app proxy settings. If you see a signing conflict, don’t uninstall right away. Check the package source and back up your data before deciding how to proceed.
Can I use Linux deb and rpm packages interchangeably?
Choose the package format used by your distribution. Debian- and Ubuntu-based systems typically use deb; Fedora- and RHEL-based systems typically use rpm. You’ll also need to match the x64 or arm64 architecture. A matching file extension doesn’t guarantee that dependencies are met. If the installer reports a dependency or runtime issue, check your distribution version and the package requirements first.
The app is installed, but traffic isn’t going through the proxy. What should I check first?
First, make sure you’ve imported and selected a working configuration. Then check that the service is running and that system proxy settings or VPN permission are active. Confirm that the app uses the system proxy, isn’t excluded by per-app rules, and that routing selects the expected outbound. An app opening successfully only confirms that its interface runs; it doesn’t mean a connection has been established.