Open-source clientPowered by mihomo · Built with Flutter

Download FlClashand get started

A desktop and mobile client powered by the mihomo core. Manage settings with subscription imports and use rule-based routing to direct traffic through a proxy or connect directly.

  • Free forever
  • Open source
  • Documentation in Chinese
Choose a package for your platform · See other client options for iOS

Downloads and platform options

Find a Clash client for your platform

FlClash is available for desktop and Android. The download page also lists other clients in the Clash ecosystem. Choose based on your processor architecture and preferences; the iOS section links to Clash Plus in the App Store.

Choose an installer that matches your platform, processor architecture, and package format. A computer that runs a given operating system may not support every package listed for it; for Android, check your device's supported architectures. The downloads page maintains a platform-by-platform client list with maintenance status and installation notes, making it easier to compare FlClash, Clash Plus, Clash Verge Rev, and other options.

Browse all clients →

Configuration and network settings

FlClash features

Start by identifying where your configuration comes from, then decide how traffic enters the client and which rules route it. These panels explain how the settings fit together; menus may vary by client version. Select a category to stop the automatic rotation and read at your own pace.

Importing subscriptions and selecting a profile

A subscription URL is a way to retrieve a configuration. After importing it, you still need to select it as the active profile. First, make sure the response is a Clash configuration, then check that proxy groups and rules are present. Remote subscriptions are useful for ongoing updates; local files are better for preserving custom changes, and the two are managed differently. Direct edits to a file generated from a subscription may be overwritten the next time it updates. Keep subscription sources and local changes separate, and after an update check that referenced policy groups still exist. You can import the same source on desktop and mobile, but you must check the client settings and permissions on each device.

See how to import a subscription →

First connection

From subscription import to connection test

Installing the client is just the first step. Start with a working subscription or local configuration, then check the profile, mode, and system permissions in order. Changing several network settings at once makes problems harder to diagnose. The client does not include a proxy service.

  1. Import and select a profile

    Open the profile page and use the available option to add a subscription URL or local file. Get remote URLs from a trusted configuration provider; a website login URL is not a subscription. After importing, make sure the profile is selected, then open the proxy page and check for available policy groups. Seeing a profile name does not necessarily mean its contents have loaded correctly.

    If importing fails, read the error and determine whether the URL is unreachable, returns a login page, or contains an incompatible configuration format. Changing outbound modes repeatedly will not fix a subscription download issue; these settings handle different steps. Subscription URLs may contain access credentials, so hide the full URL in screenshots or support requests.

  2. Choose Rule mode and an outbound policy

    For everyday use, start with Rule mode, then open the policy groups provided by your configuration and choose an appropriate outbound. Group and node names depend on the configuration, so they may not match the names in a guide. Global mode can be useful for comparison, but it will not fix an expired subscription, invalid credentials, or an unavailable service.

    On desktop, enable the system proxy first. On Android, approve the VPN connection prompt. If another proxy app is running, stop one of the clients before testing to avoid conflicts over local ports and routes. Enable TUN only after the basic connection works, and note your current settings before making changes.

  3. Check requests and matched rules

    Visit one site expected to connect directly and another expected to use the proxy. In the Connections or Logs page, check whether each request reached the client, which rule matched, and which policy group was selected. A Running status only confirms that the relevant service started; it does not prove that every app is using the proxy.

    If your browser works but another app does not, first check whether that app honors the system proxy. If all requests fail, check the active profile, policy groups, and service availability in turn. Change one setting at a time, test, and note the result before investigating DNS, permissions, or firewall rules.

The full guide covers where to handle failed imports, permission prompts, and connection checks. For complex network environments, follow the diagnostic steps on the troubleshooting page without disrupting the first-time setup sequence.

Read the full guide →

Project and open-source ecosystem

FlClash, mihomo, and configuration sources

Understanding the roles of the client, core, and proxy service helps avoid confusion when choosing software or troubleshooting. Use the open-source repository to review code, release notes, and known issues. Connection quality still depends on your configuration, service, and local network.

  • Flutter interface
  • mihomo core
  • GPL-3.0

Get the project source code

Developers with Git installed can run the command in a terminal to clone the repository. Most users can simply choose an installer; there's no need to compile from source.

git clone https://github.com/chen08209/FlClash.git

The core handles networking; the client provides the controls

mihomo handles protocol processing, rule matching, and connection forwarding. FlClash provides the interface for managing profiles, toggling settings, choosing policies, and viewing logs. Clash Meta and mihomo are related through the project's history, but old guides may show menu locations or parameter support that no longer reflect the current client. When functionality differs, check both the client implementation and the capabilities of the core in use.

Flutter is a technology for building graphical interfaces, not a proxy protocol. Changing the interface theme does not change which protocols the server supports, and switching clients will not fix an expired service or invalid credentials. Identify whether the problem lies in the client settings, core configuration, or service connection, then consult the relevant documentation. This is more useful than repeatedly reinstalling software based on its name.

Open-source licensing and community resources

FlClash is licensed under GPL-3.0. The repository includes the source code and license text. If you plan to modify or distribute the code, or use it in another project, review the license requirements first; publicly available source code does not mean you can remove its existing license notices. For everyday users, release notes, issue discussions, and repository documentation are useful references for changes and known limitations.

When searching community issues, look for reports involving a similar operating system, installation method, and symptom. The same “no internet” problem can have completely different causes. Before filing an issue, provide reproduction steps, redacted error logs, and the actions you've already tried. These are more helpful than a screenshot of the connection toggle. Do not publicly share subscription URLs, account details, or sensitive fields from your full configuration.

Updating the app and updating a subscription are separate tasks

Client updates mainly cover the interface, core integration, and compatibility fixes. Subscription updates fetch current proxies, policy groups, and rules. Data such as GeoIP and GeoSite may have separate update options. If a domain is routed incorrectly, check the rules, data availability, and matching order separately; a newer installer does not guarantee a correct configuration.

Before updating, keep a record of any local configuration you need and review release notes for changes to permissions, profile migration, or system requirements. After updating, make sure the active profile is still selected, then test the apps you use most. If something goes wrong, note what changed and troubleshoot based on the symptoms. Don't change subscriptions, DNS, and every setting at once before identifying the cause.

Profiles can be reused, but check each device's environment

You can import the same subscription into compatible clients, but the provider may limit concurrent devices or restrict how the service can be used. Phones and computers may use different networks, DNS, routes, and firewall settings. So if it works on one device, that's a useful clue—not a guarantee it will work on another.

To compare clients, see Client comparison. If you've installed a client but have connection issues, follow the relevant steps in Troubleshooting. The FAQ covers basic concepts and common setup questions, helping you understand terms and settings before changing network options.

Technical notes

Rules, data, and LAN sharing

These notes explain specific settings in more detail. After your first connection works, explore data updates, client relationships, and proxy sharing as needed. Use parameter examples with your current configuration in mind, especially policy group names, listening addresses, and permission differences.

These technical notes cover the principles and practical details of individual features. If you haven't imported a profile yet, start with the getting-started guide, then return to these topics to adjust settings one by one.

View all articles →