Clash FAQ

Client selection · Configuration fields · Troubleshooting

Clash Downloads
and FAQs

Choose a client first, then look up the relevant fields. Find downloads by platform, YAML examples, and troubleshooting guides—with clear steps you can verify as you go.

Configuration Guides Open-Source Core References Browse by Issue

config.yaml Help Desk

Static Configuration Preview

Six common settings: check the fields, then find the answers. This preview does not change your local configuration.

  • Import a Subscription

    Subscription URL · Example

    https://example.com/sub?token=xxxx Update Subscription

    Imported successfully, but no proxies appear?

    First, make sure the current configuration is enabled.

  • Proxy Mode

    RuleGlobalDirect

    Is Global mode faster?

    The mode changes how traffic is routed, not the quality of the connection.

  • Port Settings

    mixed-port: 7890
    allow-lan: false

    What if port 7890 is already in use?

    After changing the port, update the system proxy settings too.

  • DNS

    enhanced-mode: fake-ip
    nameserver:
      - 223.5.5.5

    Is getting a virtual IP address an error?

    With fake-ip, returning a mapped address is expected.

  • Routing Rules

    DOMAIN-SUFFIX,google.com,PROXY
    GEOIP,CN,DIRECT
    MATCH,PROXY

    Why aren't later rules taking effect?

    Rules are evaluated from top to bottom; the first match wins.

  • Startup Logs

    infoStart initial configuration in progress
    infoMixed(http+socks) proxy listening at: 127.0.0.1:7890

    A successful listener doesn't mean the remote connection works.

Choose your platform

Clash Downloads

Choose an installer by operating system and processor architecture. Desktop apps are suited to everyday use; standalone cores are better for servers and routers. They install differently. The download center lists clients, system requirements, and archived releases; the homepage provides links by platform.

Windows

Start with Clash Plus, or compare desktop clients such as Clash Verge Rev and FlClash. Check your system type under Settings → System → About before downloading. If the app won't launch, check its runtime requirements and any security warnings rather than repeatedly overwriting the configuration folder.

Go to Downloads

macOS

Check About This Mac to see whether your device has Apple silicon or an Intel processor, then download the matching installer. Launching the app and authorizing the system proxy are separate steps: an open app doesn't mean system traffic is routed through the proxy. To route more apps, configure the network extension or TUN as described in the guide.

Go to Downloads

Android

Choose a client such as Clash Plus or Clash Meta for Android. After importing a configuration, grant the system VPN permission. If the connection drops when the screen locks, check battery optimization and background restrictions first. Running another VPN app at the same time may cause the system to replace the current connection.

Go to Downloads

iOS

Open the Clash Plus App Store page from the download center. Official site: clashplus.io. Before importing, check that the subscription format is compatible. Grant permission when prompted to add a VPN configuration. If the configuration has no proxies or proxy groups, turning on the connection can't add them.

Go to Downloads

Linux

For desktop use, check out Clash Verge Rev and FlClash, and choose a package for your distribution. On a command-line-only system, see the mihomo core section and configure the config path, service permissions, and log output separately. Don't apply desktop installation steps directly to a router OS.

Go to Downloads

Browse all clients →

Common Configuration Questions

Clash Configuration and Usage

First, distinguish the client interface, the core actually running, and the active configuration file. Menus may have different names across clients, but you can still verify ports, modes, DNS, and rules field by field. The snippets below explain individual settings; they aren't complete subscriptions you can use to connect.

Why are there still no proxies after importing a subscription?

profiles / proxies

First, confirm that the subscription updated successfully, then check that the configuration is selected. Add the URL provided by your service on the client's Configuration or Subscription page, update it, and check whether proxies and proxy groups appear. A URL opening in your browser doesn't mean its response is a compatible Clash configuration: a login page, expiration notice, or plain-text error isn't valid YAML. If the update fails, check the status code and logs before changing DNS. Subscription URLs often contain personal access credentials. Redact the full URL before sharing screenshots or asking for help; public examples should include only the domain and parameter names.

Also distinguish a successful import from a working proxy: import success means the client accepted the content, while a working route can only be confirmed by making a connection. After switching configurations, check that the proxy group still selects the intended route. Local edits may also be overwritten at the next subscription update.

View the subscription import steps →

Rule, Global, or Direct—which should you use?

mode

For everyday use, start with Rule mode to route requests according to your configuration. Switch to Global temporarily to check whether a rule is causing the issue. Global mode doesn't make the connection itself faster, and you still need to choose a proxy for GLOBAL. Direct mode sends requests entering the core directly, which is useful for checking whether your local network works. These modes change the route taken by traffic that reaches the core; they don't automatically capture every app. Apps that ignore the system proxy need their own proxy settings or, where appropriate, TUN. Switching modes alone won't fix that.

mode: rule

Evaluates rules in order; the matching rule determines which policy handles the request.

View mode and general fields →

Port 7890 is in use. Can I just change the number?

mixed-port / allow-lan

You can change the port, but first check whether the process using it is an old instance. Running multiple proxy clients on the same device is a common cause of listener conflicts; closing an unused instance is often clearer than changing settings at random. If you do need a different port, set mixed-port to an unused value, reload the configuration, and confirm the logs show the new listening address. Then update the system proxy and app proxy ports, or your browser may keep using the old address. allow-lan controls access from your local network; it doesn't resolve a conflict on this device. If you only use Clash locally, leaving it set to false helps limit access.

Troubleshoot a port conflict →

config.yaml · Local mixed port example

mixed-port: 7891
allow-lan: false
mode: rule

DNS errors: should I change nameserver first?

dns / enhanced-mode

First determine whether DNS resolution is failing or the connection is failing after resolution. Check dns.enable, which fields your current core supports, and whether the app actually uses this DNS path. With fake-ip, returning a mapped address is normal; an address that doesn't look like a public IP isn't proof of a configuration error. nameserver specifies upstream resolvers. fallback isn't a simple switch that retries every request with a backup resolver; its behavior depends on filters and the core. A browser's built-in encrypted DNS may also bypass the expected route. During troubleshooting, change one variable at a time and compare the logs before and after each change. That's more useful than replacing every resolver at once.

This is only an example of the field structure: the local DNS listener uses a loopback address, which doesn't mean the system is automatically using it. Check how the client handles traffic to determine whether DNS hijacking is needed and how it works with TUN. After updating the configuration, remember that apps and the system may cache DNS results.

View DNS fields and resolution paths →

config.yaml · DNS structure example

dns:
  enable: true
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5

The rule looks right. Why isn't it matching?

rules / proxy-groups

First confirm that Rule mode is active, then start at the top of the rule list. Matching stops at the first match, so a broad rule earlier in the list may already be handling the request. MATCH is typically a catch-all; placing it too early prevents later rules from being reached. The policy name at the end of a rule must exactly match a proxy or proxy group in your configuration. PROXY here is just an example name, not a built-in policy available in every configuration. Open the connection details and check the requested domain, matched rule, and final outbound route instead of guessing from what a webpage displays. Also note that existing connections may keep using the old route; send a new request after making changes.

View rule syntax and ordering →

config.yaml · Define a policy group named PROXY first

rules:
  - DOMAIN-SUFFIX,google.com,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

It says connected, but I still can't access the internet. Why?

log-level / connections

“Connected” usually means the local service or network routing has started; it doesn't mean the remote proxy is reachable. Turn off the proxy first and check that your local network can reach ordinary websites. Then check startup logs for configuration parsing, port binding, or permission errors. Open a target site and see whether a request appears in the connection list. If there's no entry, check the system proxy or TUN; if there is an entry but it times out, check the selected proxy group, DNS, and remote connection. Clash node speed tests measure the response from a specific test endpoint; low latency doesn't mean every website will work. If the app crashes, save the error logs before checking the configuration, core files, and system runtime. Don't immediately erase the entire data directory.

When reporting an issue, include your OS, client name, core details, steps to reproduce, and a few log lines from before and after the error. Hide subscription credentials and server authentication details, but keep field names and the exact error text. A screenshot that only says “can't connect” usually isn't enough to identify the failing layer.

Continue troubleshooting by symptom →

Projects and Documentation

The Clash Ecosystem and mihomo Core

Check maintenance status before downloading, and core documentation before editing settings. This site organizes client downloads and usage guides without conflating projects' features, licenses, or release schedules—or treating community clients as a single official app.

The client provides the interface; the core handles connections

Many desktop and mobile apps in the Clash ecosystem bundle a proxy core behind a graphical interface. Subscription management, tray menus, and system proxy toggles belong to the client; protocol parsing, rule matching, and DNS handling are mainly handled by the core. Switching interfaces doesn't necessarily improve connection quality, and different cores may not support the same YAML extensions. If a configuration produces an error, identify the core that's running and consult its documentation.

Distinguish the original project, community forks, and archived clients

After the original Clash project stopped being publicly maintained, the community continued work in several directions. mihomo is one actively developed core project, while some client interfaces and older guides still use historical names such as Clash Meta. Similar names don't mean the projects have the same maintainers. Choose a client based on OS support, current maintenance, and the protocols you need. Archived apps may be useful for reference on older systems, but don't assume menus in old screenshots correspond directly to parameters in a newer core.

Read release notes before updating, and keep a rollback-ready configuration

Graphical clients and their bundled cores may update separately. Fixing an interface issue and changing rule behavior are different things. Before updating, back up local overrides, rule files, and essential settings, then read the release notes for compatibility changes. If something breaks, compare against the original configuration with as few changes as possible to determine whether the issue is in the config, core, or network routing. Subscription content from your provider is also independent of client updates; updating the app can't fix an expired subscription URL.

Recent Configuration Notes

Clash Guides and Troubleshooting

Browse all articles →

For complete walkthroughs, continue with a topic below. For mode issues, check traffic routing; for background disconnects, check system permissions and battery restrictions; for port conflicts, find the process using the port. Don't attribute problems at different layers to an unavailable proxy node.

Latest Clash Download