v2rayN Subscription Groups and Server Filters: Manage Multiple Proxy Subscriptions

Learn how to organize v2rayN subscriptions into groups, filter server names with regex, and keep each group tidy when updating.

At a glance

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

Recommended

Use 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

PurposeRegular expressionHow it matches
Keep English location namesHong Kong|Japan|SingaporeKeeps 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)\bMatches 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.

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”
6 entries
Manual test samples above
3 entries
Expected matches for the combined expression
10808
Example local proxy port for troubleshooting; not a fixed value

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.

  1. Clear any temporary search in the main window, then select the target subscription group to avoid combining two filters.
  2. After updating the current subscription, check that at least one expected server is still present and one expected name has been excluded.
  3. 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.
  4. 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.

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.

Download v2rayN