Understand what ClashX, a subscription, and a node each do
ClashX is a macOS graphical client for controlling a Clash-compatible proxy core. It can import configuration files, download subscription profiles, start or stop the local core, switch proxy policies, and enable or disable the macOS system proxy. The subscription provider supplies the configuration content; ClashX does not create proxy servers or repair an expired account. Keeping these roles separate makes the setup process much easier to troubleshoot.
A subscription URL normally contains proxy nodes, proxy groups, routing rules, DNS settings, and update information generated by your provider. A node is one outbound server entry, while a proxy group is a selectable collection of nodes. For example, a group called Proxy, Node Select, or 手动选择 may contain servers in several countries. Selecting a node inside that group changes the outbound route used by traffic matched to the group.
| Item | What it means | Where you usually manage it |
|---|---|---|
| ClashX | The macOS client and menu bar interface | Applications folder and menu bar |
| Subscription URL | An address that returns nodes and configuration data | Provider dashboard or account page |
| Profile | The downloaded YAML or generated configuration used by the core | ClashX profile or configuration menu |
| Proxy group | A policy containing one or more nodes or nested groups | Proxy selection menu |
| System proxy | macOS HTTP and HTTPS proxy settings pointing to the local Clash port | ClashX menu bar and macOS network settings |
Before making changes, confirm that you have an active subscription, a complete subscription URL, and a macOS account allowed to change network settings. Treat the URL like a password because it often contains an access token. Do not paste it into screenshots, public issue reports, or support messages without removing the token portion.
Install ClashX and verify the initial macOS state
Download ClashX from a source you trust and select the package that matches your Mac when separate Intel and Apple silicon builds are offered. You can check the hardware in Apple menu → About This Mac. A Mac with an Apple M-series chip requires an arm64 or Apple silicon build; an Intel Mac requires an x64 or Intel build. If only an older universal build is available, macOS may use Rosetta for Intel code, but a native build is generally preferable when supported.
- Open the downloaded DMG or archive.
- Drag ClashX into the macOS Applications folder.
- Launch it from Applications and look for its icon in the menu bar.
- If macOS blocks the first launch, open Finder, locate ClashX, hold Control, click the app, and choose Open.
- Review System Settings → Privacy & Security if macOS reports that the developer cannot be verified.
Do not run the application permanently from a DMG, Downloads folder, or removable drive. A fixed location makes upgrades, permissions, and saved configuration paths more predictable. If another proxy client is already active, turn off its system proxy before testing ClashX. Two clients may attempt to control the same macOS proxy settings or listen on overlapping local ports.
Check the local core before importing a profile
After launching ClashX, open its menu bar menu and identify the entries for configuration, proxy mode, proxy selection, logs, and system proxy. The exact labels vary between ClashX releases and forks, but the operational concepts are similar. A client window or menu icon alone does not guarantee that the core is running. The core must load a valid configuration and listen on its local port before applications can send traffic through it.
Common configurations use a mixed HTTP and SOCKS port such as 127.0.0.1:7890, although the actual value may be different. If a browser or another application offers manual proxy settings, use the port shown in the active profile rather than copying a value from an online example. When diagnosing a connection problem, check the ClashX log for core startup errors, port conflicts, unsupported proxy types, or YAML parsing failures.
Add a subscription URL and download the profile
Open the profile or configuration management area from the ClashX menu bar. Depending on the build, the command may be called Config, Profiles, Remote Config, or Manage Configurations. Choose the option for adding a remote configuration or subscription, then paste the complete URL supplied by your provider. Avoid manually retyping the address because one missing character can produce an authentication error or download an unrelated page.
- Copy the full subscription URL from the provider’s account dashboard.
- Open ClashX’s profile management menu.
- Choose the remote URL, subscription, or add-profile command.
- Paste the URL into the address field.
- Give the profile a short name such as
DailyorPersonal. - Start the download and wait for the profile to appear in the local list.
- Select the downloaded profile so ClashX uses it as the active configuration.
A successful download may still be followed by a parsing error. A valid response should contain Clash-compatible YAML, encoded configuration content that the client knows how to decode, or a provider-generated profile in a supported format. If the response is an HTML login page, a CAPTCHA, a JSON error, or a message saying that the plan has expired, ClashX cannot treat it as a usable profile.
| Observed result | Likely cause | Next action |
|---|---|---|
| 401 or 403 | Expired token, account restriction, or rejected request | Generate or copy a fresh URL from the provider |
| 404 | The old subscription endpoint no longer exists | Use the current address shown in the provider dashboard |
| Timeout | DNS, routing, firewall, or provider availability problem | Test the URL in a browser and from another network |
| YAML parsing error | Invalid response or unsupported configuration fields | Inspect the response format and check core compatibility |
| Profile appears but has no usable nodes | Subscription conversion or account-side filtering issue | Refresh the profile and contact the provider if it persists |
Refresh the profile and test node latency
Subscription providers change server addresses, certificates, ports, and policy groups over time. After importing a profile, refresh it once before choosing a node. In ClashX, use the profile’s update or reload command. If the profile has an automatic update interval, a daily interval such as 1440 minutes is usually less aggressive than repeatedly pressing refresh. Excessive requests can trigger a provider’s rate limit, while a very long interval can leave you using expired nodes.
After the update finishes, open the proxy selection area and locate the main group used by the active rules. It may be named Proxy, Proxy Group, Node Select, Auto, or another provider-defined name. Do not assume that the first visible node is the best choice. A node’s name may include a location or speed label, but names are not a live measurement of availability.
Use the latency test or delay-test command when available. The test usually sends a small request to a fixed URL and records the round-trip time; it does not measure sustained download speed, streaming quality, or performance for every website. A node showing 80 ms may still fail to load a particular service because of routing, congestion, TLS behavior, DNS resolution, or destination-side blocking.
| Latency result | Practical interpretation | Recommended decision |
|---|---|---|
| Below 100 ms | Usually responsive for interactive browsing, if packet loss is low | Good first candidate |
| 100–250 ms | Often usable, with more delay for calls and remote sessions | Keep as a backup or compare by destination |
| Above 250 ms | May feel slow even when the connection is technically working | Test other locations and protocols |
| Timeout or failed test | The node is unavailable or the test endpoint cannot be reached | Do not select it as the primary node |
Switch nodes and turn on the macOS system proxy
Once the profile is updated and the latency test is complete, select a working node inside the policy group used by your rules. Click the group, choose a node with a successful test, and wait for the selection mark to change. Some versions apply the selection immediately; others require choosing the node and then reloading the configuration. Watch the ClashX log or connections panel for a new outbound connection after switching.
The node you select may not control every request. In rule mode, different domains can be sent to different groups such as a direct group, a streaming group, an advertising-block group, or a default proxy group. If switching the visible “Proxy” group has no effect on a particular website, inspect which rule matched the request and which policy group that rule references.
For ordinary macOS applications, enable the system proxy from the ClashX menu bar. The client commonly writes a local HTTP and HTTPS proxy address such as 127.0.0.1:7890 into the current network service. The exact port is controlled by the profile, so check the active configuration if applications report that the proxy is unavailable.
- Confirm that a profile is active and the ClashX core is running.
- Select a node that passed the delay test.
- Choose the appropriate proxy mode, usually
Rulefor normal rule-based routing. - Enable Set as system proxy or the equivalent system-proxy command.
- Open a browser and test a simple HTTPS page.
- Check the connections or logs panel to confirm that the request reaches the expected policy group.
System proxy mode works for browsers and applications that respect macOS HTTP or HTTPS proxy settings. It may not capture every command-line program, game, virtual machine, or application with its own network stack. TUN mode can cover a wider range of traffic, but it requires additional permissions and changes DNS and routing behavior. Start with the system proxy and use TUN only when the applications you need do not follow the system proxy.
Verify both access and routing
Test more than one destination. First open a normal HTTPS website, then check a service that is expected to use the selected proxy group. Compare the ClashX connection log with the browser result. If the log shows no request, the browser may be bypassing the system proxy or using a separate proxy extension. If the log shows a request but the node fails, try another node and inspect the core error.
When a page opens but appears to use the wrong region, check the active group and the matched rule rather than immediately changing the subscription. When all pages fail, disable the system proxy, confirm that the core starts without errors, verify the local port, and then enable the proxy again. This separates a node problem from a local client or system-setting problem.
Frequently asked questions
Why does ClashX say that the subscription update failed?
Check the URL for missing characters, confirm that the account has not expired, and test whether the address returns a configuration instead of an HTML login page. A timeout may point to DNS or network routing, while a YAML parsing error may indicate unsupported fields or an invalid provider response. Change one variable at a time and refresh again.
Why can I import the profile but cannot use some nodes?
The profile may contain protocols that the ClashX build or its bundled core does not support. Older classic cores may not understand newer Hysteria2, TUIC, VLESS, WireGuard, or mihomo-specific configuration fields. Check the core log and ask the provider for a compatible profile format if necessary.
Why does switching a node not change one website?
Rule mode may send that website to a different policy group, or the application may bypass the system proxy. Inspect the matched rule and the connection log, then select a node in the group actually used by that request. Browser extensions and application-level proxy settings can also override ClashX.
Should I use system proxy mode or TUN mode?
Use system proxy mode first for browsers and applications that respect macOS proxy settings. Choose TUN when you need to capture software that ignores those settings, but expect additional permissions and more complicated DNS or routing behavior. Disable TUN before changing clients or troubleshooting a basic subscription issue.