Favicon analysis and download
The favicon checker is available as a JSON API. Give it the URL of a page: it returns every icon the page declares (plus the default locations), the web manifest, and a list of pass / warning / error checks. Icons under 300 KB come with a data: URI so you can download them straight from the response.
Request
GET https://easyfavicongenerator.com/api/check.php?url=https://example.com/url(required): the page to analyze. The scheme is optional (https://is assumed, thenhttp://).- CORS is enabled: you can call it from a browser, from any origin.
- Fair use: 20 requests per minute per IP address (HTTP 429 beyond).
curl "https://easyfavicongenerator.com/api/check.php?url=github.com"
# JavaScript
const r = await fetch('https://easyfavicongenerator.com/api/check.php?url=' + encodeURIComponent('github.com'));
const report = await r.json();
console.log(report.summary, report.icons.map(i => i.href));Response
{
"inputUrl": "https://github.com",
"finalUrl": "https://github.com",
"status": 200,
"title": "GitHub ...",
"icons": [
{
"kind": "icon", // icon | apple | manifest | mask | tile
"rel": "icon",
"source": "html", // html | default | manifest | browserconfig
"href": "https://.../favicon.svg",
"declared": "/favicons/favicon.svg",
"sizes": "", "type": "image/svg+xml",
"status": 200, "contentType": "image/svg+xml",
"format": "svg", // png | ico | svg | jpeg | gif | webp
"width": 32, "height": 32, "sizesFound": [], // ICO files list all their sizes
"bytes": 959, "alpha": null,
"preview": "data:image/svg+xml;base64,...",
"error": null
}
],
"manifest": { "href": "...", "status": 200, "valid": true, "json": { "name": "...", ... } },
"browserconfig": null,
"themeColors": [ { "color": "#1e2327", "media": "" } ],
"meta": { "apple-mobile-web-app-title": "..." },
"checks": [
{ "level": "ok", "id": "svg", "section": "desktop", "title": "SVG favicon found", "message": "..." }
],
"summary": { "ok": 10, "warning": 3, "error": 0, "info": 3 },
"ms": 1830
}Check levels
ok: requirement satisfied.warning: works, but something should be improved.error: something is broken (missing file, HTTP error, invalid manifest).info: optional recommendation.
The section of a check is one of page, desktop, google, ios, android, windows, safari.
The google check follows Google Search’s current favicon guidance (docs updated 2026-10-27): a square raster icon of at least 48×48 pixels in a supported format (BMP, GIF, ICO, PNG, JPEG, …). SVG does not count, and the size does not need to be a multiple of 48. Safari 26+ uses SVG favicons in tabs, but Google Search still needs a separate raster.
Errors
Errors are returned as { "error": "message" } with an HTTP status: 400 for an invalid or forbidden URL, 429 when rate limited, 500 for an unexpected failure. A page which cannot be fetched is not an HTTP error: it is a regular report with an error level check.
Security and limits
- Only
httpandhttps, on ports 80, 443, 8080 and 8443; no credentials in URLs. - Private, loopback, link-local and reserved addresses (IPv4 and IPv6) are refused, including after DNS resolution and on every redirect.
- 5 redirects at most; page limited to 1.5 MB, each icon to 1 MB; 8 to 12 second timeouts.
Using it in CI
curl -s "https://easyfavicongenerator.com/api/check.php?url=https://your-site.com" | jq -e '.summary.error == 0'The command exits with a non-zero status when the checker finds an error. Combine it with the MCP server to let an agent fix what it finds.