Open-source project · all-platform clients updated continuously

Clash Download · All-Platform Clients

Download entry points for Windows, macOS, Android, iOS, and Linux clients. Built on the mihomo core, with support for rule-based routing and one-click subscription import. Installers track upstream releases continuously; protocol differences and core selection are covered on the protocol reference page, and setup and troubleshooting paths on the guide page and help center.

Free forever Open source code Synced across 5 platforms
[ SECTION 01 / DOWNLOAD ]

Get the Client

Choose your platform below; recommended clients per platform, the full version list, and minimum system requirements are on the download page — check your CPU architecture before downloading

Windows

Win 10 / 11 · x64 / ARM64

Suited to desktops and laptops running in the background; switch between system proxy and TUN mode anytime.

Go to Download

macOS

Intel / Apple Silicon

Separate builds for both chip architectures; network extension and keychain authorization steps are on the guide page.

Go to Download

Android

Android 7+ · ARM64 / ARM

Handles all traffic via VpnService without root; adding it to the battery-optimization whitelist is recommended.

Go to Download

iOS

Available via App Store

No offline installer; first launch requires VPN profile authorization — see the article section for the walkthrough.

Go to Download

Linux

x64 / ARM64 · deb, etc.

Ships as deb packages and prebuilt binaries; runs headless as a service on machines without a desktop environment.

Go to Download
[ SECTION 02 / FEATURES ]

Core Features

Module status overview — click any row to expand the details

NO.MODULESTATUS

Rule-based routing answers the core question of which traffic goes through the proxy and which connects directly: conditions such as domain, GEOIP, IP-CIDR, and process name are matched top to bottom, each hit routes to its specified outbound, and anything unmatched falls into the MATCH catch-all. Compared with manually toggling a global proxy, rule mode is configured once and works long-term — local traffic stays direct while overseas traffic goes to the right policy group. Rule sets support remote subscriptions and local overrides, with local overrides taking precedence, and updating rules never interrupts established connections. Syntax examples and matching priority are covered on the protocol reference page and in the glossary.

curl -I -x http://127.0.0.1:7890 https://example.com

Nodes from different providers often speak different protocols — Shadowsocks, VMess, Trojan, VLESS, Hysteria2, TUIC, plus transports like WebSocket and gRPC. Clash manages them all in a single YAML config, so there's no need to install a separate client per protocol. Nodes can be grouped into url-test (auto-pick the fastest by latency), fallback (switch automatically when the primary fails), or load-balance (spread connections across nodes), letting the core select routes automatically with minimal manual intervention. Which protocol suits which network conditions, and how core protocol support differs, is laid out in a full comparison table on the protocol reference page.

grep -c "name:" profile.yaml

Subscriptions take node-list maintenance off your hands: the provider packs every node and its recommended rules into one URL, and pasting it into the client pulls the full configuration. Node additions, removals, and address changes sync automatically on the next update — no copying server parameters by hand. Clients support scheduled auto-updates by the hour or day, and if an update fails they fall back to the previous cached version, so a single failed pull never cuts your connection. The import entry lives in each client's config or subscription page; exact steps and fixes for common import errors are in step two of the guide page and the help center.

mihomo -f profile.yaml -t

A traditional system proxy only affects apps that read the proxy setting — command-line tools, game clients, and UWP apps often bypass it and connect directly. TUN mode creates a virtual network adapter that intercepts all outbound traffic at the network layer and hands it to the core for rule processing, with no per-app configuration and full coverage of programs that ignore the system proxy. Enabling it requires administrator rights on Windows, network-extension approval on macOS, and VpnService on Android — each a one-time authorization. How to lift the Windows UWP loopback restriction and troubleshoot common TUN conflicts is covered in the help center.

ip route | head -n 3

DNS poisoning and resolution leaks are the two most common hidden failures in proxy setups: a domain resolves to the wrong IP and breaks rule matching, or plaintext queries go to the local ISP and expose what you're visiting. The built-in DNS module offers two modes — fake-ip returns virtual addresses from a reserved range and defers real resolution to the exit side, making it fast and inherently poison-proof, while redir-host offers better compatibility for scenarios that need real IPs. Upstream queries support DoH / DoT encryption, and domestic and overseas lookups can be split by domain to different resolvers. The trade-offs between the two modes are detailed in the glossary.

nslookup example.com 127.0.0.1

Anything a GUI client can do, a script or dashboard can do too: the core exposes a complete RESTful control API on local port 9090, returning connection lists, node latency, traffic statistics, and runtime logs as JSON. Switching nodes, changing modes, or triggering a subscription update is a single HTTP request. Connect an open-source web dashboard such as metacubexd or yacd for visual monitoring without depending on any particular GUI; automation scripts for scheduled speed tests or anomaly alerts need nothing more than curl. The API listens only on the local loopback address by default — configure secret authentication before exposing it externally.

curl http://127.0.0.1:9090/version
[ SECTION 03 / QUICKSTART ]

Quick Start

Three steps to get connected; the full walkthrough with screenshots is on the guide page

[ clashzip / quickstart ]
  1. Get and Install the Client

    Pick the installer for your platform on the download page, taking care to distinguish x64 from ARM64. On Windows and macOS, run the installer wizard and complete the service or network-extension authorization prompted on first launch; on Android, install the APK or get it from a store; on iOS, it's always via the App Store. After installing, open the settings page once to confirm the core version and the launch-at-startup option.

  2. Import the Subscription Link

    Copy the subscription URL provided by your service, paste it into the client's config or subscription page, wait for the node list to load, and enable scheduled auto-update while you're there. If the import fails, first check whether the link was copied in full and hasn't expired, then confirm the current network can reach the subscription server directly; the help center has a step-by-step checklist for persistent failures.

  3. Select a Node and Verify Connectivity

    Switch to rule mode, pick a lower-latency node in the policy group, visit any webpage to confirm connectivity, then run a speed test to confirm bandwidth meets expectations. If something's off, open the log panel and trace it along three lines: connection failures, DNS resolution, and unmatched rules. On mobile, also confirm the app hasn't been killed by the system's background power-saving policy.

Three steps and you're up and running. If you get stuck at one of them, don't reinstall from scratch: installation issues usually trace to system architecture or permission grants, import issues to the subscription link itself, and connectivity issues to nodes or rules — locating the failing stage beats blind retries. The guide page provides screenshots and platform-specific notes for every step.

[ SECTION 04 / TRUST ]

Open Source Backing

From the original 2018 core to today's mihomo — project lineage, code, and release process are all publicly verifiable

[ clashzip / open source ]
  • Traceable Project HistoryThe Clash core went open source on GitHub in 2018; after the original repository was archived, the community fork mihomo (formerly Clash.Meta) took over maintenance with backward-compatible config formats. The full lineage is mapped in the ecosystem overview article.
  • Core Code Is PublicThe mihomo core is written in Go and hosted under the GPL in a public repository — every commit, each release's build artifacts, and their checksums are traceable, and anyone can audit the source or build from it.
  • Community-MaintainedGUI clients for each platform (Clash Verge Rev, ClashMetaForAndroid, and others) are iterated in independent community repositories, with issue discussions, changelogs, and release cadence fully public — no closed-source black-box components.
  • Transparent Update PipelineInstallers on this site sync with official upstream releases, with no repackaging or injection; before downloading you can verify file names and version numbers against the upstream release page — what you get is what the developers published.
  • Core and UI Are DecoupledGUI clients handle only the interface and process management, while all traffic processing happens in the embedded mihomo core; if a UI project stalls, the core can still be upgraded or swapped independently — you're never hostage to a single project's fate.

What open source means for everyday users is not abstract: traffic-handling logic lives in code anyone can read, problems come with public issues where the same case and its fix can be found, and even if one client project ends, your config files and subscriptions migrate as-is to other clients in the ecosystem. The command below pulls the core source directly for review or building.

git clone https://github.com/MetaCubeX/mihomo.git
[ SECTION 05 / FAQ ]

FAQ Highlights

One-line answers; full troubleshooting paths are in the help center

[ clashzip / faq digest ]

These four entries cover the scenarios new users ask about most; matching your symptom here saves most of the diagnostic time. For anything else, search the help center by symptom.

  • No nodes after importing a subscription? Check that the link was copied in full and hasn't expired, trigger a manual update in the client, and if it still fails work through the import checklist in the help center.
  • Proxy on but some apps unaffected? Command-line tools and UWP apps often bypass the system proxy; switch to TUN mode to capture all traffic — enabling steps are on the guide page.
  • Which protocol should I pick? Shadowsocks / VMess suffice on ordinary networks; in restricted environments prefer Trojan or Hysteria2 — see the conclusions in the protocol reference.
  • Rule mode or global mode? Stay on rule mode day to day for automatic per-domain routing; use global mode only for temporary debugging — the conceptual difference is in the glossary.
Get the Client