How It Works

From URL to favicon in milliseconds

1. You Add a Link Tag

<link rel="icon" href="https://emoji.findutils.com/fire">

When a browser loads your page, it sees this tag and makes a request to emoji.findutils.com/fire to fetch the favicon.

2. We Resolve the Emoji

Our Cloudflare Worker receives the request and resolves fire to the emoji character. The resolution happens in three steps:

  • Direct emoji check - If the URL contains an actual emoji character (URL-encoded), we use it directly
  • Flag detection - Regional indicator pairs like US resolve to flag emojis
  • Keyword lookup - Names and keywords are matched against a table of 11,550 entries covering all 3,773 emojis

The keyword table includes official Unicode names, common synonyms, and related terms. Searching /hot finds the fire emoji. Searching /happy finds the grinning face.

3. We Generate an SVG

The emoji gets wrapped in a minimal SVG. The entire response is under 200 bytes:

<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 16 16"><text x="0" y="14">🔥</text></svg>

SVG favicons are supported by all modern browsers. The <text> element renders the emoji using the system's native emoji font, so it looks the same as any other emoji on the user's device.

4. Caching Kicks In

The response includes cache headers that prevent unnecessary re-fetches:

  • CDN cache: 7 days - Cloudflare caches the SVG at 300+ edge locations worldwide. Subsequent requests from the same region are served instantly.
  • Browser cache: 24 hours - The user's browser stores the favicon locally. Return visits don't make any network request at all.

This means the first visitor from a region triggers one request to our worker. Everyone after that gets a cached response with zero latency.

5. Usage Gets Tracked

Every favicon request increments an in-memory counter for that emoji. We also record the requesting country (from Cloudflare headers) and the referrer domain (which site is using the favicon).

Counters are flushed to Cloudflare Workers KV every hour via a cron trigger. This keeps KV writes minimal (under 5 per hour) while maintaining accurate, real-time-ish statistics.

The public analytics page shows all tracked data: top emojis, country flags, requesting countries, and referrer domains.

URL Formats

All of these work:

  • /fire - Emoji name
  • /hot - Related keyword
  • /🔥 - Actual emoji character (URL-encoded)
  • /point-right - Hyphenated names
  • /US - Country code for flags

Names and keywords are case-insensitive. Maximum URL length is 200 characters.

API

Get usage stats as JSON:

curl https://emoji.findutils.com/api/stats

Returns top emojis with counts, country flag stats, referrer domains, country breakdown, and total served count.