| name | fetch-favicons |
| description | Fetch favicons for any website using multiple fallback sources (Google, DuckDuckGo, direct). Use when needing website icons, favicons, site logos, or domain icons for any URL or domain. |
Fetch Favicons
Retrieve favicons for any domain using multiple sources with automatic fallback.
Requirements
- Python 3.6+
requestslibrary:pip install requests
Quick Usage
python3 scripts/fetch_favicon.py example.com
python3 scripts/fetch_favicon.py example.com --output ./icons/
python3 scripts/fetch_favicon.py example.com --size 128
Sources (in order of preference)
| Source | URL Pattern | Notes |
|---|---|---|
https://www.google.com/s2/favicons?domain={domain}&sz={size} |
Best quality, supports sizes | |
| DuckDuckGo | https://icons.duckduckgo.com/ip3/{domain}.ico |
Privacy-focused, no size param |
| Direct | https://{domain}/favicon.ico |
May be low quality or missing |
Parameters
- domain: Target domain (e.g.,
github.com). Full URLs are automatically parsed to extract domain. - size: Size hint for Google API (16, 32, 64, 128, 256). Default: 128. Falls back to 16x16 if unavailable.
- output: Output directory. Default: current directory.
Output
- Returns PNG format (Google) or ICO format (DuckDuckGo/direct)
- Filename:
{domain}.pngor{domain}.ico - Exits with code 0 on success, 1 on failure
Examples
# Single domain
python3 scripts/fetch_favicon.py github.com
# From full URL (domain extracted automatically)
python3 scripts/fetch_favicon.py "https://docs.github.com/en/pages"
# Custom size and output
python3 scripts/fetch_favicon.py twitter.com --size 256 --output ~/icons/
# Batch fetch (one per line in file)
cat domains.txt | xargs -I {} python3 scripts/fetch_favicon.py {} --output ./favicons/
Rate Limiting
Google's API may rate-limit after ~55 consecutive requests. Add delays for batch operations:
cat domains.txt | while read domain; do
python3 scripts/fetch_favicon.py "$domain" --output ./favicons/
sleep 0.5
done