This guide covers v2rayNG subscription update timeouts, empty node lists after an update, and how to adjust scheduled updates. First determine whether the request timed out, was rejected, or returned content the client couldn't parse. Then check the link, direct and proxy routes, and subscription format. Automatic updates should only be configured after a manual update succeeds. Check v2rayN's group update interval and v2rayNG's version-specific features separately; their settings aren't interchangeable.
Where the subscription update fails
A subscription URL is an entry point for retrieving node configurations, not a node server address. The client first requests content from the subscription service, then converts the response into local configurations. Connecting to a node is a separate process. That's why existing nodes can still connect even when subscription updates fail—and why node latency alone can't tell you whether the subscription service is working.
Note when you tried the update, the full error message, and which subscription group was selected. During troubleshooting, update one group at a time. Repeatedly choosing “Update all subscriptions” can mix up errors from different URLs and may trigger server-side rate limits. Keep your current working configurations; there's no need to delete a group or clear app data right away.
- No response for a long time: Check the network route, DNS, and connection timeout before changing node protocols.
- Immediate access denied message: Check the subscription token, account status, request limits, and whether the subscription URL has changed.
- Request completes, but no nodes appear: Check whether the response is a login page, an error message, or a format the client doesn't support.
- Update succeeds, but connections fail: Check the node configuration, server status, and routing. This is a separate stage of the process.
Check the subscription link and account status
On the v2rayNG home screen, open the side menu and go to “Subscription group settings.” Select the relevant group and open its edit screen to check the subscription URL. The group name is only for local reference; a correct name doesn't mean its link is still valid. When copying the URL, include everything—from the protocol at the start to the parameters after the question mark and the final character. Be careful not to copy the button label from the webpage.
-
Keep the existing group
Make a note of the group that failed and the currently selected node. Don't delete nodes that still work. To test a new URL, add another group in “Subscription group settings” rather than overwriting your existing configuration.
-
Copy the URL again
Copy the subscription link for your client again from your provider's account page. Paste it into the group URL field, check for leading or trailing spaces, line breaks, or missing parameters, then save.
-
Check your account status
Check your plan's expiration date, remaining data, and whether the subscription link has been reset. Resetting it usually invalidates the old token. Switching networks or retrying the old URL won't restore access.
-
Update one group at a time
Return to the home screen, select the subscription group, and choose “Update current group subscription” from the top-right menu. Some versions shorten this to “Update subscription.” Make sure the correct group is selected first.
Test direct and proxied updates separately
Don't assume v2rayNG subscription requests automatically go through the proxy as soon as you connect. Some versions offer separate commands in the top-right menu for a regular update and an update labeled “via proxy.” Choose each command deliberately and compare the results; the connection icon in the status bar doesn't show which route the request took.
| Test method | What to do | How to interpret the result |
|---|---|---|
| Regular update | Select the target group and run the update command without “via proxy” in its name | Success means the regular request route can reach the subscription service; there's no need to force it through a proxy |
| Update via proxy | Connect to a node you've verified works, then run the command labeled “via proxy” | If this succeeds while a regular update fails, the two request routes have different levels of reachability |
| Try a different network | Keep the same URL and test over Wi-Fi and mobile data | If only one network fails, check its DNS, captive portal, and access restrictions first |
| Check automatic date and time | On Android, go to “Settings” → “System” → “Date & time” and enable automatic time | An incorrect clock can cause HTTPS certificate verification to fail. Menu names may vary by device. |
If none of your existing nodes work, choosing “Update via proxy” can create a catch-22: you need an update to get a working node, but the update depends on a node that no longer works. Try a regular update, switch networks, or ask your subscription provider which URL to use. Don't treat “via proxy” as a universal fix for timeouts.
If a subscription URL opens in a browser, that only confirms the browser's network route can reach it. The browser may use different DNS or proxy settings, or an existing login session, while the client makes a separate request. And if the page shows an account login screen, that doesn't mean the subscription content is valid.
Use the exact error message to identify network, access, and format issues
Messages vary with the client version, operating system, and request library. The examples below are fragments that may appear in logs. Check the full context rather than reinstalling the client as soon as you see “failed.” Don't work around certificate errors by disabling verification; correct the device clock first or contact the subscription service maintainer.
Error: java.net.SocketTimeoutException
Cause and fix: The connection or read didn't complete within the allowed time. Test regular and proxy updates separately, then switch networks. If the request fails on another network too, check whether the subscription service is temporarily unavailable.
Error: java.net.UnknownHostException
Cause and fix: The hostname in the subscription URL couldn't be resolved. Check the spelling, then check whether “Private DNS” in Android network settings is set to a service your current network can't reach. Temporarily switch it to “Automatic” and test again.
Error: HTTP 403 Forbidden
Cause and fix: The server rejected the request, possibly because of the token, source restrictions, or access policy. Get a fresh subscription URL and check your account status. If only proxy updates are rejected, test a regular update before concluding that the client is at fault.
Error: HTTP 429 Too Many Requests
Cause and fix: The request hit a rate limit. Stop refreshing repeatedly. If the response includes Retry-After, wait as instructed, then test with a single group and consider increasing the automatic update interval.
Error: javax.net.ssl.SSLHandshakeException
Cause and fix: The HTTPS handshake failed, possibly because of the certificate chain, system clock, or an intermediary on the network. Correct the clock and test on another network. If the server's certificate configuration is faulty, the service maintainer must fix it.
If the server responds normally but the node list is still empty, check the content type. A subscription may contain encoded node links or a client-specific configuration. File extensions, text length, and the fact that a file downloads don't prove compatibility. An HTML login page, a JSON error, and valid subscription content can all arrive with HTTP 200; a successful status code doesn't mean the content imported successfully.
- On your subscription provider's site, choose an export option explicitly intended for v2rayNG. Don't use your account homepage URL as the subscription link.
- Update the client, then check whether it supports the new fields. v2rayNG uses the Xray core, but subscription downloads and format parsing also depend on the client version.
- v2flyNG uses the V2Fly core. Don't assume it supports the same protocol fields as v2rayNG or that its menus work the same way.
- If only a few nodes are missing, note their protocol types and brief error messages, then ask the provider to confirm the export is complete. Don't manually delete security parameters you don't recognize.
How to set automatic update intervals in v2rayN and v2rayNG
Get one manual update to succeed before setting up automatic updates. Updating a subscription refreshes the node list; it doesn't add data to your plan or bring offline servers back online. The intervals below are examples, not benchmark results or defaults for every version. Follow your provider's instructions if it specifies an update frequency.
v2rayN: Set the interval for each subscription group
On desktop, go to “Subscription groups” → “Subscription group settings,” select a group, and edit it. Look for the “Automatic update interval” field. Versions with this field usually use minutes: for example, 360 means every 6 hours, and 1440 means every 24 hours. Check the unit shown in your version's interface. In many versions, 0 disables scheduled updates; it doesn't mean continuous refreshing.
- Check that the group URL is correct, save, and run a manual update first.
- Edit the group again and enter the interval in the units shown in the interface. Don't enter a number of hours in a field that expects minutes.
- If access requires a proxy, use “Subscription groups” → “Update current subscription (via proxy)” to test it. Check the current version's settings and logs to confirm which route automatic updates use.
- Keep the program running and check the next update. Don't expect the timer to run while the program is closed or the computer is shut down or asleep.
v2rayNG: Check whether your version supports scheduled updates
On Android, open “Subscription group settings,” edit the target group, and check for an automatic update or update interval option. Then check subscription-related options under “Settings” in the side menu. Features and interfaces vary between releases; many versions only support manual updates and don't provide a built-in setting for a schedule. If the screen only has URL and name fields, don't copy v2rayN's minutes setting—there's no universal hidden switch.
- If the interface offers an interval: Set it in the units shown (minutes or hours), save, and check the update history. Don't assume values from another guide are the defaults.
- If there is no interval option: Run manual updates from the home screen menu. If you need scheduled updates, check the documentation for your version instead of searching for a menu that isn't there.
- If background updates are supported but aren't running: On Android, go to “Settings” → “Apps” → “v2rayNG” → “Battery” and check background restrictions. Your device manufacturer may call this “App battery management” or “Background activity.”
- If the app was force-stopped: Reopen it and run a manual update first. Allowing background activity can't add scheduling to a version without that feature, and it can't guarantee that every device runs tasks exactly on time.
Subscription update FAQs
The update says it succeeded. Why is the node count unchanged?
The subscription content may not have changed. Check the selected group and filters, then compare node names and addresses. If the same nodes were retrieved again, an unchanged count is normal; the count alone can't tell you whether the update ran.
Proxy updates still time out. Should I change the port?
First confirm that the selected node can access the network, then test a regular update. A proxy update can time out because of the node's outbound route or the subscription service. Check port settings only if the logs clearly show a local listening port conflict; don't change port values at random.
Why do I only see updates when I open the app?
First check whether your version supports background scheduling, then check battery restrictions. Some tasks may not run until the app is active again. To investigate, note the last successful update, the configured interval, and the actual run time rather than relying only on the message shown when you open the app.
What should I do if my selected node disappears after a subscription update?
Your provider may have removed or renamed the node. Switch to the relevant group and select another available node. If you need to keep manual changes, back up a separate configuration first: a later subscription update may overwrite configurations managed by the subscription group.
Can reinstalling fix subscription parsing errors?
Check the export format and client version first. Reinstalling won't change a response that keeps returning a login page or error content. When reporting the issue, include the version, error time, update method, and redacted logs. Keep your existing configuration so you can restore it.
After troubleshooting, verify both that a manual update succeeds for one group and that you can connect using a node from the refreshed list. The first test checks the subscription route; the second checks node availability. If automatic updates are enabled, also confirm that the next scheduled run actually happens. Testing each separately helps distinguish subscription service, client scheduling, and node connection issues.