Windows
Import your configuration, then enable the system proxy. For TUN, install the client service and grant the requested permissions.
Go to downloads ↗Rule-based proxy tool · Configuration guides
Manage network connections with routing rules and proxy groups, with client downloads for five platforms and guides to subscriptions, DNS, and TUN.
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.
↗A proxy group gives nodes or other groups a name that rules can reference. Use select for manual choice, url-test to pick an outbound based on test results, fallback to find an available option in order, or load-balance to distribute connections. Define your node sources first, create proxy groups next, and then reference their names in rules. This makes the configuration easier to follow. Proxy groups also avoid repeating node names across rules when you change outbounds. Automated checks only show whether a test target is reachable; verify real-world behavior in your apps rather than choosing an outbound based on a single test.
↗TUN mode routes connections through a virtual network interface. It can help with apps that ignore system proxy settings or when you need to capture more network traffic. TUN and rule-based routing are not alternatives: TUN controls how connections enter the core, while rules determine where they go. Before enabling it, make sure the client has the required permissions and check for conflicts with other VPNs, routing settings, or security software. TUN operates at a lower network level than a standard system proxy. For troubleshooting, first verify that the basic proxy works, then enable routing and DNS interception one at a time. Keep a way to restore your original network settings.
↗DNS settings handle domain resolution. Fake-IP maps domains to virtual IP addresses so their domain names remain available for rule matching. It is not a proxy node and does not choose an outbound. When configuring DNS, consider whether the resolver is reachable, how DNS requests are routed, and whether LAN services are compatible. If a device or app cannot handle virtual IPs, add filters as needed. Built-in client DNS involves more than changing system DNS: check it alongside routing and TUN settings. After making changes, reconnect so stale cache entries do not affect your results.
↗A Profile is where a client stores and switches configurations. It can come from a local YAML file or be generated from a remote subscription. After importing, select the intended Profile and make sure the core has loaded it; seeing a file in the list does not mean it is active. Remote updates may replace the original subscription content, so manage persistent rules with the client's supported override or merge features. Keeping subscription sources separate from local changes makes rollbacks easier than repeatedly editing downloaded files. Give each Profile a purpose-specific name and note when it was last updated. Subscription URLs often contain access credentials, so keep them out of public screenshots and shared logs.
↗Configuration example: PROXY must refer to a defined node or proxy group. Rule order determines priority; this is not a complete configuration.
Configuration example: define subscription under proxy-providers. Choose a test URL that is reachable from your current network.
Configuration example: permissions, routing, and network stack support vary by OS. Pair DNS interception with the built-in DNS settings.
Configuration example: choose DNS servers for your network environment, and adjust filters based on the domains and apps involved.
Configuration example: the provider file must exist and contain compatible nodes. Profile management is a client feature.
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.
Import your configuration, then enable the system proxy. For TUN, install the client service and grant the requested permissions.
Go to downloads ↗Choose Apple Silicon or Intel. Review network extension permissions, and disable the old client's proxy before switching.
Go to downloads ↗Match your device architecture, import a configuration, and allow VPN access. Check battery settings for reliable background use.
Go to downloads ↗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 ↗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 →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.
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.
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.
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.
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.
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 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.
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.
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.
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.
Walks through the top-level fields in a Clash config in order, explaining what each section does, common syntax, and how the sections reference one another—so you can understand and safely edit your configuration.
Read technical notes →Explains how Profiles relate to config.yaml, with tips for naming and switching between configurations, setting update intervals, and keeping backups—without accidentally editing the original subscription file.
Read technical notes →Covers how to copy, paste, and update a subscription URL; compares how three common subscription formats are recognized and supported; and offers troubleshooting tips for imports that show no nodes.
Read technical notes →