Upload your 1024×1024 icon. Download an organized ZIP containing all Android mipmap densities, Xcode-ready AppIcon.appiconset (with Contents.json), Google Play 512px icon, and Expo assets.
Drop PNG, JPG, WebP, SVG, or paste from clipboard (Cmd+V).
Click the download icon on any row to export that specific PNG directly.
Copy android/res into:
android/app/src/main/res/
Drag AppIcon.appiconset into:
ios/YourApp/Images.xcassets/
Declare in app.json:
"icon": "./assets/icon.png"
Strictly verified against Apple Human Interface Guidelines and Android Developer Standards.
Four steps, about a minute, entirely in your browser.
Drop in a square PNG or JPG at 1024x1024. Larger images are accepted and downscaled; anything smaller will look soft at the top densities.
Use the zoom control (-30% to +40%) to set padding and pick a background colour to fill any transparency, which iOS requires for App Store icons.
Export a single ZIP containing AppIcon.appiconset with Contents.json, Android mipmap folders from mdpi to xxxhdpi, adaptive foregrounds, the Google Play 512px icon, Expo assets and web favicons.
Copy AppIcon.appiconset into your Xcode asset catalog, the mipmap-* folders into android/app/src/main/res, and the Expo assets into your assets directory.
No. Every resize runs in your browser using the HTML5 Canvas API. The image never leaves your device and nothing is stored or logged.
1024x1024 pixels. That is the App Store marketing size and the largest asset any platform needs, so every smaller size can be downscaled from it without quality loss.
Yes. The AppIcon.appiconset folder ships with a valid Contents.json, so you can drop the folder straight into your Xcode asset catalog and it will be recognised immediately.
mdpi (48px), hdpi (72px), xhdpi (96px), xxhdpi (144px) and xxxhdpi (192px), for both square and round launcher icons, plus 108dp adaptive icon foregrounds and the 512x512 Google Play Store listing icon.
Yes. The ZIP includes icon.png, adaptive-icon.png and splash-icon.png sized for the Expo app.json config, alongside the native iOS and Android folders that bare React Native projects use.
Yes, it is completely free with no sign-up, no watermark and no limit on how many icon sets you generate.
Copy each mipmap-* folder into android/app/src/main/res, replacing the folders already there. The launcher icon files keep the ic_launcher and ic_launcher_round names Android expects, and ic_launcher_foreground goes in the same place for adaptive icons. No Gradle or manifest change is needed as long as the names match.
Since Android 8 the launcher composites a 108x108 dp foreground over a 108x108 dp background and masks the result to whatever shape the device uses — circle, squircle or rounded square. Only the centre 72dp is guaranteed visible, so artwork that fills the full 108dp will be clipped at the corners. The generator exports foregrounds at that 108dp canvas with the artwork kept inside the safe circle.
Expo needs icon.png at 1024x1024, adaptive-icon.png at 1024x1024 for the Android foreground, and favicon.png for web — all referenced from app.json. A bare React Native project skips those and uses the native folders instead: AppIcon.appiconset in the Xcode asset catalog and the mipmap densities under android/app/src/main/res. The ZIP contains both sets, so it works either way.
App Store Connect rejects a 1024x1024 marketing icon that contains an alpha channel or rounded corners — iOS applies its own mask, so the source must be a full, opaque square. Set a background colour here before exporting and the transparency is flattened for you, while the Android and Expo assets keep their alpha where those platforms want it.
The splash screen generator takes the same logo and exports Android 12+ splash drawables with themes.xml, an iOS LaunchScreen.storyboard with a dark-aware colour set, and Expo splash-icon.png — and it previews the circular mask Android 12 applies, which is what crops most splash screens.