ARM64 vs AMD64 vs ARMv7: A Simple CPU Architecture Guide
On this page
Open any download page for mihomo or a Clash client and you face a wall of suffixes: amd64, arm64, arm64-v8a, armeabi-v7a. These are CPU architectures — the instruction set your processor speaks — and software only runs natively on the architecture it was compiled for. Download the wrong one and the best case is an error message; the worst case is a program that silently refuses to start.
The good news: there are really only three architectures that matter for this kind of software, each device class maps to one of them predictably, and checking takes seconds on every platform. After this guide, no download page will confuse you again.
Why architecture matters at all
A compiled program is a stream of machine instructions, and each CPU family understands only its own set. An amd64 binary on an ARM processor is gibberish, and vice versa — the operating system simply reports that the file cannot be executed. Some platforms bridge the gap with translation (Apple's Rosetta 2 being the famous example), but translation costs performance and exists only in specific directions. Matching the build to the chip is always the clean answer.
AMD64 (x86_64): the desktop standard
Despite the name, amd64 is not "for AMD processors only" — AMD simply published the 64-bit extension of x86 first, and the name stuck. Every 64-bit Intel and AMD desktop CPU uses it; amd64 and x86_64 (and the x64 shorthand) are the same thing. If your machine is a regular desktop PC or laptop that is not a recent Mac or an ARM-based Windows device, it is almost certainly amd64. This is the build you want for mihomo on typical Windows machines and Linux servers.
ARM64 (aarch64 / arm64-v8a): phones and modern Macs
ARM64 is the 64-bit ARM architecture, and it travels under three aliases that mean the same thing: arm64, aarch64 (the Linux name), and arm64-v8a (the Android package name). It powers essentially every smartphone from the last several years, all Apple Silicon Macs, many single-board computers, and a growing set of laptops and cloud servers. On a recent Android phone, arm64-v8a is the APK to pick.
ARMv7 (armeabi-v7a): older 32-bit Android
ARMv7 is the older 32-bit ARM generation. On download pages it appears as armeabi-v7a and exists mainly for aging or very low-end Android hardware. If your phone shipped in roughly the last five or six years it is almost certainly arm64 instead — reach for the v7a build only when you know the device is 32-bit, or when the arm64 APK refuses to install. The universal APK bundles both and always installs, in exchange for a larger file: a fine choice when you are unsure or preparing one file for several devices.
How to check any device
| Platform | Where to look | What you will see |
|---|---|---|
| Windows | Settings → System → About → "System type" | "x64-based processor" = amd64; "ARM-based processor" = arm64 |
| macOS | Apple menu → About This Mac | Intel processor = amd64; Apple M-series chip = arm64 |
| Linux | Run uname -m in a terminal | x86_64 = amd64; aarch64 = arm64; armv7l = ARMv7 |
| Android | Device info section in Settings, or a hardware-info app | arm64-v8a or armeabi-v7a listed under supported ABIs |
Quick pick cheat sheet
| Your device | Build to download |
|---|---|
| Windows or Linux PC (Intel/AMD CPU) | amd64 / x64 |
| Apple Silicon Mac | arm64 / aarch64 |
| Intel Mac | amd64 / x64 |
| Android phone, recent | arm64-v8a APK |
| Android phone, old 32-bit | armeabi-v7a APK |
| Not sure (Android) | universal APK |
Everything in the download center is labeled with these exact terms — mihomo in amd64 and arm64, Clash Meta for Android in arm64-v8a, armeabi-v7a and universal — so the table above translates directly into a click. For the Android install itself, continue with the Clash Meta for Android guide; for the broader question of file formats and OS versions, see the pre-download checklist.