Check the subscription content before choosing an import method

If you already have a subscription URL, use your client’s remote URL import. QR codes are handy for transferring a URL between devices, while local YAML files work well for offline migration and configuration checks. These methods only determine how the configuration gets into the client; they don’t change which protocols its core supports or fix an invalid subscription format.

Before importing, select the Clash or Clash Meta / mihomo format on your subscription provider’s site, then copy the full URL. Your account login page, plan management page, and subscription URL are three different things. Query parameters after the question mark may contain authentication tokens, so don’t remove them or include trailing punctuation when copying the URL.

MethodBest forUpdate behavior
Remote URLYou have an accessible Clash configuration URLKeeps the source URL for manual updates; automatic updates depend on client settings
QR codeReading a subscription URL or proxy details from another deviceIf the QR code contains a remote URL, the configuration can be updated remotely after import
Local YAMLMigrating a downloaded configuration or inspecting its contentsLocal configurations usually don’t fetch the original subscription; remote providers inside them can be updated separately

Import by URL: download the configuration, then select it

Desktop clients usually keep remote configurations under “Subscriptions” or “Profiles,” not in system proxy settings. The steps below use common menu labels; names can vary by release and interface language, so follow what you see in your client.

Desktop: Windows, macOS, and Linux

  1. In Clash Verge Rev, open “Subscriptions” in the sidebar, paste the full URL into the subscription link field, and click “Import.” If your version uses a “New” dialog, choose the remote type and enter the URL.
  2. Wait for the download and parsing to finish. Check that the new configuration appears in the list and its update time changes. An empty configuration card alone doesn’t mean the content was fetched successfully.
  3. Select the configuration to make it active, then open “Proxies” and check the proxy groups. Switching configurations may change group names and rules, so don’t rely on the node selected in the previous configuration.
  4. Turn on the system proxy in “Settings,” or enable TUN if needed. For the initial check, use just one clear traffic-routing method rather than changing several network options at once.

Clients such as FlClash also require you to add a remote configuration in profile management and set it as the active profile. On macOS, ClashX Meta users can find configuration management under “Config” → “Managed Config” in the menu bar app. Don’t assume menus work the same across clients, and don’t mistake “core running” for “new subscription active.”

Mobile: Android and iOS

  1. In Clash for Android, the usual path is “Profiles” → “+” → “Import from URL.” Enter a name and the subscription URL, save, and wait for the remote content to download.
  2. Return to the profile list, select the new entry, then go back to the home screen and start the client. Android will ask for permission the first time it creates a VPN connection. If another VPN is using the connection, disconnect it first.
  3. In other Android or iOS clients, look under “Profiles” or “Subscriptions” for URL import, and first confirm that the client supports the subscription format and proxy protocols. iOS clients don’t necessarily use Clash YAML; a “Subscriptions” button alone doesn’t guarantee compatibility.

If remote import fails, start with the specific error. A connection timeout usually points to a network path issue. HTTP 401 or 403 responses often indicate invalid credentials, access restrictions, or server-side blocking. If the download succeeds but parsing fails, check the response content and core compatibility. Each issue calls for a different fix; repeatedly clicking Import is unlikely to help.

Import via QR code: subscription URL or single proxy?

A QR code is just a way to store text. It may contain an HTTPS subscription URL or a single-proxy URI starting with ss://, vmess://, or trojan://. A successful scan only means the text was read; it doesn’t mean the client can use it as a complete configuration.

  1. Look for a scan option on the client’s add-configuration screen. Grant camera access when prompted. If the QR code is saved in your photo library, choose image recognition, if your client supports it.
  2. Check the content type after scanning. If it’s an HTTPS URL, verify that it comes from a trusted subscription provider, then save it as a remote configuration. If it’s a single-proxy URI, use the client’s supported proxy import flow.
  3. After importing, check the configuration list and proxy groups. Importing a single proxy may add only one node, without rules, DNS settings, or proxy groups; you may need to pair it with a client configuration template.

If your device has no image-scanning option, copying the original subscription URL is more reliable. Don’t upload subscription QR codes to public scanning websites. If the client says “Unsupported QR code content,” return to the subscription page and select the Clash format instead of repeatedly trying to import a proxy QR code as a remote configuration.

Import local YAML and migrate configurations

Save the file as UTF-8-encoded .yaml or .yml, then select it using the client’s “Local file” or “Import from file” option. In Clash for Android, file import is usually under “Profiles” → “+.” On desktop, create a local profile or import a file from configuration management.

The file extension doesn’t determine what’s inside. A downloaded login page won’t become a usable configuration just because you rename it to config.yaml. Open it in a text editor and check the beginning: if you see <!DOCTYPE html>, a login form, or a website error, fetch the file again from the subscription provider rather than adjusting YAML indentation.

Check these three things before migrating

  • Completeness: The configuration needs usable proxy definitions and the corresponding policies. A node snippet containing only proxies: isn’t a complete subscription configuration with proxy groups and rules.
  • Dependencies: Check for local paths in proxy-providers and rule-providers. Copying the main file doesn’t also copy the rule and proxy files it references.
  • Compatibility: Extensions and protocols used by Clash Meta / mihomo may not work with older Clash cores. If you see “Unsupported proxy type,” check the core’s capabilities instead of simply deleting the field.

After importing a local file, you still need to select it as the active configuration. If you edit it in an external editor, use the client’s reload option; some clients copy the file on import instead of continuing to read it from its original location.

Clash YAML vs. Base64 subscriptions

“Subscription link” describes how you access the content, not a single file format. The same HTTPS URL may return Clash YAML, a Base64-encoded proxy list, or JSON for another client, depending on server parameters. Being able to open a URL in a browser doesn’t mean your current client can parse it.

Content typeTypical signsImport notes
Clash YAMLCommon keys include proxies, proxy-groups, and rulesCheck whether it’s a complete configuration or a provider proxy list, and verify core compatibility
Base64 proxy listUsually decodes to a list of proxy URIs, one per lineUsually lacks complete routing rules; changing the file extension won’t convert it to YAML
Single-proxy URIStarts with a protocol prefix such as ss:// or trojan://Requires the client’s proxy import feature; don’t assume it’s a remote configuration URL
Other JSON configurationOrganizes proxies and settings as a JSON object or arrayUse the matching core or an import feature that explicitly supports the format

Base64 is an encoding, not a proxy protocol or encryption. If your provider offers several export formats, choose its native Clash or mihomo configuration. If conversion is necessary, use a trusted local tool or a conversion service you operate. A conversion service that receives your full subscription URL can usually access the proxy credentials it contains.

Another easily confused format is a proxy-provider file. It can be valid YAML but often contains only a proxies list, intended to be referenced by proxy-providers in a main configuration. Enabling it directly as a complete configuration may leave you without the expected proxy groups and rules. A complete configuration may also rely mainly on providers rather than listing proxies directly, so the presence or absence of a single key doesn’t tell you whether the file is valid.

Imported configuration not working? Check these four points

1. Did the configuration actually load?

First check the name of the active configuration and the latest load logs. If the log reports a YAML parsing error, inspect the indicated line for indentation, colons, and quotes. YAML uses spaces for indentation, not tabs. Policy group names referenced by rules must match the names in the configuration. If the download succeeded but loading failed, the client may still be running the previous configuration.

2. Is the app using the right proxy port?

Without the system proxy enabled, regular browser traffic usually won’t go through the core just because a configuration was imported. The following is only a port-settings snippet to explain how the ports relate; it isn’t a standalone subscription:

mixed-port: 7890
mode: rule
log-level: info

mixed-port: 7890 means the same listening port accepts both HTTP and SOCKS proxy connections. If the active configuration uses this port, enter 127.0.0.1:7890 when setting an app’s proxy manually. Use the value shown in the client’s runtime settings; some clients override ports specified in the subscription. The control API port is not the traffic proxy port and should not be entered in browser proxy settings.

3. Does the proxy group have a working exit?

Choose a specific proxy in a group, then run a latency test. If the result is timeout, first check the test address and proxy connectivity. A result such as 120 ms only means that test request completed; it doesn’t guarantee that every website is accessible. Open the target site and check the connection log for the rule, proxy group, and final exit to see how the request was routed.

4. Do traffic routing and DNS settings agree?

In rule mode, rules determine the exit in order. If a destination matches DIRECT, traffic may connect directly even when a proxy is selected. TUN mode captures traffic that meets its routing conditions, but requires the right permissions and route settings; it can’t make an incompatible subscription usable. If DNS fails, check the resolution logs, then inspect the configuration’s DNS upstreams, Fake-IP settings, and filters. Don’t start by changing several parameters at random.

  • No configuration in the list: check the download result, subscription URL, and format.
  • Configuration appears, but expected proxy groups are missing: check whether you imported a node snippet or are still using an older configuration.
  • Proxy group has nodes, but connections time out: check proxy status, protocol compatibility, and basic network connectivity.
  • Tests succeed, but the browser behaves the same: check the system proxy, TUN routing, browser-specific proxy settings, and connection logs.

Keep updates working and retain a fallback

After the first import works, configure automatic updates. Subscription refreshes and a provider’s interval are separate mechanisms: the client fetches the entire remote configuration, while the core refreshes remote resources referenced by the configuration. Don’t treat a provider interval in seconds as the client’s subscription refresh interval; the client may use minutes or hours.

You can start with a 24-hour interval for the full subscription and adjust it to match your provider’s recommendations. Mobile background refresh is also limited by the operating system’s battery-saving policies, so a schedule doesn’t guarantee that the app will run on time after you close it. Keep a working configuration as a backup and, after updating, check proxy groups, rules, and the active exit. If you need to reimport or switch clients, follow the subscription setup steps in the user guide, then test the connection again.