No nodes after importing subscriptions Complete troubleshooting process and root cause analysis
"Subscription imported successfully" and "there are really nodes in the node list" are two different things. This article has traffic according to Subscription link → Network reachable → Content format → Client parsing → Log clues 's sequential troubleshooting, covering Windows / macOS / Linux / Android platforms.
- The client's "Subscription" page shows that the subscription has been imported
- "Agent" page node group only has DIRECT / REJECT or completely empty
- Click "Update Subscription" and no new node appears
- All three are met, which is the problem this article will solve
1 minute to locate the source of the fault
Do the following 4 steps in order to distinguish whether there is a problem with the subscription itself, a network problem, or a client parsing problem.
-
1Paste the subscription link in the browser and see what is returned
Paste the subscription link (full URL) into the browser address bar to access it, and observe the returned content:
- See a large piece of YAML text (including proxies:, proxy-groups: and other fields): The subscription itself is normal, the problem is in client parsing or UA verification, skip to step 3.
- See a string of seemingly garbled characters Base64 characters: The subscription is in V2Ray format and cannot be used directly by the Clash client. See "Reason #4" below.
- Page cannot be opened / timeout / DNS error: The subscriber is unreachable, see "Reason #2" below.
- Return to the welcome page/customer service information/"Package has expired" and other text: The subscription has expired or is speed-limited, see "Reason #1" below.
-
2Try to use curl to simulate Clash's User-Agent
If what the browser sees is not YAML, but you confirm it is a Clash subscription, it may be that the airport mandates UA. Terminal execution:
curl -A "clash-verge" "Your subscription link" | head -50If YAML is returned this time, it means UA verification, see "Reason #6" below.
-
3Look at the client log
Open the client's "Log" page (some clients are in "Settings → Log"), search for keywords:
error/failed— Show the reason directlyyaml/parse— Parse Errortimeout— Network Timeout
-
4Use Tool page Verify subscription content
If it is Base64 content, you can decode it on the tool page to see if it contains V2Ray protocol links such as vmess / ss / trojan, etc. to confirm that it is V2Ray format rather than Clash format.
6 common causes + solutions
Arrange from high to low probability of occurrence. The first 3 can cover most situations.
The most common reasons. Airports usually replace the subscription response with a welcome page or plain text prompt when the subscription expires or the data is used up. The client naturally gets 0 nodes after parsing.
The subscriber domain or IP is blocked by your current network operator. The symptoms include browser timeout when opening the subscription link, DNS_PROBE_FINISHED_NXDOMAIN, ERR_CONNECTION_RESET, etc.
- Switching DNS to Cloudflare (1.1.1.1) or Google (8.8.8.8)
- Use the backup subscription link provided by the airport (most airports provide 2~3 domain name)
- Switch network environment (home broadband ↔ mobile hotspot) verification
- Enable "Update subscription through the current proxy" in the client subscription settings (requires an available node first)
Airports usually provide multiple subscription links in the user panel: Clash, Clash Meta, V2Ray, Shadowrocket, Quantumult, etc. If you copy the V2Ray link to Clash Verge Rev, it will not be recognized after importing.
It takes a long time to open the subscription in the browser dm1lc3M6Ly8... Such unreadable characters. This is a V2Ray universal subscription, which is essentially a Base64-encoded multi-line vmess:// / ss:// / trojan:// link.
The airport template is maintained incorrectly (wrong indentation, misspelled fields), or the configuration has been manually edited locally. When the Clash kernel encounters a YAML parsing error, it will skip the entire section, but the client may not report an error and only display "Import successful".
- Check the "Log" page of the client to see if there is one
yaml parse errorClass information - Paste the subscription content into any YAML Linter tool (such as yamllint.com) to verify the syntax
- Contact airport customer service to feedback template issues
Some airports use UA to distinguish clients: browser access returns the welcome page, User-Agent: clash Return YAML, User-Agent: v2ray Return Base64. If the UA sent by the client does not match the airport's expectations, it will get an error format.
clash-verge/v2.5.2ClashMetaForAndroidclash/Clash
Additional troubleshooting points by platform
- • Defender may temporarily intercept subscription requests
- • Check
hostsWhether the file blocks the airport domain name - • Configuration directory:
%APPDATA%\io.github.clash-verge-rev.clash-verge\
- • Check whether "System Settings → Network → DNS" has been changed
- • Force subscription refresh after Wi-Fi switch
- • Configuration directory:
~/Library/Application Support/io.github.clash-verge-rev.clash-verge/
- • Terminal
curl -v "Subscription links"See the complete HTTP interaction - • Check
/etc/resolv.confand systemd-resolved - • Configuration directory:
~/.config/clash-verge/
- • Retry after switching between 4G/5G and Wi-Fi
- • Some airports have restrictions on mobile UA and need to be specified manually
- • The content returned by different browsers (Chrome / system browser) may be different when accessing the subscription
Before asking airport customer service/community for help
Organizing information according to the following template can greatly improve the efficiency of resolution and avoid pulling back and forth.
**Client**:Clash Verge Rev v2.5.2
**System**:Windows 11 23H2 / macOS 14.5 / ...
**Subscription type**:Airport / Self-build (Indicate the agreement as follows: Clash Meta)
**Symptom**:
- Browser opens subscription links and sees ___
- curl -A "clash-verge" Testing. Returning. ___
- Client"Log"It's the key to getting wrong.:___
- The way you tried.:___
- The subscription link usually contains token,Don't post it as is, use
https://xxx.com/api/v1/client/subscribe?token=*****instead of - Blur the node name (may include user name/package name) before taking a screenshot of the log
- Do not post the entire YAML to the public forum, including the node IP and password
- Only post the key error lines + context 1~2 lines