Why Upgrade to Clash Meta?

The original version of Clash maintained by Dreamacro (often referred to as "Clash Premium" or "Original Clash") ceased public updates and maintenance in late 2023. At that time, the entire community faced a choice: continue using an outdated kernel or migrate to a fork that remains under active development.

Clash Meta (also known as Mihomo) emerged as the community standard. It preserves the complete rule system and configuration syntax of the original Clash while introducing support for modern protocols, performance optimizations, and security enhancements. As of this writing, the Clash Meta GitHub repository has amassed tens of thousands of stars, making it one of the most active kernels in the Clash ecosystem.

Note on Naming: The Clash Meta project officially renamed its repository to Mihomo in early 2024, but the community still widely uses the name "Clash Meta." In this article, both names are used interchangeably to refer to the same project.

While continuing to use the legacy Clash kernel is possible, you will eventually encounter significant drawbacks: lack of support for new protocols (like Hysteria2, VLESS Reality, Tuic v5), unpatched security vulnerabilities, and increasing incompatibility with modern GUI clients. Migrating to Clash Meta is a "worthwhile effort"—most configurations can be reused without change, and the cost of switching is much lower than you might expect.

Clash Meta vs. Legacy Kernel: Key Differences

Before starting the migration, understanding the differences between the two kernels will help you decide which parts of your configuration need adjustment.

Feature Legacy Clash Premium Clash Meta / Mihomo
Basic Rule Syntax ✓ Supported ✓ Fully Compatible
Shadowsocks / VMess ✓ Supported ✓ Supported
VLESS / Reality ✗ Unsupported ✓ Supported
Hysteria2 ✗ Unsupported ✓ Supported
TUIC v5 ✗ Unsupported ✓ Supported
TUN Mode △ Limited ✓ Full TUN + System DNS
Active Maintenance ✗ Discontinued ✓ Active Iteration
Security Patches ✗ Stopped ✓ Regular Updates

As shown in the table, Clash Meta offers significant advantages in protocol support and security while maintaining high compatibility with basic configuration syntax. This means your existing config files can mostly be reused with only minor tweaks to a few fields.

Preparation: Backup and Environment Check

Every kernel migration should begin with a full backup. Here is a checklist to complete before you begin:

  1. Backup Current Config: Copy config.yaml (and any associated rules or provider files) to a safe location, preferably in the cloud or a version control system.
  2. Record Current Status: Take screenshots or notes of your current proxy connection status and latency test results for post-migration comparison.
  3. Verify OS and Architecture: Clash Meta provides builds for Windows (amd64/arm64), macOS (amd64/arm64), and Linux. Ensure you download the correct one for your system.
  4. Update Dashboards: If you use Web dashboards like Yacd or MetaCubeX, update them to the latest version to avoid compatibility issues with the new kernel API.
Note: If you use GUI clients like Clash Verge Rev or Clash for Windows, the client usually manages the kernel for you. You only need to switch the kernel version within the client settings rather than manually replacing files. This article is primarily for users of the command-line kernel.

Configuration Migration Walkthrough

This is the most critical part of the migration. Fortunately, Clash Meta is highly compatible with legacy configurations. Most fields will work without modification. Focus on the following areas:

1. Top-Level Field Adjustments

Clash Meta has renamed or expanded some top-level fields. Common changes include:

config.yaml — Legacy Syntax
external-controller: '127.0.0.1:9090'
secret: ''
log-level: info
allow-lan: false
mode: rule
config.yaml — Recommended Clash Meta Syntax (New Fields)
external-controller: '127.0.0.1:9090'
external-ui: './ui'        # Local Web UI directory (Optional)
secret: ''
log-level: info
allow-lan: false
mode: rule
ipv6: false                # Explicitly state preference
unified-delay: true        # Use more accurate latency measurement
tcp-concurrent: true       # Concurrent TCP connections (New Feature)

2. DNS Migration

DNS configuration is the most common source of issues. Clash Meta introduces fine-grained DNS routing. Legacy DNS configs will still work, but we recommend updating to the following structure for better leak protection:

Recommended Clash Meta DNS Structure
dns:
  enable: true
  ipv6: false
  listen: '0.0.0.0:1053'
  enhanced-mode: fake-ip       # or redir-host, based on needs
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - 'https://doh.pub/dns-query'
    - 'https://dns.alidns.com/dns-query'
  fallback:
    - 'tls://8.8.8.8:853'
    - 'tls://1.1.1.1:853'
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

3. Proxy Node Syntax

Legacy node definitions usually work without modification. However, to use new protocols, follow the Clash Meta documentation for the required fields:

Hysteria2 Node Example (Clash Meta Exclusive)
proxies:
  - name: 'HY2-HK'
    type: hysteria2
    server: example.com
    port: 443
    password: 'your-password-here'
    sni: example.com
    skip-cert-verify: false
    up: '50 Mbps'
    down: '200 Mbps'

4. Rules and Rule Providers

Rule syntax and Rule Provider formats are fully compatible. Clash Meta additionally supports RULE-SET for referencing remote rule sets. We recommend moving frequently updated rules to Providers for easier maintenance.

Common Errors and Solutions

Below are the most frequent errors reported after migration and how to troubleshoot them:

Error: field xxx is not supported

This happens when the config contains deprecated or unimplemented fields. Solution: Consult the Mihomo documentation to check the field status; delete or replace it with the new equivalent.

Error: DNS resolve failed

Usually caused by incomplete DNS settings or a missing fake-ip-filter list. Ensure enhanced-mode is correct and add filters for local services like banking or messaging apps.

Error: Local network devices cannot connect in TUN Mode

A common TUN mode issue. Ensure both tun.auto-route and tun.auto-detect-interface are set to true. Check that your firewall isn't blocking traffic forwarding.

Error: proxy [xxx] not found

The rule references a non-existent proxy group. Ensure group names in proxy-groups match exactly (case-sensitive) with those in the rules section.

Error: Web UI fails to load

If using a local dashboard (MetaCubeX), ensure external-ui points to the correct directory. Verify your external-controller address matches the API address in the dashboard settings.

TUN Mode Configuration and Performance

TUN mode is one of the most improved features in Clash Meta. By creating a virtual network card, it intercepts all TCP/UDP traffic for "global proxy" support without individual app configuration.

Recommended TUN Configuration (config.yaml)
tun:
  enable: true
  stack: mixed          # mixed = TCP via gVisor, UDP via system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - 'any:53'          # Hijack all DNS to prevent leaks
  device: Meta          # Custom interface name

Choosing a stack:

Performance Tips

For high-concurrency tasks like P2P downloads or mass API requests, these settings can significantly boost throughput:

High-Concurrency Optimization
tcp-concurrent: true          # Concurrent TCP connection setup
unified-delay: true           # Consistent latency calculation
keep-alive-interval: 30       # TCP Keep-Alive interval (seconds)

profile:
  store-selected: true        # Persist selected nodes
  store-fake-ip: true         # Persist fake-ip mappings

Verification and Rollback Strategy

After migrating, systematically verify that everything is working as expected:

  1. Connectivity Check: Visit domestic and international sites to ensure routing rules (Direct vs. Proxy) are working.
  2. DNS Leak Test: Use dnsleaktest.com to confirm your DNS queries are not being exposed to your ISP.
  3. Latency and Speed: Run latency tests in your dashboard and perform a download test to verify traffic is flowing at full speed.
  4. New Protocol Validation: If using Hysteria2 or Reality, test those specific nodes for stability.
💡 Rollback Plan: Your backup config and legacy kernel binary are your safety net. If issues arise, simply swap the binary back and load your backup config. We recommend keeping backups for at least 72 hours after migration.

Choosing the Right Client

After the migration, many users realize that "Good Kernel + Good Client" is the key to a great experience. The Clash Meta kernel is just the engine; you still need a user-friendly GUI to manage it.

Many mainstream clients suffer from lagging updates, fragmented cross-platform experiences, or outdated UI designs that are difficult for new users to navigate.

Clash V.CORE is designed to solve these pain points. It comes with the latest Clash Meta kernel built-in, supporting Windows, macOS, Linux, Android, and iOS with a unified UI. The kernel updates automatically, so you don't have to worry about manual migrations. With a modern interface for rules, nodes, and logs, it's the perfect companion for your new kernel.