For v2rayN users who already imported a subscription but get nothing when they click Update subscription. The article follows four threads — subscription URL format, auto-update interval, the exact error text, and system time plus proxy state — so you can tell whether the failure sits in the download, the decoding or the config write step, and set the auto-update interval to a stable 6 hours.
The four parts of a subscription URL and the mistakes people make
The single biggest cause of a failed subscription update is a URL that is simply wrong. Once v2rayN has the subscription URL it does only two things: send one HTTPS request to that address, and parse the response into a node list. Get one character wrong in the URL and none of the other settings ever get a chance to work.
https://sub.example.com/api/v1/client/subscribe?token=8f3c1a7d&flag=v2rayn
// Structure: scheme + domain + path + query parameters (token)
// The two lines below are single-node share links, not subscription URLs
vmess://eyJ2IjoiMiIsInBzIjoi...
vless://[email protected]:443?security=tls
- Scheme and domain: most panels hand out https, a few self-hosted panels still use http, and the two cannot be mixed.
- Path: something like /api/v1/client/subscribe. It is case-sensitive, and one extra trailing slash can return a 404.
- Query parameters: the token is generated by the server. It is easy to drop the last characters when copying, or to pick up extra spaces.
- Response body: it should be a block of base64 text or raw JSON, never a web page.
The quickest self-check: paste the subscription URL into your browser's address bar and press Enter. If you see base64 characters or JSON, the URL is valid. If you see a login page, a 404 page or a blank page, ask your provider for a new URL first, then come back and adjust the client settings.
Auto-updating subscriptions: set the interval to 6 hours
Once the URL checks out, look at the update rhythm. v2rayN updates subscriptions from two places: the Subscription menu you trigger by hand, and an automatic update that runs at a fixed interval. The interval lives in the parameter settings; its unit varies by version, so fill it in according to the label shown in the interface.
Open the parameter settings
In the main window, go to Settings → Parameter settings in the top menu to open the settings window.
Switch to the subscription tab
Select Subscription on the left side of the settings window; the subscription fields appear on the right.
Enter the update interval
Change Update subscription interval to 6 hours; if the field is measured in minutes, enter 360.
Save the settings
Click OK to save. The setting is written to the local config file and stays in effect after you restart v2rayN.
Verify once by hand
Back in the main window, click Subscription → Update subscription (without proxy) and check the update time in the log area at the bottom.
Note
The unit changes between versions: if the interface says hours, enter 6; if it says minutes, enter 360. Never type 6 into a field measured in minutes — that means one subscription request every 6 minutes, and once the server rate-limits you, updates fail even more often.
Error text and what to do about it
The full error text appears in the log area at the bottom of the main window; the pop-up only gives a one-line summary. Always troubleshoot from the complete sentence in the log. The four entries below are the ones that show up most often during subscription updates.
Error: The remote server returned an error: (404) Not Found.
Cause and fix: the subscription path or token is no longer valid and the server cannot find that address — go back to your provider's panel, copy the full subscription URL again, replace it in Subscription group settings, and update once more.
Error: The underlying connection was closed: An unexpected error occurred on a send.
Cause and fix: the local system clock is too far off from the server, so the TLS handshake is rejected — turn on automatic system time sync, confirm the offset is under one minute, and retry.
Error: The remote name could not be resolved: 'sub.example.com'
Cause and fix: DNS resolution failed — switch your system DNS to a public resolver such as 223.5.5.5 or 1.1.1.1, run ipconfig /flushdns once in a command line, and retry.
Error: subscription content is empty / 0 nodes after the update
Cause and fix: the URL returns a login page or an error page, so the content cannot be decoded into nodes — open the subscription URL in a browser; you should see base64 text. If you see a web page, the URL or the access permission is wrong.
Clear the log area before troubleshooting, then click Update subscription once. The log will then hold a complete record of that single attempt, including request time, response status and parse result.
What happens during one subscription update
Match this chain against the errors above and you can usually pin down where it failed: a request-stage failure gives a 404, a timeout or a name resolution error; a download-stage failure returns empty content or a web page; a decode-stage failure yields fewer nodes than expected; and a write-stage failure shows a successful update with nothing visible in the list.
- Request stage: one of the URL, DNS or proxy state is wrong, and the log text points straight at the cause.
- Download stage: the connection succeeds but the content is not a subscription — usually an expired URL, a login requirement, or an error page from the server.
- Decode stage: the content is truncated or mixed with explanatory text, so base64 yields noticeably fewer nodes.
- Write stage: if a keyword filter is set on the group, filtered-out nodes never appear in the list even though the update log reports success.
How to check system time, DNS and proxy state
When the URL and the interval are both fine and updates still fail, three local factors remain. None of them live in v2rayN's settings, yet any one of them can stall a subscription update.
| Log clue | What to check | How to fix it |
|---|---|---|
| The underlying connection was closed | System clock offset | Turn on automatic time sync and keep the offset under one minute |
| The remote name could not be resolved | DNS resolution | Switch to 223.5.5.5 or 1.1.1.1 and run ipconfig /flushdns |
| Operation timed out / spinner never stops | Local proxy state | Turn off the system proxy and use Update subscription (without proxy) instead |
| Update succeeds but no nodes appear | Group and filter | Expand the group and check whether a keyword filter is set |
Proxy state is the easiest one to get lost in: v2rayN's system proxy points at 127.0.0.1:10809, so if the core is not running or the current node is dead, a proxied subscription request spins until it times out. The test is simple — if the same URL fails with Update subscription but succeeds with Update subscription (without proxy), the problem is in the proxy chain, not the subscription itself.
System time is just as concrete: once the clock is off by more than a few minutes, HTTPS certificate validation fails first, and the error text looks like a network fault when all you need is to turn on automatic time sync.
Choosing an update interval and two common mistakes
Back to that 6 hours. Shorter is not better, and setting it once does not mean you never touch it again.
- Set it to 5 minutes: nearly three hundred requests a day, and once the server rate-limits you, updates fail more often — the log shows timeouts or 429-style responses.
- Set it to 7 days: after nodes are rotated, your local list stays stale for a long time, and the symptom is a subscription that updates fine while connections keep failing.
- Set it to 6 hours: four requests a day, a good balance between freshness and request volume; when you need new nodes right away, just click Update subscription once by hand.
One more pass over the order: verify the subscription URL in a browser first, then set the auto-update interval to 6 hours, and finally work through system time, DNS and proxy state based on the exact log text. Finish those three steps and almost every subscription update failure lands on one specific link in the chain.
Download v2rayN
Windows, macOS and Linux desktop builds plus the v2rayNG Android build are on the download page, with the same menu paths used in this article.