Skip to content
8 min read Guides Android

Android App Icon Sizes: Play Store, Adaptive and Themed

Android asks for two separate icons. One is the store icon, a square image you upload to Play Console for your listing. The other is the launcher icon in your app bundle, which since Android 8.0 is an adaptive icon built from layers that each device masks into its own shape. This guide covers both, plus themed icons, densities and the tools that make the files. Google's specifications below come from its own pages as of 16 September 2026.

The short version

  • The Play Store icon is 512 x 512 pixels, a 32-bit PNG in sRGB, no larger than 1024 KB. Upload it as a full square: Google Play adds the rounded corners and the shadow.
  • The launcher icon is adaptive: a foreground layer and a background layer, each 108 x 108 dp. The inner 66 x 66 dp is the safe zone that no device mask clips.
  • Add a monochrome layer so the icon can follow the user's wallpaper colours on Android 13 and later.
  • Android Studio's Image Asset Studio generates the launcher icons and a 512 x 512 store image for you.

The sizes in one table

As of 16 September 2026, these are the figures on Google's Google Play icon design specifications, the Play Console Help page Add preview assets to showcase your app, and the Android developer guide to adaptive icons:

AssetSizeFormat and rulesWhere it appears
Play Store icon512 x 512 px32-bit PNG, sRGB, up to 1024 KB. Full square, no rounded corners, no drop shadowYour store listing, search results and top charts
Adaptive icon layers (foreground, background, monochrome)108 x 108 dp eachVectors preferred, bitmaps allowed. Clean edges, no masks or outer shadowsLauncher, shortcuts, Settings, share sheets, the overview screen
Safe zoneInner 66 x 66 dpNever clipped by a device maskEvery shape a device uses
Logo inside the foregroundAt least 48 x 48 dp, at most 66 x 66 dpKeep it inside the safe zoneThe visible part of the icon
Outer margin18 dp on each sideReserved for masking and for effects such as parallax or pulsingThe edges of each layer
Android TV banner1280 x 720 pxJPEG or 24-bit PNG, no alpha. Required for an Android TV appAndroid TV devices

The Play Store icon

The store icon does not replace your launcher icon. Play Console Help describes it as a higher-fidelity, higher-resolution version that follows Google's icon design specifications, and you must provide it before you can publish your store listing.

Google Play renders icons in a uniform shape, so the specifications ask for a full square and handle the rest. As of 16 September 2026, the page says:

  • Shape: Google Play applies the mask, with a corner radius equal to 30% of the icon size. Don't round the corners yourself.
  • Shadow: Google Play adds a drop shadow after upload. Don't add your own around the edge. Shadows and lighting inside the artwork are fine.
  • Background: pick a background colour that suits your brand and has no transparency. A transparent icon shows Google Play's own background colour through it. The Help page lists the format as 32-bit PNG with alpha, but the design page's advice is to keep the background opaque.
  • Artwork: illustrated artwork usually works full bleed. A logo whose shape matters should sit on Google's keyline grid rather than be stretched to fill the square.
  • No misleading badges: no text or graphics that suggest ranking, deals, price, a Google Play category or programme. Google's page says elements like these mislead users and violate its Developer Program Policies.

Adaptive launcher icons

Device makers each supply a mask, so the same icon can appear as a circle on one phone and a squircle on another. That is why Google's adaptive icons guide asks for oversized 108 dp layers with the logo kept inside the inner 66 dp: the mask cuts the edges, and the spare 18 dp on each side gives the launcher room for motion effects. Vectors are preferred for the layers, and none of them should carry its own mask or outer shadow.

You reference the icon from the manifest with android:icon, and you can add android:roundIcon for launchers that show circular icons. The adaptive icon itself is an XML file at res/mipmap-anydpi-v26/ic_launcher.xml:

<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background" />
    <foreground android:drawable="@drawable/ic_launcher_foreground" />
    <monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Google's own example reuses the foreground drawable as the monochrome layer. That is a reasonable start, but a foreground that relies on colour to separate its shapes can turn into a blob in one tint, so draw a dedicated monochrome version if yours does.

Themed icons and the monochrome layer

From Android 13 (API level 33), people can turn on themed app icons. When they do, and their launcher supports it, the system tints icons that have a monochrome layer using colours from their wallpaper and theme. The adaptive icons page also says that from Android 16 QPR 2, Android themes the icons of apps that don't provide their own.

So on newer devices, the monochrome layer decides whether the themed icon is one you designed or one the system made from your artwork. Your normal icon shows instead when the user hasn't turned theming on, when the launcher doesn't support it, or when your app has no monochrome icon and the device runs a version older than Android 16 QPR 2.

To preview it in Android Studio, open the XML file that defines your icon and use the System UI Mode selector in the toolbar to switch wallpapers.

Mipmap densities, if you still need them

Vector layers scale to any screen. You still need density versions in two cases: when a layer is a bitmap, and for the legacy icon. Image Asset Studio's documentation says legacy launcher icons are for devices on Android 7.1 (API level 25) or lower, which don't support adaptive icons. If your minimum SDK is 26 or higher, no device that installs your app needs one.

Google's screen densities guide gives the scaling ratio as 3:4:6:8:12:16 across the six primary densities, and asks you to keep app icons in mipmap folders rather than drawable. Some launchers draw icons up to 25% larger than the device's density calls for, and mipmap folders are all kept in the APK, so the launcher can pick the next size up. Applied to a 108 dp layer, the ratio gives:

FolderScale108 dp layer
mipmap-mdpi1x108 x 108 px
mipmap-hdpi1.5x162 x 162 px
mipmap-xhdpi2x216 x 216 px
mipmap-xxhdpi3x324 x 324 px
mipmap-xxxhdpi4x432 x 432 px

You rarely need to make these by hand: Image Asset Studio does it for you.

Generating icons with Image Asset Studio

As of 16 September 2026, Google's guide to creating app icons describes the flow. In the Project window's Android view, right-click res and choose New > Image Asset, then set Icon Type to Launcher Icons (Adaptive and Legacy). Fill the Foreground Layer tab with an image, clip art or text, the Background Layer tab with a colour or image, and the Monochrome Layer tab with its own asset, or let Android Studio reuse the foreground. The Options tab sets whether to generate legacy, round and Google Play Store icons.

The tool previews the icon as a circle, squircle, rounded square and square, and places the results in the res/mipmap-<density>/ folders. It also creates a 512 x 512 pixel image for Google Play, a good starting point for the store icon.

Flutter and React Native

Both frameworks build a normal Android project underneath, so the rules above apply unchanged. What differs is where you set the icon.

Flutter

As of 16 September 2026, Flutter's guide to building and releasing an Android app says a new app has a default launcher icon, and points to the flutter_launcher_icons package for customising it. The manual route it describes is to follow Google's adaptive icon guidelines, put your files in the mipmap- folders under android/app/src/main/res/, and reference them from the android:icon attribute in AndroidManifest.xml.

React Native with Expo

As of 16 September 2026, Expo's guide to splash screens and app icons describes an android.adaptiveIcon property in the app config, with foregroundImage, monochromeImage, and either backgroundColor (white by default) or backgroundImage, which must match the foreground's dimensions. It asks for PNG files, and suggests a separate android.icon for older devices without adaptive icons. A React Native app without Expo keeps a standard Android project in its android folder, so you set the icon there, for example with Image Asset Studio.

Before you upload, look at the icon as a circle and a squircle on a real device, with themed icons on and off. The listing needs more than an icon. See our guides to Google Play screenshot sizes and publishing an app on Google Play. If you also ship on iOS, see app icon sizes for Apple platforms.

How FeedbackKit fits in

FeedbackKit has nothing to do with your icon file. It helps with the question after it: whether a redesign or a dark map style is worth the week it costs. Users have opinions about those, so ask them.

With FeedbackKit, users post requests and vote on them inside your app, and you can see which requests have the most votes. If "New app icon" sits near the bottom of the board while "Offline maps" has hundreds of votes, you have your answer. On Android there is a Kotlin SDK with Jetpack Compose screens (Kotlin docs), plus Flutter and React Native SDKs. Our guide to adding a feedback board to an Android app walks through the setup. Here is how collecting requests looks in FeedbackKit, with sample data from a fictional hiking app:

Ask before you redesign

The same FeedbackKit request list in an app on Mac, iPad, iPhone and Android, where users submit and vote on requests from inside the app.

Get the icon right once, then let your users tell you what to build next. Start free, and see pricing for what each plan includes.

Keep reading

Collect feedback in your own app

FeedbackKit ships SDKs for Swift, Kotlin, React Native, Flutter and JavaScript, and syncs what your users ask for into the tracker your team already uses.