Open-source core · iPhone and iPad clients

Clash for iOS
Clients and Setup Guides

Follow the steps from finding your device's client to verifying the connection: import a subscription, choose a rule mode, and review system settings.

  • Open-source code
  • Clear platform links
  • Step-by-step guides in Chinese
9:41
Clash
◌Connection
↗Traffic ModeRule›
≡ConfigurationCurrent Config›
⌘Log Levelinfo›
⌁Allow LAN Connections
↗TUN ModeSet as needed for your device›

Settings Overview

Understand your config before connecting

Common client settings each serve a different purpose. Select a setting on the left to see what it does, where to find it, and which config fields it relates to. New users can read through in order.

PROFILE · IMPORT FIRST

Your config is the starting point

A subscription URL provides a configuration source; it does not establish a connection by itself. In the client's Configuration section, choose Download from URL, paste the address provided by your source, and wait for the import to finish. Then set that config as the current one. Check that proxy groups and rules appear after importing. If the lists are empty, verify the URL and format with your subscription provider instead of repeatedly toggling the connection. To keep work and personal settings separate, save distinct configs and switch between them as needed rather than mixing rules for different purposes in one file.

proxies:
proxy-groups:
rules:

Read next: Managing Multiple Profiles on iPhone

Find a client

Choose your platform

Start by identifying your device, then open the relevant platform page to check available clients, installation steps, and system requirements. Whether the same config works also depends on the config formats and core features supported by your chosen client.

Windows

Desktop users can choose from several graphical clients. Check your processor architecture and installer type first, then decide whether to enable launch at startup or system proxy settings.

Get the download

macOS

Check whether your Mac has Apple silicon or an Intel processor. During first launch, pay attention to system prompts for network extensions and permissions. Import your config after installation.

Get the download

Android

Choose an installer for your device's architecture. VPN permissions, background restrictions, and battery management settings can all affect whether a connection stays active.

Get the download

iOS

Find the client for your iPhone or iPad through the relevant app store. After installation, import your config, grant system permission, and verify the connection in that order.

Get the download

Linux

Desktop users can start with a graphical client package. For servers and routers, check the architecture, core binary, and how the software is run.

Get the download

Comparing clients on the same platform? Browse all clients → The downloads page lists platform links and compatibility notes in one place.

Quick Start

Install, configure, and test in three steps

This is a preview of the setup sequence. Each step has a clear completion check. If something goes wrong, revisit the last completed step; that usually works better than changing several settings at once.

01 / SET UP

Choose a client and import your config

Open the download page for your device and install the client by following the system prompts. Once you have your subscription URL, find Configuration or Download from URL in the client, paste the address, and import it. Make sure the config appears in the list, then set it as the current one. Copying a URL to the clipboard alone does not import it into the client. If your provider gives you a local YAML file, use the file import option and make sure its indentation stays intact.

02 / CHOOSE

Check the traffic mode

After importing, check for available proxy groups and select one provided by your config. Then set the traffic mode to Rule. In Rule mode, requests follow the match order in your config, from top to bottom. To diagnose how a specific site is routed, briefly compare Global and Direct, then switch back to your usual mode when you're done. Modes and proxy groups serve different purposes, so changing one does not mean the other is configured.

03 / CONNECT

Grant permission and test access

Turn on the connection toggle and allow the VPN configuration when prompted by iOS. Return to the client and confirm the toggle is still on. Test a site or app you actually need, then check the connection logs to see whether its requests matched the expected rules. If no connection is established, check permissions and the current config first. If the connection is active but one app behaves differently, check the mode, rules, and DNS. Verifying that the toggle is on and that the destination works as separate checks helps narrow down the issue.

Read the full setup guide → for screen-by-screen instructions, checks, and common sticking points.

Open-source ecosystem

Know what the repository, core, and config each do

Project background

Clash first drew attention as a rule-based proxy core. Since then, the community has developed core forks and graphical clients for different systems, so “Clash client” no longer refers to a single app. The original Clash, Clash Meta, and mihomo differ in maintenance status, features, and config support. Before downloading, check the client name and read about the core it uses. A feature supported by one core is not necessarily available in every client.

Code and documentation

Open-source repositories provide code you can read, issue histories, and release notes. For example, mihomo's config docs explain what its fields mean; graphical clients import configs, display proxy groups, and run the core they bundle. This site offers practical notes in Chinese, but it does not replace project-specific release documentation. Repository commands are useful if you want to browse source code or track changes. If you just want to install a client on your phone, use the platform links above.

Core and client

The core handles rule matching, DNS, and traffic forwarding; the client provides the system interface and controls. Projects with similar names may use different core builds, defaults, and release schedules. Before editing YAML based on a guide, confirm that its fields apply to the core you're using. If a field isn't recognized, check the relevant project's docs instead of inferring config syntax from a toggle's label in the app.

Updates and compatibility

Config sources, clients, and cores can all be updated separately. A subscription update usually refreshes config content; it does not replace the client. An app update also doesn't guarantee that every custom field in an older config will keep working the same way. Keep a working copy before making changes, then check the import, proxy groups, and real-world access after updating. If you use the same subscription across devices, confirm that each platform's client supports the relevant protocols and fields rather than assuming one change will behave identically everywhere.

Download Clash clients