At a glance

Shadowrocket’s Data page shows network usage recorded by the client; it is not a carrier bill. This guide is for users who want to trace traffic, check server usage, or review background requests. First distinguish uploads from downloads, then check what is being counted, when counting began, and which network was used. App-based categories also depend on what the client can identify, so they are not a system-wide per-app billing record.

What upload, download, and speed mean in Data

Open the Data statistics page in Shadowrocket. The location and grouping may vary with the current interface, so follow the labels shown on your device. First distinguish cumulative data from live transfer speed: cumulative figures show how much has been transferred, while speed shows how fast data is moving right now. When page loading stops, the speed may drop close to zero, but the cumulative total does not automatically reset.

Cumulative data

Upload
Data sent from your device to the network.
Download
Data received by your device from the network.
Total
The combined total of uploads and downloads for the same item and time range.
Common units
KB, MB, GB, or KiB, MiB, GiB; use the units shown on the page.

Loading a web page also sends requests; uploading a file also receives responses.

Live transfer speed

Direction
Upload and Download directions are still relative to your device.
Units
A reading with “/s” is a transfer rate per second, not cumulative usage.
Conversion
1 MiB = 1,048,576 bytes; 1 MB = 1,000,000 bytes.
Bits and bytes
1 B = 8 bits; MB/s and Mbps are not interchangeable.

Convert to the same units before comparing client, system, and provider records.

If the same item shows Upload at 2 MiB and Download at 10 MiB, the combined total is 12 MiB. This is an example of how to read the figures, not a performance test. The page may round individual values before displaying them, so adding the displayed decimals may differ slightly from the total’s last digit.

By server: see which proxy exit handled the traffic

Server grouping shows which proxy exit traffic passed through, not the name of the app that initiated a request. This assumes you already have your own provider and connection details. An increase for a server entry means traffic within the selected scope was attributed to that exit; it does not mean all network activity on the device passed through it.

App request Tunnel receives traffic Policy decision Exit assigned Counter updated

Check Home → Global Routing. Proxy, Direct, Config, and Scene are different routing modes, not four types of traffic counters. With Config, connections are matched against rules in the active configuration; the server selected on Home does not necessarily handle every connection. A Scene’s behavior depends on its settings, so its name alone does not reveal the exit used.

For example, if rules send some domains to DIRECT and other connections through a proxy exit, the traffic should not all be attributed to one proxy server entry. If the page lists direct traffic separately, read it separately from proxy entries. If a server is renamed or its details are imported again, don’t assume the new entry represents the same statistics object as the old one based on its displayed name alone.

By app: read the categories, not as system-wide usage

The app view groups connections the client can identify into relevant categories. Distinguish between categorizing traffic based on connection information and a per-app byte count supplied directly by the system. On iPhone and iPad, don’t assume every connection inside the tunnel has a reliable source app identity. You also can’t infer app-level data that the current page doesn’t show from a server name.

Domains, destination addresses, and connection characteristics can help identify what is being accessed, but they don’t always point to one specific app. Several apps may use the same content delivery domain, and one app may contact separate domains for sign-in, images, video, and analytics. If a record is unknown or uncategorized, leave it that way rather than assigning it to the last app you opened.

ViewQuestions it can answerConclusions you can’t draw from it alone
By serverWhich exits carried traffic within the selected scope?Which specific app used all the data.
By appWhich app categories account for most of the identifiable connections?That every connection was identified accurately and that the view covers all system network activity.
System cellular usageHow much cellular data did the system record during the current period?That all of this data used the same proxy exit.

How to check: compare the change from a single action

Open just one app you want to monitor. Note the readings before and after one action, then compare the difference with the destination domain and actual policy in the connection record. First verify that the traffic was categorized as expected for that action; then use the results to assess longer-term patterns.

When counters reset: identify the starting point first

Don’t assume that disconnecting the VPN, quitting the app, or crossing midnight resets all Data records. Current connection counts, cumulative statistics, and connection logs may have different lifecycles. A live speed reading dropping to zero after disconnecting does not mean historical totals were deleted; clearing logs does not necessarily reset all traffic counters.

  1. In Data, identify the group you’re viewing. Note the time, item name, Upload and Download values, and whether the page specifies a statistics period.
  2. If the current page offers Reset or a clear-statistics option, read the confirmation prompt and check its scope first. Reset only the statistics you’re testing; clearing records is not a routine requirement.
  3. After the action, return to the same group and check whether the target counter has reset. If other groups are unchanged, that does not mean the action failed.
  4. If there’s no clear reset option, calculate usage for a period by subtracting the starting reading from the ending reading. There’s no need to delete your configuration or reinstall the app.
  5. Keep the start and end times for every comparison. Track the system’s cellular period, the client’s cumulative period, and your provider’s billing period separately.

For example, if Download starts at 120 MiB and ends at 132 MiB, the download increase for that interval is 12 MiB. If the counter resets in between, the ending value will be lower than the starting value and the difference is no longer meaningful; establish a new baseline. Check the current page’s information and your own observations to determine whether a type of cumulative record is saved persistently. Don’t assume one restart’s behavior applies to every statistic.

Why Data differs from carrier and provider records

These three figures answer different questions. Data records traffic observed by the client; your carrier records usage for billing on its network; a provider you already use may count service usage according to its own rules. A comparison is meaningful only when the network type, time range, upload/download direction, and units match.

On iPhone and iPad, system cellular usage is usually available under Settings → Cellular. The exact label varies by system language and region. The current period shown there may not automatically match your billing month. Before manually resetting system statistics, save the existing figures; a system reset does not also reset Shadowrocket’s Data.

Check traffic with one controlled action

You don’t need to run repeated speed tests while troubleshooting. A speed test itself generates substantial traffic and can obscure requests from the app you’re monitoring. The steps below verify categorization and changes in usage; they don’t measure protocol performance and don’t require changing server ports or existing connection settings.

  1. Keep the network consistent: Choose either Wi-Fi or cellular and stay on it throughout the test. Pause other large transfers and note the time.
  2. Keep the routing consistent: Note the current Home → Global Routing mode and active configuration. If you’re using Config, confirm which policy the test destination is expected to match.
  3. Record a baseline: Note the upload and download readings for the overview, target server, and any available app groups. You don’t need to reset them first.
  4. Perform one action: Load one specific page in the app you’re monitoring, then wait for its requests to finish. Avoid repeated refreshes or playing media at the same time.
  5. Compare the readings: Return to the same group, wait for the interface to refresh, and subtract the starting value from the ending value. Check the connection record to confirm the destination and exit.
  6. Check automatic reconnection: If you need to pause monitoring, check Settings → On Demand. On-demand connection rules may reconnect automatically, so one manual disconnect may not be enough.

If the increase is smaller the second time you open a page, consider local caching before concluding that traffic wasn’t counted. If the total still rises slightly with no foreground activity, check for background refreshes, notification connections, name resolution, or keepalives. A small, steady increase alone doesn’t indicate an unusual download.

Common questions about readings and what to check

The selected server stays at zero. Does that mean the connection failed?

First check Home → Global Routing, then verify the actual policy in the connection record. With Config, a request may match DIRECT or use another exit. Test with a request known to use the target policy; don’t judge connection success from a zero server counter alone.

The app totals add up to less than the overall total. Where did the rest go?

First confirm that the groups cover the same cumulative period, then check for uncategorized records and other pages. App identification has limits, and some connections can’t be reliably assigned. Don’t assume the difference means a billing error.

The numbers remain after disconnecting. How can I see today’s usage only?

Historical totals don’t necessarily disappear when the speed reading returns to zero. If the page has no filter for today, note the readings at the start and end of the day and calculate the difference. Before using a reset option, check its scope in the prompt and save the old readings.

Why doesn’t the Data increase match the size of a downloaded file?

File size is only the size of the content. Request and response headers, retries, and other connections during the same period can affect the reading; a cache hit can reduce the amount actually transferred. Keep the network consistent, pause other transfers, and compare the readings again to identify the difference.

To analyze Data, first align the time range and units, then verify the actual policy, and finally review app categorization and billing methods. If you need to share troubleshooting details, include the start and end readings and describe what happened. Before sharing connection records, hide server addresses, authentication details, and the full link to any subscription you already use.