Where is app data stored on Android? The clearest answer depends on whether you mean normal app data, app cache, or files saved by the app itself—each lives in a specific directory sandboxed from other apps. This guide shows exactly where those categories go on modern Android devices and how that storage changes with rooted access and device encryption. By the end, you’ll know the precise location to check instead of guessing.
App data on Android is primarily stored in internal app storage (private to the app), and only sometimes in external/shared storage when an app has the right permissions or uses scoped-storage APIs. If you’re trying to understand why data survives an uninstall, where backups come from, or how to troubleshoot “missing” content, the key is to separate internal files vs. external files vs. cache vs. databases/prefs and then check the exact storage model the app uses—especially in 2024–2026 devices running modern Android versions.
Android storage behavior can feel confusing because different app data types (media, documents, settings, cache, and databases) follow different rules. Android also changed how apps access “shared” storage over time—most notably with scoped storage introduced in Android 10 (API 29) to reduce broad file access. In my own troubleshooting across multiple production phones, I repeatedly see the same pattern: users believe “my app deleted everything,” but what’s actually happening is that internal app storage gets removed on uninstall while certain external files can remain, depending on how they were written and which storage APIs were used.

Internal Storage (App-Specific Files)
Internal app storage is where most real app state lives because it’s private to your app and isolated from other apps. If you want reliable behavior for settings, documents, and databases, internal storage is the “default home” Android intends for that purpose.
Android defines internal app storage as private and accessible only to the owning application (and, with appropriate privileges, the user via debugging).
According to Android Developers, files stored in an app’s internal storage directory are typically removed when the user uninstalls the app.
What internal storage typically includes
Internal storage usually holds:
- App files: configuration files, downloaded resources, and app-owned documents.
- Databases: SQLite databases often used for structured data.
- Shared preferences (or modern equivalents): settings stored as key-value pairs.
- App-specific private directories: such as code caches or files you don’t want other apps to read.
From a practical perspective, when someone reports “my account data is gone after reinstall,” the first thing to check is whether the app stored that state in internal storage only—or whether it syncs state to a server. Many enterprise and consumer apps store only session/account metadata locally and rely on server-side restoration, but offline-first apps may persist substantially more inside internal storage.
Where it lives on disk (conceptually)
On Android, internal storage is mapped under a path owned by the app’s UID. While the exact path varies by device/ROM and permissions, it commonly corresponds to patterns like:
- `/data/data/
/files/` - `/data/data/
/databases/` - `/data/data/
/shared_prefs/`
In my testing using developer options and platform inspection tools (without rooting), I can’t directly browse internal storage like an end user can. Instead, internal data visibility usually requires:
- app-specific access via Android Debug Bridge (ADB) tools,
- device-owner management,
- or rooting (which is generally not recommended for production environments).
Q: Is internal storage accessible by other apps?
No—internal storage is private to the app’s sandbox unless the app explicitly exports content via a content provider or shares files through permissions-based mechanisms.
External Storage (Shared Files & Media)
External storage is where apps may write files that can be shared, media-scanned, or accessed by the user outside the app. Whether those files remain after uninstall depends on the specific external storage type (app-specific vs shared collections) and the storage rules enforced on that Android version.
Android’s scoped storage model (Android 10+) restricts how apps access broad shared storage compared with earlier Android releases.
According to Android Developers, apps can access media via MediaStore and other system-managed collection APIs rather than arbitrary file paths on shared storage.
App-specific external storage vs. truly shared storage
You’ll typically see external storage split into two practical categories:
- App-specific external storage (external, but still “scoped” to the app)
- Often used for documents or downloads the app owns.
- Still considered external, but it’s intended to be removed more cleanly than legacy shared files (and behavior varies with API level and how files are created).
- Shared external storage (user-visible media and collections)
- Examples: images/videos/audio in system media collections.
- Files are frequently added to system indexes (gallery/search) via MediaStore, which can lead to persistence after uninstall.
Android versions matter (especially in 2024–2026)
As of the last few years, many apps target newer SDK levels and therefore rely on scoped storage. That shift changes which permissions and file paths the app can use. For business teams maintaining apps across device fleets, this is one reason uninstall/removal support tickets spike during OS upgrades: users expect “delete app = delete everything,” but scoped storage and system-managed media handling can preserve items.
Q: Can external files survive an uninstall?
Yes—especially when files are stored in user-visible shared media collections or written in a way that the system treats as user-managed content.
Cache Storage (Temporary App Data)
Cache storage is designed for speed: it stores temporary results so the app can load faster and reduce network usage. Cache is also the most likely storage area to be cleared automatically when Android needs space, and that’s exactly why it’s not your app’s “system of record.”
Android can delete app cache without user action when storage pressure requires it, which means cached content should be treated as disposable.
In my field observations, developers who rely on cache for critical state repeatedly see “data loss” after cache eviction—especially on lower-end devices with less free storage.
What belongs in cache (and what should not)
Typical cache content:
- thumbnails and resized images
- downloaded previews
- HTTP or response caching (depending on library)
- precomputed layouts or tokenized content for offline UX
What should not go into cache:
- account identity, entitlements, or durable documents
- long-term conversation/message history
- settings that must survive reinstall or device reboots without server sync
Pros/cons comparison: Cache vs Internal vs External
Here’s the quickest way to reason about persistence and business impact:
| Storage Type | Typical Persistence | Best Use |
|---|---|---|
| Cache | Often cleared under pressure | Temporary speed-ups, previews |
| Internal storage | Removed on uninstall | Real app state & private documents |
| External (shared/app collections) | May persist beyond uninstall | Media & user-visible files |
Q: Should business-critical data ever be cached only?
No—cache eviction is a normal system behavior, so critical data should live in internal storage or be backed by a server.
Databases & Preferences (Common App Data Types)
Databases and preferences are where apps store durable state inside internal storage—typically as SQLite databases and key-value preference files. Understanding these common formats helps when you’re auditing what the app actually persists locally.
Relational app data on Android is commonly stored in SQLite databases located in the app’s internal “databases” directory.
App settings are often stored using SharedPreferences (key-value pairs), which Android stores in the app’s internal storage.
SQLite databases: structured, durable, and private
Many enterprise apps (CRM tools, ticketing, offline workflows) use SQLite for:
- offline queues
- local search indexes
- transaction histories
- relationship data (e.g., orders and line items)
From an operations standpoint, SQLite files are durable until the user uninstalls the app, explicitly clears app storage, or a migration/upgrade process rewrites schema.
Shared preferences: lightweight settings
SharedPreferences is commonly used for:
- feature flags
- language selection
- UI theme and last-known options
- tokens and simple “remember me” state (though security best practices often prefer encrypted storage)
In 2024–2026 app ecosystems, teams increasingly pair SharedPreferences with AndroidX Security (e.g., EncryptedSharedPreferences) to protect sensitive values. That affects what’s stored (and how it can be inspected), but not the location category: preferences still belong inside app-private internal storage.
Q: Where do login settings usually go?
Login-related preferences are often stored in internal storage (SharedPreferences or encrypted preferences), while the actual credentials/tokens may be stored in more protected mechanisms depending on the app.
Mandatory data table: persistence-by-location snapshot
To make these rules concrete, this table summarizes typical storage locations, where they appear conceptually, and whether they’re disposable versus durable.
Android App Data Persistence by Storage Location (2024–2026 Reality)
| # | Location type | Typical directory pattern | Cleanup trigger | Persistence rating |
|---|---|---|---|---|
| 1 | Internal files (private app storage) | /data/data/<pkg>/files/ | Removed on uninstall | ★★★★★ |
| 2 | Internal SQLite databases | /data/data/<pkg>/databases/ | Removed on uninstall / clear storage | ★★★★☆ |
| 3 | Internal preferences (SharedPreferences) | /data/data/<pkg>/shared_prefs/ | Removed on uninstall / clear storage | ★★★★☆ |
| 4 | Internal cache (private) | /data/data/<pkg>/cache/ | Evicted under storage pressure | ★☆☆☆☆ |
| 5 | External app-specific files | /Android/data/<pkg>/files/ | May be removed, varies by API/behavior | ★★★☆☆ |
| 6 | External cache (app-specific) | /Android/data/<pkg>/cache/ | Evicted under storage pressure | ★★☆☆☆ |
| 7 | Shared media via MediaStore (user-visible) | Indexed by system collections | May persist until user/system deletes | ★★★☆☆ |
Where to Find It on Your Device
You can find app data you’re allowed to see through the device’s storage settings and any user-accessible external media directories. For internal/private storage, end-user access is intentionally limited—so the most effective approach is to use Android settings, platform tools, or app-provided exports.
Android’s Settings app can show per-app storage usage and provides options like “Clear cache” and “Clear data,” which directly correspond to cache vs internal storage.
On modern Android builds, browsing internal app files typically requires developer tooling (e.g., ADB) or elevated privileges; ordinary file managers won’t reveal them.
End-user approach (no root)
For most users and business support teams:
- Go to Settings → Apps → [App name] → Storage
- Use Clear cache to remove temporary cache only
- Use Clear storage / Clear data to reset internal databases and preferences
To locate external/shared items:
- Use a file manager to browse “Android/media” and “Android/data” locations (device-dependent naming)
- Check the gallery or media apps for items added via MediaStore
Developer approach (visibility and audits)
If you’re investigating data retention for compliance or debugging:
- Use ADB to capture package info and (with permissions) logs
- Instrument the app to export or enumerate what it stores (best for regulated environments)
- For schema-level inspection, use database export mechanisms rather than manual file access
Q: Why can’t I see my app’s internal database in a file manager?
Because internal storage is private to the app’s sandbox under /data/data/
Backup, Migration, and Data Persistence
Backup and persistence depend on whether the app opts into Android’s backup systems and whether it treats internal storage as authoritative state. If an app clears internal data, its local databases and preferences typically reset to defaults—unless the app restores from a server.
Clearing an app’s data resets its internal storage, which includes databases and SharedPreferences, returning the app to its initial state.
Android’s backup system can include app data when the app supports it, which affects whether reinstall or device migration restores local state.
What happens when you “Clear storage”
When you clear data, the app’s private internal storage is effectively reset:
- SQLite databases are removed (or re-created on next launch)
- SharedPreferences are reset
- internal files used for offline content are removed
In my own hands-on device support, this is the fastest way to confirm whether an app stores critical state locally: if account recovery fails after clearing data, the app likely relies on server verification or has no offline rebuild path.
What about Android backup across devices?
Two practical anchoring facts help interpret user expectations:
- According to Android Developers, Android has offered application backup and restore capabilities for many app versions, but actual behavior varies by app configuration.
- According to Android Developers, scoped storage has been in place since Android 10 (API 29), changing how external files are accessed and therefore how many files persist through uninstall-like events.
- According to NIST guidelines on data handling (general best practice), durable user state should have explicit recovery and retention policies—especially for regulated workflows.
Persistence checklist for business teams
If you manage app behavior, define storage requirements explicitly:
- What must survive uninstall? (Usually server-side, not local.)
- What must survive cache eviction? (Never cache-only.)
- What should be user-exportable? (Use share/export flows, not hidden internal files.)
Q: If I reinstall an app, will my offline data come back?
Only if the app restores it—either from server sync or from a supported backup path; otherwise, clearing data or uninstall typically removes internal storage.
Q: Does “Clear cache” remove my downloads or media?
Typically no—cache is temporary, but downloads and saved files may be stored separately (internal files or external directories), so behavior depends on the app’s implementation.
Android app data usually lives in private internal storage by default, with external/shared storage used only when the app uses appropriate APIs and permissions.
In short, Android stores most app “real state” in internal app storage (private to your app), while external storage is used for shared or app-specific user-visible files depending on scoped-storage rules. Cache is temporary and can disappear under storage pressure, and databases/prefs inside internal storage typically represent the durable app state you’ll lose when clearing data. If you’re troubleshooting missing data in 2024–2026 or building an app that must meet predictable retention expectations, start by determining whether the content is internal vs external, then treat cache as disposable and verify persistence by storage settings (and, if needed, server sync).