PNG to ICNS
An .icns file is a container holding the same icon at every size macOS might need, from the 16-pixel version in a list view to the 1024-pixel one in the App Store. Normally you build one with iconutil and a folder of correctly named PNGs. Drop one square PNG here and get the finished container instead.
Drop a square PNG here
1024×1024 gives the best result — multiple files allowed
Start from 1024×1024
Everything in the container is scaled down from what you provide, so the largest entry can never be sharper than the source. Give it a 1024×1024 PNG and every size below it is a clean downscale. Give it a 256-pixel image and the 512 and 1024 entries are upscaled and soft — which is exactly the icon a reviewer notices. If your artwork is vector, export it at 1024 first.
Square matters too. Non-square input is letterboxed into a square canvas rather than stretched, because a distorted icon looks worse than a padded one, but you will get transparent bars. Crop to square beforehand with Square or Crop to ratio.
What goes in the file
The container is straightforward: the four bytes icns, a big-endian total length,
then a run of typed elements each carrying its own four-character type and length. Modern
element types take an entire PNG as their payload, which is what gets written here — so an
.icns built this way is really a small archive of PNGs plus an index.
The 1× ladder is icp4 (16), icp5 (32), icp6 (64),
ic07 (128), ic08 (256), ic09 (512) and
ic10 (1024). With retina entries switched on you also get ic11,
ic12, ic13 and ic14 — the 32, 64, 256 and 512 pixel
renderings that macOS uses as the @2x versions of 16, 32, 128 and 256. Leave them on unless you
have a specific reason not to; a Retina Mac without them falls back to scaling the 1× art up.
Transparency is preserved by default, which is nearly always what you want — macOS icons are rounded shapes on the desktop background, not squares. The background options exist for the occasional icon that is genuinely meant to be a filled rectangle.
FAQ
Where does the .icns go in an app bundle?
YourApp.app/Contents/Resources/, with the filename listed under CFBundleIconFile in Info.plist. For an Electron or Tauri build, point the packager's icon option at the file and it handles the rest.
Finder still shows the old icon.
Icon caching, not a bad file. killall Finder usually does it; if not, sudo rm -rf /Library/Caches/com.apple.iconservices.store followed by a restart of Dock and Finder clears the stubborn cases.
Should I add the rounded corners and shadow myself?
For a macOS app icon, yes — Apple's guidelines expect the artwork to already be the rounded-square shape with its own shading. macOS does not clip or round it for you. Round corners and Drop shadow handle both steps before you build the container.
Is this the same as what iconutil produces?
Structurally yes — the same element types with PNG payloads. iconutil also writes a table of contents element that this omits; it is optional, and macOS, Preview and Finder all read the file without it.
Can I make a Windows .ico instead?
Yes — PNG to ICO does the equivalent job for Windows, and Favicon kit produces the whole set a website needs.