First, distinguish between a URL, a config file, and encoded proxy links
“Importing a subscription” involves two steps: retrieving the content, then having the client parse it. A URL is the address used to retrieve content; YAML is a config file format; Base64 is an encoding method. They operate at different levels: the same HTTPS subscription URL might return a complete Clash YAML config or Base64-encoded proxy links. The URL alone doesn’t tell you whether its contents can be imported directly.
| What you receive | How to identify it | How to import it | How updates work |
|---|---|---|---|
| Remote subscription URL | Usually starts with https:// and may include token parameters |
Remote config or subscription URL option | The client requests the same URL again |
| Local YAML file | Contains keys such as proxies: and proxy-groups: |
Import a local file or open the config directory | Usually needs to be reimported or maintained manually |
| Base64-encoded proxy links | When decoded, often contains multiple lines of URIs such as ss:// and vmess:// |
A proxy import feature that supports the format, or a trusted conversion tool | Depends on the source and conversion process |
Import a URL subscription and activate the config
Copy the client subscription URL, not the account page URL
On your provider’s account page, choose the Clash or Mihomo output option and copy the full URL. The account login page, purchase history, and subscription endpoint are different URLs. If the provider offers separate Clash, Clash Meta, and generic subscription options, choose the one that matches your client’s core. Clients using Mihomo can often use Clash Meta configs, but check protocol support for your specific setup.
- Verify the source. Use a URL from the account for the service you actually use. Keep all query parameters, including the token after
?. Don’t include quotation marks, spaces, or line breaks added when copying the URL. - Find the remote import option. For example, in Clash Verge Rev, paste the URL into the field on the “Subscriptions” page and click “Import.” Menu labels may vary by version. Look for an option to fetch a config by URL, not a local file button.
- Wait for the download and parsing to finish. Check the config name, update time, and proxy list. If parsing fails, keep your existing working config and don’t repeatedly overwrite it.
- Select the new config. Make sure the imported config is active, then go to “Proxies” and select a proxy for the strategy group you use. If you’ve downloaded the config but haven’t switched to it, connections may still use the old one.
- Test the proxy connection. Start with the client’s connection test, then enable the system proxy and visit a test page. Configure TUN only if you need to route traffic that doesn’t use the system proxy.
In ClashX clients, remote subscriptions are often managed from the menu bar icon under “Config” → “Managed Config” → “Manage.” Add the URL, then select the config. Menu labels vary across forks. If you can’t find “Managed Config,” check the client name and version instead of following screenshots for another client.
If opening the URL in a browser shows a login page, CAPTCHA, or HTML, it isn’t a parseable Clash config—even if the server returns HTTP 200. Go back to the provider’s page and get the subscription URL, rather than saving the web page as a .yaml file.
Local YAML: Import a file and check its structure
Local files are useful for manually maintained rules, offline config transfers, and configs supplied directly by a provider. Common extensions are .yaml and .yml, but a filename extension only helps identify a file; it doesn’t change its format. Renaming Base64 text to YAML won’t create strategy groups or routing rules.
Check these three things before importing
- Encoding and indentation: Use UTF-8 text. YAML uses spaces for indentation, not tabs. Keep list items consistently indented under their parent keys.
- Config scope: A complete main config usually includes proxies or proxy providers, strategy groups, and rules. A file containing only
proxies:may be intended as proxy provider content, not a standalone config. - Core compatibility: Fields supported by Mihomo may not work with older Clash cores. If you see “unsupported proxy type,” check the protocol and core; changing the indentation won’t fix it.
The example below shows YAML structure and a direct-connection policy only. It contains no proxy servers and can’t be used to test remote proxies. 7890 is an example listening port, not a default for every client.
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxy-groups:
- name: Manual Select
type: select
proxies:
- DIRECT
rules:
- MATCH,Manual Select
Choose the local file option on the client’s “Subscriptions” or “Config” page. If the client supports drag and drop, you can also drop the file into the relevant area. After importing, check the active port and mode: a graphical client may override file settings through config merging or its settings panel. If a port differs from the one in the file, rely on the running settings and logs.
Base64: Decoding proxy links doesn’t create a Clash config
Base64 is not encryption. It encodes text as a string that’s easier to transmit, but it doesn’t hide proxy passwords or subscription tokens. A typical generic subscription decodes to one proxy URI per line. These URIs describe individual proxies and usually don’t include the strategy groups, rules, or DNS settings found in a Clash main config.
Choose what to do based on the decoded content
- If you get a list of proxy URIs: First check whether the client can import proxies for the relevant protocols. A main config importer may not accept a URI list, and support for importing one proxy doesn’t necessarily mean it can import a full generic subscription.
- If you get a complete YAML config: Check its indentation, proxy types, and field compatibility, then import it using the local file option.
- If you get a web page or an error: There’s a problem with the download source or access. Another round of Base64 decoding or changing the file extension won’t help.
If you need to convert the content, use the provider’s Clash/Mihomo-specific output or a trusted local conversion tool. Conversion involves more than decoding: proxy parameters must be mapped to the target core’s format, strategy groups and rules must be generated, and required fields such as TLS, SNI, and transport settings must be preserved. A conversion tool can’t fill in authentication details that aren’t present in the source.
Third-party online conversion services may have access to your full subscription URL and proxy credentials. Don’t paste a real URL into a site with an unknown owner, or attach the original file to a public support ticket. Redact tokens, passwords, UUIDs, and server details when troubleshooting. If a token has been exposed, reset the subscription URL in your provider account.
Auto-updates: Main configs and proxy providers run on separate schedules
The “subscription update interval” managed by a graphical client is separate from proxy provider updates in the core config. The former downloads the main config again; the latter updates only the proxy content referenced by proxy-providers. Changing one doesn’t guarantee the other will change too.
| What gets updated | Where to configure it | What to check |
|---|---|---|
| Remote main config | Edit or update settings on the client’s subscription card | Whether the interval is in minutes or hours, and whether auto-update is enabled |
| HTTP proxy provider | The main config’s proxy-providers section |
interval is measured in seconds |
| Regular local file | File maintenance workflow | Whether it needs to be reloaded and whether it references remote resources |
Below is an HTTP proxy provider snippet for Mihomo. 86400 seconds equals 24 hours. The URL uses a reserved example domain and doesn’t provide a working proxy. Add this snippet to a complete main config. The endpoint must return proxy provider content supported by the core, such as YAML with a top-level proxies: key.
proxy-providers:
remote-nodes:
type: http
url: "https://example.com/nodes.yaml"
path: ./providers/remote-nodes.yaml
interval: 86400
The strategy group also needs to reference remote-nodes with use: for the proxies to appear in that group. The provider’s health-check interval controls how often proxies are tested, not how often the subscription is downloaded. Don’t set the update interval to a few seconds to get “faster proxies”—that increases requests and may trigger server-side rate limits.
Scheduled tasks may not run when the client isn’t open, the device is asleep, or the network is unavailable. After changing settings, run an update manually and confirm it succeeds, then check the update time and what happens after the next startup. Whether remaining traffic and expiry dates appear depends on the response data and client support; it doesn’t affect how the content format is identified.
Import failed? Troubleshoot in order: download, parse, run
Step 1: Check whether the server returns the right response
- HTTP 401 or 403: First check that the URL is complete, the token is valid, and the account is active. A 403 may also come from access rules or a protection system; it doesn’t necessarily indicate a proxy issue.
- HTTP 429: Stop clicking update repeatedly. Wait as directed by the server, then reduce the update frequency.
- Timeout or certificate error: Check your network, system clock, and DNS resolution for the subscription domain. Don’t disable certificate verification as a routine fix.
Step 2: Check the format and core
For a YAML line-number error, check the indicated line and the indentation above it, especially colons, quotation marks, and list markers. If you see an unknown proxy type, note the client version and core name, then choose a compatible output from the provider. A config with proxy-providers and no directly listed proxies isn’t necessarily broken. Check whether the providers downloaded successfully and whether the strategy groups reference them correctly.
Step 3: Distinguish subscription updates from proxy traffic
The client may fetch subscriptions itself, independently of the core proxy. If the old config can access the internet but a new subscription won’t download, check whether the client lets you configure a separate proxy for subscription updates and whether that option depends on an existing working config. TUN routes network traffic; it won’t automatically convert Base64 to YAML or fix an invalid token.
Finally, check the active config, strategy group selection, and system proxy. The system proxy port must match the client’s actual listening port. For example, if the client listens on 7890 but the system proxy points to 7897, the config may import successfully while apps still can’t connect. Checking in this order helps you separate download failures, incompatible formats, and traffic that isn’t being routed—without repeatedly reinstalling the client.