Do it yourself
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main pageChatGPT & Codex
ChatGPT's image generation can give a vibe-coded app a real icon in an evening. The stores are strict about the file, though: an opaque 1024 px square for iOS, a 512 px listing icon and adaptive layers for Android, and nothing that borrows someone else's brand. Here are the prompts, the rules and a script that turns one image into every file WebViewGold needs.
From $109 one-time per platform, or let our team do it all from $698.
ChatGPT's image generation handles the creative part well: it turns a one-line brief into flat, bold symbols, follows color instructions, and lets you iterate in plain language ("thicker stroke, less detail, move it up a little"). You can also upload your existing logo and ask for an icon version of it.
The file part is where it is unreliable: exact pixel dimensions, a real alpha channel when you need one (sometimes it paints a checkerboard instead of transparency), crisp small text, and the identical symbol across two generations. So treat what ChatGPT gives you as artwork: pick one result, save it, and produce every store file from that one file, with an image editor, the script below or the Cloud Builder. The complete spec table lives in the app icon and splash screen guide; this page covers what matters for AI-made art.
| Asset | Rule | Where it goes in WebViewGold |
|---|---|---|
| iOS app icon | 1024 × 1024 px PNG, opaque (no alpha channel), square corners because iOS applies the mask, sRGB. An icon with alpha is refused at upload with ITMS-90717 | Xcode: WebViewGold → General → App Icons and Launch Screen → App Icon Source (the AppIcon set); see the iOS icon docs |
| Google Play listing icon | 512 × 512 px, 32-bit PNG, sRGB, up to 1024 KB, a full square without rounded corners or drop shadow (Play applies both). No text or badges that suggest rankings, deals or Play programs | Play Console → store listing (not inside the project) |
| Android launcher icons | ic_launcher.png, ic_launcher_round.png and ic_launcher_foreground.png in every mipmap-* density folder | Android Studio project; see the Android icon docs |
| Adaptive icon foreground | A 108 dp canvas; launchers crop to circles, squircles or squares, so keep the symbol inside the central 66 dp circle, with transparency around it | ic_launcher_foreground.png in each mipmap folder |
| Splash image | A square GIF (for example 512 or 1024 px), static or animated; the background color is set separately | iOS: splash.gif in the main folder of the Xcode project, color via splashscreencolor in Config.swift. Android: the included splash.gif files, color in colors.xml (Android splash docs) |
Every image generation takes time and changes details. Settle the concept in text, then generate.
I need an app icon for [APP NAME], a [one-sentence description] for [audience]. Brand colors: [#HEX, #HEX]. Propose five icon concepts. For each one give: - the single symbol (one object or shape; no letters, unless it is one bold initial), - the background color, - why it stays recognizable at 60 x 60 pixels, - one risk (too close to a well-known brand, too detailed, too generic). Do not propose store badges, device frames, slogans, or anything resembling the logos or mascots of Apple, Google, OpenAI or other companies. Then recommend one concept in two sentences.

With a good optimized version of your web app you can have a stunning mobile app within a couple of minutes. Additionally to that the customer service is very nice and very helpful! I can just recommend WebViewGold :-)
Ask for a square image. Generate two or three variants, pick one, and download it right away; the next generation will not be identical.
Create a square (1:1) app icon image for [APP NAME] based on concept [N]: [the symbol]. Style: flat vector, bold simple shapes, two or three colors, high contrast. No photorealism, no glossy 3D effects. Composition: one symbol, centered, filling about 55 to 60 percent of the canvas, with an even margin on all sides. Background: solid [#HEX] running to all four edges. No border, no frame, no rounded corners, no drop shadow, no vignette. Do not include: text, letters, numbers, watermarks, device mockups, store badges, or any existing company logo or mascot. The symbol must stay recognizable at 60 x 60 pixels.
Android's adaptive icon and the WebViewGold splash screen work best with the symbol on its own. Ask in the same conversation so ChatGPT reuses the shapes, and check whether the result has real transparency or a painted checkerboard.
Using exactly the same symbol as in the icon I picked (same shapes, proportions and colors), create a square image that shows only the symbol, centered, on a transparent background. If you cannot produce real transparency, use a flat pure magenta (#FF00FF) background instead, a color that does not appear anywhere in the symbol, with no shadow or glow. No text, no border, no frame.
Run prompt 1 with your real colors and audience. Pick a concept simple enough to sketch from memory.
Run prompt 2, compare the variants at thumbnail size (zoom your screen out), and download the winner as PNG.
Square? At least 1024 px? Solid background to every edge? On a Mac, sips -g pixelWidth -g pixelHeight -g hasAlpha master.png answers all three; any image editor does too.
Run prompt 3. If it came back on magenta, remove the background in an editor (Preview's Instant Alpha, Photoshop, Figma, Canva) and export a PNG with transparency.
Run the script below, use an icon generator, or upload just the 1024 px master to the Cloud Builder, which creates every iOS and Android size for you.
iOS: replace the images in the AppIcon set. Android: replace the three PNGs in every mipmap folder one by one, keeping names and folders. Then the splash: replace splash.gif, set the splash color, and on iOS set the LaunchScreen storyboard background to the same color so the launch does not flash white.
Home screen, Spotlight and Settings on iOS (also dark and tinted mode on iOS 18 and later), and a launcher with round icons on Android. If the symbol disappears at small size, fix the artwork, not the file.
This Python 3 script (needs Pillow) takes the master and, optionally, the symbol-only PNG. It writes an opaque 1024 px iOS icon, the 512 px Play icon, the three launcher PNGs for every Android density with the symbol inside the adaptive safe zone, and a square splash.gif. Run it locally, or upload the script and your images to ChatGPT and ask it to run them if code execution is available in your plan.
#!/usr/bin/env python3
"""Turn one AI-generated master icon into the files a WebViewGold project needs.
Usage:
python3 make_store_icons.py master.png --bg "#0F766E"
python3 make_store_icons.py master.png --fg symbol.png --bg "#0F766E"
master.png square artwork with a solid, full-bleed background
--fg optional: the symbol alone on a transparent background (better adaptive icon)
--bg the background color of your icon; reuse it as the splash screen color
Requires Pillow: pip install Pillow
"""
import argparse
import math
from pathlib import Path
from PIL import Image, ImageDraw
DENSITIES = {"mdpi": 1, "hdpi": 1.5, "xhdpi": 2, "xxhdpi": 3, "xxxhdpi": 4}
OUT = Path("store-icons")
def flatten(img, bg):
"""Composite on a solid color and drop the alpha channel (App Store requirement)."""
img = img.convert("RGBA")
base = Image.new("RGBA", img.size, bg)
base.alpha_composite(img)
return base.convert("RGB")
def square(img):
w, h = img.size
if w != h:
print(f"warning: master is {w}x{h}, cropping to a centered square")
s = min(w, h)
img = img.crop(((w - s) // 2, (h - s) // 2, (w + s) // 2, (h + s) // 2))
return img
def save(img, path):
path.parent.mkdir(parents=True, exist_ok=True)
img.save(path)
print("wrote", path, img.size, img.mode)
def adaptive_foreground(symbol, px):
"""108 dp canvas; the bounding box of the symbol must fit the 66 dp safe circle."""
canvas = Image.new("RGBA", (px, px), (0, 0, 0, 0))
sym = symbol.convert("RGBA")
sym = sym.crop(sym.getbbox() or (0, 0, sym.width, sym.height))
scale = (px * 66 / 108) / math.hypot(sym.width, sym.height)
sym = sym.resize((max(1, round(sym.width * scale)), max(1, round(sym.height * scale))), Image.LANCZOS)
canvas.alpha_composite(sym, ((px - sym.width) // 2, (px - sym.height) // 2))
return canvas
def main():
ap = argparse.ArgumentParser()
ap.add_argument("master")
ap.add_argument("--fg", help="symbol on a transparent background")
ap.add_argument("--bg", default="#FFFFFF")
a = ap.parse_args()
master = flatten(square(Image.open(a.master)), a.bg)
if master.width < 1024:
print(f"warning: master is only {master.width}px; the App Store needs 1024x1024")
# iOS: one opaque 1024 px PNG for the AppIcon set
save(master.resize((1024, 1024), Image.LANCZOS), OUT / "ios" / "AppIcon-1024.png")
# Google Play listing icon: uploaded in the Play Console, not in the project
save(master.resize((512, 512), Image.LANCZOS), OUT / "play" / "play-icon-512.png")
symbol = Image.open(a.fg) if a.fg else None
for name, f in DENSITIES.items():
folder = OUT / "android" / f"mipmap-{name}"
legacy = round(48 * f)
icon = master.resize((legacy, legacy), Image.LANCZOS)
save(icon, folder / "ic_launcher.png")
mask = Image.new("L", (legacy, legacy), 0)
ImageDraw.Draw(mask).ellipse((0, 0, legacy - 1, legacy - 1), fill=255)
rnd = icon.convert("RGBA")
rnd.putalpha(mask)
save(rnd, folder / "ic_launcher_round.png")
fg_px = round(108 * f)
fg = adaptive_foreground(symbol, fg_px) if symbol else master.resize((fg_px, fg_px), Image.LANCZOS)
save(fg, folder / "ic_launcher_foreground.png")
# Splash: square GIF with the symbol on your splash background color
if symbol:
splash = Image.new("RGB", (1024, 1024), a.bg)
s = adaptive_foreground(symbol, 1024)
splash.paste(s, (0, 0), s)
else:
splash = master.resize((1024, 1024), Image.LANCZOS)
save(splash.convert("P", palette=Image.ADAPTIVE), OUT / "splash" / "splash.gif")
if __name__ == "__main__":
main()OpenAI's terms of use assign you the rights to the images you create, so commercial use is allowed. That does not guarantee the design is free of third-party trademarks, so do the similarity check described above.
There is no rule against AI-made artwork. The same rules apply as for any icon: the right format, no misleading or infringing content, and an icon that matches the app.
The iOS icon file must be. If ChatGPT returns another size, resize the image you picked (the script does it) rather than regenerating and getting a different design.
They are optional. WebViewGold uses the standard AppIcon set, and current iOS versions work from that icon. Apple's Icon Composer can create layered icons with extra appearances if you want more control.
Yes. WebViewGold accepts static or animated GIFs as long as the image is square. Keep the animation short and match the background color to the first screen of your web app.
Use real screenshots of the built app; generated pictures of features misrepresent the app and risk a Guideline 2.3 rejection. ChatGPT is useful for captions and the background artwork around real screenshots.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.