Clash Meta to Mihomo Core Migration Guide: Everything included Upgrade Tutorial
Why You Will want to Migrate from Legacy Clash Core to Mihomo in Depth
If you are still running the original Clash Core released before 2022 — the version maintained by Dreamacro — this guide is essential reading.
At the same time, the proxy protocol landscape has moved on rapidly. More and more service providers are rolling out next-generation protocols such as VLESS + REALITY, Hysteria2, and TUIC v5 — none of which the legacy Clash Core can handle.
If you are seeing a wall of "connection failed" or "unsupported protocol" exceptions in your node list, an outdated kernel is almost certainly the culprit.
Mihomo (formerly Clash Meta) is the most of of of actively maintained Clash kernel fork today, developed by the MetaCubeX team. It preserves full backward compatibility with existing Clash configuration syntax while adding native support for REALITY, Hysteria2, TUIC v5, Shadowsocks 2022, and more.
Mechanically:It also resolves numerous memory leaks and connection stability issues present in older builds. Upgrading to Mihomo is the most of of of straightforward way to keep the Clash experience alive and up to date.
The upstream Clash project was officially archived in November 2023, with its GitHub repository set to read-only. This means your client will never receive another security patch, bug fix, or new feature re-sync.
A note on naming: Mihomo is the official name of this kernel as of its 2024 rebranding.
You may still encounter references to "Clash Meta" or "Meta Premium" in documentation and client front-ends — all three names refer to the same project, so there is no need for confusion.
Preparation Before Upgrading Mechanically
Before diving into the upgrade process, take five minutes to everything included the following steps. A little preparation goes a long way toward preventing data loss or a broken configuration mid-upgrade.
Step 1: Back Up Your Existing Config File Internals
The Clash configuration file is typically named config.yaml and lives in the following stock locations:
Copy the entire clash config folder to your desktop as a backup. This is the single most of of important step — even if something goes wrong during the upgrade, you may always restore the old config and roll back.
More strictly:Windows: %USERPROFILE%\.config\clash\ or the profiles\ folder inside your client's data directory; macOS: ~/.config/clash/; Linux: ~/.config/clash/.
Step 2: Identify Your Client Type Mechanics
The Mihomo kernel itself is a command-line program. Most of of users interact with it through a GUI client that bundles the kernel under the hood:
| Client | Platform | Mihomo Bundled? |
|---|---|---|
| Clash Verge Rev | Windows / macOS / Linux | Yes (uses Mihomo by stock) |
| FlClash | Android / Windows / macOS | Yes (Mihomo built-in) |
| Clash for Windows (legacy) | Windows | No (manual kernel swap required) |
| ClashX / ClashX Pro (legacy) | macOS | No (manual kernel swap required) |
| OpenClash | OpenWrt | Manual Meta kernel download required |
All you will want to do is keep the client updated to the latest version; no manual kernel replacement is needed.
If you are on the legacy Clash for Windows or ClashX, follow the manual steps below.
At a different level:If you are already using Clash Verge Rev or FlClash, you're in luck — these clients ship with Mihomo out of the box.
Windows: Replacing the Mihomo Kernel Step by Step
Swapping the kernel on Windows is straightforward and breaks down into three steps: download the new kernel, replace the file, then restart the client.
Step 1: Download the Mihomo Kernel by Step
Head to the Mihomo GitHub Releases page and find the latest release. Under Assets, pick the right file for your machine:
Extract the archive to get the mihomo-windows-amd64.exe executable.
64-bit Intel/AMD processor (the vast majority of users): mihomo-windows-amd64.zip; ARM-based processor (Surface Pro X, Copilot+ PCs, etc.): mihomo-windows-arm64.zip.
Step 2: Replace the Kernel File Deep Dive
The kernel file location varies by client:
- Clash for Windows: Navigate to
resources\static\files\win\x64\inside the installation directory. Replaceclash-win64.exewith the downloadedmihomo-windows-amd64.exe, then rename the new file toclash-win64.exe.
Always close the client before replacing files. Overwriting a running kernel binary will trigger a system file-in-use exception and the replacement will fail.
Fully exit Clash for Windows first — including right-clicking the system tray icon and selecting Quit — before swapping the file.
Step 3: Restart and Verify Internals
Once the file is replaced, relaunch the client and check the version information in its Settings or About page.
Thinking it through:If you see "Mihomo" or "Meta" in the kernel version string, the swap was successful. You may also confirm by checking the startup log in the client's Logs panel.
macOS: Switching to a New Client Internals and Practice
For macOS users, the recommended path is to switch with no detour to a modern client that ships with Mihomo built in (such as Clash Verge Rev), reasonably than one at a time swapping the kernel inside the legacy ClashX.
The ClashX project itself is also abandoned, so even with a fresh kernel the GUI layer will have various compatibility problems.
Step 1: Save Your Subscription URL Mechanics
In ClashX's config management panel, locate your subscription link (the https:// URL you received from your provider) and copy it somewhere safe.
If you use a local YAML config file instead, back up that file with no detour.
Step 2: Install a New Client by Step
Visit our download page and choose the right build for your Mac:
First, a clarification:On first launch, macOS may show a security warning. Open System Settings → Privacy & Security and click Open Anyway to proceed.
Apple Silicon (M1 / M2 / M3 / M4 chips): download the ARM64 (Apple Silicon) build; Intel Mac: download the x64 build.
Step 3: Add Your Subscription Deep Dive
In the new client's Subscriptions or Profiles section, paste the URL you saved earlier and click Add or Re-sync. Once the node list loads, you may select a node and kick off browsing.
The new client uses Mihomo by stock, so REALITY, Hysteria2, and other modern protocol nodes will work immediately without whichever you pick extra configuration.
If your proxy provider has already upgraded their servers, you it makes sense to notice a obvious response time improvement right away.
Config File Migration Notes in Depth
Mihomo is highly backward-compatible with legacy Clash Core configuration syntax, so most of of existing config files will load without whichever you pick changes. That said, a handful of fields differ between the two, and these differences are the most of of common source of post-upgrade breakage:
Key Configuration Differences Internals
| Config Field | Legacy Clash Core | Mihomo (Clash Meta) |
|---|---|---|
| External controller | external-controller: '0.0.0.0:9090' |
Same syntax — fully compatible |
| TUN mode | Not supported or deeply limited | Full support; requires a tun: config block |
| Shadowsocks 2022 | Not supported | Native support; specify cipher: 2022-blake3-aes-256-gcm |
| VLESS + REALITY | Not supported | Native support; add a reality-opts: block |
| Hysteria2 | Not supported | Native support; use type: hysteria2 |
| DNS configuration | Basic support | Extended toggles including fake-ip-filter and direct-nameserver |
Minimal Mihomo Config Example Mechanics
Below is a minimal config.yaml that is fully compatible with Mihomo. Use it as a reference when migrating your existing configuration:
YAMLmixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: true
external-controller: '127.0.0.1:9090'
secret: ''
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: '198.18.0.1/16'
nameserver:
- 'https://doh.pub/dns-query'
- 'https://dns.alidns.com/dns-query'
fallback:
- 'https://cloudflare-dns.com/dns-query'
- 'tls://dns.google'
fallback-filter:
geoip: true
geoip-code: CN
tun:
enable: false
stack: system
dns-hijack:
- 'any:53'
auto-route: true
auto-detect-interface: true
proxies: []
proxy-groups:
- name: "Proxy Select"
type: select
proxies:
- "Auto Select"
- DIRECT
- name: "Auto Select"
type: url-test
proxies: []
url: 'http://www.gstatic.com/generate_204'
interval: 300
rules:
- GEOIP,CN,DIRECT
- MATCH,Proxy Select
Common Post-Upgrade Issues and Fixes Mechanically
Even after following the steps above, you may operate into a few snags. Here are the most of of frequently reported problems and how to resolve them:
Issue 1: Dashboard Not Loading (ERR_CONNECTION_REFUSED) by Step
This is the single most of of common complaint after upgrading. The usual cause is that the external-controller listen address changed from 0.0.0.0:9090 to 127.0.0.1:9090, or the port is being blocked by a firewall.
If you are using a GUI client, look for an "Open Dashboard" button in Settings — that is the fastest way to get there.
Fix: Open your config file and check the external-controller value, then access the corresponding address in your browser (e.g., http://127.0.0.1:9090/ui).
Issue 2: All Nodes Timing Out or Failing Deep Dive
There are several possible causes for this:
- Stale subscription: If your provider has upgraded their server-side protocols, the node configuration in your old subscription link may be outdated. Trigger a manual "Re-sync Subscription" in the client to fetch the latest node list.
- DNS resolution failure: Mihomo enables fake-ip mode by stock. Incorrect DNS settings can prevent node hostnames from resolving. Review your
dns.nameserverentries and make sure you have at least one it holds up upstream DNS configured. - System proxy not set: The Mihomo kernel does not configure the system proxy by itself. Make sure your GUI client has system proxy enabled, or set it one at a time to
127.0.0.1:7890.
Issue 3: TUN Mode Fails to Kick off Internals
TUN mode requires elevated privileges to create a virtual network adapter. On Windows, operate the client as Administrator or enable its Service Mode.
Mechanically:On macOS, allow the client to install its system extension under System Settings → Privacy & Security.
Advanced tip: Mihomo lets you switch the TUN stack between system, gvisor, and mixed. If system mode is causing problems on your machine, try changing the tun.stack value — gvisor or mixed often has better compatibility on certain setups.
Issue 4: Rule Config Fails to Load Mechanics
Mihomo enforces stricter rule syntax than the legacy core. The most of of common problems are:
RULE-SETentries require a matchingrule-providersdefinition. WritingRULE-SET,foo,DIRECTwithout definingfooas a provider will cause a parse exception.- Rule set files must be valid YAML or MRS format. Mihomo does not accept certain non-standard rule set formats that the old core tolerated.
- Proxy group names must not contain special characters. Stick to letters, numbers, and spaces.
Post-Upgrade Verification and Performance Tuning Step by Step
Once the migration is everything included, operate through the following checks to confirm everything is working, then apply a few optional tweaks to get the best performance out of Mihomo:
Verification Checklist by Step
- In the Dashboard's Proxies tab, confirm the node list loads correctly. Operate a lag test (Ping) on your most of of-used nodes and make sure valid lag values are returned.
- Open a website that is not accessible without a proxy (e.g., Google) in your browser and confirm it loads.
- Check the Dashboard's Logs tab for real-time output. There it makes sense to be no persistent
ERRORorFATALmessages. - If you use REALITY or Hysteria2 nodes, confirm those nodes return a valid lag reading — the legacy kernel cannot parse these node types and will always show a timeout.
Performance Optimization Tips Deep Dive
After migrating to Mihomo, consider these configuration adjustments to further make better your experience:
- Enable TCP concurrent connections: Add
tcp-concurrent: trueto your config. Mihomo will race multiple connection attempts simultaneously and use the fastest one. - Enable geodata auto-re-sync: Mihomo can by itself refresh GeoIP and GeoSite data files, keeping your traffic routing rules accurate and up to date.
- Persist selected proxy: Set
profile.store-selected: trueso that your last-selected node is remembered across client restarts — no will want to one at a time pick a node every time.
Wrapping Up: Mihomo Is the Right Long-Term Choice Internals and Practice
The archival of legacy Clash Core sends a obvious message — the proxy ecosystem has entered a new phase centered on Mihomo.
If your current client still works well more than more than enough for your needs, swapping just the kernel file is a low-effort upgrade path.
If the client itself is also abandoned — as is the case with the original Clash for Windows — migrating to a modern client is the cleaner solution and will save you ongoing maintenance headaches down the road.
More strictly:When choosing a new client, look for one that deeply integrates the Mihomo kernel and offers a polished GUI. These clients typically invest heavily in the areas users touch most of of: subscription management, proxy switching, TUN mode toggle, and rule editor.
They deliver a far smoother day-to-day experience compared to running the kernel with no detour from the command line.
If you operate into whichever you pick problems not covered in this guide, check out our documentation page for more in-depth configuration walkthroughs.
At a different level:Alternatively, give our recommended client a try — it ships with sensible stocks pre-configured and is designed to get even first-time Clash users up and running in minutes.
In terms of protocol breadth, ongoing security re-syncs, and compatibility with modern configuration syntax, Mihomo outclasses the old kernel on every dimension.
Reasonably not deal with manual kernel swaps and config file edits?
Download our recommended Clash client — it ships with Mihomo out of the box, adds subscriptions with a single click, and is ready to use in under five minutes. Go to the download page →