App icon sizes in 2026: what iOS, Android and the web actually need
If you ship an app in 2026, the number to remember is 1024. Apple wants one 1024 × 1024 px square, and every other icon size, from the iPhone Home Screen to the Google Play listing, can be made from it, as long as you know the few places where the platforms differ. This is the short list, the traps,

If you ship an app in 2026, the number to remember is 1024. Apple wants one 1024 × 1024 px square, and every other icon size, from the iPhone Home Screen to the Google Play listing, can be made from it, as long as you know the few places where the platforms differ. This is the short list, the traps, and a script that exports the rest from one master. Platform What you provide Size Notes iOS, iPadOS, macOS App icon master 1024 × 1024 px Square, opaque, no rounded corners watchOS App icon master 1088 × 1088 px Masked to a circle visionOS Layered icon 1024 × 1024 px Masked to a circle tvOS Layered icon 800 × 480 px Landscape Google Play Store listing icon 512 × 512 px 32-bit PNG, up to 1024 KB Android Adaptive icon layers 108 × 108 dp Visible area about 72 dp, safe zone 66 dp Android Legacy launcher icon 48 × 48 dp 48–192 px across screen densities Web Favicon 16, 32 and 48 px One .ico, or an SVG Web Apple touch icon 180 × 180 px Used when a site is added to an iPhone Home Screen Web app (PWA) Manifest icons 192 × 192 and 512 × 512 px Add a maskable 512 px version Sources: Apple's Human Interface Guidelines for app icons, the Google Play icon design specifications and the Android adaptive icon guidelines. Rules change after WWDC and Google I/O, so check them before a release. Provide one 1024 × 1024 px icon. Xcode generates every smaller size from it, including the ones for the Home Screen, Spotlight, Settings and notifications, and the App Store icon is the same image. Apple's rules for it: A full square, with no rounded corners. The system applies its own mask, and pre-rounded art ends up with a double edge. No transparency. The App Store rejects an icon with an alpha channel. sRGB or Display P3 colour. Keep the main subject near the centre, so nothing important is lost when the corners are masked. Since iOS 26, icons can be layered: a background plus one or more foreground layers that the system renders with Liquid Glass highlights. You build those in Icon Composer, which comes with Xcode. A flat 1024 px image still works. People can also switch their Home Screen icons to default, dark, clear or tinted; you can design each variant, or let the system generate the ones you don't provide. An Android app needs a 512 × 512 px icon for its Google Play listing, and an adaptive launcher icon made of two 108 × 108 dp layers that ships inside the app. For the Google Play icon, Google asks for a 512 × 512 px, 32-bit PNG in sRGB, up to 1024 KB, as a full square. Google Play rounds the corners itself, with a radius of 30% of the icon's size, and adds its own shadow, so leave both out. For the adaptive icon, a background layer and a foreground layer are each masked by the device into its own shape, such as a circle or a squircle: Both layers are 108 × 108 dp, which is 108 px at mdpi, 162 at hdpi, 216 at xhdpi, 324 at xxhdpi and 432 at xxxhdpi. The outer 18 dp on each side is reserved for masking and motion, so about the central 72 dp is visible. Keep the logo inside the 66 dp safe zone and at least 48 dp across. Left: the adaptive icon canvas and its safe zone. Right: the safe zone of a maskable web app icon. Older launchers still use a plain 48 dp icon: 48, 72, 96, 144 and 192 px at mdpi to xxxhdpi. From Android 13, people can turn on themed icons, which recolour your icon to match the wallpaper; your app takes part if its adaptive icon includes a monochrome layer. Favicon: 16, 32 and 48 px, usually bundled into one favicon.ico. An SVG favicon gives sharp tabs on high-resolution screens. Apple touch icon: 180 × 180 px and opaque. iOS uses it when someone adds your site to their Home Screen. Web app manifest: at least 192 × 192 and 512 × 512 px. Chrome looks for both before it offers to install your app. Maskable icon: a 512 px icon marked "purpose": "maskable", with a solid background and the subject inside a centred circle 80% as wide as the icon. Don't use it for every purpose: the extra padding makes it look small where no mask is applied. A table of numbers hides the real problem: most icon slots are tiny. We took two AI-generated icons, a detailed 3D camera and a simple flat seedling, and downscaled them to the exact pixel size of each slot, from 180 px down to 16 px. The same two icons at real sizes. Both icons are AI-generated. The camera's details merge below 48 px; the seedling still reads at 16 px. The camera's lens, dials and strap lugs have merged into a blur by 48 px, while the seedling is one bold shape on one colour and is still recognisable in a browser tab. Look at your icon at 48 px and below before you commit to it. Pre-rounded corners. The mask is applied on top, leaving a light rim or uneven corners. A transparent background. It can render black on a Home Screen, and App Store Connect rejects an App Store icon with an alpha channel. Words in the icon. An app name that is readable at 1024 px is a smudge at 60 px, and your app's name already sits under the icon. A subject that fills the whole square. A circular launcher mask cuts the edges off. Upscaling a small image. A 512 px logo stretched to 1024 px looks soft on the App Store page. Start from 1024 px or a vector. Once you have a 1024 px master, don't resize by hand. This script (Python 3 with Pillow) reads icon-1024.png and writes the iOS image and its Contents.json, the Android legacy launcher icons and the Play icon, and the web set. We ran it on a 1024 px icon and checked every output size. #!/usr/bin/env python3 """Export app icon sizes from one 1024 x 1024 px master. Needs: pip install pillow""" import json from pathlib import Path from PIL import Image master = Image.open("icon-1024.png").convert("RGBA") if master.size != (1024, 1024): raise SystemExit("Start from a 1024 x 1024 px master") if master.getchannel("A").getextrema()[0] < 255: raise SystemExit("The master has transparent pixels: flatten it onto a background first") master = master.convert("RGB") # opaque, no alpha channel (the App Store rejects one) out = Path("out") def save(path, size, rgba=False): img = master.resize((size, size), Image.LANCZOS) if rgba: img = img.convert("RGBA") # a 32-bit PNG, fully opaque target = out / path target.parent.mkdir(parents=True, exist_ok=True) img.save(target) # iOS: one universal 1024 px image and its Contents.json save("ios/AppIcon.appiconset/AppIcon-1024.png", 1024) (out / "ios/AppIcon.appiconset/Contents.json").write_text(json.dumps({ "images": [{"filename": "AppIcon-1024.png", "idiom": "universal", "platform": "ios", "size": "1024x1024"}], "info": {"author": "xcode", "version": 1}, }, indent=2)) # Android: legacy launcher icons (48 dp at each density) and the Google Play icon for density, px in {"mdpi": 48, "hdpi": 72, "xhdpi": 96, "xxhdpi": 144, "xxxhdpi": 192}.items(): save(f"android/mipmap-{density}/ic_launcher.png", px) save("android/play-store-512.png", 512, rgba=True) # Web: favicon.ico (16, 32 and 48 px), Apple touch icon and manifest icons (out / "web").mkdir(parents=True, exist_ok=True) master.save(out / "web/favicon.ico", sizes=[(16, 16), (32, 32), (48, 48)]) save("web/apple-touch-icon.png", 180) save("web/icon-192.png", 192) save("web/icon-512.png", 512) Where the files go: iOS: copy out/ios/AppIcon.appiconset into your project's Assets.xcassets, replacing the existing set. Android: copy the mipmap-* folders into app/src/main/res/, and upload play-store-512.png in Play Console. Web: put favicon.ico, apple-touch-icon.png and the icons in your site root and reference them in your <head> and web manifest. The script doesn't make the adaptive layers, because they need separate artwork: a 432 px foreground with a transparent background, and a background layer or a colour. Reference them like this: <!-- app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml --> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@color/ic_launcher_background" /> <foreground android:drawable="@mipmap/ic_launcher_foreground" /> </adaptive-icon> The master is 1024 × 1024 px, square and opaque. No rounded corners, drop shadows or borders drawn in. The subject sits inside the safe zone: 66 of 108 dp on Android, 80% on maskable web icons. It is still recognisable at 48 px and at 16 px. The Google Play icon is a 32-bit PNG under 1024 KB. The web manifest lists a 192 px and a 512 px icon. This guide first appeared on the AI Icon Creator blog as App Icon Sizes 2026: iOS, Android and Web Size Chart, which also covers the iOS dark and tinted appearances, the corner-rounding rules and a longer checklist. Written by an AI agent from AI Icon Creator's own tests, reviewed by the team and checked against the Apple and Google documentation linked above.
Key Takeaways
- •If you ship an app in 2026, the number to remember is 1024
- •This story was reported by Dev.to, covering developments in the dev space.
- •AI advancements continue to reshape industries — read the full article on Dev.to for complete coverage.
📖 Continue reading the full article:
Read Full Article on Dev.to →


