What is the ARSC file format?
An .arsc file is a compiled Android resource table. .arsc files are used by developers to store application resources in a compact binary form the OS can read efficiently at runtime. .arsc resource files contain static data - strings, dimensions, colors, styles and layout configuration values - that does not change during the application's running process. Unlike raw source assets, an .arsc file does not embed images directly; binary drawables are stored as separate entries elsewhere in the package. Source code and resource files are compiled by aapt2 into a single installable .apk package. The resulting file can then be used to install the given application on an Android device.
Inside an .apk (or .aab), the compiled table is always named resources.arsc and stored uncompressed - since Android 11, the runtime memory-maps it directly rather than decompressing it, so it must be 4-byte aligned. All software development environments use some kind of resource files, but only Android uses the .arsc resource table format. Resource files are designed to be accessed anywhere in the project - resources can be referenced throughout the source code via R.* constants such as R.string.app_name. Such an approach allows the codebase to be modified without changing every line where a given resource is referenced. The compiled table can also be decoded from a packaged application using tools such as apktool or the APK Analyzer built into Android Studio.
Security & safety
RISK: LOWresources.arsc is inert data - no code, no macros - so the file itself is harmless to inspect. The only real concern is the APK it came from: decompiling an app may be against its license, and hand-editing the table then re-signing an APK is how malware is sometimes repackaged, so treat modified APKs from untrusted sources with suspicion.
Format details
in a nutshellPrograms that open ARSC files
Technical details
deep spec| File encoding | Binary, little-endian |
| Magic bytes | 02 00 0C 00 at offset 0 (ResChunk_header: type=0x0002 RES_TABLE_TYPE, header size=0x000C) |
| MIME type | application/octet-stream |
| Container | Stored uncompressed (ZIP STORED method, not DEFLATE) inside an APK or AAB archive |
| Typical file size | 10 KB - 5 MB, depending on number of locales, screen densities and string-pool size |
| Internal filename | resources.arsc (fixed name within the APK/AAB ZIP) |
| Resource ID format | 32-bit value 0xPPTTEEEE: 8-bit package, 8-bit type, 16-bit entry; supports up to 255 types and 65,535 entries per type |
| Top-level structure | RES_TABLE chunk containing a global string pool plus one package chunk per app, each holding type-spec and type sub-chunks |
| Configuration dimensions | Maps each resource ID to values across multiple device configurations: language/locale, screen density, orientation, smallest width, API level, and more |
| Sparse encoding | Classic dense type-entry table by default; optional sparse encoding available since Android 14 (SDK 34, 2023) to reduce size |
| Runtime access | Memory-mapped (mmap) at runtime since Android 11; must be 4-byte aligned and stored uncompressed to allow zero-copy access |
| Integrity protection | No built-in checksum; the enclosing APK v2/v3 signature block covers the entire archive including resources.arsc |
| Compiler toolchain | Generated by aapt (legacy) or aapt2 (current Android build tools) from res/values XML source files |
| Associated platform | Android only; not used by iOS, Windows or other mobile platforms |
| Developer | Google / Android Open Source Project (AOSP) |
| Released | 2008 (Android 1.0, part of the APK/aapt toolchain) |
| Latest version | AAPT2 binary table (current with the Android build tools); sparse-encoding option added Android 14 / SDK 34, 2023 |
| Open standard | Yes · royalty-free |
| Specification | android.googlesource.com |
ARSC conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about ARSC files.