Rule-based proxy tool · Configuration guides

Clash clientsDownload & setup

Manage network connections with routing rules and proxy groups, with client downloads for five platforms and guides to subscriptions, DNS, and TUN.

  • Open source
  • YAML configuration
  • Documentation
Routing / Configuration

From incoming connections to routing decisions

Clash separates connection handling, DNS resolution, and outbound selection. First choose how apps connect, then decide which rules match their traffic, and finally use a proxy group to select an available outbound. The examples below use mihomo configuration syntax; interface labels vary by client.

Routing rules direct connections based on domains, destination IPs, or rule sets. A single config can route selected services through a proxy, send LAN traffic direct, and reject requests that match specific rules. Rules are checked from top to bottom, and the first match applies. Put specific rules before broader ones, then use MATCH at the end for any remaining connections. Unlike switching a single global outbound, this approach lets you handle each app's network needs separately. When making your first change, add just one domain rule and check the connection log to confirm it matches. This makes it easier to pinpoint issues than changing several things at once.

↗

Configuration example: PROXY must refer to a defined node or proxy group. Rule order determines priority; this is not a complete configuration.

Client / Choose a platform

Choose a Clash client for your platform

The client provides the interface, system permissions, and configuration management; the core handles protocols and applies rules. Choose based on your operating system and CPU architecture, then consider the connection mode you need. The download page lists clients by platform, along with maintenance status and installation instructions. These links take you to the relevant platform page so you can compare options before installing.

Windows

Import your configuration, then enable the system proxy. For TUN, install the client service and grant the requested permissions.

Go to downloads ↗

macOS

Choose Apple Silicon or Intel. Review network extension permissions, and disable the old client's proxy before switching.

Go to downloads ↗

Android

Match your device architecture, import a configuration, and allow VPN access. Check battery settings for reliable background use.

Go to downloads ↗

iOS

Find Clash Plus on the App Store or at clashplus.io. Import a supported subscription and allow VPN access on first connection.

Go to downloads ↗

Linux

Choose a desktop client or manage the core as a service. Match the package and CPU architecture; keep remote management access available.

Go to downloads ↗

The same subscription may behave differently across clients due to core support, override mechanisms, and permissions. When migrating, import the original configuration and verify a basic connection first. Then restore custom rules, DNS, and TUN settings one at a time. This helps distinguish subscription issues from client-specific differences and leaves you with a working configuration to roll back to.

Browse all clients →
Setup / Quick start

Import a subscription, choose a mode, and test your connection

Start with a connection path you can explain before adding complex rules. These three steps cover initial setup. You will need to provide your own subscription; installing a client does not automatically provide a proxy service. If you already have a local configuration, you can start by importing it.

  1. 01 / Import

    Import and activate a configuration

    Open the client's configuration or Profile page and choose to import from a URL or a local YAML file. Give the configuration a name that identifies its purpose, wait for the download and parsing to finish, then select it explicitly. If the list is empty, check the import error. Make sure the URL has no extra spaces, access credentials are valid, and the response uses a format supported by the current core.

    You’re ready when the configuration is active and proxy groups show their referenced node sources. Keep the original file after importing; there is no need to change ports or DNS yet.

  2. 02 / Route

    Choose a routing mode and connection method

    Start with rule mode, choose an outbound in a proxy group, and enable the client's system proxy or system VPN connection. Rule, Global, and Direct determine how connections choose an outbound; system proxy and TUN determine how app traffic enters the core. Understand these as two separate sets of options. Global mode can help with comparison tests, but whether to use it day to day depends on your needs.

    You’re ready when the target app uses the selected connection method and the proxy group points to the expected outbound—not merely when the client is open.

  3. 03 / Inspect

    Check routing in the connection log

    Visit a destination whose expected outbound you know, then check its domain, matched rule, and proxy chain in the connection view. If something goes wrong, first identify whether it is a DNS failure, connection timeout, or rule mismatch, then troubleshoot accordingly. An enabled connection toggle does not prove that every app's traffic is being captured, and a webpage loading does not confirm that every rule is correct.

    You’re ready when the connection log matches your expectations and the network recovers after traffic interception is disabled. Then add automatic updates, overrides, and more specific routing rules.

Source / Open-source ecosystem

How clients, cores, and configurations are maintained

To determine whether a feature is available, check the client interface, the core actually running, and the loaded configuration. Open-source repositories document implementations and changes, while these guides explain how configuration pieces fit together. Using both is more reliable than assuming projects are compatible because they have similar names or interfaces.

Project history and compatibility

The Clash ecosystem includes core forks and graphical clients developed at different times. Tutorials for discontinued clients may still appear in search results, but their button locations, protocol support, and permission steps may not apply to your current setup. This site separates installation links from advanced configuration guides. First identify your client and core, then follow documentation for the matching syntax. Do not assume projects with similar names share the same implementation.

mihomo and graphical clients

mihomo is one actively maintained open-source core in the Clash ecosystem. Licensed under GPL-3.0, it provides low-level protocol, connection, routing, and DNS features. Graphical clients typically handle subscription management, tray access, system proxy settings, and service installation. A toggle in the interface does not guarantee identical behavior across operating systems. Likewise, a core may support a configuration field without the client preserving manual changes to it.

Community resources and verifiable sources

For questions about a field, configuration load failures, or changed behavior, start with the relevant core documentation, repository notes, and issue tracker. Before asking for help, include the client name, core details, operating system, and a minimal reproducible configuration. Remove subscription URLs, node credentials, and personal network identifiers. Public issue records can help determine whether a problem is a known limitation, a configuration mistake, or a bug that needs further reproduction. A screenshot of an error alone rarely shows the full connection flow.

Preserving updates and local changes

Client updates, core updates, and subscription updates are separate operations. A client update may change the interface or system integration; a core update may change supported fields or behavior; and a subscription update may replace nodes, rules, or proxy groups. Back up important configurations before updating and keep a separate record of local overrides. After updating, test the same destination again and compare release notes if behavior changes. Do not immediately reset everything to its defaults.

Suggested reading order: Start with installation and subscription imports. If you need to understand Profiles, proxy groups, rule sets, or Fake-IP, check the glossary first. Once you have a basic connection working, move on to the advanced configuration guide for proxy groups, DNS, TUN, and local overrides. Examples explain configuration structure; before merging them into an existing config, check for duplicate fields and references that could override current behavior.

A client provides proxy functionality, but connection quality still depends on your local network, remote service, and outbound conditions. Tune your configuration based on reproducible problems: note which app, destination, and connection method are affected, then narrow down the test. Always follow applicable laws, network policies, and service terms when using or sharing configurations.

Notes / Technical articles

Configuration structure and subscription management

These technical notes cover specific questions, from import formats to configuration fields. Identify which step you are working on, then choose the relevant article. Before changing local settings, keep the original configuration and a backup that can connect successfully.