How to check whether an app is really offline
Privacy claims are easy to make and, unusually, quite easy to verify. Four methods, from ten seconds to a proper afternoon.
Any app can claim it processes your data locally. Almost nobody checks, and the assumption is that checking requires expertise.
It does not. Here are four ways to verify it yourself, in increasing order of effort and certainty.
1. The airplane-mode test (10 seconds)
The fastest and most underrated.
Enable airplane mode. Disable Wi-Fi as well, since airplane mode leaves it on for some devices. Then use the feature that supposedly runs locally.
- If it works normally, the computation happened on your device.
- If it fails, times out, or says it needs a connection, something was travelling.
This is a genuine proof, not a heuristic. There is no way to fake a result that requires a server when there is no network. Apply it to search, summaries, classification, anything claiming to be local.
The limit: it proves the feature works offline, not that the app never sends anything when it is online. For that, keep reading.
2. Android's data usage per app (2 minutes)
Settings → Network & internet → Data usage (paths vary by manufacturer). This shows exactly how much data each app has sent and received, split into mobile and Wi-Fi.
Use the app heavily for a day, then look. For an app claiming to be local, ask whether the number is consistent with what it admits to doing. A messenger syncing connected channels will use data. A messenger with no channels connected, claiming no telemetry, should be at or near zero.
This will not tell you what was sent, but "an app that promised to send nothing used 40 MB" is a complete answer on its own.
3. A local VPN logger (15 minutes)
Apps like NetGuard or TrackerControl route your device's traffic through a local VPN, so nothing leaves your phone to a third party, and log which domains each app contacts.
This is the sweet spot of effort and information. Within a day you will see every host an app talks to. What you are looking for:
- Expected: the services you connected.
graph.whatsapp.com,slack.com,discord.com. - Suspicious: analytics and advertising domains.
graph.facebook.com,app-measurement.com,firebase-settings.google.com,crashlytics.com, anything from an ad network. - Worth asking about: a domain belonging to the app's own developer that is not obviously a required service. That is where telemetry lives.
Note that Google Play Services generates its own traffic on every Android device. Attribute per app, not device-wide.
4. Read the app's permissions and manifest (an afternoon)
If the app is open source, read it. If not, tools like Exodus Privacy scan APKs and list embedded trackers by name, a large searchable database of which apps contain which analytics SDKs.
The presence of an SDK does not prove data is being sent. Its absence is fairly strong evidence that it is not.
What this looks like for Textly. Airplane mode: every intelligent feature keeps working. Data usage with no channels connected: effectively zero. VPN log: your connected services only. Tracker scan: no advertising or analytics SDKs, because none are compiled in.
We would rather you checked than believed us. A claim that cannot be tested is not much of a claim.
What "no server" should mean
When evaluating any privacy claim, the useful question is not "do they promise not to look?" but "what would they have to be lying about?"
An app with no server infrastructure cannot receive your data, regardless of intent, ownership or legal pressure. An app with a server that promises to discard your data is asking you to trust a policy, and policies survive exactly as long as the company that wrote them, in the form the current owner prefers.
Architecture is verifiable. Intentions are not. When a privacy claim is easy to test, test it, and treat an untestable one as marketing until proven otherwise.
Textly brings WhatsApp, Telegram, Discord, Slack and Android SMS into one inbox, and understands it on your device rather than ours.
Get Textly