Icon Horse API
Free favicon API with no key: fetches the highest-quality icon for any domain and always returns something, generating a letter-mark fallback when a site has none. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Icon Horse API?
Icon Horse is a free, key-free favicon API. Given a domain it finds the best available icon — checking the web app manifest, Apple touch icons, declared link tags and the root favicon — and always returns an image, generating a coloured letter-mark when a site has no icon at all.
Every favicon service has to solve the same discovery problem, because sites declare icons in half a dozen incompatible ways. Icon Horse's angle is quality and guaranteed output: it prefers the largest, highest-fidelity icon it can find rather than the 16-pixel `favicon.ico`, and it never returns nothing.
That last part is the practical difference from Google's favicon endpoint, which falls back to a generic globe for every unknown site — so a link list ends up showing the same grey globe a dozen times. Icon Horse instead generates a distinct coloured letter-mark from the domain name, which keeps entries visually distinguishable. It is a small thing that matters a lot in a dense list of links.
Quick facts
- Base URL
https://icon.horse- Authentication
- No API key for standard use. A paid tier exists for high volume and adds an SLA, but the free endpoint needs no account.
- Rate limit
- Fair-use throttling on the free tier. Icons are cached aggressively on their side.
- Pricing
- Free tier with no key; paid plans for high-volume commercial use.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Icon Horse 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 the best available icon for github.com
GET https://icon.horse/icon/github.com
curl 'https://icon.horse/icon/github.com'const res = await fetch("https://icon.horse/icon/github.com");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://icon.horse/icon/github.com", 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 | path segment | Required | The domain to fetch an icon for, appended to `/icon/`. A bare hostname, not a full URL. github.com |
size | query | Optional | Preferred icon size. Icon Horse returns the closest match it holds rather than upscaling aggressively. large |
fallback | query | Optional | Control the behaviour when no icon is found. The default generates a letter-mark from the domain. |
Response fields
(body)image- The icon itself as raw bytes, usually PNG. The URL works directly in an `img` tag with no JSON step.
Content-Typeheader- Image MIME type, typically `image/png`.
(fallback letter-mark)image- When a site has no discoverable icon, a coloured letter-mark derived from the domain is generated — distinct per domain, unlike a shared generic globe.
What you can build with the Icon Horse API
- Show site icons in a bookmark manager, link directory or read-later app
- Add recognisable favicons to an RSS or news aggregator
- Display icons next to entries in a browser-history or analytics dashboard
- Build a link-preview card component that always has an icon
Common errors and how to fix them
Letter-mark instead of a real icon
The site has no discoverable favicon.
Fix: This is the intended behaviour, not a failure. If you need to detect it, compare against a known letter-mark or check the image dimensions.
429
Fair-use throttling on the free tier.
Fix: Cache icons on your own storage. Favicons change very rarely, so a multi-week cache is safe and removes nearly all traffic.
Timeout on first request
Icon Horse is fetching and analysing the target site live.
Fix: The first request for a new domain is slow; subsequent ones are served from their cache. Prefetch icons rather than blocking a page render on them.
Icon Horse API — frequently asked questions
Is the Icon Horse API free?
Yes, the standard endpoint is free with no API key or account. A paid tier exists for high-volume commercial use and adds an SLA, but you do not need it to start.
How is Icon Horse different from Google's favicon service?
Two things. It prefers the highest-quality icon available — checking the web app manifest and Apple touch icons rather than settling for a 16-pixel favicon.ico — and when a site has no icon it generates a distinct coloured letter-mark instead of returning the same generic globe for everything.
What happens if a website has no favicon?
You get a generated letter-mark based on the domain name, with a colour derived from it. That keeps entries in a link list visually distinguishable, which a shared fallback icon does not.
Should I cache the icons?
Yes. Favicons change very rarely, and the first request for an unseen domain is slow because Icon Horse fetches and analyses the target site live. Prefetch and store them rather than calling on every page render.
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.
Icon Horse 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.