Skip to content

← All tools

Free tool for iOS developers

IPA inspector

Drop an .ipa file to see what is inside before you upload or share it: bundle ID, version and build, minimum iOS version, supported devices and orientations, URL schemes, every NS…UsageDescription permission string, which bundles have a PrivacyInfo.xcprivacy, the embedded provisioning profile, frameworks and app extensions with their bundle IDs, the main binary's architectures, and a size breakdown with the 20 largest files. The IPA is read in your browser and never uploaded.

Nothing is uploaded. The IPA is read by this page, in your browser, and only the small files it needs are unpacked. Builds contain your team ID, bundle IDs and, for development and ad hoc builds, device UDIDs.

Drop an .ipa file

Any size up to 4 GB. Only the ZIP index and a few small files are read, so large apps stay fast.

How it works

  • •An .ipa is a ZIP archive holding Payload/YourApp.app/. The page reads only the ZIP's central directory from the end of the file, which lists every file with its size, then unpacks just the files it needs: Info.plist files, embedded.mobileprovision and the icon. A 2 GB IPA is not loaded into memory.
  • •Info.plist is usually a binary plist in a built app. The page reads binary and XML plists with its own parser, the same one the provisioning profile viewer uses.
  • •Architectures come from the first bytes of the main binary: a universal file starts with a header listing each slice (for example arm64 and x86_64), a single-architecture file names its CPU in the Mach-O header. Only the start of the binary is unpacked.
  • •A privacy manifest is counted for the app when PrivacyInfo.xcprivacy sits at the top of the .app, and for a framework or extension when one is anywhere inside it. Manifests in the app's resource bundles (Swift packages put them in Name_Name.bundle) are listed separately.
  • •Sizes are added up from the ZIP directory: unpacked size and the size in the IPA, grouped by each folder or file at the top of the app, plus folders outside it such as SwiftSupport.

What it does not do

  • •It does not read Assets.car, so icons kept only in the asset catalog are not shown, and Apple's CgBI-optimized PNGs are reported but not displayed.
  • •It does not verify the code signature, decrypt App Store (FairPlay) binaries or disassemble anything.
  • •It does not check privacy manifest contents or the required-reason API declarations inside them, only whether the file is there.
  • •It does not show localized permission strings from InfoPlist.strings, only the Info.plist values.
  • •Sizes are before App Store thinning, so the download size on a given iPhone is smaller.

Questions

What is inside an IPA file?
An IPA is a ZIP archive. The app bundle sits in Payload/YourApp.app/ with Info.plist, the main executable, Assets.car, embedded frameworks in Frameworks/, app extensions in PlugIns/ and, for development, ad hoc and enterprise builds, embedded.mobileprovision. App Store exports from Xcode can also include SwiftSupport/ and Symbols/ next to Payload/.
Can I check a large IPA without it crashing the browser tab?
Yes. The page reads the ZIP's central directory from the end of the file and unpacks only small files, plus the first part of the main binary. It never loads the whole IPA into memory, so apps of several hundred megabytes or more work. The limit is 4 GB.
How do I check whether my app and its SDKs have a privacy manifest?
Drop the IPA here: the app and each framework and extension are marked with or without a PrivacyInfo.xcprivacy. Apple requires one for apps and for many commonly used third-party SDKs that use required-reason APIs. When one is missing, App Store Connect sends an email after upload such as ITMS-91053 (missing API declaration) or ITMS-91061 (missing privacy manifest).
Why is my app icon not shown?
Either the app keeps its icon only in Assets.car, which this page does not read, or the PNG is Apple's CgBI format, which Xcode writes when Compress PNG Files is on and which browsers cannot draw. For a CgBI file the page says so and gives its size; `xcrun pngcrush -revert-iphone-optimizations in.png out.png` converts it back.
How do I check which architectures my app supports?
The page reads the Mach-O header of the main executable named in Info.plist. iOS apps today are arm64 only. On a Mac you can confirm with `lipo -archs Payload/YourApp.app/YourApp` after unzipping.
Why is the size here bigger than the App Store download size?
The App Store thins each app for the device that downloads it, leaving out images and code for other devices, and compresses the download. The unpacked total here is the size before thinning. App Store Connect shows the per-device download and install sizes after you upload a build.

Related