September 12, 2026 · Advanced · About 8 min read

How to Read Shadowrocket Data Usage: Traffic by Server and App

Learn what Shadowrocket’s Data upload and download figures mean, how usage is grouped by server or app, and why client totals may differ from your provider’s usage.

At a glance

This guide is for users who already have their own provider settings and want to understand where their traffic goes. First, distinguish cumulative data from real-time speed. Then check changes by server and app activity, and compare them with your provider’s dashboard over the same time window. Data shows traffic recorded by the client; it is not your plan balance or a complete record of everything your device uses.

1. What upload, download, and total mean in Data

Shadowrocket’s Data screen shows traffic recorded by the client. Upload and download are measured from your device’s perspective: data sent from your device is uploaded, and data received by your device is downloaded. Opening a webpage sends requests, acknowledgments, and other data, so browsing does not mean upload usage must be zero. Uploading a photo also involves receiving responses from the server.

Always read a figure together with its unit. MB and GB measure data volume; KB/s and MB/s measure transfer speed over time. An active connection does not mean data is being transferred every second, and a brief drop to zero does not by itself indicate a connection problem. The fields, groupings, and retention behavior depend on what the app actually shows on your device.

How to interpret traffic figures
FigureWhat it tells youWhat it does not tell you by itself
UploadThe amount of data sent from your deviceThe net size of files you deliberately uploaded
DownloadThe amount of data received by your deviceThe size of files ultimately saved to Photos or Files
TotalUpload and download combined for the selected scopeYour remaining provider plan allowance
A value followed by /sTransfer speed during the current sampling windowYour usage so far this month

Do not assume every figure starts accumulating on the first day of the month, or that disconnecting always resets it. First check whether the screen shows usage for the current connection or retained cumulative records. If no start time is shown, compare readings before and after a test instead of guessing the reporting period from the total.

2. By server: connection destinations, not an account-wide total

Grouping by server helps answer, “Which server entry transferred data during this period?” A server entry and a provider account are not the same thing: one account may be used on multiple devices or be associated with multiple server addresses. This device’s records show only the traffic the client can observe and attribute. Entries with the same name may point to different addresses, so check the address, port, and protocol as well.

Request made Rule evaluated Outbound selected Data transferred Traffic recorded

Check the current routing mode under Home → Global Routing. Proxy routes traffic through a proxy; Direct connects directly; Config routes traffic according to the active configuration rules. If you use Scene, also check how the current scene handles traffic. Only traffic sent through the relevant proxy outbound should be compared with that server’s usage. Do not attribute all device network activity to the currently selected server.

  1. In Home, note the selected server and check its address, port, and protocol. Do not rely on its display name alone.
  2. Record the server’s starting upload and download figures in Data. Keep the same outbound throughout the test; do not switch servers or routing modes.
  3. After completing one clearly defined action, record the ending figures. Subtract the starting values to find the change.
  4. If the server shows traffic but a webpage did not use it, check for other background requests. If the webpage works but the server shows no increase, first check whether the request used Direct.

For example, DOMAIN-SUFFIX,example.com,DIRECT in Config sends matching requests through Direct, while FINAL,PROXY handles requests that did not match an earlier rule. The domain here is only a syntax example; you do not need to add it to your configuration. Do not remove existing rules just to make the usage figures increase.

3. By app: check how traffic is attributed before identifying its source

Grouping by app focuses on the source of activity; grouping by server focuses on its outbound destination. These are two views of the same activity, so do not add their totals together. Also keep platform limitations in mind: on iPhone and iPad, the system network extension does not guarantee that every connection can be directly tied to an app name. A domain or connection category is not necessarily an exact app-level usage record.

If the current Data screen offers app-related groupings, check their labels and available details. If it shows only server or connection records, use a single-app test to help identify traffic; do not look for a specific menu that may not exist. One app can contact multiple domains, and several apps may share a content delivery domain, so a domain name alone cannot reliably identify the source.

Check by server

What to observe
The server entry actually in use
How to identify it
Address, port, protocol, and selected outbound
Test conditions
Keep the server and Global Routing mode fixed
Best for answering
Which outbound carried the traffic

Requests from the same app may be routed through different outbounds by different rules.

Check app activity

What to observe
One clearly defined foreground action
How to identify it
Action time, connection records, and usage changes
Test conditions
Pause other downloads and background sync
Best for answering
Which type of action caused traffic to increase

Leave traffic with an unknown app identity unclassified; do not assign it arbitrarily.

For a practical check, stop video playback, cloud sync, and other downloads first. Record the increase during one idle minute, then open just one app and perform a single action. Repeat the same action; if the increase is much smaller the second time, check the local cache before assuming the statistics are wrong. App preloading and background tasks may still affect the test, so use this method to identify likely sources, not for precise billing.

4. Calculate usage from before-and-after readings

The figures below are a calculation example, not measured product results. Assume the screen uses the same MB unit before and after the test, and that you do not clear records, switch servers, or change the reporting scope in between. Comparing the difference removes the effect of earlier accumulated usage. Record the test times too, so you can match them with the provider’s dashboard after it updates.

Example: readings for the same server from 10:00 to 10:05
ItemStarting value at 10:00Ending value at 10:05Change during test
Upload12 MB15 MB3 MB
Download240 MB300 MB60 MB
Upload and download total252 MB315 MB63 MB

The total change is (15 - 12) + (300 - 240) = 63 MB. Do not count the ending value of 315 MB as usage during this test. Using the displayed unit, the average download speed over five minutes is 60 ÷ 300 = 0.2 MB/s. This is the average for the full observation window, not the peak transfer speed or the maximum speed of the connection.

For comparisons: calculate the change first, then align units

First compare changes over the same time window in the client and provider dashboard, then check units and billing rules. Comparing cumulative totals alone cannot confirm that both sides cover the same period and scope, even if the figures look similar.

Unit conversions can also cause differences. Decimal 1 GB equals 1,000,000,000 bytes; binary 1 GiB equals 1,073,741,824 bytes. The same number of bytes produces different displayed values in these units. If a page says only GB without defining it, do not assume a conversion method; check the relevant documentation or ask your existing provider.

5. Why Data usage may differ from your provider’s dashboard

The client and provider may count traffic at different points in the network path. After application data is wrapped in a protocol, additional overhead may include connection setup and encrypted records. Whether retransmissions are counted, and at which layer, also depends on the measurement point. There is no fixed percentage that explains every difference, and a discrepancy does not automatically mean there was unexpected usage.

For example, if client upload increases by 3 MB and download by 60 MB, then the dashboard later increases by 63 MB, that is consistent with combining both directions during the observed window. If the dashboard increases by 126 MB, first check whether an explicit 2× billing rule or activity from another device explains it. This example illustrates a troubleshooting sequence; it does not establish how any particular service bills usage.

6. What to check when readings look wrong

First rule out differences in scope and test conditions, then check the connection and configuration. Updating a subscription can change server entries or parameters, so do not update it, switch protocols, and change rules all in the same comparison. Change one condition at a time to identify what caused the readings to change.

“Why is traffic still increasing when I haven’t opened an app?”

Pause cloud sync, media playback, and automatic downloads, then record the idle increase for one minute. Next, check the connection triggers under Settings → On Demand. On Demand can establish connections when its conditions are met, but it does not mean that On Demand itself generates every byte of traffic. Background tasks, notifications, and existing connections may still transfer data.

“A webpage loads, but the server usage hasn’t increased. Why?”

First check the mode under Home → Global Routing, then check which Config rule and outbound apply to the request. The server figure may not increase if the request matched Direct, the browser used its local cache, or you checked a different server entry.

“The Data figure suddenly got smaller. Was traffic refunded?”

First check whether you changed the group, server, or reporting scope, and whether you cleared the records. A lower figure in the client does not indicate a change in your provider’s allowance. Check your plan balance separately in your existing provider’s dashboard.

“Why don’t the app totals add up to the server total?”

First make sure both figures cover the same time window, then check unclassified traffic, Direct routes, and background activity. If an app’s identity cannot be reliably determined, do not force the difference into an app category. Instead, compare readings before and after a single-app action to locate the clearest source of growth.

  1. Keep one server and one Global Routing mode fixed; save the starting reading and time.
  2. Pause other noticeable network activity and perform one repeatable foreground action.
  3. Save the ending reading and calculate the upload, download, and combined changes separately.
  4. Wait for the provider’s dashboard to post the usage, then compare the same time window, account scope, and unit.
  5. If a difference remains, share redacted records with your existing provider and ask about billing direction, multipliers, and dashboard refresh intervals.

Data is best for answering when traffic increased, how much it increased, and which outbound carried most of it. For precise app attribution or account billing, use the information available in the actual interface alongside the provider’s rules. Do not treat a single figure as total device usage or a final bill.

Verify Shadowrocket on the App Store