The two rules that get apps rejected
Generating the sizes is the easy part. The two things that actually cost people a submission are both invisible until the upload fails.
iOS icons cannot contain transparency. App Store validation rejects any icon with an alpha channel, and the error arrives after you have built, archived and uploaded — not while you are designing. A logo exported as a PNG with a transparent background will sail through every other step and then stop you at the last one. This tool detects transparency in your source, tells you, and flattens the iOS icons onto a background colour you choose.
Flattening alone is not enough. A browser saves a PNG with an alpha channel even when every pixel is solid, and the check looks for the channel, not for see-through pixels. We tested this on 1 October 2026: our own flattened icons came out of Chrome as RGBA files, all 18 of them, with zero transparent pixels. The iOS icons are now written as 24-bit PNGs with no alpha channel at all; the Android files keep theirs, because adaptive icon layers need it.
Do not round the corners yourself. iOS applies its own rounded-rectangle mask to whatever you supply. Round your artwork first and the mask is applied on top of your rounding, producing an icon with thin pale corners that looks subtly wrong next to everything else on the home screen. Supply a full square.
What each platform needs
| Target | Goes where | Notes |
|---|---|---|
| iOS | Assets.xcassets/AppIcon.appiconset |
Includes Contents.json; no alpha; square corners |
| Android 8 and later | res/mipmap-anydpi-v26/ic_launcher.xml |
Adaptive icon: foreground layer, background colour, optional monochrome layer |
| Android 7 and older | res/mipmap-*/ic_launcher.png |
Square and round icons in five densities, mdpi through xxxhdpi |
| Play Store | Play Console listing | 512 × 512, uploaded separately from the app |
Full set or a single 1024?
Xcode 14 and later accept a single 1024 × 1024 icon and generate every other size at build time. If you are on a current toolchain, that is one file instead of eighteen and there is no downside.
The full set still matters in three cases: projects on an older Xcode, teams pinned to a specific toolchain in CI, and anyone who wants control over how the small sizes are downscaled rather than accepting Xcode's result. Downscaling a detailed icon to 40 pixels is exactly the kind of operation where the algorithm shows, so if your mark has fine elements it is worth generating the sizes deliberately and looking at them.
Android: adaptive and themed icons in short
The Android half of the ZIP is a complete adaptive icon: a foreground and a background layer, each 108 × 108 dp, of which launchers show only the middle 72 dp and guarantee only a central 66 dp circle. That is why a logo that fills its image edge to edge comes out cut off on Android but looks right on iOS. The size slider here works in dp and says when the logo leaves the safe zone, and the circle, squircle and rounded-square previews show the result. A monochrome layer for themed icons on Android 13 and later is included too.
Making icons for an Android app only? The Android app icon generator opens with iOS switched off, explains every file in the Android ZIP, why themed icons often come out as a plain circle, and how to get the size right in dp.
Start at 1024
Every size here is produced by scaling down, so the source sets the ceiling. Supply 1024 × 1024 and everything below it is a clean reduction. Supply 512 and the App Store icon has to be enlarged — which is the single place reviewers and customers see it largest, and the one place softness is obvious.
If your artwork is vector, export it at 1024 rather than scaling up a smaller PNG. If it is not square, the fit options let you pad it with your background colour or crop to the centre, but a purpose-made square nearly always looks better than either.
Installing the result
The ZIP mirrors the folder structure each platform expects.
AppIcon.appiconset is a complete asset catalogue entry — drag it
into Assets.xcassets and replace the existing one.
The android/res folder maps directly onto app/src/main/res:
copy it in and let it merge with the folders already there. It holds the adaptive
icon definition in mipmap-anydpi-v26, the foreground and monochrome
layers plus the square and round icons in every mipmap-* density, and
the background colour in values/ic_launcher_background.xml. The
<application> element in your manifest should point at
@mipmap/ic_launcher, and optionally at
@mipmap/ic_launcher_round for launchers that use round icons —
new projects already do both.
Projects created from a recent Android Studio template may also contain
res/mipmap-anydpi/ic_launcher.xml; delete it so the project has a single
icon definition. play-store-512.png is not part of the app: upload it in
Play Console as the store listing icon. A README repeats all of this next to the
files.
All of it is generated in your browser. The image is never uploaded, there is no account, and the ZIP is assembled on your own device.