What is a Favicon Hash?
A concise technical guide for security researchers and bug bounty hunters.
What is a favicon?
A favicon is the small icon browsers display in tabs and bookmarks. Typically at /favicon.ico but can be declared via HTML <link> tags pointing to PNG, SVG, or ICO files.
What is a favicon hash?
A numeric fingerprint computed from the raw bytes of a favicon. Different algorithms produce different values:
- MurmurHash3 (MMH3) — used by Shodan, FOFA, ZoomEye. Computed on base64-encoded favicon bytes.
- MD5 — used by Censys and Validin. Computed on raw bytes.
- SHA-256 — used by Netlas. Computed on raw bytes.
- Perceptual hash (phash) — fuzzy matching for visually similar favicons.
- Difference hash (dhash) — used by VirusTotal.
How is the MurmurHash3 computed?
The exact algorithm Shodan uses:
import mmh3, codecs, requests
r = requests.get("https://example.com/favicon.ico")
b64 = codecs.encode(r.content, "base64")
print(mmh3.hash(b64)) # signed 32-bit int
Key detail: hash is computed on the base64-encoded bytes, not raw bytes.
Why do security researchers use favicon hashes?
Favicon hashes enable passive infrastructure reconnaissance. Since Shodan, FOFA, Censys and others index favicons for every internet-facing host, you can find all hosts sharing the same favicon — mapping an organization's entire internet infrastructure from a single data point.
- • Organizations reuse the same favicon across dev, staging, and internal tools
- • CDN-backed hosts often expose origin servers with matching favicons
- • Forgotten servers still carry the original favicon
- • Known technology favicons reveal the stack without active scanning