Any site's favicon, from a URL.
Put /favicon?url= and a domain into an img tag and get back that site's icon: the same file the site serves, in whatever format it uses. Made for link lists, dashboards and anywhere else you show other people's sites. No key, no account.
The preview is the real response from that URL, exactly what your page would load.
Put a face on every link.
You already store the domain. One img tag per row turns it into the icon people recognise.
Link lists and bookmarks
Show the icon next to every outbound link on a bookmarks page, a newsletter archive or a link-in-bio list. Readers spot the source before they read the title.
Dashboards and admin tools
Customer tables, CRMs and uptime monitors scan faster when each row carries the company's icon. Use the domain column you already have: /favicon?url=linear.app.
Pasted links in chat and comments
When someone pastes a link into your app, show the site's icon beside it straight away, before you fetch a full preview or instead of one.
Crawlers, reports and SEO tools
List the domains a crawl found, the sites that link to you or the competitors you track, each with its icon, without collecting and storing image files yourself.
Where we look, in order.
- 01
The page's link tags
We load the page you name and read its <link> tags for icon, shortcut icon and apple-touch-icon, in the order they appear. The first one that downloads is the answer.
- 02
The usual files at the root
If the page has none that work, we try /favicon.ico, /favicon.png, /favicon.svg, /apple-touch-icon.png and /apple-touch-icon-precomposed.png on that domain.
- 03
A neutral default
If nothing turns up, you get a plain blue 64 px square with a white I, so a missing icon never shows up as a broken image in your layout.
The file comes back exactly as the site serves it: ICO, PNG, SVG, JPEG, GIF or WebP, with a Content-Type read from the bytes themselves. Icons range from 16 px to 512 px and more, so set a width and height on the img. Each result is stored the first time it's requested and sent with a one-year cache header.
<img src="https://imgsrc.pub/favicon?url=github.com"
width="16" height="16" alt="">One parameter. The domain.
Pass a bare domain or a full page address. Everything else is worked out from the site itself.
| Parameter | Values | Default | What it does |
|---|---|---|---|
| url | domain or page URL | required | A domain like figma.com or a full page address. https:// is added when you leave the scheme out. Missing url returns a 400. |
Nine domains, nine icons.
Each icon is loaded live from the URL under it, in whatever format the site uses. example.com has no favicon, so it gets the default.
Favicons, answered.
Is the favicon API free?+
Yes. There is no account and no API key, and you can call it from any site.
What size will the icon be?+
Whatever the site provides. Many serve a 16 or 32 px .ico, others a 180 px Apple touch icon or an SVG. Set width and height on the img so every row lines up, and expect tiny icons to look soft if you scale them up a lot.
What happens when a site has no favicon?+
You get the default: a blue 64 px PNG with a white I. example.com is a handy way to see it. Your page shows a tidy square instead of a broken image.
Do I pass a domain or a full URL?+
Either. figma.com is read as https://figma.com. A full address like https://github.com/vercel reads that page's link tags, which matters for sites that set different icons on different pages. The fallback files are always looked up at the root of the domain.
Can I read the icon with fetch() or draw it on a canvas?+
Use it in img tags and CSS backgrounds. The responses don't send CORS headers, so a script on another site can't read the bytes with fetch(), and a canvas you draw it onto can't be exported.
How fresh are the icons?+
An icon is stored the first time anyone asks for it and sent with a one-year cache header. If a site changes its favicon later, the stored one keeps being served.
The rest of the toolbox.
Five more free tools, and three AI tools for when a placeholder won't do.

Placeholder image
FreeAny size up to 4000 px, in PNG, JPG, WebP, GIF or SVG, with your own colours and text.
Placeholder video
FreeLooping H.264 MP4s from 50 to 1280 px, for players and hero sections you haven't shot yet.
QR code
FreeA PNG for any link or text, at the highest error correction, so it still scans when printed small.
Share card
FreeA 1200×630 Open Graph image drawn from a title and one line of text. Point og:image at it.
Logo resizer
FreeOne square logo in; favicon.ico, Apple, Android and PWA icons and a web manifest out. It runs in your browser.
AI image
1–30 creditsSquare, landscape or portrait, at 1024×1024, 1536×1024 or 1024×1536.
AI logo
30 creditsA 1024 px mark, delivered on a solid background and on a transparent one.
AI share card
30 creditsA 1200×630 illustrated Open Graph image for a launch, post or product page.
You have the domain.
Now show the icon.
Type a domain, copy the URL, put it in an img tag.







