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.
| Figure | What it tells you | What it does not tell you by itself |
|---|---|---|
| Upload | The amount of data sent from your device | The net size of files you deliberately uploaded |
| Download | The amount of data received by your device | The size of files ultimately saved to Photos or Files |
| Total | Upload and download combined for the selected scope | Your remaining provider plan allowance |
| A value followed by /s | Transfer speed during the current sampling window | Your 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.
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.
- In Home, note the selected server and check its address, port, and protocol. Do not rely on its display name alone.
- 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.
- After completing one clearly defined action, record the ending figures. Subtract the starting values to find the change.
- 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.
| Item | Starting value at 10:00 | Ending value at 10:05 | Change during test |
|---|---|---|---|
| Upload | 12 MB | 15 MB | 3 MB |
| Download | 240 MB | 300 MB | 60 MB |
| Upload and download total | 252 MB | 315 MB | 63 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.
- Different billing directions: The dashboard may combine upload and download or use another billing convention. Check its documentation; do not compare Shadowrocket’s Download figure with a combined total without checking what each includes.
- Different reporting scope: The dashboard may include usage from other devices on the account. This device’s Data records do not include those devices’ local traffic.
- Different time windows: The dashboard may post usage with a delay, and the billing period start, time zone, and refresh schedule may differ. Keep a record of when each reading was taken.
- Different multipliers or billing rules: If the terms for your existing service specify a multiplier, the amount deducted by the dashboard may differ from the raw bytes transferred. Check the published rules rather than guessing.
- Different starting points for local records: Clearing statistics, changing configuration, or changing the retained-record scope can make the device’s cumulative total unsuitable for comparison with an entire billing period.
- Different traffic paths: Direct traffic does not pass through that proxy server. The scope of other system connections also cannot be equated directly with the client’s statistics.
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.
- Keep one server and one Global Routing mode fixed; save the starting reading and time.
- Pause other noticeable network activity and perform one repeatable foreground action.
- Save the ending reading and calculate the upload, download, and combined changes separately.
- Wait for the provider’s dashboard to post the usage, then compare the same time window, account scope, and unit.
- 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.