AI favicon for Google Search: square, over 48 px, stable URL

Google wants a square favicon bigger than 48 px at a URL that stays put. How to make one with the Sume image API, what it costs, and what no tool can promise.

5 min readSume
All posts

A favicon that Google Search can show must be square (1:1), larger than 48x48 pixels is recommended, and its URL must be stable. You can make the picture with one square call to the Sume image API for between about $0.007 and $0.066, but the call cannot make Google show it; Google says favicons are not guaranteed to appear even when the guidelines are met.

What Google's page says

These are the points from Google's favicon guidelines (read 2026-10-03).

Google favicon requirements (read 2026-10-03)
ItemGoogle's guideline
ShapeSquare, 1:1 aspect ratio
Minimum size8x8 pixels
Recommended sizeLarger than 48x48 pixels
FormatsBMP, GIF, ICO, PNG, JPEG, PPM, TIFF
URLStable; do not change it often
Per siteOne favicon per hostname
CrawlingGooglebot and Googlebot-Image must be able to fetch the file
TimingAllow several days to weeks for a recrawl

Making the picture on Sume

Every catalog row lists 1:1 in its aspect_ratio descriptor, so any model can draw a square. For a favicon the model matters less than the brief: one bold shape, two or three flat colors, no words. A favicon renders at 16 to 48 pixels in a tab or search result, and letters become noise.

If you want a transparent ground, use openai/gpt-image-2.5 with background: "transparent" and output_format: "png"; the Image API docs list background for that model only. Otherwise a cheap row such as Imagen 4 Fast or Grok Imagine at $0.025 per image is plenty for a simple mark.

Square image price per call on Sume (read 2026-10-03)
ModelPrice per imageNote
Grok Imagine (x-ai/grok-image)$0.025One image per call
Imagen 4 Fast (google/imagen-4-fast)$0.025Text-to-image only
GPT Image 2.5 low$0.0074Estimate; supports transparent background
GPT Image 2.5 medium$0.0165Estimate
GPT Image 2.5 high$0.0659Default quality

Export steps

Generate at 1:1, then downscale with Pillow to your master sizes. Write a PNG at 192 px as the file you link, and an ICO with 16, 32 and 48 for old browsers that read /favicon.ico. The script below does both from one call.

import os, requests
from io import BytesIO
from PIL import Image

r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={"model": "openai/gpt-image-2.5", "aspect_ratio": "1:1",
          "quality": "low", "background": "transparent",
          "output_format": "png",
          "prompt": "a bold orange fox head, flat vector icon, two colors, no text"},
    timeout=90)
if r.status_code != 200:
    raise SystemExit(f"{r.status_code}: poll {r.json()['data']['status_url']}")
raw = requests.get(r.json()["data"][0]["url"], timeout=60).content
img = Image.open(BytesIO(raw)).convert("RGBA")
img.resize((192, 192)).save("favicon-192.png")
img.save("favicon.ico", sizes=[(16, 16), (32, 32), (48, 48)])

Things the file cannot fix

Host the file where it will stay. Google asks for a stable URL, so do not put it behind a build hash that changes every deploy, and do not point the rel=icon link at a temporary job URL. Copy the result onto your own domain or CDN.

Also keep a human check in the loop: look at the 16 px render before you ship. Sume does not check whether your favicon is representative of your brand, and Google says it replaces inappropriate icons with a default one. Plan for a wait too: Google says a recrawl of your home page can take several days to weeks, so a changed icon will not show up the same afternoon.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume