App Icon Generator

Drop one square PNG and get every app icon size: iOS, Android, PWA and macOS ladders in a ZIP, named the way each store expects them.

Your image is processed entirely in the browser and never uploaded. Only the JSZip library is fetched from a CDN when you download the ZIP.

Platform sets

The maskable file letterboxes your art to 80% of the canvas on the color you pick — what Android launchers that crop to circles need.

Files in the ZIP
FileSizeKB
—

How It Works

The uploaded image is decoded once, center-cropped to a square and kept in memory; every requested size is then drawn into its own canvas with high-quality resampling and re-encoded to PNG. Each checked platform set contributes its ladder of sizes under its naming convention, the table fills in real byte sizes after generation, and Download ZIP packs everything plus a README with placement notes.

Why every platform wants a whole ladder
Launchers do not scale one master image — each picks the size closest to its display density so the icon stays crisp from a 16 px macOS menu bar to a 512 px store listing, and shipping only one size makes some of them resample badly. That is what the iOS (40–180), Android mipmap (48–192 + 512 store), PWA (192/512) and macOS (16–512) ladders here cover.
The maskable safe-zone math
Android adaptive-icon launchers cut a circle (or squircle) out of the canvas, so an edge-to-edge design loses everything in the corners. The maskable option letterboxes your art to 80% of the canvas — 10% padding per side, exactly the safe zone Google documents — over a solid background color you choose, so nothing important ever falls under the mask.
Play Store and the 512 rule
Google Play separately requires one 512×512 PNG under 1 MB with no alpha-transparency surprises for the store listing — that is why the Android set always carries a 512 entry distinct from the in-app mipmaps. The ZIP names files per convention, but the favicon .ico container is outside this tool's scope: see the favicon generator for legacy formats.

Frequently Asked Questions

Can I use a JPG or WebP instead of PNG?

PNG is what every launcher consumes, and lossy JPG artifacts get baked into the tiny icon sizes where they are most visible. The tool does open JPG and WebP files — it decodes them and re-encodes clean PNG output — but start from a lossless source (PNG or SVG export) whenever you have one.

Should my icon have rounded corners?

Do not bake them in. iOS automatically applies its squircle mask to every home-screen icon, Android launchers vary their overlays, and if you ship pre-rounded art you can end up with rounded corners inside rounded corners. Supply a full-bleed square with important content inside the middle ~80% and let each system mask it.

What is the maskable option actually doing?

It letterboxes your artwork to 80% of the canvas on a solid background you pick, producing the 512 px maskable-icon variant Android launchers request. Maskable icons exist because Android crops edge-to-edge art into circles, and the 10% padding per side is the published safe zone: anything outside the middle 80% circle can be cut.

Can I get a favicon.ico out of this?

Not from this page — writing the .ico container needs a dedicated encoder. Modern browsers accept plain PNG favicons, so icon-40/48/64 PNGs plus a link rel="icon" type="image/png" are usually enough; for legacy .ico files use the favicon generator on this site.

Is anything uploaded to a server?

No. Your image is decoded, resampled and packed into the ZIP entirely in the browser; the only network dependency is the JSZip library fetched from a CDN — if it cannot load (offline, blocked), the tool tells you and you lose only the ZIP step, not the icon generation itself.