BYTETOOLS

Google Favicon Service API

Free favicon API with no key: pass a domain and get back that site's favicon as a PNG at any size. Handles missing icons with a fallback. Tested example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Google Favicon Service API?

Google's favicon service is a free, key-free endpoint that returns any website's favicon as a PNG. Requesting it with a `domain` parameter and a size returns an icon for that domain, falling back to a generic globe when the site has no favicon.

Fetching a site's favicon sounds trivial until you try it. Sites declare icons in half a dozen ways — a root `favicon.ico`, a `link rel=icon` tag, an Apple touch icon, a web app manifest — in a mix of ICO, PNG and SVG, and plenty of them 404 or block cross-origin requests. This endpoint hides all of that behind one URL that always returns a PNG.

It is worth being clear about what this is: an undocumented internal endpoint that Google has served for many years and that Chrome itself uses. It is stable in practice and used widely across bookmark managers and link tools, but it carries no SLA and no formal documentation, so treat it as a convenience with a fallback rather than critical infrastructure. Also note that every request tells Google which domain you are looking up.

Quick facts

Base URL
https://www.google.com/s2
Authentication
No key, no account and no quota to register for. It is an undocumented endpoint, so there is no formal support channel either.
Rate limit
No published limit. Aggressive automated use may be throttled by IP.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Google Favicon Service API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch GitHub's favicon at 64 pixels

GET https://www.google.com/s2/favicons?domain=github.com&sz=64

curl
curl 'https://www.google.com/s2/favicons?domain=github.com&sz=64'
JavaScript (fetch)
const res = await fetch("https://www.google.com/s2/favicons?domain=github.com&sz=64");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.google.com/s2/favicons?domain=github.com&sz=64", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
# This endpoint returns image/png, not JSON.
# The response body is the image itself, so it can be used directly as an
# <img src="..."> or saved to a file — there is nothing to parse.
#
# Verified: HTTP 200, Content-Type: image/png

Parameters

ParameterTypeRequiredDescription
domainstringRequiredThe domain to fetch an icon for. A full URL also works — Google extracts the host. github.com
szintegerOptionalRequested icon size in pixels. Common values are 16, 32, 64 and 128; Google returns the nearest available size. 64
domain_urlstringOptionalAlternative to `domain` accepting a full URL. Behaves identically in practice. https://github.com

Response fields

(body)image/png
The favicon as PNG bytes. Always a PNG regardless of the source format, so an ICO or SVG favicon is converted for you.
(fallback)image/png
A generic globe icon is returned when the domain has no discoverable favicon, so the request never fails with a 404.

What you can build with the Google Favicon Service API

  • Show site icons next to links in a bookmark manager or read-later app
  • Add favicons to a link directory or resource list
  • Display the source site's icon on news or RSS aggregator cards
  • Enrich a browser history or analytics dashboard with recognisable icons

Common errors and how to fix them

200 with a globe icon

The domain has no favicon Google could find, or does not exist.

Fix: There is no error status to detect. If you need to distinguish, compare the response bytes against a known copy of the fallback globe.

429 / 403

Throttled after unusually heavy automated use from one IP.

Fix: Cache icons on your own server. Favicons change very rarely, so a long cache is safe and dramatically cuts request volume.

302

The request redirects into Google's internal faviconV2 service.

Fix: This is normal and the documented URL keeps working — just follow redirects. Do not pin the redirect target, which is internal and changes shape.

Google Favicon Service API — frequently asked questions

Is the Google favicon API free and official?

It is free and needs no key, but it is not an officially documented API — it is an internal endpoint Chrome uses that Google has served publicly for many years. It is reliable in practice, though there is no SLA, so keep a fallback icon.

What sizes does the favicon endpoint support?

The `sz` parameter accepts values like 16, 32, 64 and 128. Google returns the nearest size it holds, so asking for 128 may return a smaller icon upscaled or a 64-pixel image for sites that publish nothing larger.

What happens if a site has no favicon?

You get a generic globe PNG with a normal 200 status rather than an error, which means the endpoint never breaks your layout — but also that you cannot detect the miss from the status code alone.

Are there privacy implications to using it?

Yes, worth knowing: every request tells Google which domain you are resolving an icon for, along with your users' IP addresses if you call it from the browser. Proxy and cache the icons server-side if that matters for your application.

Tools that pair with this API

Google Favicon Service is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.