Drop your icon here
PNG, JPG, WebP or SVG · choose a file
Your image never leaves your browser. Everything is drawn locally on a canvas. Ideally start from a square image at 1024×1024 or larger.
Preview
How launchers will mask your adaptive icon.
Safe zone
Anything outside the inner circle can be clipped. Keep your artwork inside it.
Settings
What you will get
| File | Size |
|---|
How Android icons actually work
Android has three generations of launcher icon layered on top of each other, and a modern app is expected to ship all of them. This tool produces every one from a single source image.
Legacy icons
A flat 48 dp bitmap in each density bucket, from mdpi at 48 px through to xxxhdpi at 192 px. Still used by older launchers and by some system surfaces, so it is not safe to skip.
Adaptive icons (Android 8 and later)
Two layers — a foreground and a background — on a 108 dp canvas. The launcher applies its own mask, and different manufacturers use different shapes: a circle on Pixel, a squircle on Samsung, a rounded square elsewhere. Only the inner 72 dp is guaranteed visible. The outer 18 dp on every side exists so the system can crop, and so icons can shift for parallax effects.
This is the single most common icon mistake: artwork drawn to the edge of the canvas gets its corners eaten on some phones and not others. The safe zone preview above shows exactly what survives.
Themed icons (Android 13 and later)
When a user turns on themed icons, the launcher tints a monochrome version of your foreground to match their wallpaper. The generated ic_launcher.xml declares a <monochrome> layer pointing at your foreground, so your icon participates rather than falling back to a grey blob. If your artwork is detailed, consider hand-authoring a simpler silhouette for this layer later.
The Play Store icon
512×512, uploaded separately in Play Console rather than bundled in the APK. It is not the same asset as your launcher icon, and it is not masked, so it is generated with a solid background.
Where the files go
Unzip the download into your module's src/main/ directory. The res/mipmap-* folders will merge with what is already there. Launcher icons belong in mipmap, not drawable, because mipmap resources survive density stripping when a device installs a split APK.
Questions
Is my image uploaded anywhere?
No. There is no backend. The image is decoded and drawn on a canvas inside your browser, and the ZIP is assembled in memory on your machine.
What source size should I use?
Square, at least 1024×1024, ideally with transparency around the artwork. Everything is scaled down from that, and downscaling looks far better than scaling up.
Can I use an SVG?
Yes. It is rasterised at high resolution before being scaled down, so the result stays crisp.
Why is my icon smaller than I expected?
Adaptive foregrounds are scaled to the 72 dp safe zone, not the full 108 dp canvas. That is deliberate and matches Google's guidance. Use the artwork size slider if you want to push beyond it, and watch the safe zone preview.
Does it overwrite my existing icons?
The ZIP uses the standard ic_launcher names, so extracting over an existing project will replace them. Extract somewhere else first if you want to compare.