A subscription update has three stages: the network request, reading the response, and parsing the nodes. This guide is for v2rayN, v2rayNG, and v2flyNG users seeing timeouts, parse errors, or zero nodes. Keep your existing configuration, check the URL and request route, then verify the response format and client support. This helps distinguish subscription problems from connection issues with individual nodes.
Which Stage of the Subscription Update Failed?
A subscription URL lets the client fetch a set of server configurations. It is neither a node itself nor a website login address. During an update, the client requests the URL, retrieves text, and converts the text into local configuration entries. A failure at any stage may appear as “update failed,” but each requires a different fix.
If the log shows a connection timeout, check the network route first. If the server returns an access-denied response, check the account and URL. If the response was received but parsing failed, inspect its format. If the update succeeds but nodes cannot connect, check the server address, port, protocol, and transport settings instead of repeatedly changing the subscription URL.
- Update timed out: The request did not finish in time, so the subscription content has not yet been verified.
- Parse failed: The client could not find importable nodes in the response. It may have received a webpage or an unsupported configuration format.
- Zero nodes: The response may contain an empty list, the parser may have skipped every entry, or the interface may be showing a different group.
Keep Your Existing Nodes Before Checking the Subscription URL
Don't start by deleting all your servers. Some clients replace entries in the relevant group during an update, and behavior after a failed update varies by version. Back up your configuration first. If you still have a working node, keep it for testing updates through a proxy. Backups may contain subscription credentials and node authentication details, so store them only on a trusted device.
-
Record the Current State
Note the client version, subscription group name, node count before updating, and time of the error. In desktop v2rayN, check the version under Help → About. Menu labels may vary by version, so use the names shown in your client.
-
Check the URL Field
In v2rayN, open Subscription Group → Subscription Group Settings and edit the URL for the affected group. Make sure you pasted the complete address without leading or trailing spaces, line breaks, curly quotes, or explanatory text added by a messaging app.
-
Get a Fresh Subscription URL
Sign in to your provider's account page and check whether the service has expired or the subscription was reset, then copy the current URL. A reset usually invalidates the old address. Replace it on both your computer and Android device.
-
Update One Group
Update only the affected group first; don't update every group at once. If your version only offers an update-all option, use the group name in the logs to identify the result. Don't mistake a success message for another group as proof that the affected subscription is working again.
Update Directly or Through a Proxy
“The subscription URL opens in a browser” and “the client can update” are not the same test. A browser may use a system proxy, cached content, or a logged-in session, while the client may use a separate download route. Conversely, enabling the system proxy does not guarantee subscription requests go through it. Choose the update method explicitly.
| Current situation | Test first | What to look for |
|---|---|---|
| The subscription URL is reachable over this device's regular network | Update without a proxy | Rule out problems with the current proxy node affecting the download |
| Direct update times out, but a working node is available | Update through a proxy | Check whether the request succeeds through an existing node |
| All existing nodes are down | Restore a working network route first | Don't rely on a failed node to fetch new ones |
| Both routes return access denied | Check the account and subscription permissions | Simply switching proxies usually won't resolve an authorization issue |
The v2rayN Subscription Group menu usually offers Update All Subscriptions (without proxy) and Update All Subscriptions (through proxy). The wording and options for updating an individual group may vary by version. Before testing a proxy update, select a working node and start the core, then run the corresponding command. In v2rayNG and v2flyNG, check the subscription settings or update menu to see whether your version supports proxy updates. Don't assume the desktop menu labels apply.
- Change one thing at a time: test a direct update, then a proxy update, and record each result.
- If you changed the local proxy port, use the value currently shown in the client. Update it if the subscription route still points to the old port.
- Switching between your home network and a mobile hotspot can reveal network-specific issues, but it won't make an expired subscription token valid again.
HTTP Status Codes and Common Errors
The numbers below are HTTP status codes, not client version numbers. Exact log wording varies by operating system, language, and request library. Look for the status code, exception type, and failure stage; the wording does not have to match these examples character for character.
Error: Connection timed out
Cause: The connection did not complete in time. Possible causes include routing, server status, or the current proxy route. Fix: Test both a direct update and an update through a working node. If only one network fails, check its DNS and connection restrictions.
Error: 401 Unauthorized
Cause: The server did not accept the authentication information in the request. Common causes include an expired token or an incomplete URL. Fix: Copy the subscription URL again from your account page and confirm the service is active. Repeatedly restarting the core won't help.
Error: 403 Forbidden
Cause: The server rejected the request, possibly because of account permissions, source restrictions, or access protection. Fix: Check your provider's restrictions and submit a support ticket with the status code and time of the error. Don't assume this status code means the account has expired.
Error: 404 Not Found
Cause: The requested path does not exist. The old endpoint may have been retired, the path may be missing, or the URL may have been truncated when copied. Fix: Get the complete subscription URL again, preserving its path and query parameters. Don't remove parts that only look unnecessary.
Error: The SSL connection could not be established
Cause: The HTTPS connection could not be established. Check the underlying exception; common causes include the system clock, trusted certificates, and server-side TLS settings. Fix: Correct the system time and update the system's certificate environment first. If the certificate issue persists, contact the provider. Don't disable certificate verification as a permanent fix.
For 429 Too Many Requests, stop retrying and wait for the interval specified by the server. For 500 or 503, check the server status. Increasing the timeout may help a slow request finish, but it cannot fix an invalid URL, an authorization denial, or unparseable content.
Request Succeeds but Parsing Fails: Check the Response Format
An HTTP 200 response means the request succeeded, not that the body contains a usable subscription. The server may return a login page, access notice, maintenance message, or even an empty string. If the browser shows “content,” first check whether it's node data or a webpage. Don't force webpage content into the client as a subscription.
| What the response looks like | What it may mean | What to do |
|---|---|---|
Contains <html, a login form, or an access notice | The response is a webpage, not a node subscription | Get the client subscription URL from your provider's website |
Multiple vmess:// or vless:// links | Common node-sharing text | Check that the client supports the specific protocols and parameters |
| A long string of Base64 text | Could be an encoded node list or incomplete content | Open it with a client that supports this subscription format; don't assume it's corrupted |
| JSON or YAML configuration | May be a full configuration rather than a node list | Ask your provider for a subscription format compatible with your client |
| Blank response or no node entries | The server may not have supplied nodes, or the account may have an issue | Check the account allocation and service status. Keep the existing configuration before trying again. |
Base64 is an encoding method, not encryption. A complete subscription may be Base64-encoded, and individual sharing links may also contain encoded parameters. Re-encoding, decoding, or editing characters by hand can corrupt the original format. If you need to inspect the content, do so only in a trusted local environment; don't submit subscription text to public decoding sites.
- VMess: A common share format is
vmess://followed by encoded parameters. If the text is truncated, some fields may be unrecoverable. - VLESS: A common share format is a
vless://URL. Transport and security settings in the query parameters are part of the configuration; keeping only the server address is not enough. - Client subscriptions: A full core configuration and a list of node links are different types of input. Supporting a protocol does not mean a client can parse every provider's subscription format.
Zero Nodes and Client Compatibility
v2rayN is a desktop client, v2rayNG uses the Xray core, and v2flyNG uses the v2fly core. Both core capabilities and client import support can affect the result: the core determines whether a configuration can run, while the client determines whether subscription entries can be converted into local nodes. Don't assume that clients with V2Ray in their names support exactly the same parameters.
For example, if a subscription contains a VLESS + REALITY configuration that relies on Xray-specific features, don't assume v2flyNG can use it as-is. Even with Xray, check that your client and core versions support the specific fields used by the provider. Updating to a stable version suited to your device and getting the matching subscription format is more reliable than deleting transport or security parameters at random.
- Check the group filter: After updating, clear the search field and switch back to the target subscription group to make sure the nodes aren't hidden by a filter.
- Check whether all or only some nodes failed: If only a few of the expected nodes were imported, check the protocols and transport types of the skipped entries. Don't assume the entire subscription has expired.
- Record the exact versions: When reporting an issue, include both the client and core versions. Saying “latest version” isn't enough to identify compatibility differences.
- Keep the original parameters: The UUID, server port, transport path, server name, and other settings must match the server. Changing fields to dismiss an import warning may cause connection failures later.
Subscription Update FAQ and What to Include in a Report
Why does the URL open in my browser but fail in the client?
First check that the browser shows node data rather than a login page. Then compare whether the browser and client use the same network route. In v2rayN, test updates both without a proxy and through a proxy, and note which one works. Don't infer the request route from the system proxy toggle alone.
Can I update through a proxy if all my old nodes are down?
A proxy update requires a working proxy route. If all existing nodes are down, try a direct update or fetch the subscription over another trusted network. You can also ask your provider about a temporary connection option. A failed node cannot download a new configuration.
Why does the desktop update work while Android shows zero nodes?
Check that both devices use the same valid URL and subscription format, and that each client is up to date. Then check which protocols the Android client supports. If you're using v2flyNG and the subscription relies on Xray-specific features, ask the provider for a compatible format or choose v2rayNG if it fits the configuration.
Will a shorter update interval fix the problem?
It won't fix authentication or format errors. Pause automatic updates while troubleshooting, retry manually once, and check the result. If the server is rate-limiting requests, wait as instructed before restoring a sensible update interval. This prevents repeated requests from obscuring the actual error.
If the steps above don't resolve the issue, report the conditions needed to reproduce it rather than simply saying “the subscription doesn't work.” Describe client-side parsing problems separately from server-side authorization issues so maintainers or providers can identify where to investigate.
- Device operating system, client name and version, and core version.
- Time of the error, affected group, and results of direct and proxy updates.
- HTTP status code or exact exception text, and whether the response was a webpage, blank text, or a node list.
- Node counts before and after the update, whether all groups failed, and whether the subscription was recently reset.
- A redacted excerpt of the logs. Hide the full subscription URL, token, UUID, and node authentication details.