Start with your operating system, then check core compatibility, maintenance status, and config options. Clash Plus is our first pick for new installs. For Linux desktops, compare Clash Verge Rev and FlClash.
Recommendations and comparison criteria
The client handles subscription imports, policy selection, system proxy settings, and logs. The core parses configs and handles connections. They are not interchangeable: even clients using mihomo may differ in where overrides are configured, what permissions they need, and how they run in the background. A client with “Clash” in its name won’t necessarily recognize every new field. Choose based on what you need to do, not just screenshots of the interface.
Platform availability in the table reflects the download links on this site, not every platform a project has ever released for. Maintenance descriptions are qualitative, not update-frequency guarantees; check each project’s documentation before installing. Ease of use is based on completing an initial import, selecting a policy group, and connecting. It is not a performance rating and says nothing about whether the proxy service itself is available.
A client is not a proxy service. Whichever one you choose, you’ll need a working config or subscription in a compatible format. If you already have a Clash YAML file, check that the target client supports its core. If your config is in another format, ask the provider for a compatible version instead of simply renaming the file to .yaml.
Clash Client Comparison: 8 Options
On narrow screens, scroll horizontally within the table. The core column distinguishes original Clash, Clash Meta/mihomo, and other config systems. We don’t assume a core for clients without a clearly specified one. Archived apps are included for migration reference.
Familiar to existing users; check permissions during migration
Menu bar controls and a reference for older configs
Users migrating an existing macOS setup
What to consider for each client
Clash Plus: best for beginners and multiple devices
Clash Plus is our top pick for new installs. It covers common desktop and mobile systems and gives you a clear order to follow: import a config, enable it, choose a rule mode, then check your policy groups. If you use multiple devices, test the config on one first, then add devices one at a time to make troubleshooting easier. System permissions and config capabilities vary by platform, so don’t assume desktop settings will work the same way on a phone. iOS users can open the App Store from the download page. Product details are available at the official site, clashplus.io. For Linux desktops, compare the two clients below.
Clash Verge Rev: desktop configs and overrides
Clash Verge Rev suits desktop users who want to manage local settings in more depth. Its mihomo core lets you organize rules, DNS, and policy groups within a single config system. Client-side overrides make it easier to keep local changes, such as port and connection settings. Keep in mind that the subscription file and the config actually running are separate layers: edits made directly to a subscription file may be overwritten on update. Before enabling TUN, make sure the basic proxy works, then set up service permissions and route handling. This makes issues easier to pinpoint. Linux users should also choose the right package format for their distribution.
FlClash: a similar workflow on desktop and Android
FlClash is a good fit if you want to spend less time learning different interfaces across devices. Downloads are available here for Windows, macOS, Android, and Linux. It uses mihomo, but a similar interface doesn’t mean identical system behavior: on desktop, distinguish the system proxy from TUN; on Android, account for VPN approval, background restrictions, and per-app routing. Compare subscription switching, policy group selection, and log access with your usual workflow before moving all your devices. Check local paths, listening addresses, and platform-specific fields on each device rather than syncing the entire runtime directory.
Clash Nyanpasu: desktop workflows and core management
Clash Nyanpasu suits users who want to understand the distinction between the client and its core and customize their desktop workflow. This site lists a Windows download; that doesn’t indicate the full range of project releases. Compare how configs are organized, where logs are found, and which core is selected. Switching cores is not a fix for every problem: after a change, check whether your existing rule extensions and DNS options still work. If you just need to import a subscription and use it day to day, choose a client with a familiar workflow instead of migrating just to get more settings.
Clash for Windows: archived setups and migration reference
Clash for Windows is no longer maintained. It can help you understand an older setup, but we don’t recommend starting with it on a new device. When migrating, note your proxy ports, mode, policy group selections, and local overrides, then recreate them in the new client one by one. Don’t copy the entire app data directory: caches, interface settings, and service configs usually aren’t portable between clients. Older cores may fail to parse newer mihomo fields in a subscription or ignore some features. The archive is here to help you check an existing setup, not as a long-term fix for compatibility issues.
Clash Meta for Android: mobile configs and per-app routing
Clash Meta for Android, often called CMFA, suits users who primarily use Android and want control over policy groups and which apps connect through the proxy. On first connection, Android usually asks you to approve VPN access. Check that battery optimization won’t interrupt background operation. Per-app routing and domain rules solve different problems: the former decides which apps use the proxy, while the latter determines where their connections go. For testing, route one clearly identified app through the proxy, then check which rules match. If another VPN app is running, check which app currently controls the VPN before treating a permission conflict as a node issue.
Surfboard: check config compatibility first
Surfboard is another option for Android, but handling proxy connections doesn’t make it a drop-in replacement for Clash YAML. It uses its own config system; check the client documentation for details on Surge-style config compatibility. It may suit users who already have a compatible config and know the relevant rule syntax. If you only have a Clash subscription, ask the provider whether it offers a compatible format. When converting configs, check not only the nodes but also policy groups, rule sets, and DNS behavior. A successful conversion doesn’t guarantee that every feature has been preserved.
ClashX Meta: archived macOS config reference
ClashX Meta is no longer maintained. Existing users may know its menu bar controls, but new installs are better served by an actively maintained client. Before migrating, note the system proxy port, config location, and any permissions granted to helper services. Then quit the old client to prevent both apps from competing over proxy settings. Match the installer to your Apple Silicon or Intel Mac; don’t rely on the app name to identify the right architecture. If services fail to start or permissions break after a system update, investigate macOS compatibility separately from config parsing. Repeated rule edits usually won’t fix connection issues caused by an outdated helper service.
Choose a client by use case
This guide doesn’t rank clients by latency. Proxy services, network routes, DNS, rules, and connection methods all affect results; changing the interface alone usually won’t explain a difference. To compare two clients, use the same config, policy target, and similar test conditions. First confirm that traffic follows the same route, then assess any change in experience.
Before switching clients: checklist
Back up your config and local changes. Save subscription details, manual rules, and overrides separately. Subscription URLs may contain credentials, so don’t share the full URL in public logs or screenshots. App caches are not config backups.
Check the format and core. Confirm that the new client can read the protocols, rule sets, and DNS fields in your current config. If a field causes an error, check the exact location in the runtime logs instead of deleting a whole section at random.
Quit the old client. Turn off its system proxy or TUN before launching the new client. If both apps are running, the system proxy may still point to the old port, or VPN and route handling may conflict, making results harder to diagnose.
Recreate the basic setup first. Enable the right config, confirm the rule mode and policy groups, then check the listening port. Apps outside your browser that use a manual proxy also need their port updated; changing mixed-port in the client alone isn’t enough.
Restore advanced features one at a time. After verifying the basic connection, enable overrides, TUN, launch at startup, and per-app routing as needed. Check rule matches and error logs. Once everything is stable, remove old services and startup items to avoid restoring incorrect connection settings after a reboot.
If the new client starts but can’t connect, first check whether the config is enabled, the selected policy target is available, system traffic is routed through the client, or DNS resolution is failing. Keep the error details and steps to reproduce; they’re more useful for troubleshooting than switching between several clients. See common issues for more help. Once you’ve chosen a client, visit the client downloads page and select the package for your system and architecture. Follow the quick start guide for setup.