GET リクエスト 1 回で、URL からあらゆるサイトのファビコンを取得。API キー不要、登録不要。
favicondl のファビコン API は、GET リクエスト 1 回であらゆるドメインや URL をそのファビコンに変換します。API キーもアカウントも SDK も不要です。<img> タグにそのまま書けます。
<img src="https://favicondl.com/api/extract?url=github.com" width="32" height="32" alt="GitHub のファビコン">
JSON をリクエストすれば、どのファイルが見つかり、どこから取得したかを確認できます。
curl "https://favicondl.com/api/extract?url=github.com&format=json"
{
"ok": true,
"domain": "github.com",
"size": 128,
"iconUrl": "https://github.githubassets.com/favicons/favicon.svg",
"proxyUrl": "https://favicondl.com/api/proxy?url=https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg",
"source": "html",
"rel": "icon",
"format": "svg",
"width": null,
"height": null,
"pageUrl": "https://github.com/",
"candidates": [
{ "url": "https://github.githubassets.com/favicons/favicon.svg", "format": "svg", "vector": true, "source": "html", "rel": "icon", "proxyUrl": "…" },
{ "url": "https://github.githubassets.com/assets/app-icon-512-7f9c4ff2e960.png", "format": "png", "width": 512, "height": 512, "source": "manifest", "rel": "manifest", "proxyUrl": "…" },
{ "url": "https://github.com/favicon.ico", "format": "ico", "width": 32, "height": 32, "source": "direct", "rel": "favicon.ico", "proxyUrl": "…" }
]
}
iconUrl はサイト上の元ファイルです。proxyUrl は同じ画像を当社のプロキシ経由で Access-Control-Allow-Origin: * 付きで返すので、canvas に描画したりブラウザのコードから fetch したりできます。
format、width、height は、選ばれたファイルを当社で実測した値です(SVG の場合 width/height は null)。candidates には、同じサイトで検証済みのほかのアイコン(サイズや形式が異なるもの)が最大 8 個並ぶので、別のものを選べます。上の例は一部を省略しています。Google や DuckDuckGo にフォールバックした場合は空になります。
www ↔ 素のドメインを含む)を追跡します。アイコン関連の <link> をすべて読み取ります:icon、shortcut icon、apple-touch-icon、apple-touch-icon-precomposed、mask-icon。相対リンクやプロトコル相対リンク(//cdn…)は、最終的なページ URL またはその <base> タグを基準に解決します(source: "html")。source: "manifest")。/favicon.ico と /apple-touch-icon.png も試します(source: "direct")。size で使用します(source: "google_s2" または "duckduckgo")。検証済みの候補は、最も鮮明なファイルが選ばれるように順位付けされます。フルカラーの SVG が最優先で、次に最も大きい正方形の PNG/ICO/WebP です。Safari の単色 mask-icon や、maskable とだけ指定された manifest アイコンは、通常のファビコンとは見た目が異なるため順位を下げています。サイトで見つかったアイコンは元のサイズのまま返され、size パラメーターはフォールバックにのみ影響します。
google_s2 が返ってきた場合、そのサイトには当社から取得できるアイコンがないか、リクエストがブロックされています(ボット確認ページが返された場合など)。1 サイトだけなら、トップページのファビコンダウンローダーがブラウザから直接いくつかの取得元も試し、見つかったすべてのサイズを表示するので、そこから選べます。
4 つのサービスはいずれも無料で使い始められ、API キーも不要です。違いは返ってくる内容です。
| favicondl | Google S2 | DuckDuckGo | Icon Horse | |
|---|---|---|---|---|
| エンドポイント | /api/extract?url=example.com | google.com/s2/favicons?domain=example.com&sz=64 | icons.duckduckgo.com/ip3/example.com.ico | icon.horse/icon/example.com |
| API キー | 不要 | 不要 | 不要 | 不要(無料プラン) |
| 公開されている無料枠 | なし(フェアユース) | 非公開 | 非公開 | 無料プランで月 1,000 アイコン |
| サイズ指定 | size(16〜512、Google フォールバック用) | sz | なし | 記載なし |
| 返ってくるもの | 見つかればサイトの元ファイル(SVG、PNG、ICO など) | PNG または JPEG(実測) | ICO(実測) | PNG(実測) |
| JSON メタデータ | あり(format=json:アイコン URL、取得元、形式、実測ピクセルサイズ、最大 8 個の代替アイコン) | なし | なし | なし |
| github.com のテスト結果 | favicon.svg(ベクター) | sz=16 で 16×16 PNG、sz=256 で 180×180 | 16×16 と 32×32 を含む ICO | 256×256 PNG |
結果は 2026 年 10 月 12 日に当社が実際にリクエストしたものです。Icon Horse の無料枠は料金ページによります。外部サービスは予告なく変わることがあるため、本番環境で利用する前に各サービスの規約を確認してください。
Mzu favicondl は、コピーして使えるファビコン URL テンプレートとファビコン抽出 UI を提供しています。独自の抽出 API がサイトの公開している実際のアイコンを見つけ、画像プロキシによってブラウザのコードからもダウンロードできるようにします。
高速プレビューのための最適化
登録不要
高可用性を設計
本プロジェクトは無料のファビコンサービスURLテンプレートを使用しており、認証やAPIキーは不要です。
注意: APIキーは不要ですが、過度なリクエストを避け、合理的にご利用ください。
FaviconDL Extract API
ドメインや URL から使えるファビコンを見つけてダウンロード
https://favicondl.com/api/extract
https://favicondl.com/api/extract?url=example.com&size=128
| パラメーター名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
url |
string | はい | - | 対象のドメインまたは URL(例:example.com) |
size |
number | いいえ | 128 | フォールバック時のサイズ(16〜512ピクセル)。Google のファビコンサービスにフォールバックする場合のみ使用され、サイト自体で見つかったアイコンは元のサイズのまま返されます。 |
format |
string | いいえ | redirect | メタデータが必要なら json を指定。省略するとダウンロード可能な画像へリダイレクトします |
ドメインとサイトの完全な URL の両方に対応:
Google ファビコンサービス用のフォールバックサイズ(16〜512ピクセル):
16 - 16x1632 - 32x32128 - 128x128512 - 512x512{
"ok": true,
"domain": "example.com",
"size": 128,
"iconUrl": "https://example.com/favicon.svg",
"proxyUrl": "https://favicondl.com/api/proxy?url=...",
"source": "html",
"rel": "icon",
"format": "svg",
"width": null,
"height": null,
"pageUrl": "https://example.com/",
"candidates": [ ... ]
}
{
"ok": false,
"error": "Missing url"
}
注意: format=redirect使用時、APIはJSONレスポンスを返さず、ファビコンURLに直接リダイレクトします。
async function getFavicon(url, size = 128) {
const endpoint = new URL('https://favicondl.com/api/extract');
endpoint.searchParams.set('url', url);
endpoint.searchParams.set('size', String(size));
const response = await fetch(endpoint);
if (!response.ok) throw new Error(`Favicon request failed: ${response.status}`);
return await response.blob();
}
const icon = await getFavicon('example.com', 128);
const imageUrl = URL.createObjectURL(icon);
document.querySelector('#favicon-preview').src = imageUrl;
import requests
def get_favicon(url: str, size: int = 128) -> bytes:
response = requests.get(
"https://favicondl.com/api/extract",
params={"url": url, "size": size},
timeout=15,
)
response.raise_for_status()
return response.content
icon_bytes = get_favicon("example.com", 128)
with open("example-favicon", "wb") as output:
output.write(icon_bytes)
<?php
function getFavicon(string $url, int $size = 128): string {
$endpoint = 'https://favicondl.com/api/extract?url=' . urlencode($url) . '&size=' . $size;
$context = stream_context_create(['http' => ['follow_location' => 1, 'timeout' => 15]]);
$icon = file_get_contents($endpoint, false, $context);
if ($icon === false) {
throw new RuntimeException('Favicon request failed');
}
return $icon;
}
file_put_contents('example-favicon', getFavicon('example.com', 128));
?>
<!-- Show a site icon next to a link -->
<img src="https://favicondl.com/api/extract?url=example.com" alt="example.com favicon" width="32" height="32">
<!-- Larger Google fallback size, if the site has no icon of its own -->
<img src="https://favicondl.com/api/extract?url=example.com&size=128" alt="example.com favicon" width="128" height="128">
エラー時は HTTP ステータスコードと、ok が false でエラーメッセージを含む短い JSON を返します。
| HTTPステータスコード | エラーメッセージ | 説明 | 解決策 |
|---|---|---|---|
| 400 | Missing url |
url または domain パラメーターが送信されていません | リクエストに ?url=example.com を追加してください |
| 400 | Invalid format |
format が json でも redirect でもありません | format=json を指定するか、省略してリダイレクトを受け取ってください |
| 400 | Invalid domain |
値をホスト名として解析できません | example.com のようなドメインか、完全な https:// URL を送信してください |
| 405 | Method not allowed |
GET リクエストのみ対応しています | GET リクエストを送信してください |
| 502 | Favicon extraction failed |
抽出処理がアイコンを返せませんでした | しばらくしてから再試行してください |
| 415 | Target is not an image |
/api/proxy のみ:その URL は実際の画像データを返しませんでした | /api/extract が返した iconUrl または candidates[].url を使ってください |
io.github.sweesama/favicondl) exposes an extract_favicon tool so Claude, Cursor and other MCP clients can fetch icons.登録不要、すべての機能を完全無料で利用可能
有料プランや SLA はありません。大量利用や業務上重要な用途では、必要なアイコンをご自身のストレージに保存してください。