For anyone with a subscription URL who isn’t sure where to paste it. First, learn the difference between a subscription URL, a share link, and a full config. Then follow the desktop or Android steps to add and update it, and select a server. Finally, troubleshoot by stage: download, parsing, or connection—without repeatedly deleting subscription groups.
Subscription URLs vs. config formats
A “V2Ray subscription” usually means a client fetches a server list from a URL, but the response doesn’t follow one universal format. The URL points to a remote resource; the response body determines whether the client can parse it. A provider’s account login, purchase page, and subscription URL are separate entry points.
| What you have | How to identify it | Where to import it | How to update it |
|---|---|---|---|
| Subscription URL | Usually starts with https:// and may include an access token | URL field in subscription groups or subscription settings | The client fetches the URL again |
| Individual share link | Common prefixes include vmess://, vless://, and trojan:// | Import the share link from the clipboard | Does not automatically track changes to the subscription source |
| Full config | JSON commonly includes fields such as inbounds, outbounds, and routing | The client’s custom config section | Update from a file or raw config |
A Base64 subscription typically encodes a text list of share links. After decoding, you’ll often see one link per line. A VMess share link may itself contain Base64-encoded JSON. These are two different layers—don’t assume a long string is a single server address.
First identify the response format, then choose the right import option
If the provider offers formats for different clients, choose a share-link subscription compatible with v2rayN or v2rayNG. If the response is a webpage, another config syntax, or full JSON, selecting the correct subscription format is more effective than repeatedly clicking Update.
v2rayN: Add a subscription group and update it
In v2rayN, subscription groups store URLs and group details; the server list shows entries parsed from the response. Saving a group alone won’t create any servers. The steps below use common labels from the Chinese interface. Button placement may vary between versions, but saving the URL and updating the subscription are separate actions.
- Copy the original subscription URL.Copy the full URL from the provider’s subscription page, including any parameters after the question mark. Don’t copy the account login page from your browser’s address bar or include surrounding instructions.
- Go to “Subscription Group” → “Subscription Group Settings.”Add a group. Enter a recognizable name under “Alias,” such as “Daily,” then paste the subscription URL into “Optional address (Url)” or the equivalent URL field.
- Save the group.For your first import, leave keyword filters unset so servers aren’t filtered out. If a group with the same name already exists, check its URL instead of adding a duplicate.
- Choose “Subscription Group” → “Update current subscription (without proxy).”Select the group you want to update first. To update multiple sources, use “Update all subscriptions (without proxy).” Menu labels may vary slightly by version.
- Select a server and set it as active.Choose an imported server from the list, then use the right-click menu to make it active. Check the logs for core startup errors.
If the subscription is only reachable through an existing proxy, you can use the “through proxy” update option—but only if you already have a working connection. With no usable server on the first import, this option can’t create a proxy connection from nothing. First check whether your current network can reach the subscription source, or get a valid share link that can be imported on its own.
v2rayNG: Subscription settings and updates
The Android version of v2rayNG uses the Xray core. Subscription management is in the sidebar; import individual share links from the add menu on the main screen. Pasting a subscription URL into a regular server’s address field creates an invalid connection config—it won’t fetch a server list.
- Open the sidebar → “Subscription settings.”Tap the plus icon in the upper-right corner, then enter a “Remarks” label and the “Address.” Use the remark to identify the source; the address is used to fetch subscription data.
- Save and return to the main screen.Make sure the new subscription still appears in the settings list. If the URL was truncated or a line break was added to the token, go back and correct it.
- Open the upper-right menu → “Update subscription.”Watch for the status message at the bottom and check for changes in the list. Some versions offer updates by group; confirm the selected group before using that option.
- Tap a server, then tap the connect button.On the first connection, Android asks for permission to set up a VPN connection. Approve it, then check the system connection status and app logs.
- Import individual links from the add menu.If you have a share link such as
vless://, tap the plus icon on the main screen → “Import from clipboard” instead of creating a subscription URL.
A successful subscription update doesn’t mean the proxy is connected. Seeing entries in the list means the request and parsing completed; the core starts and handshakes with a server only after you tap Connect. Android’s VPN permission lets the app handle device traffic, but doesn’t prove the server is reachable.
v2rayN desktop
- Where to manage it
- Subscription Group → Subscription Group Settings
- Name field
- Alias
- URL field
- Optional address (Url) or subscription URL
- Update action
- Update current subscription
After saving, update the subscription to populate the server list.
v2rayNG for Android
- Where to manage it
- Sidebar → Subscription settings
- Name field
- Remarks
- URL field
- Address
- Update action
- Main screen menu → Update subscription
After importing, select a server and connect.
After importing: check the list, core, and traffic
Verify each stage in order, from config to network. Check the server list first, then review core logs, and finally test real traffic. Don’t confuse the subscription URL’s port with the local listening port or the server’s port: they’re used to download config, accept traffic on your device, and connect to the remote server, respectively.
- Check the list:Confirm that the protocol, server address, and remote port are present. Remarks are customizable; a polished label doesn’t mean the config is valid.
- Check the core:After startup, review the logs for config parsing issues, listening ports, and handshake errors. In v2rayN, check the local listening port under “Settings” → “Parameter settings.” If another program is using the port, resolve the conflict first.
- Check traffic:On desktop, make sure the system proxy or TUN is enabled as needed. For manually configured app proxies, enter the actual listening address and port. On Android, confirm the connection is active and check whether per-app settings exclude the target app.
- Test the result:Check a service you actually need to access. A successful latency test only confirms that a particular probe worked; it doesn’t guarantee that all traffic follows the same route.
A server may use port 443 or another port—always check the subscription itself. Don’t change every entry to 10808; that example is a local listening port, not a remote server port. Protocol names such as VMess and VLESS don’t determine the transport on their own; TLS and transport path settings must also match the server.
Subscription update failed? Troubleshoot by stage
Match the error to the stage where it occurs. For “Download failed,” check the URL and network first. For “No available servers,” check the response format and filters. For “Connection failed,” check the core and remote parameters. This avoids changing correct protocol settings just to address a network timeout.
| Symptom | Check first | What to do |
|---|---|---|
| HTTP 401 or 403 | URL token, access permissions, provider restrictions | Get a fresh subscription URL and check your account permissions. If access is still denied, ask the provider about any restrictions. |
| Timeout or DNS lookup failure | Can your current network reach the subscription domain? | Check the domain spelling and try direct access or an update through an existing proxy |
| No servers after updating | Response content, group selection, keyword filters | Remove unnecessary filters and confirm you selected a compatible subscription format |
| Redirected to a login page or returned webpage content | Did you use the account page URL by mistake? | Copy the URL again from the provider’s subscription page; don’t treat webpage HTML as Base64 content |
| List looks normal, but the core reports an error | Protocol support, config fields, selected core | Use the logs to identify the field causing the error, then confirm the client and core support that config entry |
| Connected, but apps can’t access the network | System proxy, TUN, per-app settings, routing rules | Confirm app traffic is going through the proxy, then check the server handshake and destination |
Takeaway: If the list updates, stop changing the subscription URL
When the parsed server details are complete, focus on the active server, core logs, and traffic routing. The subscription URL delivers config; it doesn’t handle app proxy connections. Changing the URL won’t fix a local port conflict or incorrect routing rules.
Subscription updates and privacy
A token in a subscription URL may let anyone who has it access your server config. When troubleshooting, share only the status code, failure stage, and client menu—not the full URL. Before sharing a screenshot, hide the token, user ID, and any server details you don’t want public.
- Don’t submit subscriptions to online decoding tools.Base64 is encoding, not encryption, and decoding doesn’t make a config more trustworthy. If you need to inspect the contents, do it in a trusted local environment.
- Check for sensitive data before sharing logs.Path parameters, user IDs, passwords, and subscription URLs may appear in diagnostics. Share the error type; there’s no need to publish the entire config.
- Note which entries work before updating.The subscription source may change URLs or remove entries. Record the group and active server first, then check them again after updating so you can trace any disruption.
- Ask the provider to reset a leaked URL.Deleting the group from your client won’t invalidate a leaked remote token. After it’s reset, save the new URL in the client and update the subscription again.
When importing a full config, also check the local listening address and routing rules. Setting the listening address to 0.0.0.0 may let other devices on the same network access that port. Don’t use it just because the config starts successfully. Beginners should use a subscription format tailored to their client so it can manage local inbounds, then learn advanced fields step by step.