Subscription update failed: distinguish download, parsing, and node connection issues

When FlClash updates a subscription, it first accesses the subscription URL, retrieves the config, then parses and saves it. Connecting to nodes is a separate process. So a “subscription update failed” error and a “node test timed out” error need to be handled separately: working nodes in an old config don’t mean the subscription URL is still valid, and a successful update doesn’t mean every node in the config is reachable.

Before troubleshooting, keep your current working config. Note when the failure occurred, the exact error message, and which network you were using. Don’t delete the old subscription or change DNS, TUN, and the rules mode all at once. Change one thing at a time so you can tell what made a difference.

Error or symptom Check first Next step
401、403 Token, account permissions, or server access restrictions Sign in to the subscription provider and copy the client-specific URL again
404、410 Legacy endpoint, URL path, or revoked address Check whether the provider has changed its subscription endpoint
429 Request rate limit Stop refreshing repeatedly and wait as directed by the server
timeout or connection timed out Network route, proxy egress, or server response Try a different network route, then update once manually
YAML or parsing failed Response body, subscription format, or core support Make sure the response is a Clash / mihomo config

An error code is a clue, not a definitive diagnosis. For example, a 403 may indicate expired subscription access or a website’s access protection. A 200 only means the HTTP request received a response; the response could still be a login page.

Where to refresh manually: check the result on the config entry

A common path is “Profiles” → find the relevant remote config → click its refresh icon, or open the entry’s menu and select “Update.” Depending on the platform and release, the action may be on the right side of the card or in a more menu. Update the specific subscription entry rather than simply toggling the connection switch on the home screen.

  1. Check the config type. Only remote configs added via a URL have a subscription address that can be requested again. For a config imported from a local file, import the file again or add a remote URL separately.
  2. Update one entry at a time. If you have several subscriptions, update the failing one on its own first. This keeps errors from getting mixed together by bulk requests.
  3. Wait for the request to finish. Check the success message, error details, and update time. Repeated clicks won’t fix an invalid URL and may trigger rate limits.
  4. Check which config is selected. If you updated config A but config B is still selected, the proxy groups and node list may not change.

Invalid URL or access issue: get the correct subscription link

Know the difference between subscription URLs, account pages, and share links

FlClash needs a URL that returns config content directly. An account dashboard URL, a download page that requires sign-in, and a regular node share link are not complete Clash subscriptions. Go to the provider’s subscription section and choose an endpoint labeled Clash, Clash Meta, or mihomo. If the provider offers client-specific options, choose one that explicitly supports FlClash.

After copying the URL, check that your messaging app hasn’t truncated it and that no spaces, line breaks, or non-ASCII punctuation were added at the end. Keep tokens in query parameters unchanged. Don’t remove parameters that look unnecessary or repeatedly decode and re-encode special characters.

Use the response status to troubleshoot access and rate limits

  • 401 or 403: Check your account status, subscription permissions, and whether the token was reset. If a browser shows a CAPTCHA or access verification page, the client usually can’t complete the interactive web check. Ask the provider for an endpoint that works with client apps.
  • 404 or 410: Check whether the old subscription endpoint has moved. Copy the URL again from your account dashboard rather than trying to change the domain in the old URL.
  • 429: Pause manual updates and frequent requests from other devices. If the response includes Retry-After, wait for the specified time before trying again.
  • 500, 502, or 503: The subscription service or an upstream server may be temporarily unavailable. Keep your old config and try again later. Contact the provider if the error persists.

Timeouts and certificate errors: check the actual network route

Subscription requests don’t necessarily use the same route as your browser. The browser may use the system proxy, while the client may have its own policy for downloading configs. Enabling TUN can also change the traffic route. So opening the subscription URL in a browser only proves that one route works; it doesn’t prove FlClash can reach it when updating.

Narrow it down with two comparisons

  1. Compare networks: Note the error on Wi-Fi, then switch to a mobile hotspot or another trusted network and manually update the same subscription. If it fails only on one network, check that network’s DNS, captive portal, or access restrictions first.
  2. Compare egress routes: Keep your old config. If your version offers a proxy option for subscription updates, test both a direct connection and an existing working proxy. If it doesn’t, don’t assume that switching to “Global” mode will necessarily change the route used to download subscriptions.

For errors such as no such host, first check the domain spelling and DNS resolution. For connection refused, check whether the request is using a local proxy port that is no longer listening. If the error points to 127.0.0.1:7890, 7890 is simply the port used by that request. Check it against your client’s actual settings; don’t assume it’s the default for every installation.

For certificate errors, first check the system date, time zone, and automatic time sync. certificate has expired can mean the server certificate has expired or the device clock is wrong. If the certificate domain doesn’t match, check the subscription domain and redirect target. Don’t hide the problem by disabling certificate verification; subscription tokens need HTTPS protection.

If the URL you’re importing for the first time is only accessible through a proxy and the client doesn’t yet have a working config, ask the provider for a subscription endpoint that works without a proxy or a way to import a local config. Repeatedly refreshing an unreachable URL won’t establish the initial connection.

Config parsing failed: make sure the response is a Clash / mihomo config

Clash clients typically use YAML configs. A JSON config for another client or a list of encoded node URIs won’t become a usable Clash config just by changing the file extension. FlClash uses the mihomo core, which differs from original Clash in feature support, so the subscription needs to match the client’s capabilities.

Check the content, not just the file extension

  • If the response starts with <!DOCTYPE html> or a login form: You’ve received a web page. Check for sign-in requirements, redirects, or access verification first.
  • If the response is mostly links such as vmess:// or ss://: You may have selected a node-list subscription. Use the provider’s Clash / mihomo output instead.
  • If the error reports a line and column: Check that position and the line above it for indentation, quotes, and colons. YAML uses spaces for indentation; don’t use tabs.
  • If the error says a proxy type or field isn’t supported: Check the config requirements against your client and core versions, then update the client or choose a compatible format.

The example below shows only YAML’s hierarchy and rules structure. It contains no nodes and isn’t a complete subscription you can use for proxying. A remote config may use proxies or reference node sources with proxy-providers; the absence of any single field doesn’t by itself mean the file is invalid.

proxy-groups:
  - name: Outbound selection
    type: select
    proxies:
      - DIRECT

rules:
  - MATCH,Outbound selection

If the config itself downloads successfully but a proxy-providers or rule-providers resource fails to update, check that resource’s URL and error details. This is a problem downloading a resource within the config, which is separate from being unable to download the main subscription.

Some services return different formats based on the request’s User-Agent. The content downloaded by a browser may differ from what the client receives. In that case, ask the provider which endpoint works with FlClash instead of changing the request identifier at random or sharing a private subscription with an unknown online conversion service.

Auto-update interval: set it in the remote config editor

Complete a manual update first, then configure auto-update. A common path is “Profiles” → the relevant remote config’s more menu → “Edit” → find the auto-update switch and interval. Field names, available units, and menu locations vary by release, so check your installed version. Local file configs typically don’t offer the same subscription update options.

Check the unit before entering a value

The auto-update interval is the time between scheduled updates. It isn’t a request timeout or node test interval. For example, 1 hour is 60 minutes or 3,600 seconds; 24 hours is 1,440 minutes or 86,400 seconds. If the interface uses minutes, enter 60 for hourly updates—don’t enter seconds in a minutes field.

Use case Suggested interval Why
Config and nodes are stable 24 hours Reduce repeat requests; update manually when needed
Provider changes nodes frequently 6 hours Balance timely updates with request frequency
Provider requires a shorter interval Follow the provider’s guidance Stay within the API’s rate limits

The intervals in this table are recommendations, not FlClash defaults. Don’t assume that setting the interval to 0 disables auto-update; different versions may handle zero differently. To turn off auto-update, use the explicit toggle if available, then reopen the editor after saving to confirm the setting was retained.

What to check if auto-update doesn’t run on schedule

Auto-update generally depends on the client running and the operating system’s scheduler. Exiting the desktop app, putting the computer to sleep, or restricting background activity on a phone can delay updates. On Android, check battery optimization and background data permissions in particular. Understand the battery impact before making changes; you don’t need to disable every background restriction at once.

After saving the settings, note a successful update time, leave the client running, and check again after the selected interval. If the device slept or lost its network connection in the meantime, manually update first to confirm the URL still works. Auto-update can’t fix expired tokens, incompatible formats, or server rate limits, and it isn’t a system timer that runs to the exact second.

What to check after restoring updates—and what to include in a report

  1. Confirm the subscription request succeeded. Check the success message and update time for the relevant config, not just the connection status on the home screen.
  2. Confirm the config is selected. Check that the proxy groups, rules, and node sources belong to the config you just updated.
  3. Test node access separately. If the update succeeded but access still fails, check the nodes, rule matches, system proxy, and TUN. Don’t keep replacing the subscription URL.
  4. Finally, set a reasonable update interval. Avoid having multiple clients request the same subscription at very short intervals.

If the issue persists, gather your operating system, FlClash version, core version, time of failure, network type, and redacted error message. Also note whether switching networks helped, whether the old config still works, and whether the failure affects the main subscription or an internal resource. These details are usually more useful than a screenshot that only says “Update failed.”

For help adding a remote config for the first time, follow the subscription import guide. If you’re unsure how the subscription URL relates to the client, see the subscription source guide.