Traffic Routing · Client and Configuration Guides

Clash Official Site
Client Downloads and Configuration

Choose a client for your operating system, import a subscription or local configuration, then use rules to control traffic paths. This site brings together multi-platform clients, YAML configuration, and troubleshooting guides, so you can move from installation to ports, DNS, policy groups, and rule order.

Free forever Open source English documentation YAML configuration
Routing Rule based
Core mihomo
Config YAML

Platform entrance

Browse downloads by operating system

The homepage provides platform links only; the download page lists specific clients, supported architectures, maintenance status, and package types. Check your device’s operating system and processor first, then choose a graphical client or command-line core to avoid mismatched packages and confusing configuration directories.

TRACK 01

Windows

For Windows desktop environments. The download page lists Clash Plus, Clash Verge Rev, FlClash, Clash Nyanpasu, and archived clients in order, with recommended picks and supported architectures. After installation, open the main interface from the system tray, then import a subscription or YAML file.

Go to downloads

TRACK 02

macOS

For Intel and Apple Silicon Macs. Distinguish x64 from ARM packages when downloading; the first launch may also require security confirmation, network-extension approval, or system proxy permission. Separate architecture links make it easy to choose based on the information shown in About This Mac.

Go to downloads

TRACK 03

Android

For phones, tablets, and some Android TV devices. Clients usually take over traffic through the system VPN interface, so confirm the VPN request on first connection. If the device architecture is unclear, start with the universal package; choose ARM64 or ARM when a smaller package is needed.

Go to downloads

TRACK 04

iOS

iPhone and iPad users can open the Clash Plus page in the App Store. After installation, import a subscription through the client interface and approve the system VPN configuration when connecting for the first time. The download page also lists the app-store link and clashplus.io for product verification.

Go to downloads

TRACK 05

Linux

Desktop users can choose a graphical client, while servers, soft routers, and container environments usually work better with the mihomo core. Check the distribution, CPU architecture, and package format before downloading; after launch, confirm the configuration directory, log location, and service-management method.

Go to downloads

Rule switchyard

Rule entry points and three traffic tracks

Clash matches requests against configuration rules in order. Once a rule matches, traffic is sent to a direct, proxy, or blocking policy; unmatched requests continue down the list until they reach the fallback rule. Understanding this processing chain is more useful for troubleshooting than memorizing an individual client button.

RULE ENTRY

Match from top to bottom

Rule order directly determines the result. Specific domain and process rules usually come first, regional and general rules later, with MATCH pointing to the fallback policy at the end.

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

DIRECT

Connect trusted local targets directly

A direct policy bypasses proxy nodes and accesses the target through the device’s current network. It suits LAN addresses, local services, sites sensitive to the apparent source region, and domains confirmed not to need a proxy. Common configurations match private addresses first, followed by local-region IP or domain sets. Direct access does not skip rules: the request still passes through Clash matching, but the final egress is the local network. If a site behaves oddly under proxy mode, downloads become slower, or a LAN device cannot be reached, check whether it belongs under DIRECT. After changing the rule, use connection logs to confirm the rule name and policy result rather than checking only whether the page opens.

A / Principles

Keep rules and policies separate

Rules determine what category a request belongs to; policies determine its actual egress. Treating them as one makes node changes unnecessarily force rule edits. Maintain them separately and you only need to adjust policy-group members or the selected result.

B / Scenarios

Check the match before connectivity

When troubleshooting, first confirm that the client has taken over the request, then identify the matching rule, and finally inspect the corresponding policy and node. Following the chain helps distinguish port, DNS, rule, and upstream connection issues.

C / Configuration

Keep an explicit fallback rule

The end of the rule list should have a clear fallback destination. Missing fallbacks, references to nonexistent policy groups, or broad rules placed too early can all nullify carefully written domain rules above them.

Quick start

A three-step preview: install, import, verify

The workflow below quickly establishes a functional baseline. Button locations vary slightly between clients, but the order is broadly consistent: confirm the package matches the system, import a valid configuration, then verify the interception scope through logs and real requests.

  1. 01 Install

    Choose a client that matches the system and processor

    Windows users generally choose an x64 desktop package; Apple Silicon Macs need the ARM version, while Intel Macs need x64; Android devices can select a package for the relevant processor architecture. After installation, launch the client and confirm that the main interface, configuration directory, and log area open normally. If the system requests network-extension, VPN, or firewall permissions, authorize them according to the client’s features; otherwise the system proxy or TUN may not be able to take over traffic.

  2. 02 Import

    Add a subscription URL or load local YAML

    Subscriptions suit setups where a service continuously maintains nodes and rules; local YAML is better for authoring and version control. After importing, check for syntax errors, then confirm that policy groups, nodes, ports, and DNS fields are recognized. If an update fails, do not immediately delete the existing configuration. First verify that the URL is complete, the network can reach the subscription source, and the response is actually configuration text; use logs to distinguish a network error from a YAML parsing error.

  3. 03 Verify

    Enable traffic interception and check rule matches

    For desktop browsers, start by verifying with the system proxy; consider TUN for applications that cannot read system proxy settings. After connecting, open the client log or connection list and check whether the target domain reaches the expected DIRECT, PROXY, or REJECT policy. If the browser works but other apps do not, focus on the interception method; if no applications connect, check the listening port, configuration load status, and policy groups first; if only certain domains fail, return to rule order and DNS resolution results.

Open source context

The Clash ecosystem, the mihomo core, and configuration boundaries

Clash-related names can refer to the original core, later core implementations, graphical clients, or a shared configuration format. Understanding these layers helps identify which component supports a field and whether an issue belongs to the interface or the core.

01 / Project history

From Clash’s rule model to actively maintained core implementations

Clash established a usage model centered on YAML configuration, policy groups, and ordered rules. After the original project stopped being maintained, clients and configurations across the ecosystem did not follow one unified update path. Many current desktop and mobile clients use the mihomo core, extending capabilities related to DNS, TUN, rule providers, proxy protocols, and network stacks. When consulting a guide, check its target core and client versions: older fields may remain compatible, while newer fields may not be recognized by earlier cores. If the same configuration behaves differently on two devices, first record both client names, core names, and configuration-load logs instead of assuming the configuration itself is invalid.

02 / Open-source ecosystem

Graphical clients and core components evolve independently

Graphical clients mainly manage configurations, subscription updates, system-proxy switching, TUN permissions, logs, and the core lifecycle; the core listens on ports, parses configuration, establishes connections, handles DNS, and matches rules. They may be maintained by different projects, so a client update does not necessarily bring core-field changes, and core support for a feature does not mean every client exposes a corresponding switch. This site groups clients by platform, while configuration guides explain underlying behavior using field names where possible. To confirm advanced capabilities, check the client’s core information and configuration-load result rather than relying only on whether an option appears in the interface.

03 / Core relationships

Check both fields and the runtime environment for compatibility

Basic fields such as listening ports, operating modes, proxy nodes, policy groups, and rules are generally recognizable across implementations; DNS policies, TUN network stacks, rule-set formats, and protocol-specific fields are more affected by core versions. Server environments are also influenced by file permissions, service users, working directories, and system routes, while desktop environments commonly encounter disabled system proxies, unconfirmed TUN permissions, or ports occupied by other network tools. Before migrating a configuration, start with a minimal working file, confirm that ports and basic rules work, then add DNS, rule providers, and overrides section by section. This is easier to troubleshoot than loading a complex configuration all at once.

04 / Update mechanics

Keep a rollback configuration and read the logs before updating

The client, core, subscription content, and user overrides may update independently. If a problem appears after a client upgrade, first determine whether the core changed as well; if policy groups disappear after a subscription update, inspect the remote configuration and local override order; if access paths change after a rule-set update, check the rule that actually matched. Keep a known-good baseline configuration, modify complex fields by module, and reload the configuration, inspect error line numbers, and run a target request after every change. A stable rollback point limits the issue to the most recent change instead of forcing you to guess after several updates occur together.

SOURCE REFERENCE

Get the mihomo source code

The commands below clone a public source repository for users who need to inspect the implementation, build the core, or verify configuration-field behavior. Most desktop users can choose a graphical client directly from the download page.

git clone https://github.com/MetaCubeX/mihomo.git

Configuration notes

Configuration and deployment articles

The article section focuses on practical configuration tasks, with an emphasis on multi-device synchronization, Linux Deployment, and the relationship between different core names. For Fake-IP, regional routing, and rule-order work, continue to the blog for complete examples.

Platform Workflow

Syncing Clash configurations across devices: subscriptions, overrides, and private repositories

Compare subscriptions, override files, and private repositories as three synchronization paths, covering credential isolation, conflict handling, and update order. The article distinguishes rules suitable for sharing from local ports, paths, and authentication details that should remain on one device.

Read the full article →
Linux Deployment

Deploying Clash on Linux: desktop clients, mihomo CLI, and service autostart

From desktop environments to headless servers, this guide covers configuration directories, startup commands, systemd services, and terminal proxy variables, plus how to use logs, listening ports, and service status to diagnose startup failures or incorrect configuration paths.

Read the full article →
Kernel Guide

Clash core versions compared: configuration compatibility across the original, Meta, and mihomo

Explains how the original Clash, Clash Meta, and mihomo names evolved by comparing maintenance status, configuration fields, rule capabilities, and client support, with the field ranges to check first when migrating a configuration.

Read the full article →