Pre-installation checklist: system, architecture, and client core
The first step in setting up Clash is not to run the installer immediately. First confirm the operating system, processor architecture, and client type. A file that downloads successfully is not necessarily suitable for the device. Choosing the wrong architecture can result in an installer that refuses to start, an incompatibility warning, or an app that opens and closes immediately.
Most Windows devices use the x64 architecture, while some lightweight laptops and tablets with ARM processors require ARM64. On macOS, distinguish between Intel and Apple Silicon: M-series chips use Apple Silicon or arm64 builds, while older Intel Macs use x64. Linux users must check both the architecture and package format. Debian and Ubuntu typically use deb, Fedora and Rocky Linux commonly use rpm, and AppImage should be used only when the client explicitly provides support for the current architecture.
The client name and proxy core are separate concepts. The desktop client handles configuration, subscription updates, the system proxy toggle, and log display; the core performs rule matching, connection forwarding, DNS, TUN, and other network tasks. Many actively maintained clients now use the mihomo core. mihomo evolved from Clash Meta, remains compatible with common Clash configurations, and adds support for more rules, protocols, and traffic interception features. As long as the subscription format matches what the service and client support, beginners do not need to switch cores simply because the names differ.
Quick order for choosing a download
- Start with the page for Windows, macOS, or Linux.
- Then choose the processor architecture: x64, arm64, or Apple Silicon.
- Linux users should also select a package format supported by their system.
- Confirm that the client is still maintained and read the minimum system requirements in the release notes.
- If an older client already has configuration, export it or record the subscription URL before migrating.
Do not judge compatibility solely by a filename that says “universal.” Some universal installers bundle both macOS architectures, while others only indicate support for multiple OS versions. Always follow the labels on the download page and the client’s release notes.
Cross-platform installation: deploy the app and launch it for the first time
The interface varies by platform, but the initialization goals are the same: allow the client to save configuration, start the proxy core, and obtain the permissions needed to modify system proxy settings or create a virtual network interface. During first launch, avoid running another proxy, VPN, or network-filtering tool at the same time. Port conflicts and routing conflicts can make troubleshooting much harder.
Windows: installation location and permission prompts
Run the installer that matches your architecture and complete the setup wizard. Ordinary desktop use usually does not require a special installation directory, and the app should not be run permanently as an administrator without a clear reason. If you later enable TUN, the client may request elevated permissions or install a virtual network component. Make sure the prompt comes from the client you just installed.
After launch, check that the core status, configuration page, and log page open normally. If no window appears, look in the taskbar notification area because some clients minimize to the system tray by default. Clicking the launch icon repeatedly may only bring the existing process to the foreground rather than open a new window.
macOS: application folder and system permissions
When installing from a dmg file, you normally need to drag the app into the Applications folder and launch it from there. Intel and Apple Silicon installers are not interchangeable. The first time you enable the system proxy, the client may ask for permission to change network settings. Enabling TUN or enhanced mode may also trigger prompts for a network extension, helper service, or administrator password.
If macOS blocks the app from opening, first confirm the file source and the client’s release information, then review the related record in macOS Privacy & Security settings. Disabling system security should not be treated as a normal installation step. If permission prompts return after an update, check whether an old helper process has fully exited.
Linux: packages, desktop sessions, and proxy environments
Install deb or rpm packages through the system package manager so dependencies and uninstall information are registered correctly. AppImage files generally need executable permission before they can run, but the exact steps depend on how the client was released. A desktop “system proxy” may affect only apps that read GNOME, KDE, or environment-variable settings; terminal programs and system services may not follow it automatically.
Enabling TUN on Linux usually involves network management, routing tables, and device permissions. For the first setup, use the ordinary system proxy to import the subscription and verify a node. Confirm that the proxy core can connect before dealing with TUN permissions. This separates an unavailable node from a failed virtual-interface configuration.
Importing a subscription: from a configuration URL to usable proxy groups
Clash clients usually support subscription URLs, remote configuration files, and local YAML files. For first-time users, the most common method is to paste the Clash subscription URL provided by the service. This URL may contain access credentials, so treat it like an account secret. Do not include it in screenshots, public logs, code repositories, or chat groups.
Open the client’s configuration or Profiles page and look for “New subscription,” “Import from URL,” or a similarly named option. Paste the complete URL, save it, and run an update. A successful download only means that the client received the configuration file; you still need to make that configuration active. Some clients activate imported profiles automatically, while others require you to click the profile name manually.
A successfully loaded configuration usually contains proxy nodes, proxy groups, rules, and DNS settings. A proxy group is not an additional node; it is a configuration unit that determines which node, automatic selection method, or direct-connection action a category of traffic should use. For example, “Node Select” may let you choose a route manually, “Auto Select” may switch based on latency tests, and “DIRECT” means a direct connection.
Checks to perform after importing
- The profile list shows a successful update time instead of an endless spinner or error state.
- The proxy page contains nodes or proxy groups, with at least one selectable item in each relevant group.
- The current profile is selected, and the core log is not continuously reporting parse failures.
- In Rule mode, the main proxy groups have a selected node or a working automatic strategy.
- The subscription update interval is reasonable; avoid repeatedly requesting the remote URL in a short period.
Importing a local YAML file is better suited to users who already have a configuration file or need to maintain rules manually. YAML is sensitive to indentation and character formatting. Tabs, full-width punctuation, duplicate fields, or incorrect nesting can all cause parsing failures. Keep the original file before editing, change only a small section at a time, and check the first error in the client log after reloading it.
mode: rule
mixed-port: 7890
allow-lan: false
log-level: info
The snippets above show common basic fields only; they are not a complete configuration. A real subscription also needs proxy nodes, proxy groups, and rules. The port is not fixed at 7890; use the value shown by the current client. If the client manages ports automatically, do not overwrite the existing configuration just to match an example.
Enabling the proxy: the right order for Rule mode, system proxy, and TUN
After importing the configuration, start by selecting Rule mode, choose an available node, and then enable the system proxy. Rule mode uses the configured rules to decide whether traffic should connect directly, use the proxy, or be rejected, making it suitable for everyday use. Global mode sends most matching traffic through the selected proxy, which is useful for short comparison tests but should not be the only way to troubleshoot every issue. Direct mode bypasses the proxy and can help determine whether a problem is related to the proxy path.
The system proxy is the easiest entry point to verify. The client writes a local HTTP, HTTPS, or SOCKS proxy address into the operating system settings, after which browsers and desktop apps that follow system proxy settings pass connections to Clash. It does not automatically intercept every program: some games, command-line tools, system services, and apps with their own networking stack may ignore the system proxy.
TUN mode uses a virtual network interface and routing to intercept a broader range of traffic. It is useful for apps that do not read system proxy settings and can work with the core configuration to handle UDP and DNS. It generally requires elevated permissions and may conflict with other VPNs, virtual-machine networks, game accelerators, or security software network drivers. During first-time setup, do not enable the system proxy, TUN, and multiple network tools all at once. If the network goes down, it will otherwise be difficult to identify the responsible layer.
When TUN is needed
- The target app clearly ignores the operating system proxy settings.
- You need to intercept some UDP traffic, and the node, core, and configuration support it.
- You want multiple protocols to pass through rule matching instead of setting proxy addresses one by one.
- The system proxy is confirmed to work, but you need to extend coverage to more applications.
If you mainly use a browser and common desktop apps, the system proxy is usually easier to maintain. TUN is not a “speed boost” switch; it changes how traffic enters the core. Line quality, node load, and the destination site still determine the main connection experience.
Basic verification: check nodes, rules, DNS, and logs layer by layer
Seeing “Connected” does not mean that all traffic is being forwarded as expected. A reliable verification process starts with the core status, then checks node latency, browser requests, rule matches, and DNS results. Observe one variable at a time; avoid switching nodes, modes, and profiles repeatedly during testing.
Layer 1: core and ports
Confirm that the client status page shows the core running, and note the HTTP, SOCKS, or Mixed port. If the log shows “address already in use” or a port-in-use warning, the same port may be used by another Clash process, an old client, or another proxy app. Exit the conflicting program and restart the core, or change the listening port within the options supported by the client.
Layer 2: proxy groups and nodes
A latency test only shows that the test address could establish a connection at that moment; it does not fully represent download speed or long-term stability. First choose a node that completes the latency test, then open a site that is normally reliable for you. If an automatic proxy group keeps switching, temporarily select a node manually to rule out strategy changes as the source of interference.
Layer 3: rule matching
Open the connection history or live log and check which rule matched the target domain and which proxy group handled it. If the target was incorrectly assigned to DIRECT, inspect the rule order and active profile. If it entered a proxy group but the connection failed, continue by checking the node, DNS, or remote response. Rules are normally matched in configuration order, so a broad rule near the top can override a more specific rule below it.
Layer 4: DNS
If a domain cannot be opened but a known IP address responds directly, DNS may be involved. Check the logs for resolution timeouts, unreachable upstream servers, or forwarding loops. When other DNS tools are running on the system, keep one clearly defined resolution path first. In TUN mode, also confirm that the DNS settings required by the client are enabled, so the virtual interface does not take over traffic while queries continue to use an unreachable address.
After verification, record the working profile name, mode, node, and proxy toggle state. When upgrading the client or switching subscriptions later, use these settings as a rollback reference.
Common errors: troubleshoot by where the failure occurs
Subscription download fails or times out
First confirm that the subscription URL is complete and that copying did not add spaces, line breaks, or non-ASCII punctuation. Then check that the system clock is accurate, that the subscription server is reachable over a normal connection, and whether the provider requires a refreshed URL. If the old client updates successfully but the new one fails, compare their user-agent requirements, network egress, and supported subscription formats. Do not refresh repeatedly at high frequency after a failure; the remote service may rate-limit requests.
The subscription updates successfully, but no nodes appear
The profile may not be active yet, or it may contain only references to proxy providers that the client must load separately. Review the profile details and logs to confirm that remote providers downloaded successfully. If the log reports unsupported fields or a YAML parse error, the subscription format is incompatible with the current core. Use the Clash or mihomo format supplied by the provider rather than renaming a configuration from another client.
The browser loses network access after enabling the system proxy
First check that the core is still running and that the port configured in the system proxy matches the client’s listening port. Then disable the system proxy, confirm that direct connectivity returns, and restart the core. If the client exited unexpectedly while the system retained the old proxy address, disable the manual proxy in the operating system network settings. Once restored, test again with only one proxy client running.
The node has latency, but websites do not open
The latency-test address and the target website use different connections. Check the target domain, rule match, proxy group, and error type in the live log. If the issue is a connection timeout, compare with another node from the same subscription. If only certain domains fail, focus on rules and DNS. If all nodes fail at once, investigate the local network, subscription status, or service status before changing ports one by one.
TUN fails to start or causes network loss
Confirm that the client has permission to create a virtual interface, and exit other VPNs, old proxy cores, and network tools that may modify routes. On Windows, check for abnormal virtual adapters left behind. On macOS, review network-extension authorization. On Linux, verify the TUN device, routing permissions, and network-management service. If the system proxy still works with TUN disabled, the node and subscription are probably sound; focus on permissions, routing, or DNS interception.
Devices on the local network cannot use the local proxy
By default, local listeners usually accept connections only from the same device. If you need to provide a proxy to devices on the local network, enable LAN access in the client and listen on an address reachable by those devices. The operating system firewall must also allow the relevant port. Before opening access, make sure the current network is trusted and configure any access controls supported by the client. If the proxy is for local use only, keep LAN access disabled to reduce unnecessary exposure.
The original profile stops working after a client update
First determine whether the profile was not migrated, the core path changed, or the new version no longer supports an old field. Keep a copy of the old profile and inspect the first parse error after the upgrade; do not delete all configuration at once. If the subscription can be fetched again, create a new profile and import it, then restore only a small number of local rules manually. When migrating between clients, interface settings, override rules, and scripts usually do not come over automatically with the subscription.
Maintenance checklist after initialization
Once Clash is running normally, focus day-to-day maintenance on keeping configuration sources clear, avoiding duplicate network components, and preserving a known-good state whenever something changes. Client upgrades, subscription rule updates, and operating-system network resets can all alter proxy behavior.
- Keep the currently working client version, profile name, and architecture information.
- Update at the interval recommended by the subscription service instead of refreshing repeatedly without a reason.
- After changing networks, recheck node latency and DNS rather than reinstalling the app immediately.
- Allow only one client to manage the same system-proxy port and TUN routes.
- Disable the system proxy before exiting the client, and check the operating system proxy settings after an unexpected exit.
- Save the original profile before editing YAML, override rules, or DNS settings.
- During troubleshooting, check the first error in the logs before addressing the follow-up messages it triggered.
The complete first-time setup can be summarized as follows: choose the right installer, confirm that the core starts, import and activate the subscription, select Rule mode and a node, verify with the system proxy first, and configure TUN only if needed. Working layer by layer makes it much easier to identify whether a failed connection comes from installation, configuration, the node, rules, DNS, or traffic interception.
Choose the installer for your platform
Open the download center to confirm your operating system and processor architecture, then follow the setup guide to import a subscription, choose a node, and verify the proxy.