Choose a client · Import a subscription · Route traffic with rules

Clash Beginner's Guide

Download a client and follow the setup tutorials. Start by choosing a platform, then import a subscription and check the rules to see where your traffic goes.

Chinese-language guides Open-source core ecosystem YAML examples explained
How to read a config

Rule-based routing and configuration files

Start by separating three concepts: the config file stores settings, rules define matching conditions, and proxy groups offer connection choices. They reference one another, but they are not the same switch.

Rules determine where traffic goes

Rule-based routing sends connections through different exits based on conditions such as domain names or IP addresses. Rules are usually checked from top to bottom; the first match is sent to its associated policy. DOMAIN-SUFFIX matches domain suffixes, GEOIP checks the region associated with an IP address, and MATCH catches connections that matched no earlier rule. To troubleshoot, find the matched rule in the connection log, then check the proxy group it references. Switching nodes alone may not change which rule matches. PROXY is an example group name in the diagram; your config must define a proxy group with that name.

Find the matching rule first, then decide whether to change the exit.

The client is the interface; the core is the program that handles connections. The same config can behave differently across clients because core capabilities and client overrides vary. If a field causes an error, check which core you're using and look up that field's support rather than relying on the name of an interface option. The terminal shown above displays a standalone rule snippet, not a complete subscription with proxy nodes.

Open the YAML manual and look up fields →
Choose by platform

Clash client downloads

Choose your operating system first, then check the processor architecture. Installing a client is only the first step; you'll also need a trusted subscription or a local config. The download links do not provide proxy service.

Windows

For desktop, start with Clash Plus, then compare options such as Clash Verge Rev and FlClash. Before downloading, check your device type under “System Information” in system settings and distinguish common x64 devices from ARM devices. Don't run an installer just because its filename looks similar.

For your first test, try the system proxy so browsers that follow system settings can connect. Some apps manage their own network settings and may ignore the system proxy. If so, use the guide to evaluate TUN mode, which routes traffic through a virtual network adapter. Read each installation and permission prompt carefully.

Go to downloads for the Windows client

macOS

Check “About This Mac” to see whether your device has Apple silicon or an Intel processor, then choose the matching installer. The download page lists compatible links for each client. If you're new, start with Clash Plus; if you're migrating an existing config, check whether the new client recognizes its fields.

System proxy settings and network extensions work differently; follow the options in your client's interface. Don't let multiple proxy tools manage your network at the same time. Before switching clients, quit the old one and turn off its system proxy settings, then import the new config. This helps prevent port conflicts and confusion about how traffic is routed.

Go to downloads for the macOS client

Android

For mobile, start with Clash Plus or compare Clash Meta for Android, FlClash, and Surfboard. Most recent devices use ARM64, but check your device information to be sure. Clients support different config formats, so not every subscription can be used as a universal config.

A VPN permission prompt means the client needs Android's system interface for routing traffic; it doesn't mean the system provides remote nodes. If the connection drops when the screen locks, check background activity and battery restrictions. Get a basic connection working first, then adjust background settings one at a time.

Go to downloads for the Android client

iOS

iPhone and iPad users can find the Clash Plus App Store listing and official site, clashplus.io, on the download page. After installing, read the client's import instructions and confirm the subscription format before allowing it to add a VPN configuration. Check the system requirements on the store listing before installing.

On mobile, the connection toggle, on-demand connection, and proxy selection may be in different screens. After importing a config, select it before starting the connection. If other network tools are installed, check whether another VPN configuration is active so you don't mistake a switch between tools for a node failure.

Go to downloads for the iOS client

Linux

Desktop users can compare Clash Verge Rev and FlClash, choosing a package format that matches their distribution. Check the distribution, processor architecture, and desktop environment before deciding how to install. Server and router users usually need to deploy a core separately; the process differs from installing a desktop client.

Browsers, desktop environments, and command-line programs may not share proxy settings. Start by testing an app that explicitly supports proxies, then check terminal environment variables, service permissions, and routing. Before enabling a virtual network adapter, review your existing network setup. If you're managing a device remotely, make sure you have a way to restore the connection.

Go to downloads for the Linux client
Three-step setup preview

From subscription import to connection checks

Follow one setup path you can verify. This overview covers the key steps; the full guide explains where to find each option, how to check it, and what to try if it fails.

STEP 01 / PROFILE

Import and select a config

A profile is a config you can switch to and use. Add a link from a trusted source on the “Profiles” or “Subscriptions” page, or import a local YAML file. After importing, make sure the profile is selected as the active config, not just listed in the app.

If importing fails, check whether it's a network download error or a content format error. A link opening in your browser doesn't guarantee it returns a compatible config; a login page or error page can't be imported as a subscription. Subscription links may contain access credentials, so don't share them in public screenshots.

STEP 02 / RULE

Choose rule mode and an exit

Rule mode handles connections according to conditions in the config, making it a good starting point for understanding traffic routing. Open the proxy or proxy groups page, find the main group referenced by the rules, and select an available exit. If the group is nested, keep checking until you find the connection selected within it.

Keep the default DNS and other network options at first to avoid changing too many variables at once. Global mode changes how traffic is handled by policy; it doesn't fix a broken node. Direct mode can't be used to verify a remote proxy connection either. Once you've confirmed the mode, enable the system proxy or the connection toggle required by your client.

STEP 03 / CHECK

Verify the result in the connection log

Open a website you want to test, then check the client's connection log for the destination, matched rule, and exit. Treat site availability and whether traffic reached the client as separate checks. A corresponding entry in the connection list confirms that the request entered the current routing path.

If there's no entry, first check the app's proxy settings. If there is an entry but the site still won't load, check the selected exit, DNS resolution, and errors in the logs. Note the test time and error keywords. Change one thing at a time and retest to keep a clear before-and-after record and make it easy to restore the original settings.

Open-source ecosystem and project boundaries

Clash, mihomo, and clients

Similar names don't mean the projects are the same. Separating the core, the interface, and the config source makes it easier to tell which environment a guide applies to.

From Clash to the wider ecosystem

Many later projects carried on using Clash's rule-based configuration approach. Although the original Clash project is no longer maintained, different cores and clients continue to evolve in the community. mihomo is one actively developed open-source core, with a lineage connected to Clash.Meta. Names used in older guides may differ from those shown in current interfaces. When reading documentation, identify the specific project rather than treating every app with “Clash” in its name as the same product.

The interface and core have different roles

The client imports configs, displays proxy groups, manages toggles, and shows logs. The core parses configs and handles connections. Some clients bundle a core and may also let you switch or update it. An option in the interface doesn't guarantee that the current core supports its related fields; conversely, the core may support features that the interface doesn't fully expose. When troubleshooting compatibility, note the client name and core details. That's more useful than simply saying “Clash is broken.”

How to verify community documentation

Open-source code, documentation, and issue discussions can help you trace where a feature comes from. When following a guide, check the field definitions in the relevant project's documentation first, then refer to specific community examples. Release notes explain changes; issue discussions can provide reproduction steps, but a fix that works for one user may not suit every device. The mihomo repository is linked below for anyone who wants to read the source or investigate core behavior. You don't need to compile the program for ordinary use.

Keep a way to roll back before updating

Client, core, subscription, and GeoIP data updates are separate operations. A subscription update may replace rules and nodes; GeoIP data affects region-based IP matching; a program update may change field support or system integration. Before updating, save local changes and a working config, review the release notes, then update each component separately. If something goes wrong, return to the last working config and settings instead of stacking more changes and making the cause harder to find.

Clash Beginner's Guide provides Chinese-language beginner resources and a download index. It is not affiliated with the development teams of every project in the ecosystem, and it does not operate proxy nodes or subscription services. The guides focus on shared workflows. For permissions, system support, and specific field behavior, consult the documentation for your chosen client and core, and follow the laws and network-use requirements where you live.

Public source code · mihomo

View the core repository

If you have Git installed, run the command to clone the source code. It only downloads the repository; it won't install anything or change your proxy settings.

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

View mihomo on GitHub →
Technical notes

Config guides and troubleshooting

Once the basic connection works, dig deeper based on the issue you're facing. Start with the article that matches what you see rather than changing every setting at once. Startup failures, apps bypassing the proxy, and config syntax errors each need a different troubleshooting approach.

Frequently asked questions

Four checks for your first setup

Separate installation, configuration, proxy exits, and traffic routing before troubleshooting. Expand a question below, or see more topics in the FAQ.

Why can't I connect right after installing the client?

The client manages configs and handles connections, but it doesn't create remote proxy nodes automatically. Get a subscription from a trusted source or prepare a local config, import it, select it as the active config, then check the selected exit in the proxy groups. A connection toggle only starts the processing flow; it doesn't mean the config contains a working node. See the setup guide for the steps.

Should I start with rule mode or global mode?

When you're first learning how a config works, start with rule mode and see which rules match your requests. Global mode usually applies the global policy to connections that reach the core, but it won't automatically route app traffic that never entered the client, and it won't fix a broken node. If the result changes after switching modes, compare the exit and connection log rather than guessing based on the mode name. See the YAML manual for the rule structure.

Why won't a website load even though the node test passes?

A node test only checks a specific test request; it doesn't guarantee that the website you want will be reachable. First see whether the website request appears in the connection list, then check the matched rule and the exit actually used. If the request reached the client, check DNS resolution and errors in the logs. Browser cache, restrictions on the destination site, and an app's own proxy settings can also affect the result. Follow the troubleshooting topics one by one instead of repeatedly reinstalling.

Will a subscription update overwrite my config changes?

It might. A remote subscription update usually fetches the config again, so direct edits to a subscription-generated file may not persist. Back up the original file first, then check whether your client supports overrides, merging, or separate rule management. Put lasting changes somewhere the client explicitly supports for persistence, and verify the active config after updating. Behavior varies by client, so don't rely on the filename alone. Start with the guide to config overrides and merging.

Download Clash