Generate a favicon
Upload one logo and get the whole favicon set a site needs: the 16x16 tab icon, the larger Android home-screen sizes, the Apple touch icon and an ICO file for older browsers. You pay per icon set, with no subscription.
This task is not available right now, so it cannot be purchased. Nothing is charged for it.
How it works & APIevery size and format from one image
Why one favicon became a whole family
The favicon started in the late 1990s as a single 16x16 ICO file, before browser tabs even existed. Then came phone home screens, high-resolution displays and web apps that can be installed like any other app, and each platform added its own size and format instead of agreeing on one. Today a properly set up site ships far more icon variants than most people expect: small ones for browser tabs, larger ones for Android home screens, the Apple touch icon, Windows tiles and an ICO bundle for older browsers.
What goes wrong when a size is missing
Making a favicon by hand is really a dozen small export jobs, and each one is easy to forget. Get one wrong and the icon looks blurry in a tab, or simply does not appear when someone adds the site to an Android home screen. Generating the whole set from one source image removes that checklist: every size comes from the same logo, so the icons stay consistent. It helps when a new site's logo is final, when a brand refresh touches many sites at once, or when an installable web app needs its larger icons. The finished set arrives as a download link that stays valid for 24 hours.
A little history behind the favicon zoo
The favicon started in the late 1990s as a single 16x16 ICO file referenced in a page's head, back when browser tabs did not even exist yet. As mobile home screens, retina displays, and installable web apps arrived, that one icon multiplied into a family of sizes and formats, each platform adding its own convention rather than converging on one. The result is that a correctly configured site today ships far more icon variants than most developers realize.
What you can do with it
Website launch checklist
Generate the full favicon set the moment a new site's logo is finalized, instead of manually exporting each size.
Brand refresh automation
Regenerate every icon size across dozens of client sites automatically whenever a shared brand logo is updated.
PWA and home-screen readiness
Produce the larger icon sizes a progressive web app manifest needs alongside the standard browser favicon.
FAQ
Is this favicon generator free?
There's no free tier — free tiers get abused and slow everyone down. No subscription, no tokens, no invented credits, and a failed task is never charged.
What sizes and formats are included?
The set covers the standard range sites need in practice, from the small browser-tab size through Apple touch icon dimensions to an ICO bundle, generated together in one call.
What image should I upload as the source?
A clean, square, high-resolution image works best, since every smaller icon is rendered down from it and a low-resolution source limits sharpness across the set.
Am I charged if favicon generation fails?
No. A failed task is retried automatically up to three times and is never billed if it ultimately fails; you pay only for a completed set.
How is this different from a manual favicon generator tool?
It is the same output a browser-based generator produces, but callable directly from your automation with signed, time-limited delivery instead of a manual download step.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
One authenticated POST creates the task; the result comes back by webhook or a signed link. This capability is currently available through the API, not as an interactive Web tool.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/image/favicon \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/favicon", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/favicon",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/favicon", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/favicon", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"image": "https://ejemplo.com/imagen.jpg"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.favicon",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 15 |
max_megapixels | 12 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Upload a single source image and our favicon generator API renders the entire set your site actually needs — the tiny 16x16 for browser tabs, the larger sizes for Android home screens, the Apple touch icon, and an ICO bundle for older browsers. It exists because 'just make a favicon' is really a dozen small, easy-to-forget image jobs.
One image, a dozen requirements
Modern browsers, phone home screens, PWA manifests, and Windows tiles each expect a favicon in a slightly different size and sometimes a different container format. Get one wrong and the icon looks blurry in a tab or is simply missing on an Android home screen. POST /image/favicon takes the tedium out of that checklist by generating the whole set from a single source image in one call.
How the request flows
Because it runs asynchronously, it drops neatly into a build pipeline or CMS plugin without holding up a page render. You submit your source image, the task is queued and a task_id comes back immediately, and once processing finishes you receive the generated set through a signed webhook or a signed link that stays valid for 24 hours.
Built for automated pipelines
No manual export from a design tool, no missed size in the batch. Because every favicon set starts from the same source logo, this is a natural fit for CI: regenerate the full icon set whenever the brand logo changes, and let the webhook drop the new files straight into your asset pipeline or static site build.
What quality to expect
A square logo with a simple mark tends to survive the trip down to 16x16 far better than a wide, detail-heavy wordmark, since the smallest sizes leave almost no room for fine strokes to stay legible. Each output is generated directly from your source image at the resolution each target requires, so a crisp source produces crisp icons across the whole set — the endpoint does not upscale a low-resolution logo into something it was never rendered at.
Integration use cases
CMS or theme plugin
Let site owners upload a logo once and have your plugin call the API to produce every icon file the theme references.
Technical questions
How do I generate a favicon set with the API?
Send your source image to POST /image/favicon; you get a task_id right away and the complete icon set arrives afterward via webhook or a 24-hour signed link.
What does generating a favicon set cost?
Each request costs $0.002 plus $0.005 per icon set produced, charged only when generation succeeds.
Can I automate favicon generation across many sites?
Yes, since each call is independent and asynchronous, it's straightforward to loop it into a build system or multi-tenant CMS that regenerates icons whenever a logo changes.