For cases where a subscription is saved in v2rayN or v2rayNG, but updates fail or no nodes appear. First determine whether the failure occurs during download or parsing, then check link access, response format, and the update route. Finally, rule out client compatibility issues. Change one setting at a time, keep any working nodes, and don’t clear your configuration as a first step.
First, distinguish a failed download from an empty parse
Saving a subscription URL only means the client has stored an address; it doesn’t mean it has retrieved any nodes. An update must resolve the domain, connect to the subscription service, fetch a response, recognize its format, and add the nodes to a group. An empty list can mean any of these steps failed—or that the wrong group is selected.
Open the client log and note the first error around the time of the update. Don’t focus only on the final “update failed” message; it’s often the result, not the cause. Being able to open the provider’s homepage in a browser doesn’t prove the subscription endpoint is reachable. The homepage and endpoint may use different domains, access permissions, or network routes.
| What you see | Check first | Avoid for now |
|---|---|---|
| Request timed out or connection refused | Domain resolution, network route, and whether the current proxy works | Repeatedly changing node protocol settings |
| HTTP 401 or 403 | Link token, account permissions, and endpoint access restrictions | Treating an encoding issue as the most likely cause |
| Download completes, but no nodes are imported | Whether the response is a login page, empty body, or unsupported format | Assuming the subscription is fine just because the download completed |
| Update succeeds, but no nodes appear in the list | Selected group, search query, and list filters | Deleting the entire client data directory right away |
Check for an expired link or endpoint access issue
Subscription links usually contain an account token. After a subscription reset, plan expiration, permission change, or service migration, an old link may still open but return only an informational page. Copy a fresh link for your client from the provider’s subscription management page. Don’t use the dashboard URL from your browser’s address bar.
-
Keep the existing group
First note the group name and last update time. If you still have working nodes, back up your configuration before testing a new link. Don’t overwrite your only working group with unknown content.
-
Verify where the link came from
Check your account status and subscription permissions on the provider’s site, then use its copy button. Watch for leading or trailing spaces, line breaks, or quotation marks added during copying. Keep the existing query parameters intact.
-
Check the group’s URL
In v2rayN, open “Subscription Group” → “Subscription Group Settings,” edit the target group, and check the “URL” field. In v2rayNG, open “Subscription Group Settings” from the side menu and edit the subscription URL for the relevant entry. Menu locations may vary by version.
-
Update the target group
After saving, update only this group and note whether you see an access or parsing error. If you need to reset the subscription token, replace the old URL on your other devices too, so an invalidated link isn’t mistaken for a device issue.
The numbers below are HTTP response statuses, not client version numbers or measured success rates. They help you decide whether to check access permissions or response content next.
Encoding and format: receiving content doesn’t mean it can be imported
“V2Ray subscription” isn’t a universal import option for every kind of configuration file. Common formats include share links listed one per line, or a Base64-encoded list of links. VMess share links may also have their own encoding. Don’t encode the entire subscription again or manually remove trailing characters.
VLESS is a protocol used by nodes; a subscription is a way to distribute multiple nodes. A client’s ability to run a particular node type doesn’t mean it can read any text returned by a service. Full core JSON configurations, structured configuration documents, and lists of share links each need to be imported through the appropriate option.
- HTML response: A login form, CAPTCHA, or webpage title means you received a webpage, not a node list. Return to the provider’s site and choose the subscription option for the correct client.
- JSON response: First determine whether it’s an API error or a full core configuration. Curly braces alone don’t make it a subscription. Address any permissions or expiration details in an error message first.
- Empty response body: Check whether the provider has assigned any nodes and whether group filters exclude everything. Switching cores can’t produce nodes from an empty response.
- Share links returned: Confirm that the protocols and parameters are supported by your client. If only some nodes are recognized, compare their protocols and transport settings one by one instead of assuming a network problem.
If you need to inspect the response, do so locally where possible. Keep in mind that your browser may use the system proxy while the client may connect directly; results aren’t comparable without considering the network route. Subscription services may also return different content based on request headers. A webpage in your browser is a clue, not a definitive answer—check the client log and provider instructions too.
Should updates use a proxy or connect directly?
This is one of the most common reasons a node works but subscription updates fail. Routing regular traffic through the current proxy doesn’t mean subscription downloads use the same route. Conversely, if updates depend on a node that’s already down, requests may time out even when the subscription service is working.
-
Keep the test conditions consistent
Use the same network and subscription URL; change only the update method. First check whether the current proxy node can reach a regular HTTPS site. Don’t change DNS, nodes, and routing rules all at once.
-
Try a direct update first
In v2rayN, select “Update all subscriptions (without proxy)” from the “Subscription Group” menu. The parentheses may look different depending on the interface version; the key is to choose the command explicitly marked as not using a proxy, then check the result for this group.
-
Then try updating through the proxy
If a direct update times out and you have a working node, select “Update all subscriptions (through proxy).” If the current node is already down, don’t keep repeating the same command. Restore a working connection first or use a network that can reach the subscription endpoint directly.
-
Compare and record the results
Note the error for both direct and proxied updates. In v2rayNG, run “Update subscription” from the main screen menu. Its download route depends on the version and runtime state, so don’t assume it follows the desktop menu behavior. Compare the results with the log and current connection status.
If the log says it can’t connect to a local proxy port, check the address and port the client is actually listening on; don’t copy someone else’s port number. If an update succeeds through the proxy, that only confirms this route worked at that time. It doesn’t mean subscriptions must always use a proxy or that every node is working.
Choose your next step based on the actual error
Error wording varies across platforms and network libraries. The examples below are common message fragments. Check whether the connection is to the subscription domain, local proxy, or node server; a single keyword isn’t enough to diagnose the issue.
Error: 401 Unauthorized
Cause and fix: The request wasn’t authenticated. The subscription token may have expired or authentication details may be missing. Copy the link again from the provider’s site and make sure no query parameters were dropped.
Error: 403 Forbidden
Cause and fix: The server denied access, possibly due to account permissions, source restrictions, or an access policy. Check the provider’s status and endpoint instructions; this error alone doesn’t prove your plan has expired.
Error: 429 Too Many Requests
Cause and fix: The request hit a rate limit. Stop clicking update repeatedly, wait as instructed in the response, and check whether multiple devices are refreshing at the same time.
Error: No such host is known
Cause and fix: The domain couldn’t be resolved. Check the subscription domain for typos and confirm DNS is reachable on your current network. Once you’ve confirmed the domain hasn’t moved, try a different resolution route and retry.
Error: Connection refused
Cause and fix: The port at the target address refused the connection. If it’s a local proxy, check that the core is running and the port matches. If it’s a remote subscription service, try another route and report the issue to the provider.
For certificate errors, first check your system date, time, and time zone, then confirm the certificate matches the subscription domain. Don’t disable certificate verification just to make updates work. Security settings on a node’s edit screen may not control the HTTPS connection used to download subscriptions.
Check the client version and confirm the update result
An older client may not recognize new share-link parameters or may be unable to handle the subscription service’s current response format. Subscription parsing is usually handled by the client, while node connections are mainly handled by the core; these are separate stages. Replacing the Xray or V2Fly core usually won’t fix issues like downloading a login page or using an expired token.
- Record the current setup: Find the client version in “Help” or “About.” Also note the error time, operating system, and update method so you can compare before and after upgrading.
- Back up before upgrading: Choose the installer for your platform from the download page and follow the installation instructions. Exit the desktop app first. On mobile, take care to preserve app data and existing settings.
- Use the right client: v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Choose a subscription based on the provider’s compatibility instructions; don’t assume both clients support exactly the same protocols and parameters.
- Check both outcomes separately: First confirm that nodes appear in the group, then test a connection with one node. A successful import doesn’t mean the route works, and a connection timeout doesn’t mean subscription parsing failed.
If the update reports success but the list is empty, clear the search field, switch back to the target subscription group, and check for active filters. If only one group has a problem, test the new URL in a temporary group. Organize the old groups afterward to avoid duplicate nodes complicating the diagnosis.
Troubleshooting checklist before contacting support
A useful support request should show which step failed and what you’ve already compared. Don’t send your full configuration or a screenshot of an empty list with no timestamp or group details. Use this checklist to investigate the issue or prepare a report for your provider or client support team.
- Your subscription is active, and the link came from the provider’s current site; you’ve ruled out an old token and a dashboard URL.
- You’ve recorded the client name, exact version, platform, and update command used when the error occurred.
- The log includes the first relevant error, and you’ve hidden domains, tokens, node credentials, and personal information.
- You’ve distinguished timeouts, HTTP access denials, and content parsing failures instead of lumping them together as “subscription not working.”
- Where possible, you’ve compared direct and proxied updates and noted whether the current proxy works.
- You’ve checked the response type and group filters, and backed up before upgrading; repeated reinstalls haven’t erased your only working configuration.
Follow a consistent order: URL and permissions, download route, response format, then client compatibility. Don’t change several later settings before confirming the earlier steps. This narrows down the problem and helps identify exactly what fixed it.