Open-source mihomo core · Clients for every platform, regularly updated

Clash Official Site · Client Downloads

Choose a client for your platform, import a subscription, then configure routing rules and proxy groups.

  • Free forever
  • Open-source code
  • Chinese documentation

CONFIGURATION / Overview

Clash Configuration and Traffic Routing

First decide how traffic enters the core, then determine which rule each request matches. These snippets illustrate how the fields relate; add node details and listening addresses for your environment.

Rule order determines the route

In Rule mode, requests are checked against rules from top to bottom. The first match sends the request to its specified outbound; later rules are not checked. Put specific domain rules first, followed by geographic matches, and use MATCH to catch the remaining traffic. If a site uses the wrong route, check the matched rule in the connection log, then check the proxy group's current selection. Unlike Global mode, Rule mode can route different kinds of traffic differently—but only if requests reach the core and their domains are identified correctly.

rules:
  - DOMAIN-SUFFIX,github.com,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY
See how to configure routing rules →

DOWNLOAD / By Platform

Choose a Clash client for your operating system

Check your system architecture before choosing an installer. A graphical client manages configuration and connections; the mihomo core handles requests. The core alone does not provide a configuration list, system proxy toggle, or subscription management interface.

Windows

For desktop use, start with Clash Plus, Clash Verge Rev, or FlClash, then follow the download page's installation instructions. On first launch, import an existing subscription, confirm the core is running, then enable the system proxy. Browser access doesn't mean every app is connected; command-line tools may need proxy environment variables set separately.

To use TUN, configure the required service and permissions as prompted by your client. There's no need to enable every traffic capture option at once. If a port is already in use, check whether another proxy app is still running in the background. After changing the listening port, update the manual proxy address in your apps too. Turn off the system proxy before quitting the client to reduce connection issues caused by leftover settings.

Go to downloads

macOS

Check your chip type in System Information before downloading, then choose the installer for Apple Silicon or Intel. After installation, move the app to Applications and follow the prompts to grant network extension or helper service permissions. If you use other networking tools, disable their traffic interception first to avoid multiple apps repeatedly changing the same system settings.

Clash Plus, Clash Verge Rev, and FlClash have different configuration menus, but the basic steps are the same: import a configuration, select it, choose a proxy group, and enable traffic capture. If pages stop loading after switching Wi-Fi networks or waking from sleep, check the current network service's proxy address and DNS first, then review the core logs. Don't rely on the menu bar icon alone to confirm connectivity.

Go to downloads

Android

Android users can choose from clients such as Clash Plus, Clash Meta for Android, and FlClash. Check your device's processor architecture before installing. If you're unsure, read the package type notes on the download page rather than repeatedly installing incompatible files. After importing a configuration, Android will usually ask for permission to establish a VPN connection. Grant it to route app traffic this way.

Mobile operating systems may restrict background activity. If the connection drops when the screen locks, check battery optimization, auto-start, and background data settings. Per-app proxy settings and domain rules operate at different levels: traffic capture determines whether an app enters the proxy, and rules determine its route once it does. Watch for conflicts with other VPNs or work profiles, and configure simultaneous use according to what your client supports.

Go to downloads

iOS

iPhone and iPad users can open the Clash Plus App Store listing from the download page. The product website is clashplus.io. After installing, import a subscription or configuration compatible with the client, then add a VPN configuration when prompted by iOS. Granting permission only enables traffic capture; you still need to select a configuration and proxy group, then test a real connection.

Cellular and Wi-Fi networks may behave differently. If only one works, check subscription updates, node connectivity, and DNS resolution on each network separately. Automatic proxy selection depends on its test address and cannot guarantee the same results for every site. For troubleshooting, select one specific outbound manually to isolate the issue, then switch back to automatic selection so the route doesn't keep changing during tests.

Go to downloads

Linux

For a graphical Linux desktop, choose Clash Verge Rev or FlClash and install the package for your distribution. Not every application reads the desktop environment's system proxy settings; terminals, containers, and background services may use their own network settings. Verify a basic connection in a regular user session first, then decide whether you need TUN or a system service. This helps distinguish permission issues from configuration problems.

For servers and routers, see the core section of the download page and choose mihomo for your processor and runtime environment. Running the core yourself means managing its configuration path, service startup order, and logs. The controller interface should generally be restricted to local access; plan authentication and access controls before enabling remote management. A loopback address inside a container belongs to that container, not the host.

Go to downloads

SOURCE / Open Source & Maintenance

The mihomo Core and Clash Ecosystem

Use the public source code, configuration docs, and release notes to understand what each feature supports. Clients, cores, and subscriptions are maintained separately; keep these three layers in mind when choosing software and troubleshooting.

Project History and Configuration Formats

Clash began as a rule-based proxy core with YAML configuration, followed by different forks and graphical clients. The original project's maintenance status differs from that of later projects, so instructions for an older client may not apply to every current client. mihomo continues the technical direction of the Clash Meta project; check the current project documentation and the client's actual integration for specific behavior. When reading older articles, verify what the fields mean and which core they apply to instead of relying only on interface screenshots.

Indentation, lists, and references in configuration files all affect parsing. Save a working copy before editing and change one section at a time. If parsing fails, check the field and surrounding context reported in the logs, then confirm that the field is supported by your core. Loading a file only means it passed the relevant structural checks; it doesn't prove that nodes connect, rules match correctly, or system traffic is being captured. Verify each of these separately.

Graphical Interfaces and Proxy Cores

A graphical client displays configurations, manages processes, and integrates with system features; the core parses rules, establishes connections, and handles DNS. They may be updated separately, so changing the interface doesn't necessarily change core behavior, and updating the core doesn't necessarily change how subscriptions are imported. When choosing a client, check its platform and installation method as well as its service mode, override support, log access, and configuration export options. These make it easier to troubleshoot issues and migrate settings later.

Check each project's open-source scope and license terms separately. Using the same core doesn't mean the entire app has the same license. The mihomo repository publishes source code and license information for reviewing specific implementations, issue discussions, and releases. This site brings download links together with Chinese usage guides; each project maintainer remains responsible for releases, app store distribution, and subscription services.

Keep three kinds of updates distinct

Client updates change the app itself, core updates affect protocols and networking behavior, and subscription updates refresh nodes or configurations provided by a service. If a node stops working, first check whether the subscription has expired and whether the updated configuration is active, rather than immediately reinstalling the client. For an unknown protocol or field, check the core's supported features. Read release notes and keep a working copy of your configuration before updating. Afterwards, recheck listening ports, traffic capture settings, and proxy group selection in case defaults have changed.

Subscriptions may include provider-defined DNS settings, rules, and proxy groups. Local edits can be replaced by the next update. Use your client's override or merge feature for rules you want to keep, and check the merge order. Don't upload a complete subscription file to a public forum. When reporting an issue, include only the relevant configuration section, system details, and error lines needed to reproduce it.

Verify Connections and Review Logs

First confirm that the core is listening, then check that app requests appear in the connection list, and finally review the matched rule and actual outbound. This makes it easier to find where a connection fails than repeatedly switching nodes. Latency tests only check a specific address; passing one doesn't replace testing real services. Similarly, a page loading doesn't prove that every app uses the same route. For command-line tests, check whether the current shell has proxy environment variables set and confirm that its traffic capture method matches your browser's.

Debug logs may contain visited domains, destination addresses, and local paths. Remove anything unrelated to the issue before sharing them. After troubleshooting, restore a suitable everyday log level to avoid recording excessive requests. The controller port and mixed proxy port serve different purposes: the former provides the management interface, while the latter accepts proxy requests. Don't enter a management address in your browser's proxy settings. Default ports are common values; use the listening details currently shown by your client.

Common Questions Before Downloading

Do I need a subscription after installing a client?

A client manages configurations and connections; it doesn't provide proxy servers. Import a subscription from a service you already use, or configure your own nodes. Check the source and format before importing. Publicly shared links may stop working or lose access at any time, so don't use them as the only way to check whether a client is working. See Nodes and subscriptions.

What's the difference between Rule mode, Global mode, and TUN?

Rule and Global modes determine how requests entering the core are routed. TUN determines how system traffic enters the core, so these are two separate settings. You can use routing rules with TUN enabled; Global mode doesn't automatically capture traffic from every app. Start with one clear traffic capture method and verify it before expanding. See the proxy modes and routing rules guide.

Why can't I browse after importing a subscription?

First confirm that the configuration is selected, then check whether system proxy or VPN capture is active. If the request isn't in the connection list, focus on the capture method and port. If it is, check the outbound, rules, and DNS errors. Don't change nodes, DNS servers, and proxy mode all at once, or it'll be hard to tell what fixed the issue. Follow the steps in Troubleshooting to narrow it down.

Where do I update GeoIP data and change port settings?

Start with the data update and network settings options in your client. Check the current values before changing anything. GeoIP data is mainly used for geographic IP rules; it won't solve every domain resolution issue. Ports let local apps communicate with the core, and changing one means updating manual proxy settings too. See the GeoIP update guide and the port configuration guide.

NOTES / Practical Guides

Configuration Basics and Connection Troubleshooting

Start with the symptom and follow the relevant steps. Troubleshoot subscription updates, DNS mapping, and traffic capture separately instead of assuming every network issue is caused by an unavailable node.