v2rayN Subscription Groups and Server Filtering: Organize Multiple Subscriptions

Organize multiple v2rayN subscriptions into groups, filter servers by keyword, and set update intervals to keep your server list manageable.

At a glance

For desktop users who can already import subscriptions into v2rayN but have servers from multiple sources mixed together. First separate subscription sources from server use cases, then distinguish list searches from update-time filtering, and finally set an update schedule for each source. The steps focus on v2rayN’s subscription group settings; there’s no need to add group fields to the core JSON. Menu labels may vary by version, so this guide also explains what the settings mean and how to verify them.

1. Subscription Groups, Server Lists, and Routing Rules: What’s the Difference?

A subscription URL fetches a set of servers. A subscription group tracks the source and its update options, while the server list displays the imported connections. Renaming a group from “Source A” to “Everyday” won’t change any server address, port, protocol, or transport—and it won’t automatically route any websites through that group.

Register subscription source Set up groups Update and filter Filter the list Select a server

Routing is a separate layer. The core matches rules based on domains, IP addresses, ports, and other conditions, then selects an outbound. Subscription groups are application-level data that v2rayN uses to manage servers. Don’t put a group name directly in routing.rules[].outboundTag: that field references an outbound tag in the generated configuration, not a group name shown in the interface.

VMess and VLESS are connection protocols, not source labels. A subscription can contain multiple protocols; whether they work also depends on whether the selected core can parse the server fields. Organize sources first, then troubleshoot protocol compatibility to avoid mistaking an import issue for a connection problem.

2. Create a Group for Each Subscription Source

In the v2rayN main window, open “Subscription Group” → “Subscription Group Settings,” add a record, and enter a note or alias along with the subscription URL. Some versions label this entry “Subscription Settings.” Look for the window with fields for the URL, update enablement, and update interval. When adding subscriptions, register one source first and confirm it updates successfully before adding another. That makes it easier to identify the source of any errors.

  1. Create a “Source A - Everyday” group and paste the full subscription URL from Source A into the URL field. Check for leading or trailing spaces, line breaks, or unintended punctuation.
  2. Leave the filter field blank for now. Save the group and update that subscription. If the interface only offers an option to update all subscriptions, first check whether updates are enabled for the other groups.
  3. Check the update log to confirm the request succeeded and servers were parsed. Then open the group and review server names, protocols, and ports.
  4. Create a separate record for Source B; don’t combine two sources in one URL field. Two groups with different names but the same URL won’t become separate upstream sources automatically.
  5. Note each group’s purpose and update interval. Manage manually added, long-term configurations in a separate local group to keep them out of the subscription update replacement scope.

The setup below is a suggested organization plan, not a software default. Enter intervals in minutes if that’s the unit used in the settings window; if the current interface uses another unit, convert the values first. Group names are for local reference only, and the examples don’t include real subscription URLs.

Source A - Everyday

Number of sources
1 subscription URL
Enable updates
On
Update interval
1,440 minutes
Initial filter
Leave blank until the full import is confirmed

For everyday use; save a filter only after validating the rule.

Source B - Backup

Number of sources
1 subscription URL
Enable updates
On
Update interval
2,880 minutes
Naming strategy
Keep upstream server names

Use as a backup source; check the update results and connection status before using it.

Subscription URLs often contain access tokens, so treat them like credentials. Remove the full URL and any sensitive parameters before sharing screenshots, logs, or configuration backups. Don’t paste URLs into public online regex testers or subscription converters just to test a filter expression.

3. Use Keyword Search and Subscription Filters for Different Tasks

To find a server temporarily, use the search or filter box in the main window’s server list. Select the target group, then enter a short term that appears in the server name, such as Hong Kong or HK. If there are no results, clear the search and check the original names before deleting a group. Search scope, case sensitivity, and searchable columns vary by version, so don’t assume the box supports regular expressions.

ActionWhen it takes effectUse caseHow to undo
Server list searchAs you typeTemporarily find servers whose names include a regionClear the search and select the group again
Subscription name filterWhen the subscription is fetched and processed againLimit which servers are imported long-termClear the filter field, then update the subscription
Delete a server manuallyAfter confirming deletionRemove local entries you’re sure you no longer needSubscription servers may reappear on the next update

If you want to keep only certain regions long-term, return to Subscription Group Settings and look for a field labeled “Filter” or “Regex Filter.” Confirm whether it keeps matching entries or excludes them; don’t assume the same behavior across different versions or fields. After saving, update the subscription again. Switching groups alone won’t reapply update-time filtering to already imported servers.

Regular Expressions: Test with Positive Matches First

If the field explicitly supports regex, use the expression below to match names containing “Hong Kong” or the standalone letter code “HK.” It ignores letter case. The letter boundaries help prevent matching those letters inside unrelated words. If the upstream uses names like HK01, this expression will match those too, since digits aren’t included in the English-letter boundaries.

(?i)(香港|(?<![A-Za-z])HK(?![A-Za-z]))

Choose one name that should match and one that should be excluded, then check the results after updating. If the results are reversed, check whether the field is an exclusion filter. If everything disappears, clear the rule and update again to restore the full list. Don’t pile on several complex conditions before you’ve isolated the problem.

A reliable approach: search by name first, then move the condition into subscription filtering

Only save conditions you’ll use repeatedly. If a temporary search finds the server but subscription filtering doesn’t, check the match behavior and update log before assuming the upstream removed it.

4. Set Update Intervals by Source, Not by Server Count

Automatic updates fetch subscription content again; they don’t run scheduled speed tests, and a shorter interval won’t improve connection speed. As a starting schedule, update everyday sources once a day and backup sources once every two days. Follow the provider’s minimum request interval if one is specified. These figures are time conversions for the plan in this guide, not performance measurements or software defaults.

1440
Minutes: everyday source update interval
2880
Minutes: backup source update interval
24
Hours: equivalent to 1,440 minutes

In Subscription Group Settings, check “Enable updates” and “Automatic update interval” for each group. Don’t guess what a blank value or 0 means; if you need to disable scheduled updates, use an explicit toggle when available. Scheduled updates usually depend on v2rayN running, so don’t assume subscriptions continue to be fetched in the background while the client is closed.

Also distinguish between “Update subscription” and “Update subscription through proxy.” The latter requires a working proxy connection; if the active server is down, the same server may block the update request. Choose an update method that suits your local network, but don’t keep switching network settings before checking the URL and request path.

5. Troubleshoot Duplicates, Empty Lists, and Update Failures

A shorter server list doesn’t necessarily mean the provider has removed servers, and a longer one doesn’t automatically mean an update went wrong. Clear the list search first, select the right group, then check the subscription update log. Logs may contain sensitive URLs; note the error rather than publishing the full raw output.

SymptomCheck firstNext step
No servers in a groupIs a list search still active? Is the name filter too restrictive?Clear the search, remove the filter, and update that source again
Update returns 401 or 403Has the URL token expired? Have account permissions or access policies changed?Check the latest URL and account status provided by the service
Update returns 429Have you been updating manually too often, or are multiple devices making requests at once?Stop retrying, wait as directed by the upstream, and increase the interval
Request succeeds, but no servers are parsedIs the response a login page, notice page, or unsupported format?Check the subscription format, client parsing log, and intended use of the URL
Duplicate server namesWas the subscription added twice? Do the same-named servers belong to different sources?Compare groups first, then check the connection parameters
Server imports but won’t connectCore support, server status, and transport settingsTroubleshoot using the connection log instead of changing group names

Don’t identify duplicates by display name alone. Two servers named “Hong Kong-01” may use different addresses, ports, user IDs, or transport paths; different ports on the same address may also point to different services. Conversely, an upstream may assign multiple labels to the same connection. Delete a duplicate only after confirming that its connection parameters and purpose are the same.

When removing an old source, distinguish between “Remove subscription record” and “Delete servers in group.” Read the confirmation dialog to see what will actually be removed. Switch to a working active server first, then delete only the data you no longer need. Don’t clear all servers just to hide one source.

6. Post-Organization Checklist

After creating groups, run a full update to verify the maintenance workflow instead of checking only whether the list looks tidy. You should be able to trace each source, undo filters, understand update logs, and switch servers without repeatedly changing subscription settings.

  1. Source check: Each subscription record has a clear, distinguishable source name, and sensitive URLs aren’t visible in public screenshots.
  2. Filter check: Keep a known matching name for comparison, and confirm that a name that shouldn’t match hasn’t been included by mistake.
  3. Update check: A manual update completes, update settings and intervals match each group’s purpose, and the log shows no persistent request errors.
  4. Connection check: Select an imported server, check the system proxy or proxy mode you use, and verify the connection in an actual application.
  5. Recovery check: Know how to clear searches, remove filters, and update again. Back up any local configurations you need before making changes.

For ongoing maintenance, adjust a group only when its source, server names, or update status changes. Handle protocol, DNS, and routing issues in their respective configuration layers. For more details on settings, see the Complete Configuration Guide. For initial system proxy setup and importing servers, follow the Quick Start Guide.

Download v2rayN