Shadowrocket Data Usage Guide: Server vs. App Statistics

Learn how Shadowrocket’s Data tab groups traffic by server or app, what each figure means, when counters reset, and how to use traffic changes to check whether routing works as expected.

At a glance

Use Data to track traffic changes and attribution—not as a provider’s billing statement or a log of rule matches. This guide assumes you already have service-provider details and a subscription. It covers server and app views, rate and total usage, how to record a baseline before resetting counters, and how to verify routing with a controlled request. Details vary by platform, so use the fields available in your current Data view.

What Data tracks: traffic attribution vs. evidence of rule matches

Shadowrocket’s Data tab shows traffic recorded by the client. It is not a complete record of all network activity on your device: connections that do not pass through the client cannot be assessed from these figures. Whether app names are recognized, and how much detail is shown, depends on the platform and current implementation. If an app does not appear by name, that does not mean it has not used the network.

The server view answers which server carried the traffic; the app view shows which identifiable app the traffic is attributed to. These are two ways to group the same network activity, not separate usage totals to add together. Nor does every row in the app list mean the traffic went through a proxy. Check routing and connection records to determine the actual path.

App request Client takes over Rule match Outbound connection Traffic attribution

This flow illustrates a troubleshooting sequence; it does not mean every counter in the interface measures traffic at the same point. Statistics may show that a server’s traffic increased during a test, but they cannot, by themselves, prove that a specific domain matched a particular rule. To verify that, check request or connection records for the same time period and compare the destination, policy, and actual outbound route.

Upload, download, and total usage: check the units, then compare changes

Upload is data sent from your device; download is data received by it. Loading a web page usually involves both an uploaded request and a downloaded response. Streaming content can also generate uploads, such as acknowledgments and progress reports. So upload traffic while you are only watching content is not, by itself, evidence of a problem. Rate describes activity around a sampling moment; total usage is the amount transferred over a reporting period.

8 bit
Equals 1 byte; distinguish bit/s from B/s
2 readings
Record the total before and after the test, then compare the difference
60 seconds
An optional fixed observation window, not the product’s refresh interval

For example, suppose the same statistic shows 120 MB downloaded before a test and 138 MB afterward. The displayed increase for that window is 18 MB. This is a calculation example, not a measured result or a guarantee of a web page’s file size. If the interface rounds units, small amounts of traffic may not show up right away. Wait for a refresh or extend the observation window rather than concluding that the connection did not use that route.

ReadingWhat it tells youWhat it does not prove
Current rate, such as KB/sWhether traffic was active during the sampling windowHow much traffic the whole session has used
Total upload or download, such as MBTotal usage within the same reporting scopeThe real-time speed of the current connection
A server’s total usage increaseThe traffic added to that statistic during the windowThat all traffic came from the app currently in the foreground
An app’s total usage increaseA change in traffic attributed to that appThat every request matched the same rule

Server vs. app views: keep the test subject consistent

For a server-side check, note which server is selected in Home, then check whether the active configuration and its policies in Config could select another server. Changing the selection in Home does not necessarily move every existing connection immediately; policy choices and connection reuse can affect the actual outbound route. If a server is renamed, a subscription is updated, or an entry is replaced, do not combine old and new totals into one continuous record just because their names look similar.

For an app-side check, try to have just one target app make a new network request. Multiple browser tabs, background sync, and in-app preloading can all add noise. If Data on your platform cannot show the app attribution you need, cross-check the time window against connection records for the target domain instead. Do not assign an unidentified entry to an app without evidence.

Server view: what to record

Entry
The server statistics view in Data
Test subject
The server selected in Home and the one actually used by the policy
How to compare
For the same entry, subtract the pre-test total from the post-test total
Supporting evidence
The actual outbound route in connection records from the same period

Keep the server, configuration, and network conditions consistent, then compare the increase from one test.

App view: what to record

Entry
The app statistics view available in Data
Test subject
One identifiable foreground app
Potential sources of noise
Background sync, cached content, preloading, and other tabs
Supporting evidence
Test time, destination, and matching policy

App attribution and proxy routing are different questions; one cannot stand in for the other.

When counters reset: use an explicit reset or a recorded baseline

Do not assume Data resets at midnight, whenever you reconnect, or every time you restart the app. Nor should you assume its counters follow your provider’s billing cycle. The retention period may differ between statistics. If the interface does not say when a counter was reset, treat that time as unknown—do not call the current total “today’s usage.”

  1. Record a baseline first. Note the time, platform, active configuration, server name, and the totals you plan to track. If you need to keep a history, a written record is enough; you do not need to delete anything to run a test.
  2. Check what the reset affects. If the current Data view offers a clear or reset action, read its instructions or confirmation prompt first. Check whether it applies to the current entry or all statistics. Button names vary by interface.
  3. Reset only if needed. If you choose to reset, do so before a controlled test and wait for the interface to refresh. Confirm that the intended reading changed. Do not reset midway through a test, or the before-and-after figures will no longer share a baseline.
  4. Use a difference if there is no clear reset option. You do not need to delete a server or configuration, or reinstall the app, to start from zero. For troubleshooting, subtracting the starting value from the ending value is usually more useful.

Check routing: verify a request in Config and connection records

To check a rule, first confirm that Home → Global Routing is set to Config. Proxy, Direct, and Config have different routing behavior, so tests under the first two modes do not prove that custom rules are working. If you use Scene, also check which configuration and policies the active scene uses. Then confirm in Config which configuration is in use—not just that a file has been imported.

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

This diagram shows the order of operations only: rules are evaluated from top to bottom, the matched rule’s policy is applied, and FINAL is the fallback. PROXY must refer to a valid proxy policy in the configuration. example.com is a sample domain, not a test route. IP-CIDR and GEOIP match IP-based conditions; they are not domain categories. Check the destination’s resolution and connection records to confirm the actual result.

  1. Stop any large file transfers and media playback in progress, then note the starting values of the relevant Data statistics. Pausing other activity can reduce noise, but do not assume background traffic has stopped completely.
  2. Make a new request in the target app and note the time and full destination domain. Choose an action you know will access the network; simply opening a cached page may not generate a request.
  3. Wait for the request to finish, return to Data, and record the ending value for the same statistic. If you use a fixed window, observe for 60 seconds each time rather than comparing a few seconds in one test with several minutes in another.
  4. Check request or connection records from the same period and verify the destination domain, matching policy, and actual outbound route. If the rule should use DIRECT, the proxy server’s total does not have to increase for that request.
  5. For a comparison test, change just one setting at a time and start a new connection. If needed, end the old connection first to avoid confusion from connection reuse.

Takeaway: use connection records for attribution and Data for traffic changes

If a server’s total increases but you cannot find a record showing the target request used that outbound route, first rule out background activity. If the records show that the destination used DIRECT, do not change the rules just because the proxy counter did not increase.

Common Data questions: billing differences, no increase, and changes after disconnecting

Why doesn’t Data match my provider’s usage dashboard?

First align the start and end times, then check whether the provider’s dashboard includes other devices, upload traffic, or a traffic multiplier. The client and provider may count at different points, and may handle protocol overhead and retransmissions differently. Compare readings for the same time window and check your provider’s billing terms; do not simply subtract one side’s total from the other’s.

Why does a page load without an increase in server traffic?

First check whether the page loaded from cache, then review Home → Global Routing and the active rules in Config. The destination may use DIRECT, or another policy may select a different server. Make a new request that you know will access the network and check the connection records. For small amounts of traffic, allow for display precision and refresh delays.

Why does an app’s traffic keep increasing after I switch to another app?

Stop downloads, playback, or sync tasks in that app, then observe a fixed time window. Moving an app to the background does not end all its connections, and some readings may refresh later. If your platform cannot reliably show app attribution, check the destination domain and request time instead of relying on the app row to identify background activity.

Is it a statistics error if traffic appears after disconnecting?

First check the connection status in Home, then see whether Settings → On Demand has conditions that could trigger a reconnection. If the connection is still disconnected, check whether the number you are comparing is a total or a rate, and wait for a refresh. If the cause is still unclear, note the disconnect time and when the new connection appeared, then investigate in chronological order instead of drawing conclusions from a single change.

Finally, Data shows recorded transfer activity; it cannot explain on its own why a web page is slow. Check server connectivity, DNS, destination response time, and network quality separately. If a connection fails, see Troubleshooting. Change one setting at a time, then repeat the same test over the same window so the readings are comparable.

Shadowrocket downloads and first-time setup for all platforms

The iPhone and iPad app is a one-time $2.99 purchase on the App Store. The Mac (Apple Silicon and Intel), Windows, Android, and Linux versions are free. Check the App Store listing for iPhone and iPad system requirements. Buying the app does not include a service plan; use your existing provider’s details to configure it. Install and complete the initial setup before recording a traffic baseline.

Download Shadowrocket for all platforms