Choose your operating system, then check the architecture. Use a GUI client on desktops and phones; see the Mihomo core section for server and router deployments.
An installer determines which program to install. A subscription or configuration file determines how it connects, so you’ll need to import a configuration after installation. New users can continue with the user guide.
There are several clients for some platforms. Usually, you only need one. Don’t let multiple proxy clients manage your network at the same time.
Windows clients
The desktop installers here are x64 packages. Check your system type under Settings → System → About before choosing a client.
Clash Plus
Top pick
A good place to start if this is your first time. After installing, import an existing subscription or local configuration, then select rule mode. Make sure your browser works normally before enabling TUN, which can route traffic from more apps.
A good fit if you want to manage configurations, proxy groups, and logs in a desktop interface. If you plan to use service mode or TUN, set up the required components when prompted after installation. There’s no need to change every network option on first launch.
Another interface option if you use multiple devices. New users should choose the installer. ZIP packages must be fully extracted before launching from a fixed folder. You can migrate configurations when switching clients, but check settings like keyboard shortcuts and launch at startup again.
Another desktop GUI client for users who want to organize configurations and proxy rules themselves. After installing, test the connection with a configuration known to work. If your old client is still running in the background, quit it before enabling the new client’s system proxy.
This archived download is for reproducing older environments or migrating existing configurations. For a new installation, choose a client that’s still maintained. Don’t rely on this legacy client for compatibility with newer proxy protocols, configuration fields, or system behavior. Save your existing configuration before migrating.
Modern clients generally require 64-bit Windows 10 or 11. Check the project’s release notes for the exact minimum version.
Confirm your system type is x64. On ARM devices, first check whether your system can run x64 apps.
Runtime components
Some clients may require WebView2 or system runtime libraries.
If a component is missing, install it as directed by the app. Don’t download individual DLLs from random sites.
Network permissions
System proxy and TUN have different permission requirements.
Test the system proxy first. Grant only the permissions required if you need TUN.
macOS clients
Open Apple menu → About This Mac. If it shows an Apple chip, choose an ARM64 package when available; if it shows Intel, choose x64.
Clash Plus
Top pick
Available in Apple Silicon and Intel versions; download the one that matches your chip. Open the DMG, move the app to Applications, and launch it from there. After importing a configuration, check the selected proxy group rather than relying on the menu bar icon alone.
A convenient way to review configurations, rules, and connection logs. The Mac download currently available is x64, not a native ARM64 build for Apple Silicon. Quit any running version before replacing the app with an update.
Consider this option if you want a similar workflow on desktop and mobile. The current Mac file is labeled AMD64, which means x64. Importing a configuration won’t sync all device settings; check system proxy, auto-start, and permissions on each Mac.
For users with existing menu bar workflows and legacy configurations. Not recommended as a first client. For compatibility issues with newer systems or configurations, migrate to a client that’s still maintained. Both downloads here are x86_64 files.
Current file
macOS x86_64 · DMG
Use case
Archived download and migration for existing setups
Check About This Mac, and verify the actual file architecture shown on the download card.
System version
Minimum macOS versions vary by build.
Check the app’s release notes. If your system is older, confirm compatibility before installing.
App and permissions
A DMG is a disk image, not the app’s final location.
Move the app to Applications and grant the required network permissions when prompted.
Android clients
Most newer phones use ARM64, but check which app architectures your device supports. If the installer reports an incompatibility, check the architecture and Android version instead of trying packages from different sources.
Clash Plus
Top pick
This download is an ARM64 installer. Import a configuration after installing. The first time you connect, Android will prompt you to grant VPN permission. This creates a local traffic tunnel; it doesn’t provide a subscription or connection service.
A good fit if you want to manage configurations and per-app routing. If you know your device’s architecture, download the matching package. If you’re unsure and your device meets the system requirements, choose the universal package. If the connection drops when the screen locks, check battery optimization and background activity restrictions.
Package
ARM64 / ARM / Universal · APK
Universal package
Supports multiple architectures and usually takes up more download space.
Works well alongside a desktop client and offers a similar configuration workflow. Most ARM64 phones should use the primary download; choose the 32-bit package only for older ARM devices. File paths in a configuration differ between Android and desktop systems, so don’t copy absolute paths directly.
Package
Android · ARM64 / ARM · APK
After installation
Select a configuration before starting the connection
Another Android proxy client option. Its configuration format differs from Clash YAML, so changing the file extension isn’t enough to make a configuration importable. Before choosing this client, confirm that your configuration source explicitly supports Surfboard.
Package
Android · Universal · APK
Configuration note
Use configuration content compatible with Surfboard
An APK must meet both the minimum Android version and ABI requirements. ABI refers to the app’s binary architecture.
Check your device details and the client’s release notes; don’t guess based on the phone model alone.
Install permission
Your browser or file manager may need separate permission to install apps.
Allow installs only from the source you’re using, and revoke permission afterward if appropriate.
Network and background use
A VPN tunnel usually can’t be shared by multiple similar apps at once.
Stop other VPN apps first. Adjust battery optimization only after the connection is stable.
iOS clients
Check Clash Plus in the App Store for device compatibility, current features, and availability, then install it on your device.
Clash Plus
Top pick
On iPhone or iPad, open the App Store listing. After installing, import a configuration you’re authorized to use, allow the VPN configuration when prompted by iOS, then return to the client to choose a proxy group and connect. A VPN indicator means the tunnel is active, not that access is working; test it.
Check the App Store’s compatibility section for the minimum iOS or iPadOS version.
Check whether your current device can install the app before deciding to update iOS.
VPN configuration
The first connection requires system permission.
Check the app name, then confirm the prompt in iOS.
Subscription
Installing a client and setting up a connection service are separate steps.
Prepare a valid configuration. After importing it, check the proxy group and rule mode.
Linux clients
These are AMD64 desktop GUI packages. Debian- and Ubuntu-based distributions typically use DEB; choose RPM for distributions that use RPM package management.
Clash Verge Rev
Recommended
A good fit for Linux desktop users who want to manage connections through a GUI. Download the format supported by your distribution, then install it with the system installer or package manager. If dependencies are missing, keep the exact error and resolve it using your distribution’s repositories.
Package
Linux AMD64 / x86_64 · DEB / RPM
Environment
Requires a compatible desktop environment and GUI runtime dependencies.
Another option for desktop environments that use DEB packages. After the app launches, import a configuration and verify the local proxy port before setting a system proxy. Command-line tools may not use desktop proxy settings, so check them separately.
Package
Linux AMD64 · DEB
Environment
Debian- or Ubuntu-based desktops; exact dependencies vary by distribution.
Check the architecture with uname -m; don’t install an AMD64 package on aarch64.
Package manager
DEB and RPM are for different package management systems.
Use a format supported by your distribution. Renaming a package file won’t convert it.
GUI dependencies
Dependencies such as GTK and WebKit vary by client and build.
Install dependencies with your system package manager. For headless servers, see the core section.
Mihomo core
For servers, routers, and users who manage processes themselves. The core handles connections and rules; it isn’t a desktop installer with a settings interface. Most users should choose one of the GUI clients above.
The operating system, CPU architecture, and build requirements must all match.
If you see an illegal instruction or exec format error, check the binary type first.
Configuration and files
Prepare a YAML configuration, runtime directory, and any referenced resources.
Validate the configuration syntax before running it continuously with a service manager.
Permissions and listening ports
TUN and route changes may require additional permissions.
Restrict access to the control interface and proxy ports. Don’t expose them directly to the public internet.
The core doesn’t manage configurations for you. Before deployment, read the YAML manual to understand how ports, DNS, proxy nodes, proxy groups, and rules reference one another. Before changing network settings on a remote device, keep your existing access method and a recoverable configuration.
Three things to prepare before installing
Check your device details, configuration source, and existing setup separately to make troubleshooting easier.
01 / DEVICE
Note your system and architecture
The same operating system doesn’t mean installers are interchangeable. Windows x64, Apple Silicon on Mac, and Android ARM64 describe different system and processor details. Note your OS version, check your processor, then choose the package format. These are the first things to verify if you see “This app can’t run on your device.”
02 / PROFILE
Prepare a working configuration
A subscription URL retrieves and updates a configuration; YAML is a common configuration text format. Neither is an installer. This page provides client downloads, not a connection service. Make sure your configuration comes from a trusted source and that you’re authorized to use it. Don’t paste subscription URLs into public screenshots, comments, or unfamiliar online conversion tools.
03 / BACKUP
Save your existing configuration before updating
Back up local configurations, custom rules, and overrides, then quit the old client. Overrides are changes saved separately from subscription updates and may not migrate automatically when you switch clients. After installing, check the selected configuration, rule mode, and proxy group; an app that opens successfully doesn’t mean the migration is complete. For step-by-step help, see the first-time setup guide.
What to check after downloading
Get a minimal working setup first, then expand the traffic you route.
Install and launch. Check for missing runtime components or permission prompts, and keep the exact error message.
Import and select a configuration. Make sure you’ve selected the imported configuration, rather than just adding the file while another one remains active.
Choose rule mode. Rules determine whether traffic connects directly, goes through a proxy, or is blocked. They don’t send every connection through the same proxy.
Verify access. Check the logs and connection records, then decide whether to enable the system proxy, per-app routing, or TUN.
A system proxy tells apps that follow system settings to use a local proxy. TUN routes more traffic through a virtual network interface. They cover different use cases, so you don’t need to change DNS, routes, and permissions all at once just to “enable everything.” If something breaks, return to the last working setup and use the troubleshooting FAQ to narrow down the cause.
Download and installation FAQs
First rule out the wrong package, then check your configuration and network. Select a question to expand the answer.
Which Clash client should I download first?
Select the platform for your device. Start with Clash Plus for Windows, macOS, Android, or iOS; for Linux, start with Clash Verge Rev. Check the processor architecture and package format before downloading. If your current client works, there’s no need to migrate just for a different interface.
If you just need to import a subscription and use the client day to day, choose a GUI client. You don’t need to download a separate core archive. If you need a specific feature, check whether both the client and core support it.
What’s the difference between ARM64, x64, and universal packages?
These labels indicate the processor architectures supported by an installer. x64 and AMD64 usually refer to the same 64-bit architecture; ARM64 is for compatible mobile devices and computers. Android universal packages include multiple architectures and are usually larger. Choose based on your device specs, not just the operating system.
Mac packages for Apple Silicon and Intel are different, too. If a download card says the actual file is x64, that link is not a native ARM64 package. Check system and app compatibility before installing.
Why can’t I connect right after installing?
The client itself doesn’t provide a connection service. After installing, import a subscription you’re authorized to use or a local configuration, select a configuration and proxy group, then enable the system proxy or TUN if needed. Start in rule mode and use the logs and connection records to check whether traffic is reaching the client.
A successful subscription import only means the configuration was retrieved; it doesn’t mean every connection option will work. Check that the configuration is selected, then check the current proxy group and test access. For detailed steps, see the user guide.
What should I check if the installer reports an incompatibility or won’t launch?
First check that the operating system version, processor architecture, and installer format are compatible, then make sure the download completed. On Windows, check the system type; on macOS, check the chip; on Android, check the device architecture. Keep any system warnings and troubleshoot using the requirements for your platform. Don’t disable system security protections wholesale.
If the app installs but closes as soon as you open it, check the logs, port conflicts, and configuration syntax first. Avoid reinstalling while changing every setting at once; that makes the cause harder to find. Downloading a package for a different architecture won’t fix compatibility with an older system.
What should I back up before updating the client?
Back up local YAML files, override rules, and any essential client settings, and make sure your subscription URL is still accessible. Quit the old client before installing the update to prevent both apps from competing for the same port. After updating, check the active configuration, proxy mode, proxy group, and system proxy status. Don’t share backups that contain subscription URLs.
Updating a GUI client and refreshing a subscription are two different things. The first changes the app and core capabilities; the second updates configuration content. If something goes wrong, identify which step caused it and restore the relevant settings. Don’t delete a working subscription by mistake.
Should I download a GUI client or the Mihomo core?
For everyday desktop and mobile use, choose a GUI client with configuration imports, proxy selection, and logs. The Mihomo core is for users who manage their own configuration, processes, or service deployments, and is commonly used on servers and routers. The core archive does not include a full desktop interface.
When deploying the core yourself, you’ll also need to manage startup arguments, the runtime directory, resource files, and permissions. For an overview of configuration structure, see the Clash configuration reference. Don’t copy the entire desktop client data directory to a router.