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.
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 'https://www.google.com/s2/favicons?domain=github.com&sz=64'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);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())# 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/pngParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Required | The domain to fetch an icon for. A full URL also works — Google extracts the host. github.com |
sz | integer | Optional | Requested icon size in pixels. Common values are 16, 32, 64 and 128; Google returns the nearest available size. 64 |
domain_url | string | Optional | Alternative 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
Image to Base64 Converter
Convert an image to a Base64 data URL online. Get copy-ready HTML img tags and CSS background-image snippets. Free, instant and fully private.
URL Parser
Parse a URL into protocol, host, port, path, query parameters and hash. Handles relative URLs with a base and shows query params in a table. Free and private.
Image Size Checker
Check image dimensions, file size, aspect ratio and megapixels online for one or many images at once. Fast, free and fully private in your browser.
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.