Shadowrocket Data Usage: How to Read Server and App Statistics

Learn how to read upload, download, and grouped usage in Data, compare server and app views, and understand resets and common discrepancies.

In this guide

Shadowrocket Data readings help you track data during a connection, but they should not be treated as your subscription balance or your system cellular usage. For users who have already added their own subscription or configuration, this guide explains how to check the measurement scope, compare server and app views, and use a controlled test to distinguish background traffic, rule-based routing, and unit differences.

1. Find Data and Check What It Measures

Open Settings → Data in Shadowrocket to view usage records. First check whether the page shows cumulative usage, usage during a connection, or details for a particular group. Use Home to confirm the connection status and selected server, and Config to check the active configuration. Record details from all three views; a number by itself does not tell you which connection or time period it covers.

The app can only track traffic it can observe. Connections outside the current processing path, traffic while the app is disconnected, and transfers handled through another system network path should not be assumed to be included in the same total. Groups and identifiable details are also limited by system capabilities and the fields shown on the current page. You cannot infer exact breakdowns for dimensions that are not displayed.

App request Tunnel receives data Rules are applied Connection goes outbound Data is counted

This flow explains where data is observed; it is not a billing flow. In Config mode, rules may send different requests through DIRECT or a proxy policy. A server's cumulative usage reflects only the traffic attributed to that server, not all network usage on the device during that period. See the Data feature guide for more details.

2. What Upload, Download, Speed, and Total Mean

Read upload and download from the device's perspective: requests, attachments, and backup data sent from the device count as uploads; web pages, video, and files received count as downloads. Browsing also involves uploads because request headers, acknowledgments, and other control data have to be sent. Nonzero upload usage does not mean a large file is being uploaded.

8 bit
1 byte; B and b are different units
1,000,000 B
1 MB, decimal unit
1,048,576 B
1 MiB, binary unit

Cumulative usage and real-time speed are not directly comparable. MB or GB measures data volume; B/s or MB/s measures data per second; Mbps usually means megabits per second. For example, 8 Mbps is equivalent to 1 MB/s by unit conversion alone, but actual download speeds also depend on network overhead, remote response times, and local processing. Do not estimate total usage by multiplying a momentary peak speed by the entire connection duration.

ReadingWhat it can tell youWhat you cannot infer directly
Cumulative uploadHow much data was sent within the measurement scopeWhich complete files were sent
Cumulative downloadHow much data was received within the measurement scopeHow many files the user actually saved
Real-time speedWhether a transfer is active nowThe average speed over the entire period
Server groupHow much data was attributed to an outbound serverThe device's total usage or the server-side billed amount

If the total is calculated by adding uploads and downloads, use figures from the same measurement period and group. Rounding may make the displayed values add up to slightly more or less than the displayed total. Check the units and decimal precision before assuming data is missing.

3. Server and App Views Measure Different Things

The server view shows which proxy outbound a connection ultimately uses. The app view shows which app a request came from. They do not map one-to-one: an app can connect to multiple domains, and rules can route those connections through different policies; a single server can also carry requests from multiple apps.

Server view

What it tracks
Traffic attributed to a server entry
Where to check
The selected server on Home and the Data group
For a valid comparison
Use the same measurement period and connection conditions
Common use
Check which group's reading increases after switching outbounds

A server name identifies an entry; it does not automatically define the server-side account's billing scope.

App view

What it tracks
Connections that can be identified and attributed to an app
Where to check
The grouping fields actually available on the current Data page
Identification limits
A domain or IP address alone does not prove which app made a connection
Useful cross-check
Use one app at a time and compare the readings before and after

If the page does not show an app attribution field, do not describe domain groups as precise per-app usage.

On iPhone and iPad, do not assume a VPN client can identify every connection's originating app. If Data shows a server, destination address, or domain, interpret the reading according to that field. To check cellular usage attributed to individual apps by the system, open Settings → Cellular. That figure covers cellular usage only, not total Wi-Fi usage for the same period, and it is not automatically synchronized with the app's records.

For example, a video app may connect to media, login, and analytics domains; another app may use the same public content delivery address. If a domain's usage increases by 20 MB, that only shows that connections related to the destination transferred more data. It does not prove that a particular app used all 20 MB. Background refresh can also generate connections while an app is not open.

Takeaway: Attribute increases before estimating app usage

Pause other active transfers, record a baseline, use just one target app, then compare the change in Data. Calling the result “the increase during this test” is more reliable than labeling a domain's total usage as an app's total usage.

4. How Rule-Based Routing Changes Server Readings

Your Home → Global Routing selection affects how traffic is handled. Config applies the rules in the active configuration; Proxy routes traffic through a proxy; Direct sends traffic directly. With Scene, check the selected scene and its conditions rather than treating it as a fixed outbound. When troubleshooting usage, record the current routing mode instead of noting only whether the connection is on.

The rules below illustrate why readings may differ; they are not a recommendation to replace your current configuration. PROXY must match a policy that is actually available in the configuration. Domain and IP rules match differently, rules are checked from top to bottom, and FINAL handles connections that did not match an earlier rule.

DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

If the Data total increases while a server group's reading barely changes, check the matching rules and actual outbound first instead of repeatedly updating the subscription. An update may change server entries or names, but that does not prove that current requests have switched to a new entry. Existing connections may continue using the outbound selected when they were established, so use newly initiated requests for comparisons.

5. Run a Repeatable Usage Check

The most useful check is to keep the time window, network, server, and Global Routing setting constant, then compare the increase. You do not need to reset the counters: keeping the before-and-after readings usually makes the test easier to verify. If you do reset them, save the readings first and confirm what the current Data page's clear action affects. Clearing connection logs is not the same as resetting cumulative usage.

  1. Record a baseline. Note the start time, Wi-Fi or cellular network, selected server on Home, Global Routing setting, and upload and download readings for the relevant Data group.
  2. Reduce background activity. Pause file sync, video playback, and other active downloads. Check Settings → On Demand to make sure a network change will not trigger an unexpected reconnection during the test.
  3. Perform one action. Open a page that has not already loaded in one app, or download a test file you already have access to. Prefer a resource with a known size and confirm that data was actually transferred.
  4. Wait for the readings to update. When the action is complete, return to Data and wait for the page to refresh, then record the same readings. Do not treat values shown before a transfer has finished as final.
  5. Calculate the increase. Subtract the starting values from the ending values for uploads and downloads separately. For a repeat test, record a new baseline and keep the other conditions the same.
ItemStarting valueEnding valueChange in this test
Upload3.0 MB3.4 MB0.4 MB
Download120.0 MB132.5 MB12.5 MB
Total123.0 MB135.9 MB12.9 MB

This table illustrates the calculation; it does not show measured results or a fixed overhead ratio. If a test file is listed as 10 MB but the download increase is 12.5 MB, first check whether the page loaded other resources, the transfer was retried, or other background requests occurred. Different measurement points may include protocol overhead differently, so do not attribute the entire difference to a single protocol.

6. Why Resets, Disconnections, and Server-Side Usage May Not Match

Local Data readings, system cellular statistics, and usage reported by an existing service come from different observation points. A server may use its own measurement period, method for combining uploads and downloads, or billing rules. The app may track data as connections are processed, while system cellular statistics cover cellular traffic only. Align the start and end times and units before comparing—especially avoid comparing a one-hour local increase with a full month's account total.

Why don't the numbers reset when I disconnect and reconnect?

Disconnecting and clearing cumulative records are separate actions. First check the measurement scope shown on the page. For a new test, you can use the current reading as your baseline. Check that a reading has reset only after using the reset action for that specific statistic.

Why did the server groups change after I updated my subscription?

Return to Home and check the entry names and currently selected server, then compare them with your earlier records. An update may rename, add, or remove entries or change their identifiers. Do not assume readings for old and new entries form one continuous series.

Why is my download reading increasing when I'm not using my phone?

Pause background sync and any media playback, then check whether Settings → On Demand is keeping the connection active. Record the change over a minute and review the connection records for that period. An app does not have to be in the foreground to make network requests.

The server reports more usage than Data. Which reading should I trust?

First align the measurement period and units, and account for usage from other devices on the account. Then check the billing terms for the service you already use. Data is for local troubleshooting; account balances follow the service's own measurement rules, so the two figures are not expected to match byte for byte.

If a significant difference remains after these checks, keep a record of the test time, network type, routing mode, before-and-after readings, and actual outbound, then run another test changing one variable at a time. Do not share subscription links, UUIDs, or server passwords that contain credentials. This guide covers how to use the app, not which services to choose; a one-time app purchase is separate from a service plan.

Verify the App Store listingPurchase and restore guide