At a glance

Data helps you track traffic handled by Shadowrocket; it does not show the remaining balance on your service account. This guide focuses on Home → Data on iPhone and iPad, covering server and app attribution, tracking periods, and how to compare readings before and after a reset. The same principles apply on Mac, Windows, Android, and Linux, but menus and app identification vary by platform.

What Data tracks: client traffic vs. service usage

Shadowrocket Data shows traffic handled and recorded by the client. Once connected, readings increase only for requests that follow a covered processing path. Cellular usage in your device settings, device usage recorded by your router, and usage reported by your existing service account follow different measurement methods; their totals are not expected to match.

App request Tunnel interception Rule matching Outbound transfer Usage attribution

This flow helps explain where traffic is counted; it does not mean Data can identify the complete source of every request. Background system tasks, shared network processes, and platform permission limits can all affect attribution. If an app name is missing, that does not prove the app was offline. Likewise, a server's reading may stay unchanged because a request was cached or matched DIRECT.

Upload, download, and total usage: check the units first

Read upload and download from the perspective of your device: sending requests or uploading attachments counts as upload; receiving web pages or downloading files counts as download. Web browsing usually uses more download, while photo uploads or cloud backups can increase upload. Do not reverse these directions based on what the server receives or sends.

ReadingMeaningWhat to keep in mind
UploadData sent from your deviceEven small requests may involve acknowledgments, connection setup, and other traffic
DownloadData received by your devicePage assets, preloading, and background downloads can all increase this figure
TotalData accumulated during the current tracking periodNot the current speed, and not necessarily the usage from this connection session
RateTransfer speed measured over a period of timeA unit ending in /s is a rate, not a cumulative data amount

For example, if download usage rises from 48 MB to 60 MB, about 12 MB was transferred between the two observations. That does not mean the current speed is 12 MB/s. If the change occurred over 30 seconds, the average rate for that period was about 0.4 MB/s, but this is not the instantaneous rate at every second. This is a reading example, not a performance benchmark.

By server vs. by app: don't add the two views together

Open Data from Home, then check whether the current view groups usage by server or by app before reading an entry. Menus and available dimensions vary across platforms. If your platform has no app view, troubleshoot using the available server readings and connection records; do not assume another platform's menu is a required option.

By server

Grouped by
The server entry used by a request
Key question
Did this transfer use the expected outbound route?
How to check
Compare the same entry before and after the test
Keep in mind
Changing servers does not change the attribution of earlier traffic

Check the entry's address, port, and current selection first; similarly named entries may be different servers.

By app

Grouped by
App or process source identified by the client
Key question
Which source transferred data during the test?
How to check
Keep only one test app active, then compare the change
Keep in mind
Identification depends on platform and system permissions

App attribution does not tell you the routing policy. Check the rule result for the specific connection to confirm its outbound route.

A transfer can be attributed both to the app it came from and the server it used. The two views show the same related traffic from different angles; they are not separate usage amounts, so don't add them to get a total. They may not match exactly either: unidentified sources, whether DIRECT traffic is included in a view, and refresh timing can all cause differences.

When does total usage start? Set a baseline you can check

Don't assume totals start at midnight, on the first day of the month, or whenever a connection is enabled. Use the tracking period shown in the current view. If the interface does not show a start time, don't treat the reading as an exact amount for a particular day. Disconnecting, leaving the page, or changing servers does not necessarily reset all statistics.

  1. Record the current readings. Go to Home → Data and note the current view, entry name, upload, download, and observation time. For a single troubleshooting test, comparing before and after is enough; you don't need to clear the history.
  2. Pause test traffic. Stop downloads, video playback, and cloud sync; disconnect if needed. Otherwise, readings may become nonzero again as soon as the reset is complete.
  3. Check what will be cleared. In Data, find the clear or reset option available in the current interface. Read the confirmation and check whether it affects one entry, the current view, or all records. Button names and locations vary by platform. Deleting a server or Config is not a way to reset usage.
  4. Verify the result. Return to the relevant view and confirm that the target entry's baseline has reset. Then check the other view to see whether it was cleared too; don't assume the two dimensions are linked.
  5. If there is no reset option, compare the difference. Record the starting and ending readings, then subtract the starting value from the ending value. This also gives you a repeatable test period.

Check routing with Data: start with Global Routing, then compare usage changes

Data provides evidence about traffic attribution and volume, but it cannot replace rule-match records. First, check the mode under Home → Global Routing: Proxy uses the proxy route, Direct connects directly, Config follows the active configuration, and Scene follows the configured scene. To troubleshoot Config rules, select Config and confirm the expected configuration is enabled under Config.

The examples below use reserved example domains and do not represent real services or need to be added to your everyday configuration. Rules are evaluated in order: an earlier match can prevent later rules from taking effect.

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
  1. In the current Config, check which rule should match the target domain or IP address, and whether a broader rule appears before it.
  2. Note the starting value for the expected server in Data. Close unrelated apps and choose an accessible test address you already have access to.
  3. Reconnect for the test and perform one clear action, such as downloading a known-size test file of your own. A browser cache hit is not suitable for verifying network transfer.
  4. Return to Data and compare the change for the same entry, then check the connection record for the destination, matched rule, and final policy. Port 443 is commonly used for encrypted connections, but that alone does not show whether traffic went through PROXY.
  5. If you changed a rule, end the old request before trying again. Existing long-lived connections may keep using their original route; their later traffic does not show the immediate effect of a new rule.
What you observeWhat it can tell youWhat to check next
Download usage increases for the expected serverThat entry received data during the observation periodDoes the connection record match this test destination and PROXY?
App usage increases, but no clear change appears for the serverTraffic was attributed to the app, but its outbound route is unconfirmedDid it match DIRECT, use another server, or continue over an old connection?
The page loads successfully, but all relevant readings stay the sameNo evidence of a new transfer was recordedWas the content cached, the wrong entry observed, or the view not yet refreshed?
Small increases continue after foreground activity stopsBackground or connection-maintenance traffic may still be activeSync tasks, keepalive connections, and automatic updates

Conclusion: confirm routing with three pieces of evidence

Count a test as matching expectations only when the timing, the target connection's rule result, and the expected server's usage increase all agree. One rising number alone is not enough to confirm that the full set of rules is working correctly.

Common questions about unexpected readings

Why does usage appear again right after a reset?

Stop foreground downloads and check background sync, then watch the same entry for about 30 seconds. Keepalive traffic, background requests, and newly established connections can all add small amounts after a reset. For a quiet baseline, disconnect first, then use the reset option available in the current interface.

Why does Data show less usage than my service account?

Align the start and end times first, then make sure you're comparing the same server, account, and device. Check whether the account includes other devices, a usage multiplier, or a different tracking period. Don't compare download usage for one client entry with total usage across every device on the account.

Why does an old server entry keep increasing after I switch servers?

Stop apps that are playing, downloading, or keeping connections open, then start a new request. Old connections may still be transferring data over their original route. For a controlled comparison, pause activity, reconnect, and record fresh starting values for both servers.

The app is closed. Why hasn't the total gone back to zero?

Total usage is not the number of active connections; historical readings can remain after an app is closed. Record the current value, then check the change after some time. If it stays the same, there was no new visible increase for that statistic during the observation period. You don't need to delete a configuration to make the old reading disappear.

Why does the connection resume automatically and interfere with a reset test?

Check Settings → On Demand for automatic connection conditions, and check the current VPN status in your system settings. Note the original settings before testing, and pause automatic connection temporarily if needed. Restore it when you're done. On Demand controls when a connection starts; it does not reset Data totals.

Keep a concise troubleshooting record

For follow-up checks or troubleshooting, record when the test happened, which view and entry you checked, what you did, and how much the reading changed. This is more useful than saving a total alone. Don't include subscription URLs, authentication details, or full server credentials in your notes. A subscription update may change entry names or available servers, so verify that you're comparing the same entry before and after an update.

Data helps answer “what changed in traffic during this period?” It cannot by itself tell you “how much usage remains on my service?” or “did every app always follow the rules?” Save the usage difference alongside the rule result for the specific connection to make your conclusion verifiable.

Get Shadowrocket and learn the basics

Get Shadowrocket for iPhone or iPad from the App Store for a one-time $2.99 purchase; check the App Store listing for system requirements. The Mac (Apple silicon or Intel), Windows, Android, and Linux versions are free. Visit the download page to choose your platform and check the available options.

The iPhone and iPad listing names Shadow Launch Technology Limited as the developer and has app ID 932747118. The app purchase is separate from service plans. This guide assumes you already have your own service provider and subscription; this site only provides client setup tutorials, not connection services.