At a glance

Open Data in Shadowrocket and distinguish the traffic category, cumulative usage, and current transfer rate. Then compare readings taken over the same time window to check a connection. This guide is for users who already have a provider and subscription and want to verify server usage or troubleshoot routing. It covers what the server and app views attribute, how to record readings before a reset, and how to cross-check Data against connection logs.

1. Find Data and distinguish totals from transfer rates

From the Shadowrocket main screen, open Data and review the available statistics. In the server view, check the sent, received, and total figures for the relevant server. In the app view, first confirm that the list actually attributes traffic to apps; don’t mistake a destination domain or connection name for an app name. Available categories can vary by device and interface. The app-view guidance here applies only when that category is shown.

Cumulative traffic answers “How much data was transferred during this statistics window?” and is typically shown in KB, MB, or GB. A figure with a per-second unit answers “How fast is data moving right now?” These figures aren’t directly comparable. If the app is in the background, the transfer rate may drop to zero, but that doesn’t mean the accumulated byte count has disappeared.

2 directions
Check sent and received separately, not just the total
2 readings
Record once before and once after the test; compare the difference
1 window
Keep the start and end times fixed; don’t compare different periods

2. Traffic by server: Find which connection actually transferred data

The server view helps answer, “Did this test use the expected server?” It isn’t a provider’s remaining-quota page or a summary of all network usage on the device. A server name is just a way to identify an entry; entries with the same name, or entries recreated after a subscription update, may not share the same statistics identity. Before comparing them, check the server address, port, and group.

Selecting a server in Home doesn’t mean every connection must use it. When Global Routing is set to Config, connections follow the rules and policies in the active configuration. A rule may select another policy or use DIRECT. If the selected server’s counter doesn’t increase, first check the destination connection’s actual outbound route rather than assuming the statistics are broken.

What you seePossible explanationWhat to check next
The selected server’s traffic hasn’t increasedThe connection uses DIRECT, matches another policy, or the request was served from cacheCheck the rule and outbound route for this destination connection
Another server’s traffic is still increasingA policy selected it, or an existing long-lived connection is still activeEnd the existing test connection, then start a new one
Received traffic is much higher than sent trafficBrowsing, downloading, or streaming mainly generates received dataCompare the change over a fixed window; don’t treat this alone as a sign of a problem
A small amount of traffic increases while you’re not actively browsingBackground apps, syncing, keep-alive traffic, or checks may still be runningRecord an idle baseline first, then test one action at a time

Takeaway: Use new traffic to identify the server; don’t use historical totals to infer the current selection

Record the selected server’s sent and received values, then make one new request. Only changes within the test window are useful for comparison with that request’s outbound route.

3. Traffic by app: App attribution isn’t a device-wide usage bill

The app view shows traffic distribution for apps that can be identified, but it shouldn’t be treated as a system-wide list of app usage. Attribution depends on information exposed by the client and the system. Some connections may not have a clear app name and may appear as unidentified. An app missing from the list doesn’t mean it never connected to the network.

A single app may access multiple domains for sign-in, images, video, and analytics, with some connections routed through a proxy and others through DIRECT. Conversely, multiple apps may use the same domain. A domain list, app list, and server list show different dimensions; one domain record alone can’t establish the outbound route for an entire app.

  1. Close foreground apps that aren’t part of the test and pause obvious background downloads. Note the test start time.
  2. Open just one target app and perform one specific action, such as refreshing a page. Avoid playing media or syncing photos at the same time.
  3. Return to Data and check whether the app or an unidentified entry shows new traffic, then compare the change against the server reading.
  4. If there’s no app view, use the destination address, time, and outbound route in the connection log instead. Don’t treat a domain name as proof of app attribution.

4. Statistics periods and resets: Save a baseline before resetting

Don’t assume Data resets automatically each month, or that the start of a VPN session is the starting point for every statistic. If the interface labels a session, date range, or cumulative period, use that as the reference. If no start point is shown, establish a traceable baseline now. Disconnecting, quitting the app, or updating a subscription shouldn’t be treated as reliable ways to reset statistics.

To reset, look for Reset or the corresponding statistics-reset action on the Data page. If it’s in a page action menu, open the menu and check the confirmation prompt to see what will be affected. If the interface doesn’t offer a reset, there’s no need to delete a configuration or reinstall the app; subtract the readings before and after the test instead. Don’t confuse deleting a server, clearing connection logs, and resetting statistics.

  1. Save the old readings: Note the date, time, category, server identifier, and sent and received values. If you need a history, save a local record first.
  2. Pause test traffic: Stop downloads or playback. Check the triggers under Settings → On Demand to avoid unexpected automatic connections during the test, then restore the original settings afterward.
  3. Confirm the reset scope: Read the confirmation prompt and distinguish the current category, a single entry, and all statistics. Proceed only as the prompt describes; don’t assume every category will reset together.
  4. Check immediately: Return to the same category, verify the result, and record the new starting point. If a small amount appears right away, check for background traffic instead of resetting repeatedly.
Test window: start reading to end reading
Sent increase = ending sent value - starting sent value
Received increase = ending received value - starting received value
Total increase = sent increase + received increase

Use consistent units before calculating. This is an example for illustration only, not a measured result: if received traffic starts at 120 MB and ends at 128 MB, the increase during the window is 8 MB. If statistics were reset during that period, or an entry was replaced and its reading decreased, don’t subtract these values directly. Record a new baseline instead.

5. Verify routing with Data: Match rule logs to traffic changes

An increase in traffic proves only that data was transferred; it doesn’t by itself show which rule matched. A complete check requires confirming Global Routing, the active configuration, the rule matched by the destination connection, and its actual outbound route. Proxy, Direct, Config, and Scene in Global Routing aren’t statistics categories. Select Config to verify configuration rules; when using Scene, first check its actual settings.

Record baseline Confirm routing mode Make a new request Check the rule Compare traffic changes
  1. Go to Home → Global Routing and select Config. Then open Config and confirm which configuration file is active; don’t assume a file you edited is enabled.
  2. Record the current Data reading for the expected server, then end any existing test connection from the target app. Rule changes are usually easiest to verify with a new connection.
  3. Send a request to a known destination, then check the connection log for its destination domain or IP, matched rule, and actual outbound route. Use the location of the connection log in the current interface.
  4. Return to Data and compare the change for the same server. Also check whether another server’s traffic increased and rule out background traffic.
  5. For a controlled comparison, change one variable at a time—for example, change only the destination rule. Don’t change the server, network, and DNS settings together.

The rule structure below is illustrative and uses a reserved example domain; it doesn’t represent a usable service. Refer to PROXY by name only if the active configuration has an available policy named PROXY. If the existing configuration uses another policy name, keep it. Don’t replace the entire configuration just to test statistics.

DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

In this example, connections to example.com and its subdomains are sent to PROXY, while FINAL sends the rest to DIRECT. In an actual configuration, rules such as DOMAIN-SUFFIX, GEOIP, and IP-CIDR are evaluated in order; an earlier match may prevent later rules from being reached. Check the specific connection log rather than simply confirming that a keyword appears in the file.

Takeaway: Check the matched rule, actual outbound route, and traffic change together

If the outbound route matches expectations but the server’s traffic barely changes, extend the test and rule out caching first. If the outbound route is wrong, fix the rule or policy selection rather than using a reset to hide a configuration issue.

6. Data and provider usage differ: Align the basis before comparing

A provider’s usage statement may use a different billing period, upload and download calculation, multiplier, or refresh interval. Data reflects the local traffic the client can track. Protocol overhead, where traffic is measured, and unit conversions can also cause differences. Even when both show GB, their byte conversions and billing definitions may not match.

Plan limits or expiration details shown beside a subscription entry are provider-supplied data, if returned by your existing provider; they aren’t local Data counters. Updating a subscription doesn’t guarantee that Data will reset, and resetting Data won’t change usage already recorded by the provider. Keep and assess these two types of information separately.

7. FAQ: Zero readings, background traffic, and what a reset changes

Why is server traffic still zero when a webpage loads?

First check Home → Global Routing. If you’re using Direct, or the destination matches DIRECT in Config, it’s normal for the selected proxy server to show no increase. Then check whether the page was served from cache and inspect the connection log for a new request. Don’t repeatedly switch servers instead of checking the route.

Why is the old server’s traffic still increasing after I switched servers?

First end any active playback, download, or continuous sync, then run the test again. An existing long-lived connection may still use its original outbound route, or a policy in Config may continue to select the old server. Compare the connection start time and actual outbound route; once you know why, compare a new statistics window.

If an app name is missing, can I identify it by domain?

Not reliably. Run the target app on its own and watch for new connections in a short time window. Then check the destination domain, server traffic change, and any visible app attribution. If the app can’t be identified, leave it unknown; don’t assign a domain shared by multiple apps to just one of them.

Does resetting statistics restore the provider’s remaining traffic allowance?

No. Resetting statistics establishes a new local observation baseline; it doesn’t change billing records already held by your provider. To check your remaining plan allowance, use the account information provided by your provider and confirm the billing period, devices included, and refresh time.

Do I need to keep On Demand turned off after I stop browsing?

No. Check the triggers under Settings → On Demand, then look for background syncing and persistent connections. If you changed settings temporarily for the test, restore the original settings afterward. On Demand controls connection triggers; it doesn’t stop every app from accessing the network and isn’t a statistics-reset switch.