Open-source clients · installers organized by platform

Clash Client DownloadsMulti-platform apps and setup guides

Start with the installer for your platform, then follow the steps to import a subscription and set up rule-based routing.

Platforms and architectures Step-by-step guides Open-source core resources
Clash · Settings
Runtime settingsInterface preview
System proxy
TUN mode
Allow LAN
Launch at startup
Mixed port7890
External controller127.0.0.1:9090
ModeRuleGlobalDirect
config.yaml
mixed-port: 7890
mode: rule

rules:
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

Choose an installer for your operating system

Check your device's operating system first, then confirm its processor architecture. The installer installs the client; a subscription provides proxy nodes and rules. You'll need to set up both.

Windows installers

For desktop and laptop PCs. Find your system type under Settings → System → About, then choose the right client for x64 or ARM. The download page lists Clash Plus first, followed by other GUI clients and archived projects.

After installation, open the client's profile list first—don't just switch on the system proxy. Without a selected profile or a running core, the system proxy may point to a local port that isn't listening. For your first test, run only one proxy client to avoid conflicts over ports and system settings.

Go to downloads

macOS installers

Check your chip under Apple menu → About This Mac. Choose the matching build for Apple silicon or Intel. After opening the disk image, follow the client's instructions to move the app to Applications, then launch it from there.

System proxy, background operation, and network extensions may each require separate permissions. If macOS displays a security alert, verify the app's source and read the alert; don't disable system-wide protections. Before switching clients, quit the old one and restore your previous proxy settings to prevent a menu bar app from handling connections in the background.

Go to downloads

Android installers

Choose an APK that matches your device's processor architecture. If you're unsure, check whether the client offers a universal build. Grant install permission to the app you're actually using to open the APK, and restore the previous permission setting afterward if you like.

The first time you connect, Android will usually ask for VPN permission. This lets the client create a local tunnel to handle network traffic; it doesn't mean your device is connected to a proxy node. You still need to select a valid profile and policy. If the connection drops when the screen locks, check battery optimization, background restrictions, and whether another VPN app is running.

Go to downloads

iOS App Store

The download page links to Clash Plus on the App Store and the official website, clashplus.io. Check the system requirements in the store listing before installing. Get your subscription URL from a trusted source and import it separately in the client.

After allowing the VPN configuration, return to the client and check the selected profile and connection status. The VPN icon only confirms that a tunnel is active; it doesn't mean every app follows the same routing policy. Test a destination in your browser first, then check individual apps as needed. Avoid repeatedly deleting system network configurations.

Go to downloads

Linux desktop and core

For desktop use, start with a GUI client. Server and router users may prefer running the Mihomo core directly. Install Debian- and RPM-based distributions using their respective package managers. AppImage is a common portable distribution format, but check the download page for available builds—projects don't necessarily offer every format.

Before installing, note your distribution, architecture, and desktop environment. Desktop proxy settings usually affect only apps that honor them; command-line tools may need a proxy specified separately. Running the core directly also means managing the config path, service startup, logs, and permissions yourself. GUI client instructions don't apply as-is to a background service.

Go to downloads

For a fresh install, start with Clash Plus. If you already have a working setup, compare core compatibility, subscription management, and how each client handles system traffic before switching. Similar client names don't guarantee identical configuration support. Older guides may show outdated button locations; look for the relevant sections—Profiles, Proxies, Settings, and Logs.

Archived clients can help identify older setups and migration scenarios. If a configuration field isn't recognized, first check whether the core supports it before editing the config. Repeatedly switching installers usually won't fix a problem in the subscription itself. The download page lists installation links separately from maintenance status, making it easier to distinguish current options from legacy compatibility needs.

View all clients →

Clash settings and configuration

Static settings preview. Switch themes to see where options are located. Labels vary by client; this preview won't change your device's network settings.

Settings · System proxy
System proxyOn
Mixed port7890
Listen address127.0.0.1
Allow LANOff

Route apps through the local proxy

The system proxy points your operating system to the port the client listens on. It works well with browsers and desktop apps that honor system settings. Start the core and select a profile before enabling the system proxy in Settings. Browser extensions may override system settings, while terminal tools may rely only on environment variables—so a working browser doesn't mean your terminal is proxied. Compared with TUN, this method makes it easier to see which apps are affected. If you change the mixed port, update the system proxy address too. When troubleshooting, first check whether the request appears in the client's connection list.

This example illustrates fields and their placement; it isn't a complete configuration to replace your existing subscription. Before running it, make sure the policy groups, rule data, and core capabilities are compatible.

Three steps after installation

Verify that the client is installed separately from verifying that a connection works. Start with a setup you can easily revert, then expand traffic coverage one step at a time. This makes it easier to identify what changed if something goes wrong.

  1. Import and select a subscription profile

    Open Profiles and choose import from URL or local file. The URL must include the full path and parameters. After importing, select the profile to make it active, then check the Proxies page for policy groups. The installer doesn't include a proxy service; get subscription details from a trusted source.

    If a profile is listed but no policy groups appear, check that it's selected, then review the logs for parsing errors. Don't paste the subscription URL into a node server address field, and never show the full URL in public screenshots—it may contain access credentials tied to your account.

  2. Choose Rule mode and a working policy

    For your first setup, choose Rule mode, then select a working option in any policy group that requires manual selection. Rule mode determines how traffic is matched; policy groups determine which outbound connection handles it. They're separate settings. Global mode can help narrow down some issues, but it isn't a substitute for correct rules.

    A speed test reflects specific test conditions, not how every website will perform. If one app has problems, note the destination domain, matched rule, and time of the error, then check the relevant policy group. If only one destination fails, troubleshoot its DNS and connection first instead of resetting the entire client.

  3. Enable traffic routing and test the connection

    On desktop, enable the system proxy, visit a destination in your browser, and check the connection list. If the proxy doesn't work in a terminal, check its proxy environment variables separately. Consider TUN if you need to route traffic from other apps. On mobile, allow the VPN connection when prompted and make sure the active profile is enabled.

    Set the client to launch at startup only after testing the connection. Launching the app doesn't necessarily turn on the system proxy or TUN, so check each setting separately. Before quitting, turn off traffic routing. If you can't connect after quitting, check for system proxy settings still pointing to a local port, then follow a guide to restore them.

Read the full guide →

Open-source ecosystem, cores, and updates

The client interface, proxy core, and subscription service are separate layers. Understanding what each one does is more useful for installation and troubleshooting than comparing app names alone.

Compare clients →

The Clash name and its evolving ecosystem

Clash established a way to manage proxy connections using configuration files, rules, and policy groups. After the original project and some early GUI clients stopped being maintained, the community continued developing cores and interfaces around the configuration ecosystem. Today, a search for Clash may turn up legacy projects, successor cores, and clients for different platforms. They aren't all maintained by the same team.

Before following an older guide, check which client and core it covers. Similar-looking switches may work differently, and older projects may not support newer configuration fields. For everyday use, choose a maintained client, keep a copy of your original config, and migrate using current documentation rather than relying on old screenshots.

How Mihomo and GUI clients work together

Mihomo is a proxy core in the Clash ecosystem. It handles configuration parsing, rule matching, outbound connections, and related network features. GUI clients typically display profiles, policy groups, logs, and settings, and coordinate core startup and system traffic routing. An open window doesn't mean the core is running; a running core doesn't mean app traffic is being routed through it.

Troubleshoot in layers: check whether the configuration loads, whether the listening port is open, and finally whether the system proxy or TUN covers the app in question. Clients may use different core builds and defaults. When a feature is missing, check the capabilities of the core actually in use rather than relying on the client name.

How to explore open-source resources

Open-source repositories are useful for reviewing implementation details, licenses, release notes, and known issues. The command below only clones Mihomo's source code; it's for users who want to read the code or prepare a build environment. You don't need to clone the repository for a regular installation—just choose a GUI client from the download page. Follow the project's own instructions for build steps.

Before filing an issue, search existing discussions with specific keywords and gather your operating system, client name, reproduction steps, and relevant logs. Remove subscription URLs, account parameters, and private server details before sharing anything publicly. Community discussions can explain behavior, but don't apply experimental settings from a single thread to every device.

Update the app, core, and subscription separately

A client update may change the interface or system integration. A core update may change protocol support or how configuration fields are handled. A subscription update mainly changes nodes, policies, and rule sources. These are separate things: a successful subscription refresh doesn't update the app, and reinstalling the client won't fix an expired subscription URL or remote service.

Before updating, note the active profile and key settings, then read the release notes. If something breaks afterward, first determine whether the app fails to start, the configuration fails to parse, or a specific connection fails. For migration tips, see the guide to discontinued clients. For port, DNS, and timeout issues, follow the troubleshooting manual step by step.

Get Mihomo source code

Git must be installed on your device. This is not a client installation step.

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

View the Mihomo source repository →

Configuration and troubleshooting guides

Once a basic connection works, look up the specific symptom you're seeing. Change one setting at a time and compare the results so simultaneous changes to ports, DNS, and routing don't make it harder to identify the cause.

Troubleshooting

Clash port 7890 is already in use: find the process and change the mixed port

If the client says a port is already in use at startup, use commands such as netstat or lsof to identify the process. Then change mixed-port and the external controller port, and update the system proxy settings to match.

For address already in use errors or when multiple proxy clients are running. Identify the process using the port before deciding to quit it or change the port; don't terminate system processes you don't recognize. After changing the port, check that browser extensions and terminal tools aren't still using the old address.

Security & Certificates

HTTPS certificate warning after enabling a proxy? Common causes and safe fixes

Learn how incorrect system time, interception, problematic nodes, or DNS poisoning can cause certificate errors; find out which issues may be proxy-related and how to troubleshoot them safely.

If you see a certificate warning, don't enter passwords or payment details. Check your system time, the destination domain, and the certificate details. Restoring access after changing your exit node is a troubleshooting clue, not proof that the certificate is safe to ignore. Never disable browser certificate checks to fix the issue.

Advanced Setup

How to update GeoIP and GeoSite databases and write routing rules

Learn what GeoIP and GeoSite data files do, where they're stored, how to configure manual and automatic updates, and how to write common GEOIP and GEOSITE rules in config.yaml.

For cases where rules load but traffic takes an unexpected route, or the logs report that rule data couldn't be read. First check the data format in use and the actual file path, then review the update process. Before adding a rule, make sure the core supports that rule type.

View all articles →