For users seeing “subscription update failed,” “no nodes after import,” or “the update completed but the list is empty.” Check the URL, response content, encoding, and network path in order. First determine whether the download failed or parsing returned no results, then test in v2rayN or v2rayNG. Keep any working configuration; repeatedly deleting subscriptions is not a useful troubleshooting step.
First, determine whether the request failed or parsing returned no results
Updating a subscription does not test whether a node can connect. The client first requests data from the subscription server, parses the response into configurations, then adds them to the relevant group. A working node does not mean the subscription URL is still valid, and a successful update does not guarantee that the new nodes have usable transport and authentication settings.
Note the update time, group name, and first error in the log. The log location varies by interface version; check the log area on the main screen or open the log window. A later “no usable configurations” message may simply result from an earlier request failure, so start with the first error.
- Timeout, DNS lookup failure, or connection refused: The request did not get a usable response. Check the network path first; there is no need to change Base64 settings yet.
- A response arrived, but the client reports a format error or imports zero entries: Check whether the response is actually a subscription and whether the client supports its format.
- The update says it succeeded, but no entries appear: Switch back to the target group, clear the search and filters, then confirm that the response contains nodes.
Check the URL: copy the subscription link, not the account page
A common mistake is copying the account dashboard, purchase page, or a login URL after a browser redirect. These URLs may open normally but usually return a web page, not the subscription text the client needs. Copy the full URL for your client from the provider’s subscription section.
-
Keep your existing configuration
Record the current group and update results first. If you need a backup, use the client’s export feature and keep the backup on your device. Do not delete nodes that still work.
-
Open the group settings
In v2rayN, open “Subscription Group” → “Subscription Group Settings” from the main screen. Select the affected group and check its subscription URL field—not the server address for an individual node.
-
Copy the URL again
Copy the full subscription link again from the provider’s page. Check the protocol at the start, the token at the end, and whether a messaging app inserted line breaks. Remove accidentally included quotes and leading or trailing spaces, but do not alter characters within the URL.
-
Update one group
Save, then update only that group and check the log. Depending on the interface, you may need to select the group or use its context menu. Isolate the affected group so errors from multiple subscriptions do not get mixed together.
Query parameters in a URL often provide authentication. The character & separates parameters, and sequences such as %2F are URL-encoded; do not delete or edit them by guesswork. If you copied the literal text & from a page’s source, the parameters may be corrupted. Use the page’s copy button to get the original URL rather than trying to repair it by hand.
Check the response: HTTP success does not guarantee a valid format
HTTP status codes help show whether a server accepted a request, but they do not prove that the response can be imported. The three codes below are standard HTTP statuses, not measurements from this site or node latency.
When you check a subscription in a browser on your device, you may see plain text, a download prompt, or a login page. A browser may have account cookies that the client does not, so “it opens in the browser” is only a clue—not proof that the client request succeeded. Do not treat a browser login session as part of subscription authentication.
| What you see | Possible cause | Next step |
|---|---|---|
<!DOCTYPE html> or a login form | A web page, verification page, or error page was returned | Get the client subscription URL again and check your account status and access restrictions |
| Empty response body | No nodes are assigned to the subscription, or the server returned an empty response | Check the account expiry date, plan status, and node list in the provider’s dashboard |
Multiple lines of vmess:// or vless:// links | May be a subscription made up of individual share links | Confirm that the client supports the protocol and link parameters |
| A long string of encoded text | May be a Base64-encoded subscription—or something else | Check the decoded result locally and confirm that it contains recognizable share links |
| YAML, JSON, or a structured error message | The wrong subscription format was selected, or the server returned an API error | Choose an output format for your client on the provider’s page |
Do not assume the format is correct just because the file extension is .txt, or that the URL is invalid because it has no extension. The response body and the client’s parsing capabilities determine whether import works. The server may also return different formats based on request headers; manually spoofing headers is not the first fix to try.
Check the encoding: confirm the format before troubleshooting Base64
Common subscription formats include individual share links on separate lines and text containing a Base64-encoded list of links. Base64 is an encoding, not encryption. Some vmess:// share links also contain Base64 internally, but that is a different layer from encoding the entire subscription.
- Subscription encoding: Decoding it should usually reveal one or more share links. Check that each line has a complete protocol prefix.
- Inside a VMess link: The common format is Base64-encoded JSON. If the content is truncated, import may fail even when the outer subscription decodes successfully.
- VLESS links: These typically use a URI structure, with query parameters for transport and security settings. Do not try to Base64-decode the entire link.
- Padding: A missing
=at the end does not necessarily mean the data is corrupt; some implementations allow padding to be omitted. Do not change the original content based on this alone.
A truncated copy, a + changed to a space, or full-width punctuation can all corrupt encoded text. Whether line breaks are accepted depends on the parser; getting a fresh copy is usually more reliable than joining the text by hand. If the locally decoded result still looks encoded, do not keep layering encodings to “fix” the subscription. Ask the provider for a standard format supported by your client.
Check the network: test direct and proxy-based updates separately
Subscription requests do not necessarily use the same network path as regular web browsing. v2rayN’s subscription menu may offer options to update without a proxy or through a proxy; wording varies by version. Changing the system proxy does not necessarily change how the client itself sends subscription requests. With TUN enabled, it may also affect a request that would otherwise go direct.
- Try updating without a proxy first: In v2rayN, select “Update All Subscriptions (without proxy)” from the “Subscription Group” menu, or use the equivalent direct-update option for one group, then note the result. If TUN is enabled, check whether it is intercepting the request.
- Then try updating through a proxy: Only do this if an existing node can access the network. Select “Update All Subscriptions (through proxy)” or the equivalent option for one group. If all existing nodes are down, this route may have no working exit.
- Check the local listening port: Go to “Settings” → “Parameter Settings” and check the actual local listening port. If the log says the connection to a local loopback address was refused, make sure the core is running, the port has not changed, and no other program is using it.
- Test on another network: If possible, switch to a different network and change only that one condition. If the same URL works on the other network, check DNS, access policies, or connection quality on the original network.
Handle certificate errors separately. First enable automatic system time synchronization, then check the subscription domain spelling, certificate validity, and whether the current network is showing a sign-in page. Do not disable TLS verification as a long-term fix: it will not restore an invalid URL and it weakens protection for subscription data in transit.
Error: 401 Unauthorized
Cause: Authentication is missing, expired, or rejected by the server. Fix: Get a new subscription URL from the provider’s dashboard and make sure the token is complete. Do not keep retrying the old link.
Error: 403 Forbidden
Cause: The server denied the request, possibly because of account status, an access restriction, or a verification page. Fix: Check your account status, compare direct and proxy results, and ask the provider to confirm any restrictions.
Error: 404 Not Found
Cause: The requested path does not exist, or the server uses this status to hide an invalid endpoint. Fix: Copy the current subscription URL again and check for an old domain, outdated path, or truncated link.
These are common HTTP error messages. The client log may also include a status code or localized details. Do not feed a server error page into a Base64 decoder. Fix the request error first; only then will there be a subscription response to parse.
Test the client: change one condition at a time
v2rayN is a desktop client, while v2rayNG is an Android client that uses the Xray core. The client handles subscription retrieval and parsing, so changing cores is not a general fix for subscription errors. Check compatibility only when the log specifically points to a setting or core capability.
- v2rayN: Go to “Subscription Group” → “Subscription Group Settings” and check the target group and URL. Save, update, then switch back to that group and clear the search. Compare the entries before and after the update instead of relying only on the completion message.
- v2rayNG: Open “Subscription Group Settings” from the menu in the upper-right corner of the main screen and check the group URL. Return to the main screen and select “Update Subscription” from the menu. Menu names may change between versions; follow the labels shown in your current interface.
- Compare across devices: Use the same valid subscription URL and note each client version, update time, and network. Clients may support different output formats, so success on another device alone does not prove that your local network is working properly.
- Restore settings in order: First get subscription updates working, then check whether individual nodes work, and finally restore any required system proxy, TUN, and routing settings. Do not change the URL, DNS, core, and routing all at once.
Common questions: the update completed, but there are still no nodes
The update says it succeeded. Why is the list still empty?
Select the group you just updated, clear search terms and filters, then check the number of imported entries in the log. A successful request can still return an empty response, an unsupported format, or entries that are all filtered out. Check the response body to find out which.
Why does the client report an error when the URL opens in a browser?
The browser may include login cookies or use a different proxy. First confirm that it displays the subscription response, not an account page. Then test the client’s direct and proxy update paths separately. Do not paste a browser login URL into the subscription field.
Can I update through a proxy if all my old nodes are down?
If no proxy exit is available, updating through a proxy is unlikely to help. Try a direct update or use another network that can reach the subscription URL. If it still fails, ask the provider to check endpoint availability and your account status.
What information should I send to the service provider?
Include the client name and version, when the issue occurred, the HTTP status code, results from direct and proxy updates, and an error log with sensitive fields redacted. Share the full subscription URL only through a private channel approved by the provider, never in a public discussion.
The diagnosis comes down to three questions: Is the URL still valid? Is the response in a format the client supports? Can the request reach the server? Checking these separately is more effective than repeatedly clicking Update or reinstalling the client. If the client version is outdated, choose the right installer from the downloads page and keep a backup of your existing configuration.