CruxDevCruxDev Tools Prompts
image Utility • Zero-Server Privacy • 100% Client-Side

App Store Icon Generator

Upload one 1024px master icon and export the iPhone, iPad, and App Store sizes (20-1024px) as an Xcode-ready AppIcon.appiconset ZIP.

Overview

Turns a single 1024×1024 master image into the PNG set Xcode expects in an iOS asset catalog: 13 distinct PNG sizes rendered from your upload, a valid Contents.json covering 18 icon slots, and an ios-app-icons.zip you can import straight into Assets.xcassets.

How It Works

The file input accepts PNG, JPEG, and WebP, with the label recommending a 1024×1024 square with no transparency to match the App Store marketing icon's requirements. Generate renders the 13 distinct pixel sizes — from 20px notification icons up to the 1024px App Store icon — fills transparent areas with white (the App Store rejects an alpha channel), centre-crops non-square sources to a square, builds Contents.json, and packages the archive for download.

Step-by-Step Usage Guide

  1. Prepare a 1024×1024 square master; transparent areas are filled white for you because the App Store rejects an alpha channel.
  2. Upload the master through the file input and run the generator.
  3. Download ios-app-icons.zip and unzip it next to your project.
  4. Drop the AppIcon.appiconset folder (PNGs and Contents.json) into Xcode's Assets.xcassets.

Technical Specifications & Standards

The generated Contents.json carries 18 image entries (iPhone, iPad and ios-marketing slots) plus author metadata, so Xcode reads the archive as a complete AppIcon catalog covering the iPhone, iPad, and ios-marketing idioms. watchOS and Mac sizes are not produced, so those targets need their own artwork. The ZIP is written by a minimal dependency-free writer using the STORE method without compression, so it opens anywhere but stays larger than a compressed archive. Files are named AppIcon-<size>.png and sit inside an AppIcon.appiconset folder in the ZIP; because several slots share one pixel size, 13 PNGs serve all 18 entries and Contents.json points those slots at the same file, so there are no duplicate files to rename.

Targeted Use Cases

  • App Store submission prep: producing the 1024px marketing icon App Store Connect requires, from the same master as the rest of the set.
  • New Xcode project setup: filling Assets.xcassets in one import instead of assigning each size by hand.
  • Rebranding an iOS app: regenerate the whole catalog from the new master in a single pass.
  • Handing icons to a teammate: the uncompressed ZIP opens in any unzip utility for a quick audit of the 13 PNGs and Contents.json.

Notes & Gotchas

  • Expect transparency to be flattened: the App Store 1024 marketing icon must have no alpha channel, so transparent areas are filled white — put a real background in the master if white is wrong for your brand.
  • Start from a square image. The 1024×1024 size is not enforced: non-square masters are centre-cropped to a square and a source under 1024 pixels is upscaled, both flagged beside the file name.
  • Expect fewer files than slots: 13 PNGs serve all 18 Contents.json entries because several slots share a pixel size, so nothing needs renaming on import.
  • Plan separate artwork for watchOS and Mac — no sizes for those platforms are in this set.

Frequently Asked Questions

Does the tool remove transparency from my icon?

Yes. Transparent areas are filled white, so the output has no alpha channel, which the App Store marketing icon requires.

Which sizes and idioms are covered?

Thirteen distinct PNG sizes covering 18 slots across iPhone, iPad, and the 1024px App Store marketing icon, from 20px notification sizes upward. watchOS and Mac are not included.

Why are there fewer PNGs than Contents.json entries?

Some icon slots need the same pixel size, so the tool renders each size once and Contents.json points those slots at the same file.

Is the 1024×1024 input size enforced?

No. Non-square masters are centre-cropped to a square, and sources under 1024 pixels are upscaled with a warning, so a square 1024×1024 master gives the cleanest result.