When a subscription update fails, first determine whether the client can’t download the response, can’t parse it, or imports nodes that won’t connect. This guide is for v2rayN and v2rayNG users seeing timeouts, subscription parsing errors, or an empty node list after an update. Follow the checks for the URL, response, proxy route, system time, and protocol compatibility—instead of starting with a reinstall—and keep any working nodes intact.
Find the failure point: download, parsing, or connection
A successful subscription update doesn’t mean the nodes can connect. A subscription URL retrieves a set of server configurations: the client downloads the response, identifies its format, and imports the nodes. Only then does the core attempt a connection to a selected node. Check each step separately to avoid switching cores when an HTTP request is failing or repeatedly copying the same URL when the protocol is incompatible.
| What you see | Check first | What it indicates |
|---|---|---|
| Timeout or connection refused | Network route and proxy status | The full subscription response probably wasn’t received |
| 401、403、404 | Access token, permissions, and URL | The server responded, but the requested content wasn’t returned |
| Parsing failed or no nodes were imported | Response body and subscription format | The response may be a web page or an unsupported configuration format |
| Nodes appear but won’t connect | Node settings, core, and server status | The subscription may have downloaded and imported successfully |
Note when the error occurred, how you updated, and the name of the current group. Record the node count too: going from 12 nodes to none is different from keeping the same nodes but failing to connect. Don’t delete every group right away. Keeping working nodes lets you test whether updating through a proxy helps.
Check the subscription URL: token, permissions, and response status
Check that the URL is complete before reinstalling the client. Copy the client subscription URL from your provider’s account page—not the account homepage, login page, or a node’s share link. URLs starting with vmess:// or vless:// are usually individual node share links, not HTTP subscription URLs for periodically retrieving a set of configurations.
- Check for leading or trailing spaces, line breaks, quotation marks, or non-ASCII punctuation. Keep the full query string; don’t remove the token after the question mark.
- Check whether your account or data allowance has expired and whether the subscription token was reset. If you generate a new token, you’ll usually need to replace the old URL in the client.
- Make sure you copied the subscription format specified by the provider for your client. A configuration file that opens in a browser may not be importable by your client.
- If the page redirects to a login, CAPTCHA, or access verification screen, ask the provider for a subscription endpoint that clients can request directly. Don’t treat a verification page as a node list.
HTTP 200 means the request received a successful response; it doesn’t guarantee the body contains subscription data. The server could return an error page instead. A 401 often relates to credentials, a 403 to permissions or access policies, and a 404 may mean the path has changed. Check the response body and the provider’s guidance; don’t assume an account has expired based on the status code alone.
Parsing failed: check Base64 and the actual response body
When parsing fails, first check what the client received—don’t try to repair the encoding by hand. Common subscriptions encode multiple node share links as Base64, while some services return other formats supported by the client. An HTML login page, JSON error, or YAML configuration for another app may download successfully but still be unreadable as a subscription by your client.
- Body starts with HTML: If you see
<!DOCTYPE html>or<html>, you probably received a web page. Check for a login redirect, access verification, or an error page. - No node links after decoding locally: If the result is an error or account notice, check your subscription permissions with the provider. Changing routing rules won’t fix it.
- Only some entries are supported: If some nodes import and others are skipped, note the skipped protocol types and check whether the client can parse them. Don’t assume the entire URL is invalid.
- Content appears truncated: Fetch the original response again and check whether copying dropped the end or the download was interrupted. Don’t substitute text forwarded through a messaging app for the original subscription content.
A Base64 string without a trailing = isn’t necessarily corrupted; some formats omit padding. Line breaks don’t necessarily cause parsing errors either. Check whether the original response is complete, which encoding it uses, and whether the client supports that subscription format. Repeatedly encoding, decoding, and pasting the content by hand can turn a valid subscription into a double-encoded one.
Error: Invalid length for a Base-64 char array or string.
Cause and fix: This error can occur when .NET parses Base64. A truncated response or non-subscription content passed to the decoder may trigger it. Check the original response and its format, then copy the URL again; don’t just append a character to the string.
Error: Response status code does not indicate success: 403 (Forbidden).
Cause and fix: The server rejected the HTTP request; this isn’t a node protocol parsing issue. Check the access token and server restrictions, then inspect the Base64 only after receiving a valid response.
Subscription update times out: compare direct and proxy routes to rule out a loop
Updating through a proxy only works if the current proxy is available. If the node you’re using is down and subscription requests must go through it, you can end up in a dependency loop: you need a proxy to update, but need an update to restore the proxy. This doesn’t necessarily mean network packets are literally looping. The fix is to separate the dependencies and test direct access and a known-working proxy route independently.
-
Verify the current node
Select an existing node, confirm the client core is running, and check whether it can complete a regular HTTPS request. Seeing “Connected” or a tray icon doesn’t prove the proxy is working.
-
Test an update without a proxy
In v2rayN, open the “Subscription Group” menu and select “Update all subscriptions (without proxy)”. If your version can update the current group only, test the affected group first to avoid unrelated log entries.
-
Test an update through a proxy
Keep a verified working node connected, then choose “Subscription Group” → “Update all subscriptions (through proxy)”. The wording and parentheses may vary by version; distinguish the options by whether they use a proxy.
-
Check the Android settings
In v2rayNG, open the top-right menu on the main screen and select “Subscription Group Settings” to check the URL. Return to the main screen and select “Update Subscription”. If your version has a proxy option for subscription updates under Settings, test with it both off and on. Don’t assume update requests go through the proxy just because the VPN is connected.
-
Check the local endpoint
If the log shows a connection to
127.0.0.1:10808, check that the actual local listening port matches. Here, 10808 is just an example; use the client’s current inbound settings. Don’t enter a local proxy port as the subscription service URL.
If direct updates work but proxy updates fail, check the current node, local listener, and proxy settings. If proxy updates work but direct ones fail, the subscription endpoint needs a different route on your current network. If both fail, test another network and check the server status. A genuine loop can also happen when local proxies forward traffic to each other or TUN routing doesn’t exclude the proxy process. Stop repeated traffic capture before testing again.
Certificate and DNS errors: sync the clock, then check name resolution
Don’t work around certificate errors by disabling verification. HTTPS checks certificate validity dates, so an incorrect system date can make a valid certificate appear not yet valid or expired. But certificate verification failures can also result from an incomplete server certificate chain, a network login page, or local HTTPS inspection software. Check the time and network environment before drawing conclusions.
Error: certificate has expired
Cause and fix: An expired certificate or an incorrect device clock can trigger this error. Sync the system date and time first. If multiple devices with correct clocks still show the error, the provider needs to fix the certificate.
Error: No such host is known.
Cause and fix: This host resolution error can occur on Windows. Check the subscription domain spelling and whether DNS is working on your current network. Try another network; switching node protocols alone won’t fix it.
Error: Connection refused
Cause and fix: The destination port isn’t accepting connections, or the connection was explicitly rejected. If it’s a local proxy port, check that the core is running. If it’s the subscription server, verify the server port and status.
- Windows: Go to “Settings” → “Time & language” → “Date & time”, turn on automatic time, and sync the clock. Check the time zone as well.
- Android: Open system “Settings”, search for “Date & time”, and turn on automatic time. The exact location varies by device.
- Public Wi-Fi: Sign in to the network before requesting the subscription. A hotel or office login page can be mistaken for subscription content.
- DNS: First check that ordinary domains resolve, then test the subscription domain. Browsers may use their own encrypted DNS, so a working browser doesn’t guarantee the client’s DNS route is working.
Nodes imported? Check client and core compatibility next
Core incompatibility usually means nodes were imported but won’t start or connect; it shouldn’t be the default explanation for every subscription failure. v2rayN is a desktop client. v2rayNG is an Android client that uses the Xray core, while v2flyNG uses the V2Fly core. The client manages configurations; the core handles connections. Both need to support the features in use.
| Symptom | Where to check | What to do |
|---|---|---|
| Subscription HTTP request failed | Client update log | Fix the URL and network first; don’t switch cores yet |
| A node share format was skipped | Client version and import results | Update the client and check the provider’s format requirements |
| VLESS node uses REALITY parameters | Support in the selected core and parameter set | Use a core that supports this combination; keep parameters such as the public key |
| VMess node won’t connect | System time, node configuration, and server logs | Sync the clock and check server requirements; don’t change protocol fields at random |
VLESS and VMess are protocol names, not interchangeable subscription encodings. Connection parameters such as REALITY aren’t filled in automatically just by switching a protocol dropdown to VLESS. Note the client version, then download the version for your platform from this site’s download page. Back up groups and settings before updating. Afterward, test one node first; don’t change the transport, TLS, and routing rules all at once.
If the client reports an unknown configuration field or the core fails to start, save the first meaningful error and the surrounding log lines. If only the remote handshake fails, also check the server address, port, credentials, and server status. The provider generates the subscription content. If required parameters are missing, ask for a valid configuration rather than copying parameters from another node.
Common questions: preserve evidence and narrow down the cause
Why does the subscription open in a browser but fail in the client?
First check whether the browser shows node text or a login page, then compare the proxy routes used by the browser and client. The browser may have login credentials that the client lacks, or it may use a proxy while the client connects directly. Test both update methods; a page opening in the browser doesn’t prove the format is valid.
The update removed all my nodes. Should I reinstall?
Check the selected group filter, the imported node count in the log, and the response format first. Don’t delete the old group right away. In v2rayN, open “Subscription Group” → “Subscription Group Settings”; in v2rayNG, open “Subscription Group Settings”. Check the target URL and make sure you haven’t selected a different, empty group.
I switched nodes, but it still times out. Is the subscription broken?
First confirm that the update request is actually set to go through a proxy. If the client still connects directly, changing nodes won’t change the request route. If the proxy itself is unavailable, switching to another broken node won’t help either. Record the results of direct and proxy updates, then ask the provider about the subscription service status.
What information should I include when asking for help?
Include the client name and version, OS version, time of failure, update method, HTTP status or first error, and whether old nodes still work. Describe the subscription URL’s domain and format, but hide the token. Redact passwords, identifiers, and full share links from logs too.
Download a client for your platform
Choose a Windows, macOS, Android, or Linux client. After installation, follow the setup guide to add a subscription, then test updates and node connections.