Open source · Regular updates for mihomo-based clients

Clash ClientsDownloads for Every Platform

Choose a client for your OS, use the mihomo core to handle proxy connections, manage requests with rule-based routing, and follow the English documentation to configure it.

  • One entry point A mixed port for HTTP and SOCKS
  • Choose what to route Configure the system proxy and TUN separately
  • Readable configuration Manage subscriptions, proxy groups, and rules in layers

MIHOMO CORE · GPL-3.0 OPEN SOURCE · RULE-BASED ROUTING

Rule-Based RoutingTUN ModeSubscription Management
PLATFORMS Choose a package for your OS
COREmihomoProtocol and rules engine
LICENSEGPL-3.0Open-source core
CONFIGURATIONYAML configurationInbound / proxy groups / rules
PROTOCOLS / CORE

Protocol types and core supportCheck compatibility before choosing

Protocol names describe how connections work, not a guaranteed speed. Server settings, network paths, and client cores must be compatible. After importing a subscription, make sure the active core recognizes its protocol fields.

Already have a subscription?

Use the protocol and transport settings provided by the server. Parsing the configuration is only the first step; also check that TLS, the transport layer, and proxy group references are all configured correctly.

Mobile networks

Check how connections recover when switching networks, and account for background restrictions. QUIC-based protocols require UDP connectivity; the protocol name alone cannot tell you how much battery it will use or how stable the connection will be.

Desktop and server deployments

Desktop clients focus on their interface and OS integration; servers need manageable services and maintainable configuration. Explore the protocol and core reference →

01 / CLIENT SELECTION

Clash Clients for Every PlatformChoose by OS and processor

The GUI handles subscription management, proxy switching, and OS integration. The core parses rules and establishes connections. Choose a package for your device, then check that the core supports the protocols your configuration requires.

Windows

Choose a GUI client such as Clash Plus, Clash Verge Rev, or FlClash. Check your processor architecture in system information first. After installation, start by testing the system proxy; if you need to route apps that ignore it, follow the guide to configure the TUN service.

Go to downloads Windows client→

macOS

Choose the build for Apple Silicon or Intel. System proxy and network extension permissions are managed in different places; follow the prompts when you first launch the app. Back up your configuration before updating. Reinstalling is no substitute for diagnosing subscription or rule issues.

Go to downloads macOS client→

Android

Choose from Clash Plus, Clash Meta for Android, FlClash, or Surfboard. Check your device architecture and configuration format. On first connection, allow the app to set up a VPN. If the connection drops when you switch apps, check Android's background activity and battery restrictions for the client.

Go to downloads Android client→

iOS

Install Clash Plus from the App Store. Its official website is clashplus.io. After importing a configuration, allow the app to add a VPN configuration, then choose a proxy group. The app interface differs from desktop clients; when troubleshooting, check the connection status, active configuration, and matched rules.

Go to downloads iOS client→

Linux

For desktop Linux, choose Clash Verge Rev or FlClash and download the package for your distribution. On a headless host, run mihomo directly and use a service manager to keep it running. Also check configuration directory permissions, listening addresses, and service logs.

Go to downloads Linux client→
02 / CONFIGURATION WORKBENCH

Inbound, rules, and proxy groupsUnderstand the connection path

Each request passes through local inbound, rule matching, and outbound selection in turn. Configure these stages in order to verify the result more easily than by toggling several settings at once.

Rule-Based Routing
TUN Mode
Mixed Port · LAN Sharing
mixed-port: 7890
allow-lan: false
Subscription Updates
Node Speed Tests
External Controller
View Logs
Configuration Overrides · Rule Order
DOMAIN-SUFFIX,github.com,PROXY
GEOIP,CN,DIRECT
MATCH,DIRECT
DNS Settings
Proxy Groups
Switch Configurations

Rules are evaluated in order; proxy groups choose the outbound route

Rule mode doesn't send every connection through the same node. The core checks domains, addresses, or rule sets from top to bottom, then routes each request to the policy that matches. A policy can send traffic directly or select a proxy group. When editing your configuration, put specific conditions first and the fallback MATCH rule last. Make sure every referenced group exists. Unlike global mode, rule mode lets different types of traffic take different routes, but the outcome depends on your rules. If an app uses the wrong route, check the matched rule in the connections list and adjust that condition rather than switching all your nodes repeatedly.

rules:
  - DOMAIN-SUFFIX,github.com,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,DIRECT

Treat speed test results and actual download speeds separately

Node speed tests typically measure response time to a specified probe URL; they aren't sustained download tests. A node with a fast response may still be limited by bandwidth, server load, or the destination site. For a fair comparison, use the same network and test target at roughly the same time, changing only one variable. If a browser works but a terminal doesn't, first check whether the terminal reads proxy environment variables rather than assuming the node is at fault.

Use logs to locate the failure stage, not jump to conclusions

First determine whether the failure is subscription download, configuration parsing, DNS resolution, or the connection to the destination, then check the relevant settings. Temporarily increasing log verbosity can help. Before sharing logs, remove subscription URLs, authentication fields, and personal addresses. Recording the active configuration, mode, and steps to reproduce the issue is often more useful than reinstalling repeatedly.

03 / FIRST CONNECTION

Import a subscription and verify the connectionStart with one connection you can reproduce

For your first setup, keep the default ports and enable only the network mode you need. Check the status after each step before moving on.

STEP 01

Import and activate a subscription

Add the subscription URL on the client's subscription or configuration page. Once it downloads, select that configuration. Make sure the file parses and its proxy groups contain selectable options before continuing. Subscription URLs often include access credentials, so don't post them publicly. If the import fails, first check whether the response is configuration data or an error page.

STEP 02

Choose a mode and outbound route

Start with rule mode and select an available node in your main proxy group. On desktop, enable the system proxy; on mobile, allow the VPN when prompted by the OS. Don't run multiple proxy apps at once or change DNS, ports, and routes together before verifying a basic connection.

STEP 03

Visit a destination and check the connection

Open the app you want to test, find its domain or process in the connections list, and check the matched rule and actual outbound route. An enabled switch alone doesn't mean requests are reaching the core. If the app doesn't appear in the list, check the proxy entry point first. If it appears but fails, check DNS results, the node connection, and the destination service.

Read the complete guide →

04 / OPEN SOURCE CONTEXT

The Clash ecosystem and mihomo coreHow the projects fit together beyond the client interface

Here, Clash refers to an ecosystem of clients and cores that share configuration concepts; not every app is developed by the same team. Similar interfaces don't guarantee identical protocol support or configuration behavior.

From the original configuration model to mihomo

Clash uses YAML to define proxies, proxy groups, and rules. GUI clients build on this model to offer imports, switching, and OS integration. After the original project was discontinued, other projects in the ecosystem continued to evolve. The name Clash Meta is part of the project history leading to mihomo, so you'll see both names in older guides. To check whether a feature is supported, look at the core currently in use rather than relying on whether the app name includes Meta.

Check open-source scope and licensing separately

The mihomo core is licensed under GPL-3.0. You can review its source code, issues, and commit history in the project repository. GUI clients, system service components, and configuration tools may have their own repositories and licenses; the core's license doesn't automatically apply to all of them. Before modifying, distributing, or integrating code, read the relevant project's license and dependency notices. For everyday use, start with the download page to check maintenance status and system requirements.

Configuration compatibility doesn't mean every setting works the same way

Basic rules and some proxy fields in older configurations may still work, but newer protocols, rule types, and advanced DNS fields require support in the core. Before copying a configuration to another client, check whether it accepts full YAML or only node subscriptions, and whether it automatically merges default settings. If parsing fails, address the fields identified in the logs one by one. Avoid deleting unfamiliar settings in bulk just to make the file load.

Clients, cores, and subscriptions update separately

Updating the client mainly changes its interface, platform integration, and bundled components. Updating the core affects protocol implementations and rule parsing. Updating a subscription changes remotely provided nodes or configuration. These updates solve different problems. Keep a recoverable copy of your configuration before updating; afterward, check the active configuration, listening ports, and system proxy status. If a connection changes, compare what was updated before deciding whether to roll back a setting or adjust the configuration.

05 / TECHNICAL NOTES

Clash configuration and troubleshooting guidesFind the settings that match your symptoms

The quick-start guide gets your first connection working, the technical reference explains protocols and cores, and topic guides walk through how to investigate specific issues. Note what you're seeing, then choose the guide that fits.

Browse all articles →