proxy-groups:
- name: AUTO
type: url-test
use: [subscription]
url: https://www.gstatic.com/generate_204
interval: 300
Client downloads · Setup guides
Clash Download CenterClients for every platform and setup guides
Choose a client for your platform and learn how to set up subscriptions, routing rules, and TUN mode.
View the full guideClash
setup paths
mode: rule
rules:
- DOMAIN-SUFFIX,github.com,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
Routing rules send different traffic to the appropriate policy instead of routing every request through the same proxy. Select rule mode in your client, then define match conditions in the config’s rules section. Rules are checked from top to bottom, and the first match determines where traffic goes. Put MATCH last as the fallback. PROXY in this example must refer to an existing proxy group; copying the name alone is not enough. Unlike global mode, rule mode can keep local services direct. Compared with per-app routing, domain rules are better suited to apps that connect to multiple services.
proxy-groups:
- name: PROXY
type: select
proxies:
- AUTO
- DIRECT
- name: AUTO
type: url-test
use:
- subscription
url: https://www.gstatic.com/generate_204
interval: 300
Proxy groups separate routing rules from the proxy endpoints they use. Define a group under proxy-groups, then select its proxy in the client. Use select for manual choice; url-test selects automatically based on probes to a specified URL. The example’s subscription must already be defined in a proxy provider. Unlike assigning a node to each rule, proxy groups let you keep your rule structure when changing subscriptions. Probe results only show connectivity to that target; they don’t predict download speeds across all websites. If access is unreliable, check the actual connection logs.
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://dns.alidns.com/dns-query
fake-ip-filter:
- "*.lan"
- "localhost"
DNS settings affect domain resolution and rule matching. Use a core that supports the relevant fields, enable DNS in its settings, then choose the fake-ip enhanced mode. It returns a virtual IP to the app, then the core maps it back to the original domain when handling the connection. With redir-host, the core returns the actual resolved address. The key difference is how domain mappings work, not a simple ranking of speed. If a LAN device or app is incompatible, add the relevant domains to fake-ip-filter. Enabling this section alone does not route all system DNS queries through the core; check the system’s DNS path too.
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
TUN mode uses a virtual network interface to capture traffic, making it useful for apps that ignore system proxy settings. On a supported client, install or start the required service, then enable TUN. The example fields are for compatible mihomo cores; check the documentation for other cores. Unlike a system proxy, TUN affects routing and DNS, so missing permissions, another VPN, or a network adapter change can break connectivity. First confirm that the subscription works with the system proxy, then enable the virtual interface. If LAN access stops working, check route exclusions rather than deleting all routing rules.
proxy-providers:
subscription:
type: file
path: ./providers/subscription.yaml
proxy-groups:
- name: PROXY
type: select
use:
- subscription
Subscriptions give clients proxy details to manage, whether hosted remotely or stored locally. Many graphical clients let you import a full config from a URL. The example instead shows a local proxy provider: its file must follow the provider format, so you can’t use any full config as a substitute. Providers keep node sources separate from custom rules, but you’ll need to maintain the proxy group references yourself. Before updating, save the current working config and check whether the client preserves overrides. Subscription links often contain access credentials; remove the full URL before sharing screenshots or logs.
These snippets show how fields relate to one another; they are not complete, ready-to-run configs. Proxy endpoints, groups, providers, and rules must reference one another correctly. Clients may also generate or override some fields through their interface. When setting things up for the first time, change one item at a time, reload, and check the logs before moving on. This helps distinguish syntax errors, missing references, and network failures—and makes it easier to roll back than changing too many settings at once.
rule-providers:
local:
type: file
behavior: classical
path: ./rules/local.yaml
rules:
- RULE-SET,local,DIRECT
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: "your-local-secret"
allow-lan: false
CLIENT / PLATFORM
Clash client downloads
Check your operating system, processor architecture, and core requirements before choosing an installer. Downloading a client and getting a subscription are separate steps: installing the app won’t provide proxy endpoints. After importing a config, check its validity period, selected policy, and your current network. The downloads page lists clients, installation instructions, and maintenance status by platform, so there’s no need to search setup articles for installers.
Windows
A good fit for desktop browsers, developer tools, and apps that use the system proxy. Check your system’s architecture before downloading. After installation, import a subscription and enable the system proxy, then test access in a browser. The service installation steps vary across clients such as Clash Plus and Clash Verge Rev; set the required permissions before enabling TUN.
If another proxy app is running, disable its system proxy or traffic capture first to prevent conflicts over ports and routes. If the internet still doesn’t work after closing the client, check whether an old system proxy address is still set. Reinstalling the app should not be your first step.
Go to downloadsmacOS
Choose the installer for Apple Silicon or Intel. Follow the system prompts to authorize the app on first launch. If you need to capture traffic from apps that ignore the system proxy, check whether the client supports service mode or a virtual network interface. A successful installation does not mean the proxy connection is working; test both separately.
Before migrating from an older client, save your subscription URL, custom rules, and proxy group selections, then import them into the new client. Don’t replace the entire app data directory: settings files and service registration methods aren’t necessarily compatible across projects.
Go to downloadsAndroid
Choose the download for your device’s processor architecture. If you’re unsure, check the device information and the client’s installation guide first. Clash Plus, Clash Meta for Android, and FlClash have different setup screens, so confirm the subscription format before importing. Allow the system to establish a VPN connection, then configure per-app routing in the client’s settings.
If the connection drops when the screen locks, check battery optimization, background activity restrictions, and other VPN apps first. Allow the client to run in the background and reproduce the issue, then use the logs to see whether the system is stopping the process. Don’t assume every disconnect means the subscription has expired.
Go to downloadsiOS
The downloads page links to Clash Plus on the App Store and lists its official site, clashplus.io. After installation, import a subscription from the app’s configuration screen and allow it to add a VPN configuration when prompted. Then choose the policy you want to use. A VPN icon in the status bar only means the tunnel is established; test access to the services you need to confirm the proxy endpoint works.
If issues start after switching between Wi-Fi and mobile data, reconnect and check the policy selected in your subscription. If only one app is affected, check which rule it matches rather than repeatedly deleting all network settings from the system.
Go to downloadsLinux
For desktop environments, start with Clash Verge Rev or FlClash and choose an installation package supported by your distribution’s package manager. A desktop environment’s system proxy setting may not apply to terminal commands. Command-line tools often need proxy environment variables set separately, or traffic captured through correctly configured TUN routing.
Server and router users can find the Mihomo core in the downloads section and manage config paths, services, and logs themselves. Before deploying manually, decide which user will run the service and which addresses it will listen on. Bind the control interface to localhost to avoid exposing it directly to the public internet.
Go to downloadsSOURCE / CONFIGURATION
How open-source cores and clients work together
Clash is an ecosystem built around config files, proxy policies, and traffic rules. Similar-looking interfaces don’t guarantee that clients use the same core. When choosing a client, check whether the project is maintained, which core it uses, and which config fields it supports. These details tell you more about whether a config will work than screenshots do.
Project history and community forks
The original Clash and some early graphical clients are no longer maintained. Many current clients use successor community cores. Clash Meta was a name used by a related fork; mihomo is one of the core projects commonly used today. Online guides may use these names interchangeably, so check which project their documentation refers to. A shared YAML file extension doesn’t mean every field works across cores.
Open-source projects let anyone review the code, documentation, and issue discussions. When you can reproduce a problem, check the project documentation and related issues first, then share logs with sensitive details removed. This can help distinguish known compatibility issues from local configuration mistakes. A community repository is not a subscription service and cannot guarantee that third-party proxy endpoints will work.
Client interfaces and proxy cores
The client interface typically handles config imports, policy selection, system proxy controls, and process management. The core handles protocol connections, rule matching, DNS, and traffic. If the same config behaves differently in two clients, they may use different cores, or one interface may merge in default fields. Check the final active config when troubleshooting rather than comparing only the original subscription.
The same protocol name doesn’t guarantee that every implementation supports the same extensions. Subscription providers need to supply a format compatible with your core. If loading fails with an unknown field, a missing policy, or a provider error, check the config references first. Changing DNS repeatedly won’t fix syntax or reference errors; get the core to load successfully before testing connections.
Updates and keeping your config
Client, core, and subscription updates are three different things. A client update may change the interface or service management; a core update may change supported fields or network behavior; a subscription update replaces config content provided by the service. Before updating, note the current working setup and save a local config and any custom overrides. Afterward, check that the config loads, then test the system proxy, rule matching, and TUN separately. Don’t turn on every option at once to test.
The downloads page organizes client links and setup instructions by platform, but it doesn’t replace each project’s release notes. If a guide uses different interface labels, check which client and core you’re using, then consult the relevant documentation. Treat discontinued apps as migration references; for a new system, prioritize actively maintained clients that support the fields you need. For checks on node timeouts, subscription failures, and lingering system proxy settings, see the Troubleshooting guide.
NOTES / CONFIGURATION
Clash configuration guides
These three articles are listed newest first and cover core selection, custom rules, and DNS enhanced modes. Confirm which core will run the config before changing rule order or DNS behavior to avoid mistaking compatibility issues for network problems. Use the snippets with your existing proxy groups; don’t replace an entire subscription with them.
Original Clash, Meta, and mihomo cores compared: protocol support and config compatibility
Trace the forks that followed the original core’s discontinuation, compare Meta and mihomo on protocol support, rule extensions, and config fields, and learn how to choose a client.
Read the core comparison →Writing custom Clash rules: rule types, match order, and the MATCH fallback
Learn about DOMAIN, DOMAIN-SUFFIX, IP-CIDR, GEOIP, and PROCESS-NAME rules, top-to-bottom matching, the no-resolve parameter, and how to use rule-providers together.
Read the routing rules guide →Fake-IP vs. redir-host: how enhanced modes work and when to use each
See how Fake-IP assigns virtual addresses, how it compares with redir-host for resolution speed and compatibility, and how to use fake-ip-filter.
Read the DNS guide →