Shadowrocket Data Usage Guide: Understanding Usage by Server and App

Learn how to read upload and download totals and reporting periods in Shadowrocket’s Data views, and what to check when figures look high or stay at zero.

At a glance

Data shows traffic recorded locally by Shadowrocket. It is not your provider’s plan balance or the system’s cellular data usage. This guide is for users who have imported their own connection configuration. First, understand the server and app views. Then compare changes over the same time window to check upload and download activity, routing, and reporting scope. Finally, troubleshoot unexpectedly high or zero readings.

First, identify what’s being counted: server entries and app entries

Read Shadowrocket’s Data page in context: check the selected grouping, units, and time range. The server view shows records associated with connection exits; the app view groups traffic by its detected source. These are two ways to view the same network activity, so don’t add their totals together as if they represented extra usage.

A server entry is not a plan balance. If you already have a provider and subscription, its usage may follow a different billing period, multiplier, upload/download calculation, or update schedule. Data only shows the traffic recorded within its local reporting scope; it cannot tell you how much plan allowance remains.

View by server

What it shows
Traffic records associated with a connection exit
Check first
The server selected in Home and the actual connection route
Useful for checking
Which records keep increasing after you change the exit
Does not replace
Your provider’s plan usage or bill

Similar names don’t guarantee that entries count the same thing. Check the entries before comparing them.

View by app

What it shows
Traffic records that can be attributed to an app
Check first
Whether this view and usable source information are available on your device
Useful for checking
Which source records increase while you use a particular app
Does not replace
A complete system-wide count of all network activity

App attribution depends on platform and connection details. Don’t force unknown records into an app category.

Available statistics and source details can differ across Apple devices. These two views don’t imply that every device shows the same app list. If Data doesn’t provide a particular detail, don’t infer definite app usage from a server name, domain, or process clue.

Upload, download, and speed: check the units before reading the numbers

Upload is data sent from your device; download is data received by your device. Loading a webpage usually involves both uploaded requests and downloaded page resources. Video playback also sends requests, acknowledgments, and control data. So seeing some upload while watching a video isn’t unusual—both directions can increase during normal network activity.

2 directions
Track upload and download separately; don’t treat either one as the total
2 types of measurement
B, KB, and MB measure data; /s indicates a rate
8 bit
1 byte = 8 bits. MB/s and Mbps are not interchangeable.

If a figure includes /s, it’s a transfer rate measured over a sampling interval. A cumulative value in KB, MB, or GB is the amount of data recorded over a reporting range. When an app stops transferring data, its rate may return to zero, but its cumulative total won’t. Don’t mistake a brief speed peak for the total data used.

Reading or calculationWhat it meansWhat to check
120 MB downloaded (cumulative)The amount received within the current reporting scopeCheck the reporting range and reset time first
Download speed: 2 MB/sThe current receiving rate during the sampleIt doesn’t mean 2 MB has been added to the total
150 MB − 120 MB = 30 MBThe difference between two cumulative readings is the increase over that periodBoth readings must refer to the same entry and reporting scope
8 Mbps ÷ 8 = 1 MB/sTheoretical value using decimal unitsActual transfers are also affected by factors such as protocol overhead

The figures are calculation examples, not speed test results. Pages may use different unit conversions or display precision, so small differences don’t necessarily mean data was missed or counted twice.

Reporting periods: don’t assume they mean this month or this connection session

Use the range, timestamps, and reset status shown on the Data page to determine its reporting period. Don’t assume a cumulative total represents today’s usage just because you opened the app today. Likewise, disconnecting and reconnecting doesn’t necessarily reset every statistic.

Resetting statistics, disconnecting, and changing servers are three different actions. If the interface offers a clear or reset option, first check whether it affects the current group, a specific entry, or a wider scope. When troubleshooting, recording a baseline and calculating the increase is usually more useful than immediately clearing history.

  1. Open Data and note the current group, entry name, cumulative upload and download values, and any visible time range.
  2. Note the start time, such as 2:00 p.m. Keep the same statistics view throughout the test; don’t switch the item you’re comparing.
  3. Perform one action, then note the same entry’s ending values at 2:05 p.m. Subtract the starting values from the ending values.
  4. If a reset, entry change, or scope change occurs during the test, discard the comparison and establish a new baseline.

Routing: selecting a server doesn’t mean all traffic goes through it

If a server is selected in Home but its recorded usage barely changes, first check Home → Global Routing. With Config, the active rules determine where requests go. Direct means a direct connection; Proxy means a proxied connection. If you use Scene, check which scene is active rather than relying on the server selected previously.

App request Tunnel handling Routing decision Actual egress Statistics grouping

This flow illustrates how routing relates to statistics; it doesn’t mean that all system traffic necessarily enters the tunnel. Only data handled and recorded within the relevant scope is suitable for comparison. Connections excluded by the system, bypassed by the configuration, or outside the relevant reporting scope won’t necessarily appear under a proxy server entry.

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY

This snippet illustrates routing only; it isn’t a complete configuration. In Config, connections matching example.com and its subdomains use DIRECT. Connections that don’t match any earlier rule use FINAL,PROXY. So a destination matched by a direct-connection rule isn’t a valid way to check whether a proxy server entry is increasing. Rules are matched from top to bottom; also check whether the connection is reusing a session established before the change.

High readings: rule out background activity and differences in what’s counted

If usage is much higher than expected, first clarify whether it exceeds the file’s download size or the usage shown by your provider. The first could involve preloading, retries, background sync, or additional resources on the same page. The second also depends on the provider’s reporting scope and billing rules. These situations need different explanations.

What you seeCheck firstWhat to do
Usage increases while you’re not actively using the appBackground transfers and automatic connectionsPause sync, media playback, and downloads, then check Settings → On Demand
The file is only a few dozen MB, but usage increased by moreAdditional resources and retry requestsPause other network activity and run a short comparison with the same file
Usage doesn’t match your provider’s figuresReporting period, multiplier, and upload/download accountingAlign the start and end times first, then check your provider’s usage details
Multiple related records appear for one appPage resources and split connectionsCompare the same time window; don’t treat the number of domains as the number of apps

Use Settings → On Demand to check automatic connection settings. On-demand connections may reconnect the tunnel when qualifying network activity occurs, even if you think you’ve stopped using it. This setting doesn’t multiply traffic or reset statistics. During troubleshooting, check both the connection status in Home and the system VPN status.

Protocol encapsulation and connection maintenance can also make byte counts differ between measurement points, but there’s no fixed percentage that applies to every connection. A difference alone isn’t enough to conclude that an app transferred data abnormally. Narrow down the time window first and identify what happened before the increase.

Zero readings or missing apps: check these in order

A zero value means no visible increase is shown for the current entry and reporting scope. It doesn’t prove that there was no network activity. Requests may have been served from cache, routed elsewhere, or rounded below the displayed precision. If an app’s source can’t be identified, its missing name doesn’t mean no data was transferred.

Why does the selected server still show zero when webpages load?

First, check the routing mode in Home → Global Routing. If it’s Config, review the active rules in Config and check where the connection actually went. Then test with a request that isn’t cached; repeatedly refreshing the same cached content won’t help.

Why can’t I find the app I’m using in the app list?

First, check whether the current Data view provides app source information, then look for uncategorized records. Compare a short test using a single app with the server view. If the source can’t be reliably identified, leave it unknown rather than guessing from a similar domain name.

Why is the old entry still increasing after I switch servers?

Pause the test app’s network activity, reconnect, and observe again. Check for existing sessions, background tasks, and routing choices in the configuration. Changing the selection in Home alone doesn’t prove that all existing connections have moved to the new server.

Upload has a value, but download is still zero. Has the connection failed?

Wait for the view to refresh and check whether the destination actually returned content. Then compare the connection records with the result in the app or browser. A small one-way request, display precision, or a failed request can all cause this temporarily.

Run one repeatable test and keep a troubleshooting record

A useful record captures when it happened, which entry was involved, what you did, and how the values changed. You don’t need to clear all data first or transfer data for a long time just to make the numbers rise. Use a normal destination of your own, minimize other network activity, and make one brief before-and-after comparison.

  1. Prepare: Check the connection status and Global Routing in Home, confirm the active configuration in Config, and note the current status of Settings → On Demand.
  2. Set a baseline: Record the Data group, entry, time range, upload value, and download value. If you’re checking app attribution, also note whether a source can be identified.
  3. Run the test: Open one target page or transfer one existing file. Don’t run a speed test, play a video, or update content at the same time.
  4. Wait for the view to refresh: After the action, wait briefly, record the ending values in the same place, and calculate the upload and download increases separately.
  5. Interpret the results: Consider the actual routing rules, cached content, and background activity. If you need to test again, keep the conditions the same and change only one setting at a time.

Keep only the information needed to troubleshoot. Before sharing, hide subscription URLs, credentials, personal domains, and server addresses. Data can help identify which reporting scope shows an increase, but connection quality, plan balance, and app attribution must each be checked separately. One cumulative figure can’t answer all of these questions.

Get ShadowrocketVerify the official App Store listing