Check the subscription response format first
Whether a Clash subscription can be imported depends on the content returned by the link and the config formats supported by the client—not on whether the URL ends in .yaml. Start with the provider’s option labeled “Clash” or “Clash Meta / mihomo,” then import it in your client. A standard HTTPS URL may return a complete config, a Base64-encoded proxy list, a login page, or an error message.
The client is the graphical interface for managing configs, system proxy settings, and the core; mihomo is the core that handles proxy protocols and routing rules. A client’s “Import subscription” button does not mean the core can read every subscription format directly. Some clients convert the content first, while others accept only Clash YAML. Check what your client supports.
| Content received | How to identify it | What to do |
|---|---|---|
| Complete Clash YAML | Common top-level keys include proxies, proxy-groups, and rules | Import it as a URL config or a local config |
| Provider YAML | Usually contains only a list of proxies | Reference it with proxy-providers, or use a merge feature explicitly supported by the client |
| Base64 proxy list | Decoding reveals multiple URI lines, such as ss:// and vmess:// | Use the provider’s Clash output or a trusted local conversion tool |
| Web page or error response | Contains HTML tags, a login form, or a JSON error message | Check the URL, authorization, and subscription validity; this content cannot be loaded as YAML |
Import a subscription by URL
Copy the full URL from your subscription provider, including all query parameters. The token in the URL is usually an access credential; omitting anything after the question mark may result in an HTTP 401 or 403. Don’t use a website login URL, checkout page, or QR code image URL as the subscription URL.
Check import and activation separately
- Open config management. In your client, open the “Config,” “Subscriptions,” or
Profilespage, then choose the remote import option with a URL field. Labels vary by client, so follow the interface you’re using. - Paste the full URL. Enter the link by itself, without quotation marks, explanatory text, or line breaks added by a messaging app. Use the HTTPS URL provided by the service whenever possible.
- Download or import the config. Wait for it to appear in the config list, then check its update time and any error messages. In the English interface of the legacy Clash for Windows client, the path is
Profiles → URL input field → Download. This client is no longer maintained; the path is provided only to help identify an existing interface. - Select the config. Once the download is complete, click the config entry to make it active. If the client reports a reload error, check the logs first—a config appearing in the list does not mean it loaded successfully.
- Check the running state. In rule mode, make sure the proxy groups have loaded and select an available policy. On desktop, you may also need to enable the system proxy or TUN for your use case. Importing a config alone does not route traffic through it.
Verify the process in four steps: download succeeds → config parses → config is active → traffic is routed. If only the download succeeds, your browser may still use its previous connection method. If parsing fails, the client may keep using the last valid config. To find a client, start at the client downloads page, choose your operating system, then follow the installation and setup guide.
Import a local YAML file
Local YAML files are useful for offline storage, migrating configs, and troubleshooting format issues. The import option is usually on the “Config” page under “Import file,” or in a drag-and-drop area. After importing, select the config and check the client logs for syntax errors.
Three checks before importing a file
- Encoding and extension: Use UTF-8 text and make sure the filename isn’t
config.yaml.txt. Showing file extensions in your file manager is more reliable than identifying a file by its icon. - Indentation and structure: YAML uses spaces for indentation, not tabs. Align fields at the same level, and make sure list-item hyphens are indented correctly.
- Config completeness: A YAML file containing only a proxy list is not a complete routing setup. The main config should provide the policy groups, rules, and DNS settings you need.
Here’s a minimal direct-connection config to illustrate the structure. It contains no remote proxies, so it can’t verify whether subscription nodes work. If you’re only testing the import and parsing process, back up your current config first and switch back after the test.
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxies: []
proxy-groups:
- name: Manual Select
type: select
proxies:
- DIRECT
rules:
- MATCH,Manual Select
mixed-port: 7890 sets the local port shared by HTTP and SOCKS; it is not a remote proxy port. mode: rule enables rule-based routing. The final MATCH sends all remaining connections to the “Manual Select” group, which contains only DIRECT, so traffic in this example connects directly. If the port is already in use, the client may fail to listen even when the config syntax is valid.
Identify a Base64 proxy list
Base64 is an encoding method, not Clash config syntax or encryption. A common subscription format combines multiple proxy URIs and encodes them; decoding may reveal ss://, trojan://, vmess://, or vless:// links. This kind of text generally does not include complete policy groups and routing rules.
Choose a compatible import method
- First, look on the provider’s site for a subscription format explicitly labeled Clash or mihomo. The same account may offer several output URLs; copy the one that matches your current core.
- If only a generic subscription is available, check whether your client explicitly supports importing URI lists or Base64 subscriptions. Support for individual proxy URIs does not necessarily mean it can import a complete Base64 subscription.
- If you need to convert the subscription, use the provider’s converter or a trusted local tool. Conversion requires parsing fields such as proxy protocols, transport, and TLS; changing the file extension is not enough.
- After conversion, check the number of proxies, policy group references, and core errors before enabling the config. Successful parsing does not guarantee that every proxy’s connection settings are correct.
The original Clash and Clash Meta (now called mihomo) do not support exactly the same protocols and fields. A conversion tool generating a particular protocol field does not mean an older core can run it. If you see an error such as unsupported proxy type, check which core is actually running and whether the subscription format is intended for it instead of repeatedly importing the same file.
Set the subscription update interval
Updating an entire remote config and updating a proxy provider are two separate mechanisms. A graphical client downloads the remote config; mihomo’s proxy-providers can fetch a set of proxies on a schedule. Don’t confuse the interval values or UI settings for these two features, or mistake the health-check interval for the subscription refresh interval.
| Where to set it | What gets updated | Units and examples |
|---|---|---|
| Client remote config settings | Complete config file | Use the unit shown in the interface; if it specifies minutes, 360 means 6 hours |
interval under proxy-providers | Proxy list for a specific provider | In seconds; 21600 means 6 hours |
health-check.interval | Proxy connectivity check | In seconds; 300 checks every 5 minutes and does not download a new subscription |
For everyday use, start with a 6-hour update interval and adjust it to your provider’s limits. This is an example setting, not a protocol requirement. If the client supports update intervals suggested in the response, its behavior depends on how that feature is implemented. After changes on the provider’s end, try a manual update, then check the update time and proxy list.
Keep local settings when updating
Updating a remote config may overwrite changes made directly to its ports, rules, and DNS settings. To preserve local changes, use the client’s supported override, merge, or extension config feature, then verify the merged result. Don’t assume edits to a remote file will survive the next subscription update.
A complete config subscription may also include rules and references to external resources, not just proxies. Before importing, make sure you trust the source and check that settings such as allow-lan, the control interface, and listen addresses are appropriate for your device. For typical personal desktop use, don’t enable LAN access just to complete an import.
Troubleshoot import failures in order
First determine whether the issue is a download failure, invalid content format, or runtime failure, then troubleshoot that step. Repeatedly clicking Import rarely fixes format problems and may trigger your provider’s rate limits.
| Symptom | Check first | Next step |
|---|---|---|
| HTTP 401 or 403 | Token, account status, access restrictions | Copy the URL again from your provider account; don’t assume a status code points to only one cause |
| HTTP 429 | Is the request rate too high? | Stop refreshing repeatedly, follow the server’s retry guidance, and increase the update interval |
| HTML response or an error on the first line | Did the request open a login, verification, or redirect error page? | Inspect the final response body and confirm it contains subscription data |
| YAML indentation or field error | File contents, indentation, duplicate keys, protocol support | Use the logs to locate the line number and confirm you downloaded the format intended for your core |
| Import succeeds, but expected proxies are missing | Is this a proxy provider file? Did the account return an empty list? | Check the config type and provider status, then verify the policy group references |
| No access after activating the config | Active config, selected group policy, system proxy or TUN, DNS | Check each step in the traffic path instead of repeatedly downloading the subscription |
The URL opens in a browser, but the client can’t download it
Your browser and client may use different proxy routes, DNS, or request headers. Seeing the download in a browser doesn’t prove the client can reach the same URL. Check the logs for timeouts, certificate errors, or DNS resolution failures first. If the client offers a proxy option for subscription downloads, follow its instructions. Don’t disable certificate verification to hide connection problems.
The subscription hasn’t been imported yet, but downloading it requires a proxy
This can create a dependency loop during initial setup. On a trusted device or network that can reach the provider, download the YAML and import it locally; then return to the original device and test remote updates. Treat the config as sensitive when transferring it, and don’t upload it to a public cloud drive or share it in a group chat.
After troubleshooting, confirm all three: the target config is active, the logs show no ongoing parsing or resource download errors, and a test connection uses the expected policy. For field definitions and rule syntax, see the config file reference. For common traffic routing issues, see the FAQ. A successful subscription update confirms that fetching and loading work; proxy connectivity still needs to be tested separately.