Getting Started 8 min read

Clash Subscription Update Failing: Expired Links, Network Issues & Auto-Update Intervals

When a subscription fetch errors out or the node list never changes, work through link validity, the network path used during the update, and User-Agent compatibility — plus how to set a sane auto-update interval in each client.

Three symptoms of a failed subscription update — identify yours first

"Subscription update failed" shows up as all sorts of different error text across clients, but it really boils down to three underlying states. Figure out which one you're dealing with before you start troubleshooting — it saves most of the guesswork.

  1. The update errors out immediately: the client pops up something like "download failed," "parse failed," or "connection timed out," usually right when you click "Update subscription" or when a background auto-update fires.
  2. The update reports success, but the node list doesn't change: the client says the update completed and the timestamp refreshes, but the proxy group's node count and names are identical to what they were days ago.
  3. The update works, but every node is unusable afterward: the subscription itself fetches fine, but the node information in the config is entirely dead, and every connection test times out.

These three cases have completely different root causes: the first is usually a link or network problem; the second is often the subscription provider not actually pushing fresh content, or the client caching a stale result; the third is usually the nodes themselves expiring or being pulled, which isn't really an "update" problem at all. This article focuses on the first two — for the third, contact your subscription provider directly to check your plan status.

Troubleshooting path 1: is the subscription link itself still valid

An expired subscription link is the most common cause and the one most often overlooked. Plenty of people instinctively suspect a client bug, but in practice a stale link, a reset link, or extra characters picked up during copying account for more cases.

Check that the link is complete and clean

When you copy a subscription link out of a chat app, a webpage, or an email, it's easy to pick up a stray leading/trailing space or line break, or have the link auto-converted into a hyperlink style that tacks on an extra character at the end. Paste the link into a plain text editor first and eyeball it: does it start with http:// or https://, does it end in a complete path or parameter, and is there no truncated ellipsis in the middle.

Test the link on its own in a browser or terminal

Paste the subscription link straight into a browser address bar. If it downloads or shows a block of Base64-encoded text or YAML config content, the link itself is alive. If the browser says "can't reach this site" or returns a 404, the problem is almost certainly the link, not the client. If you're comfortable with the terminal, you can verify it faster this way:

curl -I "your-subscription-link"

Focus on the status line in the response: 200 means it's fine; 401/403 usually means the subscription expired or needs an auth parameter; 404/410 means the link no longer exists.

Check whether there's an update count or rate limit

Many subscription providers rate-limit how often a link can be pulled — for example, once per hour — and return a temporary error or empty content once you exceed it. If you've manually clicked "Update subscription" several times in a short window and also set a very short auto-update interval, you can easily trip this kind of limit, and it looks exactly like a "dead link." This usually clears up on its own after a wait — there's no need to request a new link.

Tip

If the subscription won't pull after switching devices or reinstalling the client, first check whether you copied the wrong sharing format for the platform (for example, treating a QR code's payload as a plain text link) — this accounts for a surprisingly large share of "dead link" reports.

Troubleshooting path 2: is the network path clear at the moment of the update

A subscription update is, at its core, the client making a network request to a server. That process is directly affected by the current network environment, and once proxy mode is on, the actual request path can be more complicated than it looks.

How the system proxy relates to update requests

Most clients try to connect directly to the subscription server when updating, bypassing the currently active proxy node — this avoids the circular dependency of "using a possibly-dead node to fetch a fresh config." But if the system proxy or TUN mode on your machine is configured aggressively enough to force the client's own network requests through an unstable node too, the update request can time out as a result. Try temporarily disabling the system proxy, or switching to a direct connection, and testing the update again. If that works, the problem is in the current proxy chain, not the subscription link itself.

DNS resolution issues

If the subscription server's domain is being poisoned by local DNS or resolving to the wrong address, the connection will fail even when the link is completely correct. Try a different device, or switch to a trusted DNS server and test the same link again. If it works on a different network, the problem is almost certainly at the DNS layer.

Firewall or security software blocking

Some security software intercepts or delays network requests from unrecognized programs, especially the first time a freshly installed client tries to go online. If the update stays stuck on "connecting" for a long time with no clear error, check your firewall rules and your security software's network permission settings to confirm the client's process is allowed to access the network.

Restrictions on corporate networks or public Wi-Fi

Some corporate networks or public Wi-Fi networks restrict specific ports or protocols. Even if your regular browsing works fine, the port used by the subscription server might be blocked on its own. Switching to a phone's mobile hotspot is the fastest way to test this — if the subscription updates immediately on a different network, the current network's restrictions are almost certainly the cause, not the subscription or the client.

Troubleshooting path 3: hidden failures caused by User-Agent compatibility

This factor is easy to overlook but can have a real impact. When a subscription server receives an update request, it reads the User-Agent header to figure out which client is making the request, and uses that to decide what config format to return, which rule template to enable, or even whether to allow the update at all.

Why User-Agent can cause "looks successful but content never changes"

Some subscription services return different versions of the config depending on the User-Agent. If the User-Agent your client sends doesn't match what the server expects, the server might return a cached, stale copy — or a stripped-down config — instead of an error. The client sees a "200 success" response and reports the update as complete, but the node list was never really refreshed. This is a common cause of the second failure pattern described above.

How to confirm whether User-Agent is the issue

Most clients built on the Clash Meta (mihomo) core let you customize the User-Agent in subscription settings, or toggle between "use the core's default identifier" and "use the client's own identifier." If you suspect this is the cause, try switching the User-Agent setting and re-fetching the subscription, then compare whether the node count changes. You can also manually set a User-Agent from the terminal to test whether the same link returns different content:

curl -A "clash-verge/2.0" "your-subscription-link" -o test1.yaml
curl -A "Mozilla/5.0" "your-subscription-link" -o test2.yaml

After both downloads finish, compare the file contents and sizes. If they're noticeably different, the subscription service is indeed returning different content based on User-Agent, and you can pick whichever identifier works better in the client going forward.

Note

Subscription providers handle User-Agent very differently — some don't distinguish at all, others use it to control traffic billing. If your node list never seems to change, it's worth checking User-Agent after network troubleshooting but before requesting a brand-new link.

A sensible auto-update interval for each client

Set the auto-update interval too short and you risk tripping the provider's rate limit, indirectly causing the "false dead link" symptom described above. Set it too long and node information won't refresh promptly, especially when a provider swaps nodes or adjusts rules on short notice. A few general guidelines:

Some clients also support conditions like "auto-update only on Wi-Fi" or "only while charging." Mobile users who care about data usage or battery life can enable these to cut down on unnecessary background requests.

A troubleshooting order you can follow step by step

Turning the three paths above into a simple-to-complex checklist usually gets you to the root cause within a few minutes.

  1. Confirm the subscription link has no stray spaces or truncation, and test it by opening it in a browser.
  2. Disable the system proxy or switch to a direct connection, and try updating again.
  3. Switch to a different network (like a phone hotspot) and test again.
  4. Check the client's auto-update interval setting to rule out a rate limit.
  5. Try switching the User-Agent setting and compare the node count before and after.
  6. If none of the above turns anything up, contact your subscription provider to confirm the link and plan status.
Warning

If you've confirmed the link, network, and User-Agent are all fine but the node list still never changes, it's very likely that the provider's content genuinely hasn't been updated on their end. That's not a client-side issue — report it directly to your subscription provider.

Make sure your client version is current first

Some subscription parsing and User-Agent compatibility issues have already been fixed in newer client releases — check your current version number before troubleshooting further.

Download Clash