After installing v2rayNG, the difficult part is often not starting the application but understanding which import path matches the information you received. A subscription URL is not the same thing as an individual VMess or VLESS link. A subscription normally points to a provider-managed list that can be refreshed later, while an individual proxy link describes one server and is imported only once unless you replace it manually.
The safest workflow is to identify the type of data first, add it through the matching menu, update the resulting group, test latency, and then start the Android VPN service. This avoids common mistakes such as pasting a subscription URL into the clipboard importer, importing a node into the subscription field, or selecting a profile that has never completed a connectivity test.
This guide explains the complete v2rayNG workflow on Android: how to add a subscription provider, import individual VMess, VLESS, or Trojan links, update nodes, measure latency, select a profile, start the VPN service, and verify that traffic is using the expected route. The menu names may differ slightly between v2rayNG releases or translations, but the underlying steps remain the same.
Understand subscriptions and individual links
Before opening a menu, inspect the text you have received. A subscription is usually a long HTTPS or HTTP address supplied by a service provider. It may contain a token, an encoded path, or a query string, and it often ends with no obvious protocol name. Opening that address in a browser may display encoded text rather than a readable configuration. That is normal: the client is expected to download and decode the provider’s node list.
An individual proxy link normally begins with a recognizable scheme such as vmess://, vless://, or trojan://. Some providers also send a QR code or a configuration file. These are node-level imports. They do not create an automatically updating subscription group, so a changed server address, UUID, password, transport path, or expiration setting must be imported again or edited separately.
Stores a provider endpoint and can retrieve a refreshed group of nodes without manually importing every server.
Suitable for: multiple nodes, regular updates, and device migration
Imports one VMess, VLESS, or Trojan profile directly into the local configuration list.
Suitable for: testing one server or using a standalone configuration
Transfers a node profile visually and is useful when the link is displayed on another screen.
Suitable for: short one-time transfers between devices
Practical rule: classify the data before importing it
If the text begins with vmess://, vless://, or trojan://, use the individual configuration importer. If it is a provider URL intended to return many profiles, add it under subscription group settings instead. The two paths produce different update behavior.
Add a subscription provider in v2rayNG
Open v2rayNG and locate the subscription management screen. Depending on the release and language, it may be called “Subscription settings,” “Subscription group settings,” or appear inside the side menu opened from the upper-left corner. Do not confuse it with the general application settings screen. The subscription page is where a URL is saved as a provider entry; the main profile list is where the resulting nodes appear after an update.
-
Open subscriptions
Launch v2rayNG, open the upper-left navigation menu, and choose “Subscription settings” or “Subscription group settings.” If your build shows a plus button on that page, use it to create a new provider entry.
-
Enter the URL
Paste the complete provider URL into the subscription address field. Keep the scheme, domain, path, token, and query parameters intact. A missing character at the end can make the server return an empty or unauthorized response.
-
Name the group
Assign a short group name such as “Primary provider” or “Travel nodes.” A clear name matters when several providers contain similar server names or when old groups need to be removed later.
-
Save the entry
Tap the save, checkmark, or confirmation control. Return to the main screen only after the entry is visible in the subscription list; saving a URL is not the same as downloading its node profiles.
-
Update the group
Use the subscription update command from the same screen, or open the main menu and choose the matching update action. Wait for the completion message, then return to the profile list and expand or select the newly created group.
When the update succeeds, v2rayNG normally creates several profiles under the group. The names may include locations, server roles, or provider-defined labels. At this stage, do not assume that every displayed profile is usable. A subscription response can include expired nodes, unavailable servers, unsupported transports, or profiles intended for a different client core.
Import individual VMess, VLESS, and Trojan links
Use the individual import path when you have one or more complete proxy links rather than a provider endpoint. Copy the entire link to the Android clipboard, including the protocol prefix. For a VMess link, the encoded payload may contain the address, port, UUID, transport, TLS setting, and WebSocket path. For VLESS or Trojan, important values may appear in the URL authority, query parameters, or fragment name. Removing even one parameter can change the resulting profile.
On the v2rayNG main screen, tap the plus button or the add-profile control. Choose an option similar to “Import config from clipboard.” If the copied data contains several supported links, the client may import multiple profiles at once. If only one link is copied, it should create one profile. A QR-code option is an alternative when the link is displayed on another device; point the camera at the complete code and confirm the imported profile name.
- VMess link: Confirm that the imported address, port, UUID, security method, network type, host, and path match the provider’s source.
- VLESS link: Check the UUID, encryption value, flow setting, transport, server name, and Reality or TLS parameters when they are present.
- Trojan link: Check the password, server address, port, TLS server name, and transport parameters.
- Encoded or copied text: Remove accidental spaces and line breaks only when they are outside the link. Do not reformat the encoded payload itself.
- Duplicate profile: Rename the new entry with a date or source label instead of repeatedly importing the same link without identifying it.
After importing, tap the profile to make it the active selection, but do not start the VPN service yet. First open its edit screen and compare the key fields with the source. This is especially important for VLESS with Reality, where a wrong server name, public key, short identifier, or fingerprint can cause a handshake failure even though the address and port look correct.
VLESS + Reality
- Transport
- TCP
- Flow
- xtls-rprx-vision when supplied
- Fingerprint
- chrome or provider value
- Server name
- Must match the link
Do not invent Reality values; import the complete link or copy the provider’s parameters exactly.
VMess + WebSocket + TLS
- Transport
- WebSocket
- Path
- Provider-defined path
- Host
- Provider-defined host
- TLS
- Enabled when specified
A missing path or host can produce a timeout even when the domain itself opens normally.
Update, test, and choose a node
Subscription updating and latency testing answer different questions. An update checks whether v2rayNG can download the provider’s current configuration list. A latency test checks how quickly a selected profile responds to the test request. Neither result alone proves that a normal browser session will be fast or stable. A node may answer a short test but suffer packet loss, congestion, or transport-specific failures during larger downloads.
After updating a subscription, select the group and run the available “Test all configurations,” “URL test,” or latency-test action. The exact wording depends on the installed v2rayNG build. If the test address can be customized, use a stable HTTPS endpoint rather than a large file. Compare several nodes from the same group under the same network conditions, and record both the latency and whether the test completes successfully.
| Result | What it usually indicates | Next action |
|---|---|---|
| Update succeeds, latency test succeeds | The provider URL and selected profile are reachable at test time. | Start the VPN service and verify a real website or application. |
| Update succeeds, all nodes time out | The list is valid, but the current network may block or interrupt the node paths. | Test another network, inspect the node transport, and compare a different group. |
| Update fails with timeout | The subscription endpoint cannot be reached directly or the URL is invalid. | Check the URL, network access, expiry status, and the “update through proxy” option if available. |
| One node succeeds and others fail | The group contains mixed server states or incompatible profiles. | Use the successful profile temporarily and remove obsolete entries after confirmation. |
Choose the lowest-latency node only when its connection is also consistent. For example, a profile showing 80 ms on one test but failing twice afterward is less useful than a profile showing 120 ms across five successful tests. Location labels are also not a performance guarantee. The route from the Android device to the server, the provider’s upstream network, and current congestion all matter more than the name displayed in the profile list.
Start the Android VPN service and verify traffic
Once a profile has passed a latency or connectivity test, tap it so the selection indicator moves to that profile. Then tap the main start button in v2rayNG. Android should display a VPN permission confirmation the first time, or after the VPN permission has been reset. Approve the request only if the prompt identifies v2rayNG as the application requesting the VPN connection.
When the service starts, Android normally shows a VPN key or system status indicator. v2rayNG should also change its connection state and expose traffic counters or a running status in the interface. If the application returns to a stopped state immediately, open the log panel and look for a local configuration error, a permission denial, a port conflict, or a failed core startup before changing the remote node.
- Confirm that exactly one intended profile is selected before tapping start.
- Open a normal HTTPS website and verify that it loads after the VPN indicator appears.
- Check the v2rayNG traffic counters; increasing sent and received values show that traffic is passing through the running service, although they do not prove every application is using it.
- Test an application that supports Android VPN routing and compare behavior with the service stopped.
- Stop the service before editing or deleting the active profile, then start it again after saving changes.
Android battery management can stop background proxy activity or delay subscription updates. If the connection repeatedly disappears while the screen is locked, check the system battery settings for v2rayNG and avoid aggressive background restrictions where continuous operation is required. Also review per-application routing if your build or imported configuration provides an application filter. A browser working while another application remains direct may be a routing selection rather than a failed node.
Do not enable several VPN applications at the same time. Android generally permits only one active VPN service, so another VPN client, firewall, or traffic-capture application can prevent v2rayNG from starting or can replace its connection. Stop the competing service first, then restart v2rayNG and repeat the verification test.
Fix common import and update failures
Most import problems are caused by using the wrong menu, incomplete clipboard content, an expired provider URL, or a profile whose transport parameters no longer match the server. Separate these cases by observing where the failure occurs. If no profile is created, troubleshoot the input format. If a profile is created but cannot be tested, inspect its fields and the network path. If the test succeeds but applications remain offline, inspect Android VPN state and application routing.
Error: no valid configuration found in clipboard
Cause and fix: The clipboard contains a subscription URL, ordinary text, or a truncated proxy link. Use the subscription settings page for a provider URL, or copy the complete vmess://, vless://, or trojan:// link again.
Error: subscription update failed or timed out
Cause and fix: The endpoint is unreachable, expired, mistyped, or blocked on the current network. Recheck the full URL, try the provider’s update-through-proxy option when available, and confirm that the saved subscription entry is not blank.
Error: handshake timeout
Cause and fix: The selected node may be offline, or its address, port, TLS server name, path, Reality key, or transport does not match the server. Compare the imported fields with the original link and test another profile.
Error: VPN permission denied
Cause and fix: Android did not grant v2rayNG permission to create its VPN service. Start again, approve the system prompt, and stop any other active VPN service before retrying.
When a subscription contains profiles for different cores, transports, or operating environments, importing everything does not guarantee compatibility. Use the profile editor and logs to identify whether the imported node requires Xray-specific features such as Reality or Vision. If the provider supplies a client-specific subscription format, request the format intended for v2rayNG rather than converting fields manually.
Final check: verify the complete chain, not just the green status
A reliable setup has four matching results: the subscription entry updates, the selected node passes a connectivity test, Android shows the v2rayNG VPN indicator, and a real application generates traffic through the service. If one result is missing, troubleshoot that layer instead of repeatedly changing unrelated node parameters.