Windows
Turn on "Launch on Startup" and "Silent Start" so the client stands by in the background automatically. If you hit a port conflict, change the mixed port to a free one like 7891 in Settings.
No technical background needed — just follow the three steps below.
Each step comes with screenshots. If you get stuck, check the FAQ below, and if that doesn't help, feel free to ask.
Head to the download page and pick the installer that matches your OS — the process is no different from installing any other app.
A subscription link is a URL from your provider that bundles all your available nodes. Once it's added, the client automatically downloads the node list and keeps it updated on a schedule.
The last step is just two switches — flip them on and refresh your browser to get online.
The core usage is identical everywhere, but each OS has its own quirks.
Turn on "Launch on Startup" and "Silent Start" so the client stands by in the background automatically. If you hit a port conflict, change the mixed port to a free one like 7891 in Settings.
The first time you enable the system proxy, an authorization prompt will appear — enter your password to allow it. If it doesn't take effect in your browser, check "System Settings → Network → Proxies" for conflicts with other software.
On first launch, you'll be asked to set up a VPN connection — tap "OK" to allow it. Add it to your battery optimization whitelist to avoid the system cutting the connection in the background.
We recommend Clash Plus (clashplus.io) — just search for it directly in the App Store. Subscription import works exactly the same way as on other platforms.
After installing the deb package, start the service with systemctl start mihomo. The config file lives at /etc/mihomo/config.yaml — remember to restart the service after editing.
The same subscription can be used on every device. It's recommended to enable "Auto-update subscription" on each one, so node changes sync automatically without you having to think about it.
Here are the most common questions newcomers run into — click to see the answer.
First check that the subscription link was copied in full (no missing characters at the end), then confirm your provider account is still active. If the link is fine, click the "Update" button next to your profile to re-fetch it; if it still fails, the subscription URL itself may be blocked — try updating over mobile data instead.
Check three things in order: 1. whether the "System Proxy" switch is actually on; 2. whether the currently selected node is timing out (try a lower-latency node); 3. whether the proxy mode was accidentally set to "Direct". On desktop, you can also check the "Logs" page, which shows the reason each connection was rejected.
In Rule mode, traffic is matched against the rule table one by one: local/trusted traffic connects directly, chosen sites go through the proxy, with no interference between them — this is the right choice for everyday use. Global mode routes all traffic through the proxy indiscriminately, which can actually slow down local/trusted traffic, and is usually only switched on temporarily when rules misfire.
This is most likely an expired subscription or a node outage on your provider's end. Check your account status on your provider's site first, then update your subscription and re-test latency. If only a few nodes are timing out, just switch nodes — the "Auto Select" group will help you avoid broken ones.
No. The core is written in Go and typically uses only tens of MB of memory. The code is fully open source with no telemetry and no data reporting — every line of logic can be verified on GitHub.
Yes. A subscription link isn't limited to a specific number of devices (unless your provider restricts it) — the same link imports identical nodes on Windows, macOS, Android, and iOS, and configs on each device don't affect one another.