Drop an .apk or .aab here
or choose a file
Your file never leaves your browser. There is no server and nothing is uploaded. Only the archive index is read, so even large builds analyse instantly.
Where the size goes
What to fix
20 largest files
| File | Size in archive | Uncompressed | % of file |
|---|
How it works
An APK is a ZIP file with a fixed layout, and an AAB is a ZIP too. Every ZIP ends with a central directory: an index listing every file inside it along with its compressed and uncompressed size. This tool reads only that index, which is why it can measure a 200 MB build in a fraction of a second without ever decompressing it, and without sending it anywhere.
Native libraries
Anything under lib/, split by CPU architecture (ABI). A phone uses exactly one: almost always arm64-v8a on modern devices. If your build contains four architectures, roughly three quarters of that section is dead weight for every individual user. This is usually the single biggest saving available.
Resources and density buckets
Android ships bitmaps at several pixel densities: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. A device loads one bucket and ignores the rest. Folders marked nodpi or anydpi are density-independent and always delivered, which is why vector drawables shrink apps so effectively — one file replaces five bitmaps.
Assets
Files under assets/ are shipped exactly as you provide them. Nothing strips, splits or shrinks them. Fonts, bundled videos and machine-learning models tend to accumulate here unnoticed.
Code
classes.dex (and classes2.dex, and so on) hold your compiled code and every library you depend on. A dex section that dominates the file usually means unused library code is being retained — worth confirming R8 minification is switched on for release builds.
Why the Play Store download is smaller than your file
When you upload an App Bundle, Google Play generates a tailored download for each device: one architecture, one density bucket, one language. That is what the estimate above models. A universal APK, by contrast, hands every device everything and lets it ignore what it cannot use.
Questions
Is my file uploaded anywhere?
No. There is no backend. The parsing runs in JavaScript inside your own browser, in a background thread. You can disconnect from the internet after the page loads and it will still work.
Does it work on AAB files?
Yes. Bundles nest everything under a module folder such as base/; that is stripped before classifying, so the same categories apply. For a bundle the tool will not claim architecture savings, because Play already splits those for you.
What is an ABI?
An Application Binary Interface — the instruction set your compiled C or C++ code targets. arm64-v8a covers essentially all current phones. x86 and x86_64 are mainly emulators and a small number of Chromebooks.
Why is my APK bigger than the size shown on the Play Store?
Because the store figure is the tailored download for the device asking, not the whole artefact. The estimate here approximates that for a typical arm64, xxhdpi, English device.
Are the numbers exact?
Category and file sizes are read directly from the archive and are exact. The delivery estimate is a model, not a promise — real splits depend on your bundle configuration and the requesting device.