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.
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
| Platform | Goes where | Notes |
|---|---|---|
| iOS | Assets.xcassets/AppIcon.appiconset |
Includes Contents.json; no alpha; square corners |
| Android | app/src/main/res/mipmap-* |
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's adaptive icon crop
Android launchers do not display your icon as supplied. An adaptive icon is 108 × 108 density-independent pixels, but the launcher masks it to whatever shape the device uses — a circle, a squircle, a rounded square, a teardrop on some manufacturers' skins. Only the central 72 × 72 is guaranteed to survive.
In practice that means the outer third of your icon can vanish. A logo that fills the square edge to edge will have its corners eaten; text near the edge will be cut mid-letter. Switch on the safe-zone overlay in the preview to see the boundary, and keep anything that matters inside it.
This is the opposite instinct from iOS, where filling the square is correct because the mask is a predictable rounded rectangle. If you are shipping both, the safest single design is one that reads well inside a circle and still looks deliberate as a square.
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 folder contains mipmap-* directories that map
directly onto app/src/main/res; copy them in and the launcher icon is
updated. 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.