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.
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.
- Client total: Shows traffic recorded locally. The tracking period starts when that record is created or was last reset.
- System usage: Measured by device, app, or network type, and may include traffic that did not pass through Shadowrocket.
- Service usage: Determined by the measurement rules of your existing service. Billing periods, usage multipliers, protocol overhead, and reporting delays may affect the total.
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.
| Reading | Meaning | What to keep in mind |
|---|---|---|
| Upload | Data sent from your device | Even small requests may involve acknowledgments, connection setup, and other traffic |
| Download | Data received by your device | Page assets, preloading, and background downloads can all increase this figure |
| Total | Data accumulated during the current tracking period | Not the current speed, and not necessarily the usage from this connection session |
| Rate | Transfer speed measured over a period of time | A 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 a browser has several tabs open, one app entry may include multiple domains and connections.
- In-app web views and background network tasks may run through shared components, so they may not appear under the app name you expect.
- An increase under an app only shows that traffic was attributed to that app. It does not by itself prove that every request used PROXY.
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.
- 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.
- 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.
- 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.
- 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.
- 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
- In the current Config, check which rule should match the target domain or IP address, and whether a broader rule appears before it.
- Note the starting value for the expected server in Data. Close unrelated apps and choose an accessible test address you already have access to.
- 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.
- 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.
- 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 observe | What it can tell you | What to check next |
|---|---|---|
| Download usage increases for the expected server | That entry received data during the observation period | Does the connection record match this test destination and PROXY? |
| App usage increases, but no clear change appears for the server | Traffic was attributed to the app, but its outbound route is unconfirmed | Did it match DIRECT, use another server, or continue over an old connection? |
| The page loads successfully, but all relevant readings stay the same | No evidence of a new transfer was recorded | Was the content cached, the wrong entry observed, or the view not yet refreshed? |
| Small increases continue after foreground activity stops | Background or connection-maintenance traffic may still be active | Sync 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.
- Environment: Device platform, Wi-Fi or cellular, and whether the connection was enabled.
- Routing: Current Global Routing selection, whether Config is the expected configuration, the target rule, and the final policy.
- Period: Start and end times, whether the data was reset, starting and ending readings, and units.
- Action: Run one test app, record one clear request, and note whether you ruled out caching and old connections.
- Result: Whether the server increase, app increase, and connection record match.
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.