Security & Privacy · Clash Technical Blog

Importing a Clash Subscription Link: Format Detection, Update Failures, and Leak Response

When importing a Clash subscription, identify whether the URL returns a configuration, error page, or expired response, then update, activate, and verify a real connection.

  • Subscription import
  • Configuration updates
  • Link security
On this page

Before importing, confirm that the link returns a Clash or Mihomo configuration

Clash cannot import an arbitrary web address; it needs a Clash- or Mihomo-compatible subscription from the provider. When the client accesses the link, the server may return YAML with proxies, proxy-groups, and rules, or it may return encoded text, a sign-in page, or an error page. The response content determines whether parsing succeeds.

After pasting the link into the client, “added successfully” means only that the address was saved. It does not prove that the configuration downloaded or that its nodes work.

The token in a subscription address usually acts as a read credential. Troubleshooting requires only error status, response type, and time, not the complete URL. Hide everything after the question mark before sharing chat screenshots, recordings, or logs.

401, HTML pages, and YAML indicate three different problems

How to read update results

Observed resultMeaning and response
401 / 403The token is invalid, the account status is abnormal, or the server denied access
404The address path changed or the link was copied incompletely
200, but the content begins with <htmlThe response is a sign-in, verification, or error page—not a configuration
200, with proxies / proxy-groups / rulesIt appears to be Clash/Mihomo YAML and can proceed to parsing
download failed / timeoutThe client did not receive a response before the deadline; inspect the network and server

Some subscription services return different formats based on User-Agent. A browser displaying a string does not guarantee that a Clash request receives the same content; conversely, a web page in the browser does not necessarily mean the link is invalid. Give the provider the client version, update time, and status code instead of repeatedly deleting the configuration.

Save, update, and enable it in one operation

One complete remote import

  1. Copy the provider's link labeled for Clash or Mihomo

    Copy everything from the opening https through the last parameter, without extra spaces.

  2. Add the remote subscription on the Profiles or configuration screen

    Use a name that identifies the source, and do not put the token in the name.

  3. Click update immediately

    Watch the status code, parsing message, and new update time.

  4. Set this configuration as current

    Open Proxies and confirm that policy groups and nodes appear.

If the client offers direct link, configuration link, URL Scheme, and other entry points, start with an ordinary remote link. If one method reports client error(Connect), try another import entry documented by the client, but do not leave “allow invalid certificates” enabled.

parse error means the content arrived but failed format validation

Errors such as parse, yaml: unmarshal, or field not found mean the network request probably completed and the client failed while reading the content. Common causes include a server response formatted for another client, damaged YAML indentation, or fields unsupported by the current core.

Switching nodes usually does not help here. Preserve the first specific error line and line number, verify the client's Mihomo version, and ask the subscription provider for a compatible format. Do not manually repair dozens of fields in a remote configuration; the next update will overwrite every change.

unexpected character '<'

The response is probably an HTML page; inspect sign-in, verification, or server errors.

mapping values are not allowed

YAML indentation or syntax is damaged; ask the provider to regenerate it.

unsupported proxy type / field not found

The core version and configuration fields do not match; upgrade to a supported version or use a compatible subscription.

If the update time changes but the proxy screen is empty, check whether the configuration contains usable groups

If a remote update succeeds but the Proxies screen has no nodes, the response may contain only rules, every node may have been filtered out, or the selected configuration may still be the old one. Return to Profiles and check the selection marker, then confirm that the configuration contains proxies or proxy-providers and that proxy-groups references them.

Nodes can exist yet all sit in an unused group, leaving the primary policy on DIRECT. Choose a policy group that actually contains nodes and pin one, then observe a request in Connections. This reveals more about whether the configuration works than the latency button alone.

Compare each item when the list is empty

  • Is the current configuration the one that just updated?
  • Does the configuration declare proxies or proxy-providers?
  • Does proxy-groups correctly reference nodes or a provider?
  • Did an override script filter out every node?

Existing internet access does not prove today's subscription update succeeded

Clash normally continues using the last successfully downloaded local copy. Existing nodes may therefore keep working temporarily after a subscription expires or the server begins returning an error. Judge update status by the “last updated” time and the current error, not simply whether web pages open.

Do not rush to delete a working old configuration. Export the error, verify the account and link status, and remove the old entry only after the new address updates successfully. Deleting the sole working copy turns a diagnosable issue into an immediate outage.

Old nodes work, but the new update returns 401
The server rejected the current credential; sign in to the service panel and inspect the subscription address.
The update times out on the home network but succeeds on a mobile hotspot
The problem is closer to the current network path than the YAML format.
Several clients fail at the same time
Check service notices and subscription status first; do not reinstall every device.

Finish the import workflow with one real request

Select the new Profile, pin one node in Proxies, keep Rule mode, and enable the system proxy. When visiting a familiar page, Connections should show the target domain, matched rule, and outbound route. A latency test proves only that the probe address responded; it does not replace a real request.

If a request enters Clash and shows timeout, try another node. If no record appears, inspect the system proxy. If it shows DIRECT, inspect the rule. Only when the page opens and the record matches the selection has the subscription completed downloading, parsing, activation, and forwarding.

Once a complete subscription appears in a public screenshot, group chat, support ticket, or unfamiliar conversion site, reset the subscription address in the service panel. After the new token works, replace the link in your clients and update. The old address should return an invalid status. Renaming the Profile does not invalidate the old credential.

  1. Generate a new subscription address

    Use the provider's reset or token refresh feature.

  2. Update controlled devices

    Replace the old URL on each device and confirm the new update time and node list.

  3. Verify that the old address is invalid

    Do not keep sending the old link in chat; check only the status shown by the service panel.

  4. Inspect unusual usage

    If you find unfamiliar devices or traffic changes, follow the provider's account-security process.