The short answer
Measure before you cut. In almost every mobile game, textures are the largest share, followed by audio, then meshes, animation, fonts and code. Resize and compress textures, compress audio, delete what is unused, strip engine code you do not call, ship with Android App Bundles and move later content to on-demand download. Those six steps commonly cut a build by a third to a half without visible loss.
Why size matters
- Conversion. Fewer people finish a large download, especially on mobile data or with a nearly full phone.
- Store behaviour. Stores show download size on the listing and may ask for confirmation before large downloads over mobile data.
- Markets. In regions with expensive data and entry-level phones, a small build is a competitive advantage.
- Updates. A large app means large updates, and people postpone them.
- Ad campaigns. Paid installs that are abandoned mid-download are wasted spend.
Step 1: find out what is big
Do not guess. After a build, read the engine's build report, which lists every asset and its size after compression. In Unity, the editor log and the build report tools show this, and Android Studio's APK analyser shows the final package contents. Sort by size. The top twenty entries usually account for most of the build, and several will be surprises: a huge background image, an uncompressed music track, a font with every language.
Step 2: textures
Textures are normally more than half of a mobile game.
| Action | Effect |
|---|---|
| Reduce resolution to what the screen actually shows | Halving width and height cuts size by about three quarters |
| Use ASTC compression on modern Android and iOS devices | Large savings with adjustable quality |
| Pick block size by importance | Higher quality for characters and interface, stronger compression for backgrounds |
| Pack sprites into atlases | Fewer files, less wasted padding, fewer draw calls |
| Remove unneeded mipmaps for interface art | Saves about a third on those textures |
| Avoid alpha channels where not needed | Cheaper formats become available |
| Use tiling textures and tints | One texture serves many surfaces |
Review maximum texture size per platform in import settings. A 4096-pixel texture on a phone is rarely justified.
Step 3: audio
- Compress music and long ambience with a lossy codec at a moderate quality setting. Most players use phone speakers or basic earphones.
- Convert to mono where stereo adds nothing, such as most sound effects. That halves the data.
- Lower the sample rate for effects that do not need high frequencies.
- Stream long tracks instead of loading them into memory.
- Trim silence at the start and end of clips.
- Remove alternate takes and unused voice lines.
See how video game music is made for how audio is produced and delivered.
Step 4: meshes and animation
- Enable mesh compression and remove unused vertex data such as extra UV sets or colours.
- Reduce polygon counts for objects seen at a distance, and use levels of detail.
- Compress animation and reduce keyframes. Remove curves for bones that do not move.
- Share animation sets between characters on one skeleton. See game animation cost.
Step 5: remove what is not used
Projects accumulate leftovers.
- Unused assets. Anything in special always-included folders ships whether referenced or not. Audit those folders first.
- Duplicates. The same texture bundled into several asset groups is a common cause of bloat. Analysis tools report duplicated dependencies.
- Test content. Debug scenes, placeholder art and sample scenes from plugins.
- Fonts. Include only the character sets you need, and consider dynamic or subset fonts for large scripts. See game localization cost.
- Video. Pre-rendered video is very heavy. Replace with in-engine sequences or stream it.
Step 6: code and engine
- Use the engine's code stripping at the highest level that still works, and test thoroughly, since stripping can remove code reached only through reflection.
- Build with IL2CPP and target only the processor architectures the stores require.
- Disable engine modules you do not use, such as physics for a card game or unused rendering features.
- Review shader variants. Thousands of unused variants add size and build time.
- Compress the build with a modern method such as LZ4HC where load time allows.
Step 7: fewer kits
Each advertising, analytics and social kit adds code and dependencies. Use mediation with a small set of networks, drop kits that duplicate each other and remove anything left from experiments. This also reduces maintenance, as noted in game maintenance cost and ad mediation for mobile games.
Step 8: let the store split the build
Android App Bundles let Google Play generate a package for each device, containing only the code for its processor, the resources for its screen density and the right texture format. Players download only what their device needs. On iOS, app thinning does the equivalent. Publishing with these is now standard and gives an immediate reduction with no change to the game.
Step 9: deliver content on demand
The most powerful step is to stop shipping everything up front.
| Tool | Platform | Use |
|---|---|---|
| Play Asset Delivery | Android | Asset packs delivered at install, shortly after, or on demand |
| On-Demand Resources | iOS | Tagged resources downloaded when needed and purged when not |
| Addressables or asset bundles | Unity, both platforms | Content hosted on your own servers or a content network |
A typical plan: the initial download contains the tutorial and first few levels. The next batch downloads in the background during the first session. Seasonal events and later worlds download when reached. Design this early, because it affects how scenes and assets are organised. Handle failure well: show progress, allow retry and never block play that does not need the new content.
Set a budget and hold it
Agree a size target at the start, for example an initial download under a figure that suits your markets, and check it in every build. Automated build reports that flag size increases catch a 40-megabyte mistake the day it is added, not the week before launch. See version control for game teams for how automated builds fit into a workflow.
What not to do
- Do not compress interface text and icons until they blur. Players notice immediately.
- Do not strip code without a full regression test.
- Do not make the first session wait on a large extra download.
- Do not optimise blindly. Fix the biggest items in the report first.
Size and speed go together
Smaller textures and meshes also use less memory and load faster, so most of this work improves performance too. The runtime side is covered in mobile game performance optimization. For engines with heavier baselines, see Unreal Engine on mobile.
Getting help
We audit builds and return a ranked list of savings, or do the optimisation as a fixed-price job. Packages are on the offer page.
Sources: Android Developers: Android App Bundles ยท Android Developers: Play Asset Delivery ยท Unity: Addressables package. Checked November 11, 2026.
Related: Mobile game development ยท Unity game development ยท Get a quote
Quick answers โ
What takes the most space in a mobile game?
Usually textures, often more than half the build, followed by audio, meshes, animation, fonts and code.
How can I reduce my Unity game's build size?
Read the build report, resize and compress textures with ASTC, compress audio, remove unused and duplicated assets, enable code stripping, publish as an Android App Bundle and move later content to Addressables or store asset delivery.
Does app size affect downloads?
Yes. Larger downloads are abandoned more often, especially on mobile data and on phones with little free storage, and stores display the size on the listing.
What is an Android App Bundle?
It is a publishing format that lets Google Play build a package for each device with only the code and resources that device needs, reducing download size.
What is on-demand content delivery?
It means shipping a small initial download and fetching later levels or assets when needed, using Play Asset Delivery, Apple On-Demand Resources or Unity Addressables.
Related guides
Mobile game performance optimization → App Store Optimization for games →Is your game too big or too slow? ๐ฆ
We audit and optimise Unity and Unreal mobile games. Quote in 48 hours.