1. Understand the Difference Between a Subscription URL and Its Content
When importing a Clash subscription, it’s easy to confuse where the content comes from with what the content actually is. A URL is the address of a remote resource; Base64 is a text-encoding method; YAML is a data format used for configuration files. These are not three options at the same level: the same HTTPS subscription URL might return YAML or a list of proxies encoded in Base64.
Being able to copy a link doesn’t mean its contents are compatible with your client. Likewise, a filename ending in .yaml doesn’t prove the server actually returned a configuration. To check compatibility, look at the subscription endpoint, the response content, and the client’s core.
| Item | Common indicators | What it means when importing |
|---|---|---|
| Subscription URL | Usually starts with https:// and may include a path and query parameters |
The client fetches the configuration from the address and may save it for future updates |
| Base64 text | Usually a long string of letters, numbers, and symbols; may end in one or more equals signs | Check the decoded result first; a list of proxy URIs usually needs conversion or a client with dedicated import support |
| YAML configuration | Common fields include proxies:, proxy-groups:, and rules: |
Can be used as a configuration if its fields, protocols, and references are all supported |
2. Copy, Import, and Activate a Subscription
1. Choose the right subscription endpoint
On your subscription provider’s account page, look for an endpoint labeled “Clash” or one that matches the core your client uses. If the page offers separate options for general subscriptions, Clash configs, and mihomo configs, choose the one that matches the client’s core. mihomo is the name used for the successor core to Clash Meta. Some extended protocols and fields require corresponding support; a similar-looking interface doesn’t mean the clients support exactly the same features.
- Copy the complete HTTPS URL, including the query parameters after
?and any parameters separated by&. - Don’t copy the URL for an account page, payment page, or sharing instructions. These pages usually return HTML.
- If you forward the link through a messaging app, check that no period, quotation mark, or line break was added at the end. Otherwise, punctuation from the message may be imported with the URL.
- Don’t remove token fields just because they look random; the server may use them to identify your subscription access.
2. Paste the URL into the profile manager
Menu names vary by client. Common paths include “Profiles” → “New” → “Remote” or “Subscriptions” → “Add subscription” → “URL.” Paste the link into the address field, name the profile, then download or import it. If the only option is “Import from file,” that action reads a local file; don’t enter a URL as a file path.
- Keep your existing working configuration for now. Don’t delete it during your first import.
- Give the new profile a recognizable name, such as “Daily subscription - primary,” instead of naming every entry “Default.”
- Wait for the download and parsing to finish, then check that the result reports success. Don’t rely solely on whether a new row appears in the list.
- Select and activate the profile. “Added” and “In use” are two different statuses.
- Open the proxy groups page and check that the expected groups and proxies appear. Then select an outbound proxy and test the connection.
System proxy and TUN are traffic-routing methods; they don’t convert a subscription into a usable configuration. When troubleshooting for the first time, confirm that the profile is loaded and its proxy groups are visible before changing system proxy or TUN settings. This reduces the number of variables. Use the port shown in your client; don’t assume every installation uses 7890 just because it’s common in examples.
3. Why You Can’t Use a Base64 Subscription as YAML
General-purpose subscriptions often encode multiple proxy URIs as a single block of Base64 text. Decoding it may reveal lines starting with ss://, vmess://, or trojan://. These lines describe proxy connection settings, but they don’t inherently include the proxy groups, rule order, or DNS settings that Clash needs.
Some clients support importing proxies or converting subscriptions, but these are additional client features—not something you can assume every Clash configuration importer supports. Saving a block of Base64 text as config.yaml only changes the filename; it doesn’t turn the content into YAML.
Use native output first; convert only if needed
- Go back to your provider’s page and look for an endpoint that returns Clash YAML directly.
- If only a general-purpose subscription is available, check your client’s documentation to confirm that it supports the format and the protocols it contains.
- If conversion is necessary, use a feature from the provider or a trusted local tool. Check the generated proxies, groups, and rules.
- Keep a note of the source after conversion. If you import a local file just once, changes to the remote proxies usually won’t sync to that file later.
4. YAML Configurations: Full Profiles vs. Proxy Provider Files
YAML is only a syntax format; the file must also have the structure expected by its intended use. A full configuration can include listening ports, proxies, groups, rules, and DNS settings. A proxy file for proxy-providers usually contains proxy data only, so it isn’t the same as a profile with routing rules already configured.
Here’s a minimal direct-connection configuration to illustrate the structure. It contains no remote proxies and isn’t a substitute for a subscription; when enabled, its rule sends traffic to DIRECT. mixed-port: 7890 means the same listening port accepts HTTP and SOCKS proxy connections. Before using it, check that no other program is already using the port.
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
Check these three areas in your configuration
- Proxy sources: Proxies can be defined directly under
proxiesor loaded throughproxy-providers. No inline proxies doesn’t necessarily mean the configuration is empty; check whether the providers loaded successfully. - Group references: Proxy names, other group names, and provider references used in a group must exist. Renaming an item may break references to its old name.
- Rule targets: Each target in
rulesmust resolve to a valid policy. In this example, “Manual Select” must exactly match the group name. If you change one, check the other as well.
Use spaces for YAML indentation, not tabs. Quote passwords, special characters, and strings containing colons according to YAML syntax. If your configuration comes from a remote subscription, edits to the downloaded file may be overwritten the next time it updates. For persistent changes, use an override, merge, or extension mechanism explicitly supported by the client, and check the order in which it takes effect.
5. Subscription Updates: Remote Profiles, Local Files, and What Gets Overwritten
Remote subscription profiles usually retain the URL and fetch the content again when updated. A locally imported YAML file is usually just a snapshot. Whether a client can watch for file changes or refresh automatically depends on its implementation. Both types may appear in the profile list, but their update sources differ.
Run a manual update after the first import
Open the menu for the profile and choose “Update” or “Refresh.” Check whether the last-updated time changes and review the result. If the client supports scheduled updates, start with an interval of 24 hours, then adjust it based on your provider’s instructions. Intervals may be measured in minutes, hours, or seconds, so check the field’s label. Frequent requests may trigger server-side rate limits.
- Update succeeds, but the proxies haven’t changed: The server may still be returning the same content, or a different profile may be active. First, check the name of the current profile.
- Subscription updated, but provider still reports an error: Downloading the main configuration and fetching remote proxies through
proxy-providersare separate steps. Check each one independently. - Local rules disappear: A remote update may overwrite the original file. Put rules you need to maintain in a supported override configuration instead of repeatedly editing the subscription content.
- Subscription URL has changed: If your provider resets the token, the old URL may stop working. Replace the saved URL rather than repeatedly clicking Refresh.
Whether subscription downloads use a proxy also depends on the client and its settings. If you’re stuck in a loop where you “must connect before updating,” switch back to an older working profile and update the new one. Don’t reset system proxy, DNS, and TUN settings all at once just to fetch a subscription.
6. Empty Proxy List After Import: Check the Request, Format, and Loading Order
An empty proxy list can result from a failed download, a parsing error, or a display issue. Save the exact error message first, then use the table below to narrow down the cause—it’s more useful than repeatedly reinstalling the client. Redact URL parameters, proxy credentials, and account identifiers before sharing logs.
| Symptom or log message | Check first | Next step |
|---|---|---|
| HTTP 401 or 403 | Token, account permissions, access policy | Copy the subscription again from your provider’s page, and confirm that it’s active and meets the client’s request requirements |
| HTTP 429 | Update frequency and request limits | Stop refreshing repeatedly. Wait as instructed by the server before trying again |
| Returns 200, but the content starts with HTML | Login page, error page, or access verification page | Use the actual subscription endpoint. A 200 response only means the request received a response, not that the content is usable |
| YAML parsing failed | Response format, indentation, and fields near the reported line | Confirm the download is YAML, not Base64, a JSON error message, or a web page |
| Unsupported proxy type | Protocol support in the current core | Choose subscription output that matches your core, or update the core according to the client documentation |
| Configuration loaded successfully, but the list only shows DIRECT | Provider download, proxy filters, and group references | Check the provider status and filter expressions, then confirm which profile is active |
Don’t assume a “test timed out” message means the import failed
If proxies are visible but latency tests time out, the issue is usually at the connection-testing stage. The test URL may be unreachable, proxy authentication may have failed, the network may be blocking traffic, or DNS may be malfunctioning. Check the connection logs instead of converting a valid YAML file to another format.
Conversely, a profile card saying “Added successfully” doesn’t mean the core has accepted the configuration. Some interfaces save the profile first, then download it or switch to it. Confirm all four: the download succeeded, the core loaded the configuration, the profile is selected, and the proxy group references are valid.
7. Import checklist
- The subscription source is known, the URL is complete, and the token isn’t visible in public screenshots or notes.
- The response matches the selected import method. You’ve distinguished a full YAML configuration from a proxy provider file and a Base64 proxy list.
- The correct profile is active, and the expected proxies or successfully loaded providers are visible in the proxy groups.
- At least one manual update has succeeded, and the automatic update interval uses the unit shown by the client.
- Local rules are backed up separately, and you’ve confirmed whether subscription updates overwrite your changes.
- If a connection test fails, record the exact error and troubleshoot in this order: configuration loading, proxy connection, then traffic routing.
To configure system proxy, rule mode, or TUN next, see the Clash user guide. To understand how proxies, groups, and rules reference one another, read Advanced. Confirm the subscription format and update path before changing traffic routing settings to make troubleshooting more straightforward.