How to app icon sizes and formats: ios and android reference
- Step 1Confirm your target surfaces — This tool covers iOS (iPhone/iPad) and Android launcher icons plus the two store-listing icons (1024 iOS, 512 Play). If you also need macOS, watchOS, tvOS, or Windows tiles, plan to produce those separately — they are not in the output.
- Step 2Generate the set — Run the App Icon Generator on a square SVG. There are no presets or platform toggles; the full iOS + Android set is produced every time.
- Step 3Read the iOS layout — Inside
ios/AppIcon.appiconsetyou geticon_<S>x<S>.pngfor each of the 13 sizes and aContents.jsonwhose entries are allscale: 1x, with idiom assigned by size (1024 → ios-marketing, ≥76 → ipad, else iphone). - Step 4Read the Android layout —
android/mipmap-mdpi|hdpi|xhdpi|xxhdpi|xxxhdpi/ic_launcher.pngat 48/72/96/144/192, plusandroid/play-store-icon.pngat 512. - Step 5Place the files — Drag
AppIcon.appiconsetinto Xcode'sAssets.xcassets; copy eachmipmap-*PNG into the matchingres/mipmap-*folder; upload the 512 to Play Console. - Step 6Cover the surfaces this tool skips — For browser/PWA icons use svg-favicon-master. For macOS/watchOS/tvOS/Windows, build those catalogs from the same SVG with your IDE or other tooling.
iOS — every PNG the generator writes
All 13 iOS sizes, their filenames, and the Contents.json idiom each receives (derived from size: 1024 → ios-marketing, ≥76 → ipad, else iphone). All entries are scale 1x.
| Pixel size | Filename | Contents.json idiom |
|---|---|---|
| 20 | icon_20x20.png | iphone |
| 29 | icon_29x29.png | iphone |
| 40 | icon_40x40.png | iphone |
| 58 | icon_58x58.png | iphone |
| 60 | icon_60x60.png | iphone |
| 76 | icon_76x76.png | ipad |
| 80 | icon_80x80.png | ipad |
| 87 | icon_87x87.png | ipad |
| 120 | icon_120x120.png | ipad |
| 152 | icon_152x152.png | ipad |
| 167 | icon_167x167.png | ipad |
| 180 | icon_180x180.png | ipad |
| 1024 | icon_1024x1024.png | ios-marketing |
Android + format facts
Android densities and the format properties that hold across every file the tool emits.
| Item | Value | Detail |
|---|---|---|
| mipmap-mdpi | 48px | android/mipmap-mdpi/ic_launcher.png |
| mipmap-hdpi | 72px | android/mipmap-hdpi/ic_launcher.png |
| mipmap-xhdpi | 96px | android/mipmap-xhdpi/ic_launcher.png |
| mipmap-xxhdpi | 144px | android/mipmap-xxhdpi/ic_launcher.png |
| mipmap-xxxhdpi | 192px | android/mipmap-xxxhdpi/ic_launcher.png |
| Play Store icon | 512px | android/play-store-icon.png |
| File format | PNG | Canvas toBlob("image/png") — no JPEG/WebP option |
| Aspect | Square | Each size is S × S; non-square SVGs stretch |
| Transparency | Preserved | Alpha kept at every size, including the 1024 |
| Scale entries | all 1x | Contents.json uses explicit pixel filenames, not @2x/@3x |
Out of scope — and where to go instead
Surfaces and features people expect from an all-platform list that this tool does not produce.
| Not produced | Status | Alternative |
|---|---|---|
macOS .icns set | Not generated | Build a macOS catalog separately in Xcode |
| watchOS / tvOS catalogs | Not generated | Author per-target catalogs from the same SVG |
| Windows MSIX tiles | Not generated | Generate Windows assets with platform tooling |
| Android adaptive layers | Not generated | Hand-author foreground/background + ic_launcher.xml |
| Favicons / web icons | Not generated | svg-favicon-master |
| @2x/@3x scale slots | Not used | Explicit pixel PNGs at scale 1x are provided |
Cookbook
The exact output shape, ready to match against your project.
The full ZIP tree
Everything the generator writes, in one place.
<stem>-app-icons.zip ├─ ios/AppIcon.appiconset/ │ ├─ icon_20x20.png … icon_180x180.png (12 home-screen sizes) │ ├─ icon_1024x1024.png (App Store marketing) │ └─ Contents.json ├─ android/ │ ├─ mipmap-mdpi/ic_launcher.png (48) │ ├─ mipmap-hdpi/ic_launcher.png (72) │ ├─ mipmap-xhdpi/ic_launcher.png (96) │ ├─ mipmap-xxhdpi/ic_launcher.png (144) │ ├─ mipmap-xxxhdpi/ic_launcher.png(192) │ └─ play-store-icon.png (512) └─ <stem>.svg (source)
A Contents.json entry, as generated
Each iOS size becomes one image entry; all are scale 1x with idiom derived from size.
{
"images": [
{ "filename": "icon_180x180.png", "idiom": "ipad",
"scale": "1x", "size": "180x180" },
{ "filename": "icon_1024x1024.png", "idiom": "ios-marketing",
"scale": "1x", "size": "1024x1024" }
/* …one entry per size… */
],
"info": { "author": "JAD App Icon Gen", "version": 1 }
}Extraction with no renaming
The folder names already match the destinations.
unzip -o <stem>-app-icons.zip -d gen
cp -r gen/ios/AppIcon.appiconset/* \
App/Assets.xcassets/AppIcon.appiconset/
cp -r gen/android/mipmap-* app/src/main/res/
# play-store-icon.png → Play Console uploadNeed macOS/watchOS too?
This tool stops at iOS + Android. Cover other Apple targets from the same source SVG using Xcode.
svg-app-icon-gen → iOS + Android (this tool) macOS .icns → build a macOS AppIcon set in Xcode watchOS / tvOS → per-target catalogs in Xcode web favicons → svg-favicon-master (/svg-tools/svg-favicon-master)
Need a favicon set instead?
The favicon sibling produces a real .ico plus web PNGs and link tags — a different surface.
svg-favicon-master (/svg-tools/svg-favicon-master) emits: favicon.ico (multi-res: 16, 32, 48) icon-16.png … icon-512.png <link rel="icon" …> snippets → use it for the browser; use app-icon-gen for launchers
Edge cases and what actually happens
Looking for macOS / watchOS / tvOS files
Not generatedThe output is iOS + Android only. There is no .icns, no watchOS or tvOS catalog. Build those from the same SVG in Xcode. This reference lists only what the tool actually writes.
Looking for Windows MSIX tiles
Not generatedNo Windows Store assets are produced. Use platform-specific tooling for MSIX tile sizes; this tool targets the two mobile stores.
Expecting @2x / @3x scale slots in Contents.json
By designEvery entry is scale: 1x with an explicit pixel filename rather than scale-grouped @2x/@3x slots. The pixel-exact PNGs are all present; verify your Xcode version resolves the catalog without warnings, and re-slot if it expects scale groups.
Wanting JPEG or WebP output
PNG onlyAll frames are PNG (toBlob("image/png")); there is no format option. App stores expect PNG icons, so this matches requirements — but do not look for WebP/JPEG output.
Transparency in the 1024 icon
ReviewPNG transparency is preserved at every size, including the 1024. App Store Connect rejects an alpha 1024, so flatten it (or bake an opaque background into the SVG) before submitting.
Non-square source distorts the squares
DistortionEach PNG is square; a non-square SVG is stretched to fit. Square the viewBox with svg-viewbox-fixer first.
Adaptive icon layers missing
Not generatedAndroid output is legacy square ic_launcher.png per density. Adaptive icons need foreground/background layers plus ic_launcher.xml, authored manually.
The source SVG appears in the ZIP
Expected<stem>.svg is included at the ZIP root alongside the rasters by design. Exclude it from any app bundle so the vector source is not shipped to users.
Frequently asked questions
Exactly which iOS sizes are generated?
Thirteen PNGs: 20, 29, 40, 58, 60, 76, 80, 87, 120, 152, 167, 180, and 1024px — named icon_<S>x<S>.png inside ios/AppIcon.appiconset, with a Contents.json that references them.
Exactly which Android sizes are generated?
Five mipmap densities — mdpi 48, hdpi 72, xhdpi 96, xxhdpi 144, xxxhdpi 192 — each as mipmap-<density>/ic_launcher.png, plus a 512px play-store-icon.png.
What format and aspect are the icons?
PNG, square (each size is S×S), with transparency preserved. There is no JPEG/WebP option and no aspect adjustment — a non-square SVG will be stretched.
Does the Contents.json use @2x/@3x?
No. Every entry is scale: 1x with an explicit pixel filename, and idiom is derived from size (1024 → ios-marketing, ≥76 → ipad, else iphone).
Are macOS icon sizes included?
No. macOS .icns sets are not produced. Build a macOS AppIcon catalog separately in Xcode from the same SVG; this tool covers iOS + Android only.
Does it generate a watchOS icon set?
No. watchOS (and tvOS) catalogs are out of scope. Author those per-target in Xcode. The generator emits the iPhone/iPad sizes plus Android densities and the two store icons.
What about Windows / Microsoft Store tiles?
Not produced. Use Windows-specific tooling for MSIX tile sizes. This tool targets the iOS App Store and Google Play.
Where is the App Store and Play Store listing icon?
The 1024×1024 is in the iOS catalog (icon_1024x1024.png, ios-marketing idiom); the 512×512 Play icon is android/play-store-icon.png. Upload each to the correct store field.
Does it create Android adaptive icons?
No — only legacy square ic_launcher.png per density. Adaptive icons need separate foreground/background layers and ic_launcher.xml, authored manually.
What is the file naming convention?
iOS: icon_<width>x<height>.png (e.g. icon_120x120.png). Android: each density folder contains ic_launcher.png; the Play icon is play-store-icon.png. The ZIP is <your-file>-app-icons.zip.
Where do I get favicons or web icons?
From svg-favicon-master, which emits a multi-resolution favicon.ico (16/32/48) plus web PNGs and HTML <link> tags. This app-icon tool is launcher-only.
Which tier and how is privacy handled?
App icon generation requires the Developer plan and runs entirely in your browser via Canvas + JSZip — nothing is uploaded. The result panel shows 0 bytes uploaded.
Privacy first
Every JAD SVG tool runs entirely in your browser using the DOM API and Canvas. Your SVG files never leave your device — verified by zero outbound network requests during processing.