Create a group for each subscription source, use a server-name regex to control which entries are imported, then update and check each group separately. This guide is for v2rayN users managing multiple subscriptions. It explains the difference between groups, list search, subscription filters, and Routing, and includes regex examples you can test against sample names.
First, know the difference: subscription groups aren't Routing
A subscription URL typically returns a set of server configurations. v2rayN reads their protocol, address, port, and authentication details, then organizes them into a server list. When you mix multiple sources, region names and traffic multipliers can appear more than once. If an update fails, it can also be hard to tell which source caused the problem.
Groups track where each configuration comes from—that is, which subscription maintains a server. They don't automatically send browser traffic through one group and download traffic through another, nor do they enable automatic failover just because a group is named “Backup.” Traffic routing still depends on the system proxy, TUN, routing rules, and the outbound configuration currently in use.
Group by source
RecommendedUse a separate group for each subscription URL, then filter locations by name within each group. This makes update errors, expired URLs, and server changes easier to trace.
Best for: two or more subscriptions, including primary and backup sources
Import the same subscription by region
Import the same URL into multiple groups and filter each group by region. This creates separate views, but repeatedly fetches the same subscription and adds filter and update maintenance.
Best for: when you need fixed regional lists and don't mind maintaining duplicates
Search the list temporarily
Quickly find a name in the current list without changing what the subscription returns. Clear the search to check the full list, so hidden entries aren't mistaken for deleted ones.
Best for: finding a server temporarily without narrowing what gets imported
VMess and VLESS are protocols used in server configurations, not group types. Filtering subscription names with regex won't convert a protocol. Even if a name contains “VLESS,” open the server configuration to verify its actual protocol and transport settings.
Create subscription groups: one record per source
These steps use the common Chinese-language interface in the desktop version of v2rayN. Button locations and punctuation may vary slightly across versions. Look for fields such as subscription group settings, subscription URL, and alias filter; don't confuse the server editor with subscription settings.
-
Open group settings
From the main window, select “Subscription Groups” → “Subscription Group Settings,” then choose “Add” or “+” to create a subscription record. When organizing subscriptions for the first time, add one source and verify it works before adding the next.
-
Name the source
Use a label such as “Primary-A” or “Backup-B.” Enter the full subscription URL provided by the service in the address field. Don't paste an account login page or use a single-server share link as the subscription URL.
-
Leave the filter blank initially
For the first import, leave “Alias Regex Filter” blank and save the record. This lets you confirm that the URL works and its contents can be parsed, without subscription errors and filter mistakes happening at the same time.
-
Update the current group
Return to the main window and select the new group. From the “Subscription Groups” menu, choose the option corresponding to “Update Current Subscription (without proxy).” If the source isn't directly reachable on your current network, use the corresponding update-through-proxy option instead.
-
Check it, then add another group
Check the logs for a successful update and confirm that server configurations appear in the group. Then create “Backup-B” and update it separately. This makes errors easier to pinpoint than updating every source at once.
If the interface offers an automatic update interval, first confirm that manual updates work reliably, then set a reasonable frequency for each source. Don't repeatedly fetch subscriptions just to “stay up to date.” An update only retrieves configurations; it won't fix a remote server outage or change your account's traffic allowance or expiration date.
Write a filter regex: keep locations, then exclude notices
The “Alias Regex Filter” in subscription settings usually matches server aliases—the names shown in the list—and keeps entries that match. It doesn't determine a server's actual location or identify connection quality. If a name doesn't contain the target keyword, the server may be filtered out even if it's physically in the target region.
Start with a simple “or” expression, then add exclusions. “Hong Kong,” “Japan,” and “expiry” below are example name terms only; they don't refer to any real provider or indicate availability.
| Purpose | Regular expression | How it matches |
|---|---|---|
| Keep English location names | Hong Kong|Japan|Singapore | Keeps a name containing any one of these terms; it doesn't need to match the entire line. |
| Match English abbreviations, ignoring case | (?i)Hong Kong|Japan|Singapore|\b(HK|JP|SG)\b | Matches without case sensitivity; word boundaries around abbreviations help avoid matching parts of longer words. |
| Keep only specified prefixes | ^(Hong Kong|Japan)- | Matches only names that start with “Hong Kong-” or “Japan-”. |
| Exclude informational entries | ^(?!.*(remaining traffic|expiry|official website)).*$ | The line must not contain any of these terms; other names can still match. |
| Combine location matching and exclusions | ^(?!.*(remaining traffic|expiry|official website)).*(Hong Kong|Japan).*$ | First exclude informational entries, then require the name to contain Hong Kong or Japan. |
| means “or,” ^ marks the beginning, $ marks the end, and .* matches any number of characters. A negative lookahead, (?!...), defines an exclusion. These patterns are for v2rayN alias-filter fields that support the corresponding regex syntax; they won't work as-is in search boxes that accept only plain keywords.
- Enter the expression as-is: Don't wrap it in JavaScript-style slashes. Enter
Hong Kong|Japan, not/Hong Kong|Japan/. - Escape special characters: To match the literal text
[A], enter\[A\]; to match a period, enter\.. - Check the actual naming format:
\bHK\bmatches “HK-01” but may not match “HK01.” Check how the provider formats names before adding more complex conditions. - Avoid filtering out valid entries: Some legitimate server names may contain terms such as “expiry.” Check sample names before adding exclusions; don't assume the same list of terms applies to every source.
Test against fixed samples before updating a live subscription
A regex that doesn't produce an error isn't necessarily filtering as intended. Write down a few names that should be kept and excluded, then test them one by one. If you only know what you want to keep, but not what must never be removed by mistake, filter rules tend to grow more complicated over time.
Expression: ^(?!.*(remaining traffic|expiry|official website)).*(Hong Kong|Japan).*$
Hong Kong-01 → Keep
Japan-02 → Keep
Japan-backup → Keep
Singapore-03 → Exclude: not a target region
Hong Kong-expiry notice → Exclude: contains “expiry”
official website address → Exclude: contains “official website”
These counts are the expected results for this manually created sample set, not provider server counts or connection test data. Enter the expression in the target subscription's “Alias Regex Filter,” save, then update the current subscription. Saving the setting alone may not reprocess entries already imported.
- Clear any temporary search in the main window, then select the target subscription group to avoid combining two filters.
- After updating the current subscription, check that at least one expected server is still present and one expected name has been excluded.
- If the group unexpectedly becomes empty, first simplify the regex to
Hong Kong|Japan. If that still returns no results, clear the filter and update again. - Once you've confirmed the filter results, select a server and test its connection. A successful update doesn't confirm that a server is reachable.
Tell a failed subscription update from a failed server connection
Updating a subscription connects to the subscription server; connecting to a node reaches the proxy server. They may use different domains and ports. If the subscription downloads successfully but the node times out, check the node configuration, service status, and local network. If the node works but the subscription update fails, check the subscription URL and the network path used for the update.
Why did the update succeed but leave the group empty?
First clear the list search. Then go to “Subscription Groups” → “Subscription Group Settings,” clear the group's alias regex filter, save, and update again. If entries appear, the filter was the problem. If the group is still empty, check whether the returned content is parseable and whether the source actually returned any servers.
The direct update times out. How do I switch methods?
Select a known working server and start the core. Then, from the “Subscription Groups” menu, choose the option to update the current subscription through the proxy. If you don't have a working server, you can't bootstrap through a new subscription that hasn't imported successfully yet. First resolve access to the URL or contact the source provider.
The log says the local proxy connection was refused. What should I check?
Check that the core is running, then go to “Settings” → “Parameter Settings” and verify the local listening port. For example, if the log shows 127.0.0.1:10808, check that the corresponding port is listening and that the proxy protocol matches. Port 10808 is only an example; use your actual configuration.
Does the subscription URL open a login page in the browser?
Copy the dedicated subscription URL again from the provider's dashboard; don't use the console page URL. A login page, access verification page, or error message isn't importable server content, even if it opens successfully. Hide any tokens in the URL when sharing logs.
Why did deleted servers reappear after an update?
The subscription still returns those entries; deleting them locally doesn't change the source. To keep hiding names of a certain type, update that group's alias regex filter and fetch the subscription again. If you only want them out of sight temporarily, use list search instead of repeatedly deleting them.
Keep groups tidy: track each source and avoid duplicate maintenance
For day-to-day management, aim for clear sources, simple filters, and changes you can undo. Primary and backup groups can follow the same naming convention, but identical names don't mean two configurations are duplicates: a difference in domain, port, protocol, transport settings, or authentication details may indicate a separate endpoint.
- When a subscription URL changes, edit the existing group: If the source is the same and only the token or URL has changed, update the existing subscription record. Note the old label and filter expression first, then organize the old record after confirming the new URL works.
- Manage manual servers separately: Don't rely on editing a subscribed server to preserve custom settings; a later update may recreate or overwrite it. If you need to keep a custom configuration, maintain it separately from the subscription and protect its authentication details.
- Verify each group before updating them all: Use “Update Current Subscription” when setting up or troubleshooting. Once every source is stable, use “Update All Subscriptions” for routine updates. Follow up on log errors with the specific source that failed.
- Sorting isn't a speed test: Sorting by name only makes the list easier to browse. Connection tests, download performance, and access to a target website are different measures; a name containing “high speed” or “dedicated line” proves nothing on its own.
- Check settings again on other devices: This guide covers subscription groups in desktop v2rayN. Android v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Don't assume their menus, filter fields, or exported configuration formats exactly match the desktop version.
Keep the workflow simple: create a group for each source, leave the filter blank for the first import, test regex against real names, update the current group, then check the connection. This reduces list clutter and makes it easier to tell whether an update problem comes from the URL, the filter, or the server itself.