View .md

Emoji Favicon API Documentation

Quick Facts: 50+ API endpoints · 3,773 emojis · 11,550 keywords · SVG under 200 bytes · 300+ edge locations · 7-day cache · Free, no API key · Getting started guide · Comparison with alternatives · Interactive generator

Quick Start

EmojiFavicons is a URL-based favicon API. Instead of downloading favicon files and uploading them to your server, you point a standard HTML link tag at the EmojiFavicons URL for any emoji. The API returns an SVG image (under 200 bytes) served from 300+ Cloudflare edge locations with a 7-day cache. No signup, no API key, no build step required.

Add an emoji favicon to any website with a single HTML tag:

html
<link rel="icon" href="https://emojifavicons.com/fire">

The browser fetches the emoji as an SVG favicon. Works in Chrome, Firefox, Edge, and Safari (auto-serves PNG for Safari).

By name
url
https://emojifavicons.com/rocket
By keyword
url
https://emojifavicons.com/hot
By emoji
url
https://emojifavicons.com/%F0%9F%94%A5

Covers all 3,773 emojis in Unicode, searchable by 11,550 keywords.

⚙️ URL Parameters

Every EmojiFavicons endpoint accepts optional URL parameters for customization. Parameters control the size (16-512px), background color (any hex value), shape (16 options including circle, hexagon, shield, and star), animation (27 CSS animations), branded theme (18 presets for GitHub, Vercel, Tailwind, etc.), notification badge overlay, and output format. All parameters can be combined freely.

ParameterTypeDefaultDescription
sizenumber48SVG size in pixels (16-512)
bghexnoneBackground color, e.g. ff6b6b
darkbghexnoneDark mode background color
shapestringsquare16 shapes: square, circle, rounded, hexagon, diamond, shield, star, heart, triangle, pentagon, octagon, drop, egg, cross, cloud, badge
animatestringnone27 animations: pulse, bounce, spin, shake, float, flip, tada, swing, wobble, heartbeat, jello, rubberband, flash, pop, squeeze, nod, glitch, breathe, rotate360, wave, zoom, blink, slide-in, rainbow, typing, bounce-in, attention
alignstringcenter9 positions: center, top-left, top, top-right, left, right, bottom-left, bottom, bottom-right
badgestringnoneNotification badge: number (1-99) or dot
themestringnone18 branded themes: github-dark, github-light, vercel-dark, stripe-blue, tailwind, react, vue, svelte, nextjs, nuxt, laravel, cloudflare, supabase, firebase, aws, dracula, nord, catppuccin
darkmodestringnoneEmoji to show in dark mode (auto-detected via prefers-color-scheme)
daytimestringnoneEmoji to show during daytime (6am-6pm based on user timezone)
randomstringnoneComma-separated emojis to randomly rotate between
svgflag-Force SVG format
pngflag-Force PNG format (Twemoji)
ogflag-Return 1200x630 OG image

Shapes Gallery

square
circle
rounded
hexagon
diamond
shield
star
heart
triangle
pentagon
octagon
drop
egg
cross
cloud
badge

Animations Gallery

pulse
bounce
spin
shake
float
flip
tada
swing
wobble
heartbeat
jello
rubberband
flash
pop
squeeze
nod
glitch
breathe
rotate360
wave
zoom
blink
slide-in
rainbow
typing
bounce-in
attention

Example:

url
https://emojifavicons.com/fire?size=128&bg=1a1a2e&shape=hexagon&animate=tada
Try it

🌐 Favicon Endpoint

GET /:emoji

The favicon endpoint is the core of EmojiFavicons. It accepts an emoji name, keyword, or Unicode character and returns an SVG image optimized for use as a browser favicon. The response is typically under 200 bytes, making it one of the lightest favicon solutions available. Safari users automatically receive a PNG (Twemoji) fallback since Safari has limited SVG favicon support.

bash
1 2 3 4 5 6 7 8 9 10 11
# By name
https://emojifavicons.com/fire
https://emojifavicons.com/red-heart
https://emojifavicons.com/rocket

# Country flags
https://emojifavicons.com/US
https://emojifavicons.com/TR

# With customization
https://emojifavicons.com/star?size=64&bg=ffd700&shape=circle

Response: image/svg+xml (or image/png for Safari).

Cache: CDN 7 days, browser 24 hours.

Try it

🔥 Combo Emoji

GET /:emoji1+:emoji2+...+:emojiN

The combo endpoint renders 2 to 10 emojis side by side in a single SVG favicon. Each emoji is sized equally within the viewport. Combo favicons are useful for representing tech stacks (e.g., fire+rocket for a fast project), multi-concept brands, or compound ideas. Separate emoji names with a plus sign in the URL. All standard customization parameters (shape, size, background, animation) work with combos.

bash
1 2 3 4 5 6 7 8 9 10 11
# Two emojis
https://emojifavicons.com/fire+rocket

# Three emojis
https://emojifavicons.com/heart+sparkles+star

# Five emojis
https://emojifavicons.com/fire+rocket+star+heart+sparkles

# Up to 10 emojis max
https://emojifavicons.com/coffee+laptop+gear+rocket+star+fire+bulb+chart+check+party

All URL parameters (shape, animation, background) work with combos:

url
https://emojifavicons.com/fire+rocket+star?bg=1a1a2e&shape=rounded&animate=pulse
Try it

🔴 Notification Badge

GET /:emoji?badge=N

The notification badge endpoint overlays a red count indicator (1-99) or dot on any emoji favicon. This is the same visual pattern used by iOS and Android for unread notifications. Notification badges are particularly useful for chat applications, email inboxes, project dashboards, and any web app that needs to signal unread activity in the browser tab. The badge is rendered as part of the SVG, so it works everywhere without JavaScript.

ParameterTypeDefaultDescription
badgestring-Badge content: number (1-99) or dot
bash
1 2 3 4 5 6 7 8
# Numeric badge
https://emojifavicons.com/bell?badge=3

# Dot indicator
https://emojifavicons.com/mail?badge=dot

# Works with all customization
https://emojifavicons.com/chat?badge=12&shape=circle&bg=1a1a2e
Try it

🎮 Pixel Emojis Mode

GET /pixel/:emoji

The pixel art endpoint renders emojis as retro 8-bit pixel art favicons. EmojiFavicons includes 168 hand-crafted pixel art icons in 16 named color palettes (sunset, ocean, neon, cyber, fire, nature, mono, candy, gold, synth, retro, pastel, matrix, vapor, earth, arctic). Each palette maps to a curated set of 4-8 colors. Pixel art favicons support grid sizes of 8, 12, or 16, adjustable gap and rounding, mirror symmetry, and 4 pixel-specific animations. Every emoji generates a unique, deterministic pattern.

ParameterTypeDefaultDescription
:emojistring-Emoji name or slug
palettestringretroColor palette: sunset, ocean, neon, cyber, fire, nature, mono, candy, gold, synth, retro, pastel, matrix, vapor, earth, arctic
gridnumber8Grid size: 8, 12, or 16
gapnumber1Pixel gap: 0-3
roundedbooleantrueRound pixel corners
mirrorbooleantrueHorizontal mirror symmetry
animatestringnonepixel-cycle, pixel-wave, pixel-rain, pixel-glitch
bghexnoneBackground color
sizenumber48Output size in pixels
bash
1 2 3 4 5 6 7 8 9 10 11
# Basic pixel art
https://emojifavicons.com/pixel/fire

# Neon palette, 16x16 grid
https://emojifavicons.com/pixel/rocket?palette=neon&grid=16

# Matrix theme with glitch animation
https://emojifavicons.com/pixel/alien?palette=matrix&animate=pixel-glitch

# Vaporwave with no gaps
https://emojifavicons.com/pixel/star?palette=vapor&gap=0&rounded=false
Try it

🔤 Text Favicon

GET /text/:chars

The text favicon endpoint generates favicons from 1-3 text characters instead of emojis. This is useful for displaying initials (AB, JD), version numbers (v2, 3.1), status labels (OK, NEW), or any short text. The text is rendered as white characters on a customizable background color and shape. Unlike emoji favicons, text favicons let you use any letters or numbers.

ParameterTypeDefaultDescription
:charsstring-1-3 characters (letters, numbers)
bghexnoneBackground color
colorhexfffText color
shapestringroundedBackground shape
bash
1 2 3 4 5 6 7 8
# Initials
https://emojifavicons.com/text/AB

# Version number
https://emojifavicons.com/text/v2

# With styling
https://emojifavicons.com/text/OK?bg=22c55e&shape=circle
Try it

📚 Stacked Emoji

GET /stack/:bg+:fg

Layer one emoji on top of another. The first emoji is the background (larger), the second is the foreground (smaller, offset).

bash
1 2 3 4 5 6 7 8
# Globe with fire overlay
https://emojifavicons.com/stack/globe+fire

# Heart with star
https://emojifavicons.com/stack/heart+star

# With customization
https://emojifavicons.com/stack/circle+check?size=64&shape=rounded
Try it

🎨 Branded Themes

GET /:emoji?theme=:name

Apply one of 18 developer brand presets. Each theme sets background color, shape, and styling to match the brand.

ParameterTypeDefaultDescription
themestringnoneBrand preset name

Available themes: github-dark, github-light, vercel-dark, stripe-blue, tailwind, react, vue, svelte, nextjs, nuxt, laravel, cloudflare, supabase, firebase, aws, dracula, nord, catppuccin

url
1 2 3 4
https://emojifavicons.com/rocket?theme=github-dark
https://emojifavicons.com/fire?theme=vercel-dark
https://emojifavicons.com/star?theme=tailwind
https://emojifavicons.com/heart?theme=dracula
Try it

🌙 Conditional Favicons

GET /:emoji?darkmode=:emoji2

Automatically switch favicons based on user conditions: dark mode, time of day, or random selection.

ParameterTypeDefaultDescription
darkmodestring-Emoji to show in dark mode (detected via prefers-color-scheme)
daytimestring-Emoji to show during daytime (6am-6pm user timezone)
randomstring-Comma-separated emojis to randomly rotate between
bash
1 2 3 4 5 6 7 8
# Dark mode: sun by default, moon in dark mode
https://emojifavicons.com/sun?darkmode=moon

# Time-based: moon at night, sun during day
https://emojifavicons.com/moon?daytime=sun

# Random rotation on each page load
https://emojifavicons.com/fire?random=fire,rocket,star,heart
Try it

🏷️ Badge Endpoint

GET /badge/:emoji

The badge endpoint generates shields.io-compatible SVG badges with an emoji icon. Badges are commonly used in GitHub READMEs, documentation sites, and status pages to display build status, deployment state, or version numbers. Each badge has a left label, a right status value, and a configurable color. The output is a scalable SVG that renders crisply at any size.

ParameterTypeDefaultDescription
:emojistring-Emoji name or keyword
labelstringemoji nameLeft side text
statusstringemoji nameRight side text
colorstringbluegreen, red, yellow, blue, or hex
labelColorstring#555Left side background hex
stylestringroundedrounded or flat
url
1 2 3
![Build](https://emojifavicons.com/badge/rocket?label=build&status=passing&color=green)
![Version](https://emojifavicons.com/badge/package?label=version&status=2.1.0&color=blue)
![Deploy](https://emojifavicons.com/badge/fire?label=deploy&status=live&color=ff6b6b)
build passing version 2.1.0 deploy live

Cache: 5 minutes.

Try it

👤 Avatar Endpoint

GET /avatar/:identifier

Gravatar-style emoji avatars. Hash any string to a deterministic emoji + color. Same input always produces the same avatar.

ParameterTypeDefaultDescription
:identifierstring-Email, username, or any string
sizenumber128Size in pixels
shapestringsquaresquare, circle, or rounded
html
1 2 3
<img src="https://emojifavicons.com/avatar/user@example.com?shape=circle&size=64" />
<img src="https://emojifavicons.com/avatar/deploy-bot?shape=rounded" />
<img src="https://emojifavicons.com/avatar/jane.doe?size=32&shape=circle" />
avatar avatar avatar avatar avatar

Cache: CDN 30 days, browser 7 days (deterministic, never changes).

Try it

📖 README Banner

GET /readme/:emoji

800x200 SVG banners for GitHub READMEs. Large emoji left, project title right.

ParameterTypeDefaultDescription
:emojistring-Emoji name or keyword
titlestringemoji nameProject title
subtitlestringnoneSubtitle text
themestringdarkdark or light
url
![Banner](https://emojifavicons.com/readme/rocket?title=My+Awesome+Project&subtitle=Built+with+love)
README banner
Try it

🟢 Status Icons

GET /status/:state

Predefined status icons for status pages and dashboards.

ParameterTypeDefaultDescription
:statestring-up, down, degraded, maintenance
emojistringdefaultOverride the default emoji
sizenumber32Icon size in pixels
up /status/up Green circle
down /status/down Red circle
degraded /status/degraded Yellow circle
maintenance /status/maintenance Wrench
html
<img src="https://emojifavicons.com/status/up" /> All systems operational
https://emojifavicons.com/status/up?emoji=rocket

Cache: 1 minute.

Try it

🖼️ OG Image

GET /:emoji?og=true

1200x630 SVG images for social media sharing (Twitter, Facebook, LinkedIn).

html
1 2 3
<meta property="og:image" content="https://emojifavicons.com/fire?og=true" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
OG image
Try it

✉️ Email Signature

GET /sig/:emoji

PNG emoji for email signatures. Email clients can't render SVG, so this forces PNG via Twemoji.

html
<img src="https://emojifavicons.com/sig/fire" width="20" height="20" style="vertical-align:middle" />

Cache: 24 hours.

Try it

📦 Embed / oEmbed

GET /embed/:emoji

Minimal HTML page with centered emoji. For Notion embeds or iframes.

html
<iframe src="https://emojifavicons.com/embed/fire" width="200" height="200" frameborder="0"></iframe>
GET /oembed?url=...

oEmbed discovery for rich embed previews:

url
https://emojifavicons.com/oembed?url=https://emojifavicons.com/embed/fire
Response
json
1 2 3 4 5 6 7 8
{
  "version": "1.0",
  "type": "rich",
  "provider_name": "Emoji Favicon",
  "title": "Fire",
  "width": 200,
  "height": 200
}

🏷️ Powered-By Badge

GET /badge/powered-by

"Powered by EmojiFavicons" pill badge SVG. Use for attribution in your project.

html
<img src="https://emojifavicons.com/badge/powered-by" alt="Powered by EmojiFavicons" />
Try it

🍎 Apple Touch Icon

GET /apple-touch-icon/:emoji

Generate a 180x180 PNG icon for iOS home screen. Add to your HTML head for iOS bookmark icons.

html
<link rel="apple-touch-icon" href="https://emojifavicons.com/apple-touch-icon/rocket">
Try it

📋 PWA Manifest

GET /manifest/:emoji

Auto-generate a manifest.json with all required icon sizes (192x192, 512x512). Link it in your HTML for instant PWA support.

html
<link rel="manifest" href="https://emojifavicons.com/manifest/rocket">
Response
json
1 2 3 4 5 6 7
{
  "name": "Rocket",
  "icons": [
    { "src": "https://emojifavicons.com/rocket?size=192", "sizes": "192x192", "type": "image/svg+xml" },
    { "src": "https://emojifavicons.com/rocket?size=512", "sizes": "512x512", "type": "image/svg+xml" }
  ]
}
Try it

📥 Favicon Download

GET /download/:emoji

Download a ZIP package containing all standard favicon sizes: 16x16, 32x32, 48x48, 64x64, 128x128, 192x192, and 512x512.

url
https://emojifavicons.com/download/rocket

Response: application/zip with Content-Disposition: attachment.

Try it

📋 Sprite Sheets

GET /sprite?emojis=:list

Generate a multi-emoji grid SVG sprite sheet. Useful for icon sets and batch rendering.

ParameterTypeDefaultDescription
emojisstring-Comma-separated emoji names
sizenumber48Size of each emoji cell
colsnumberautoNumber of columns in the grid
url
https://emojifavicons.com/sprite?emojis=fire,rocket,star,heart,sparkles
Try it

👍 Reactions Embed

GET /react/:emoji

Embeddable reaction widget with per-domain click counters. Each website gets its own independent count. Domain is automatically detected from the Referer header, or you can set it explicitly with the ?site= parameter.

Quick Start

html
1 2 3 4
<!-- Add to any page — domain is auto-detected from Referer -->
<iframe src="https://emojifavicons.com/react/thumbsup" width="80" height="100" frameborder="0"></iframe>
<iframe src="https://emojifavicons.com/react/heart" width="80" height="100" frameborder="0"></iframe>
<iframe src="https://emojifavicons.com/react/fire" width="80" height="100" frameborder="0"></iframe>

Explicit Domain

If Referer is not available (e.g. sandboxed iframes), pass the domain explicitly:

html
<iframe src="https://emojifavicons.com/react/thumbsup?site=myblog.com" width="80" height="100" frameborder="0"></iframe>

Sub-Endpoints

GET /react/:emoji/count?site=domain

Get the current click count for an emoji on a specific domain.

bash
curl https://emojifavicons.com/react/thumbsup/count?site=myblog.com
# {"emoji_slug":"thumbsup","domain":"myblog.com","count":42}
POST /react/:emoji/click?site=domain

Increment the click count. Rate-limited to 1 click per IP, per emoji, per domain, per hour.

bash
curl -X POST https://emojifavicons.com/react/thumbsup/click?site=myblog.com
# {"emoji":"👍","slug":"thumbsup","domain":"myblog.com","count":43}

How It Works

  • Per-domain isolation — myblog.com and otherblog.com have separate counters
  • Domain detection — auto from Referer header, or explicit via ?site=
  • Rate limiting — in-memory, 1 click/hour per IP+emoji+domain
  • Client-side dedup — localStorage prevents repeat clicks in the same browser
Try it

🔀 A/B Testing

GET /ab/:emojiA/:emojiB

Randomly serve one of two emoji variants. Tracks which variant was served for analytics comparison.

bash
# 50/50 split between fire and rocket
https://emojifavicons.com/ab/fire/rocket

Response headers include X-Variant: A or X-Variant: B for tracking.

Try it

🔍 Search API

GET /api/search?q=:query

Search emojis by name or keyword. Returns up to 20 results.

ParameterTypeDefaultDescription
qstring-Search query (max 100 chars)
url
https://emojifavicons.com/api/search?q=fire
Response
json
1 2 3 4 5 6 7 8 9 10 11 12
{
  "query": "fire",
  "results": [
    {
      "emoji": "\ud83d\udd25",
      "name": "Fire",
      "slug": "fire",
      "score": 100,
      "url": "https://emojifavicons.com/fire"
    }
  ]
}

Cache: 1 hour.

Try it

💡 Suggest API

GET /api/suggest

Get emoji suggestions for text or a URL. Analyzes content and returns the best matches.

ParameterTypeDefaultDescription
textstring-Text to analyze
urlstring-URL to fetch and analyze
bash
1 2 3 4 5
# From text
https://emojifavicons.com/api/suggest?text=cooking+blog+recipes

# From URL
https://emojifavicons.com/api/suggest?url=https://example.com
Response
json
1 2 3 4 5 6 7
{
  "query": "cooking blog recipes",
  "suggestions": [
    { "emoji": "\ud83c\udf73", "name": "Cooking", "slug": "cooking", "score": 6 },
    { "emoji": "\ud83c\udf72", "name": "Pot of Food", "slug": "pot-of-food", "score": 4 }
  ]
}
Try it

📅 Emoji of the Day

GET /api/eotd

Deterministic "emoji of the day". Changes daily, same for everyone worldwide.

url
https://emojifavicons.com/api/eotd
Response
json
1 2 3 4 5 6 7 8 9
{
  "emoji": "\ud83d\ude80",
  "name": "Rocket",
  "slug": "rocket",
  "category": "Travel & Places",
  "date": "2026-04-03",
  "svg_url": "https://emojifavicons.com/rocket",
  "badge_url": "https://emojifavicons.com/badge/rocket?label=emoji+of+the+day&status=Rocket&color=blue"
}

Algorithm: Knuth multiplicative hash. Cache: 1 hour.

Try it

📊 Stats API

GET /api/stats

Public usage statistics: top emojis, country flags, referrers, countries.

url
https://emojifavicons.com/api/stats
Response
json
1 2 3 4 5 6 7
{
  "topEmojis": [{ "emoji": "\ud83d\udd25", "name": "Fire", "count": 1234 }],
  "countryEmojis": [...],
  "totalServed": 45678,
  "topReferrers": [{ "domain": "github.com", "count": 500 }],
  "topCountries": [{ "country": "US", "count": 300 }]
}

Cache: 1 minute.

Try it

🔔 Webhooks API

POST /api/webhooks

Subscribe to emoji events: usage spikes, new trending emojis, milestone counts.

bash
1 2 3 4
# Subscribe to events
curl -X POST https://emojifavicons.com/api/webhooks \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/hook", "events": ["trending", "milestone"]}'
GET /api/webhooks

List active webhook subscriptions.

DELETE /api/webhooks/:id

Remove a webhook subscription.

Response
json
1 2 3 4 5 6
{
  "id": "wh_abc123",
  "url": "https://example.com/hook",
  "events": ["trending", "milestone"],
  "created_at": "2026-04-04T12: 00: 00Z"
}

📦 JavaScript SDK

Drop-in SDK for dynamic emoji favicons.

html
<script src="https://emojifavicons.com/sdk.js"></script>

Usage:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// Simple
EmojiFavicon.set('fire');

// With options
EmojiFavicon.set('rocket', {
  size: 64,
  bg: '1a1a2e',
  darkbg: '0a0a0a',
  shape: 'circle',
  animate: 'pulse'
});

// Combo
EmojiFavicon.combo('fire', 'rocket');

// Emoji of the Day
EmojiFavicon.eotd();

// Search
const results = await EmojiFavicon.search('happy');

Methods:

ParameterTypeDefaultDescription
set(emoji, opts?)function-Set favicon to an emoji
combo(e1, e2, opts?)function-Two emojis side by side
eotd()function-Set to emoji of the day
search(query)async-Search emojis, returns array
suggest(text)async-Get emoji suggestions for text
onBlur(emoji)function-Change favicon when tab loses focus
onFocus(emoji)function-Change favicon when tab gains focus
onVisibilityChange(visible, hidden)function-Toggle favicon on visibility change
cycle(emojis, interval?)function-Cycle through emojis (default 2s interval)
countdown(n, emoji?)function-Count down from n, updating favicon text
status(state)function-Set favicon to a status icon (up/down/degraded)
random(emojis)function-Set a random emoji from the list
matchMedia(light, dark)function-Auto-switch emoji based on color scheme
setBadge(n)function-Add notification badge to current favicon
clearBadge()function-Remove notification badge
destroy()function-Remove favicon and clean up listeners
Try it

🤖 AI Plugin

Callable by ChatGPT, GPT Actions, MCP agents, Semantic Kernel, Copilot, and AI tools via standard manifests.

Skill Manifest /skill.json
OpenAPI Spec /openapi.yaml
LLM Description /llms.txt

The /skill.json manifest describes 9 callable functions with full JSON Schema parameters, return types, and usage examples. Compatible with any AI agent framework.

📡 RSS/Atom Feed

GET /feed.xml

Atom feed of trending emojis. Top 20 most-used as feed entries.

url
https://emojifavicons.com/feed.xml

Cache: 1 hour.

Try it

🌈 Gradient Backgrounds

Add gradient backgrounds to any emoji favicon. Use named presets or custom colors.

GET /:emoji?gradient=sunset
ParameterTypeDefaultDescription
gradientstring-Preset name or two hex colors: ff6b6b,feca57
gradient-dirnumber135Direction in degrees (0-360)
gradient-typestringlinearlinear or radial

Presets: sunset, ocean, forest, aurora, candy, midnight, neon, lavender, fire, ice, rainbow, twilight

html
<link rel="icon" href="https://emojifavicons.com/fire?gradient=sunset&shape=circle">
Try it

🖱️ Custom CSS Cursors

Use any emoji as a CSS cursor. Returns a complete CSS rule with embedded data URI.

GET /cursor/:emoji
ParameterTypeDefaultDescription
formatstringcsscss (full rule) or url (data URI only)
sizenumber32Cursor size in pixels (max 128)
hotspotstringcentercenter, top-left, or x,y coordinates
html
/* Usage */
<link rel="stylesheet" href="https://emojifavicons.com/cursor/fire">
Try it

Countdown Favicon

Show days remaining (or elapsed) as a badge on any emoji. Great for launches and events.

GET /countdown/:YYYY-MM-DD?emoji=fire
GET /countup/:YYYY-MM-DD?emoji=fire
ParameterTypeDefaultDescription
emojistringparty-popperEmoji slug to display
sizenumber48Output size in pixels

SDK:

EmojiFavicon.countdown({ target: '2026-12-31', emoji: 'fire' });
EmojiFavicon.countup({ start: '2026-01-01', emoji: 'fire' });
Try it

🔍 Favicon Health Checker

Analyze any website's favicon setup. Returns a score out of 100 with actionable recommendations.

GET /api/check?url=example.com
GET /check/:domain

Rate limit: 10 checks per IP per hour. SSRF protection: private IPs blocked, 5s timeout.

Response
json
1 2 3 4 5 6
{
  "url": "github.com",
  "score": 75,
  "checks": [...],
  "recommendations": [...]
}
Try it

📊 Progress Bar Favicon

Show progress (0-100%) as a circular ring or horizontal bar around an emoji.

GET /progress/:percent?emoji=rocket
ParameterTypeDefaultDescription
emojistringrocketEmoji slug to display
stylestringringring (circular) or bar (horizontal)
colorhexautoCustom color. Auto: red(0-33), yellow(34-66), green(67-100)
sizenumber48Output size
EmojiFavicon.progress(75, { emoji: 'rocket', style: 'ring' });
Try it

📁 ICO Format

Get any emoji as a .ico file with multiple sizes for legacy browser support.

GET /:emoji.ico
GET /:emoji?format=ico

Returns a multi-size ICO containing 16x16, 32x32, and 48x48 PNG frames. Content-Type: image/x-icon.

html
<link rel="icon" href="https://emojifavicons.com/fire.ico" type="image/x-icon">
Try it

🔀 Emoji Mashup

Visually blend two emojis together using SVG clip paths. Unlike combo (side-by-side) or stack (overlay), mashup creates visual fusions.

GET /mashup/:emoji1+:emoji2
ParameterTypeDefaultDescription
modestringsplitsplit, blend, diagonal, or circle

Modes: split = left/right halves, blend = both at 50% opacity, diagonal = diagonal split, circle = circular mask

Try it

💫 Favicon Transitions (SDK)

Smooth animated transitions between favicon states. Uses canvas for frame-by-frame rendering.

1 2 3 4 5 6 7 8 9 10 11
// Smooth fade transition
EmojiFavicon.transition('fire', 'rocket', { effect: 'fade', duration: 500 });

// Sequence with transitions
EmojiFavicon.sequence(['fire','rocket','star'], {
  interval: 2000,
  transition: 'fade'
});

// Stop running transition
EmojiFavicon.stopTransition();

Effects: fade, slide-left, slide-right, flip

📈 Campaign Analytics

Track favicon usage by campaign. Add ?track=campaign-name to any emoji URL.

GET /:emoji?track=my-campaign
GET /api/analytics/campaign/:name

Campaign names must be alphanumeric with hyphens/underscores. Data is in-memory and flushed to Laravel on cron.

Response
json
1 2 3 4 5 6
{
  "campaign": "launch-2026",
  "total": 142,
  "emojis": [...],
  "referrers": [...]
}

🎨 Color Palette

Extract dominant colors from any emoji. Returns hex, RGB, HSL, CSS variables, and Tailwind classes.

GET /api/palette/:emoji
GET /palette/:emoji
Response
json
1 2 3 4 5 6 7
{
  "emoji": "fire",
  "name": "Fire",
  "colors": [
    { "hex": "#ff6b35", "rgb": [255,107,53], "hsl": "...", "tailwind": "bg-amber-400" }
  ]
}
Try it

Accessibility API

Get accessibility metadata for any emoji: ARIA labels, Unicode name, colorblind safety, and descriptions.

GET /api/a11y/:emoji
Response
json
1 2 3 4 5 6 7
{
  "emoji": "fire",
  "aria_label": "Fire",
  "unicode_name": "FIRE",
  "colorblind_safe": true,
  "description": "A fire object"
}
Try it

📝 Emoji Version Diff

See which emoji were added between Unicode versions. Great for tracking what's new.

GET /api/versions
GET /api/diff?from=15.0&to=15.1
GET /diff/:from/:to

Supported versions: 12.0, 13.0, 13.1, 14.0, 15.0, 15.1, 16.0

Try it

📱 QR Code with Emoji

Generate QR codes with an emoji in the center. Supports URLs, WiFi, vCards, email, phone, SMS, calendar events, geo locations, and plain text. Pure TypeScript encoder with error correction level H (30%).

GET /qr/:emoji?url=https://example.com

Data Types

ParameterTypeDefaultDescription
typestringurlData type: url, wifi, vcard, email, phone, sms, text, geo, event

URL Parameters (type=url, default)

ParameterTypeDefaultDescription
urlstring-Target URL (required). Only http/https allowed

WiFi Parameters (type=wifi)

ParameterTypeDefaultDescription
ssidstring-Network name (required)
passstring-Network password
encstringWPAEncryption: WPA, WEP, nopass
hiddenstringfalseHidden network: true/false

vCard Parameters (type=vcard)

ParameterTypeDefaultDescription
namestring-Full name (required)
phonestring-Phone number
emailstring-Email address
orgstring-Organization
titlestring-Job title
websitestring-Website URL
addrstring-Street address

Other Types

ParameterTypeDefaultDescription
tostring-Email address (type=email)
subjectstring-Email subject (type=email)
bodystring-Email/SMS body (type=email, type=sms)
telstring-Phone number (type=phone, type=sms)
textstring-Plain text content (type=text)
latstring-Latitude (type=geo)
lngstring-Longitude (type=geo)
titlestring-Event title (type=event)
startstring-Event start: YYYYMMDDTHHMMSS (type=event)
endstring-Event end: YYYYMMDDTHHMMSS (type=event)
locationstring-Event location (type=event)

Style Parameters

ParameterTypeDefaultDescription
sizenumber256SVG size in pixels (128-512)
fghex000000QR code foreground color
qr-bghexffffffQR code background color
dotstringsquareDot style: square, rounded, dots, diamond, star
cornerstringsquareCorner finder style: square, rounded, dot
corner-colorhex-Separate color for corner finder patterns
marginnumber2Quiet zone margin in modules (0-4)
grad-fromhex-Gradient start color
grad-tohex-Gradient end color
grad-dirstringdiagonalGradient direction: vertical, horizontal, diagonal

Examples

bash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# URL QR code
/qr/fire?url=https://findutils.com

# WiFi QR code
/qr/wifi?type=wifi&ssid=MyNetwork&pass=secret123&enc=WPA

# vCard (contact card)
/qr/briefcase?type=vcard&name=John Doe&phone=+1234567890&email=john@example.com&org=Acme Inc

# Email with subject
/qr/envelope?type=email&to=hello@example.com&subject=Hello&body=Nice to meet you

# Phone number
/qr/phone?type=phone&tel=+1234567890

# SMS
/qr/speech-balloon?type=sms&tel=+1234567890&body=Hello!

# Calendar event
/qr/calendar?type=event&title=Team Meeting&start=20260415T100000&end=20260415T110000&location=Office

# Geo location
/qr/round-pushpin?type=geo&lat=40.7128&lng=-74.0060

# Plain text
/qr/memo?type=text&text=Hello World

# Styled WiFi QR with gradient
/qr/wifi?type=wifi&ssid=Home&pass=mypass&dot=rounded&corner=rounded&grad-from=6366f1&grad-to=ec4899
Try it

🔗 Ref Tracking (?ref=)

Opt-in attribution parameter. Append ?ref=yourdomain.com to any emoji URL to register your domain as a verified user of the service.

GET /:emoji?ref=yourdomain.com
html
<link rel="icon" href="https://emojifavicons.com/fire?ref=mysite.com">

When the ref parameter is present, the service records your domain alongside the emoji usage. This enables:

  • Attribution in the Showcase Directory
  • Per-domain usage stats on the analytics page
  • Domain verification for the SmartCopyDialog registration flow

The ref value must be a valid domain (e.g. example.com, docs.myapp.io). Invalid domains are silently ignored. The parameter is compatible with all other query parameters.

bash
# Combine ref with other params
https://emojifavicons.com/rocket?ref=mysite.com&size=64&bg=1a1a2e&shape=circle

🏆 Showcase Directory

A public directory of verified domains using the emoji favicon service. Browse who is using which emoji at /showcase.

GET /showcase

The HTML page displays a grid of registered domains with their chosen emoji, domain name, and registration date.

Showcase API

GET /api/showcase

Returns the showcase directory as JSON. Supports optional query parameters for filtering.

ParameterTypeDefaultDescription
limitnumber50Number of entries to return (max 100)
offsetnumber0Pagination offset
Response
json
1 2 3 4 5 6 7 8 9 10 11
{
  "domains": [
    {
      "domain": "example.com",
      "emoji": "fire",
      "emoji_char": "\ud83d\udd25",
      "registered_at": "2026-04-01T12: 00: 00Z"
    }
  ],
  "total": 42
}
Try it

Domain Validation API

Validate that a domain exists and resolves via DNS-over-HTTPS. Used internally by the SmartCopyDialog registration flow, but available as a public endpoint.

GET /api/validate-domain?domain=example.com
ParameterTypeDefaultDescription
domainstring-Domain to validate (required, e.g. example.com)

Performs a DNS lookup using Cloudflare DNS-over-HTTPS (1.1.1.1). Returns whether the domain resolves and has valid DNS records.

Response
json
1 2 3 4
{
  "valid": true,
  "domain": "example.com"
}
Try it

📝 Domain Registration API

Register your domain in the showcase directory. Called by the SmartCopyDialog after a user copies an emoji URL.

POST /api/register-domain

Request body (JSON):

json
1 2 3 4
{
  "domain": "example.com",
  "emoji": "fire"
}

Rate limit: 5 requests per minute per IP.

The domain must pass DNS validation before registration is accepted. Duplicate registrations for the same domain update the emoji choice.

Response
json
1 2 3 4
{
  "ok": true,
  "showcase_url": "/showcase"
}

📋 Favicon Presets

44 pre-configured emoji favicon recipes across 8 categories. Each preset bundles emoji + shape + background + animation into a copy-ready HTML snippet.

GET /presets

Categories: SaaS, Blog, Documentation, Portfolio, E-commerce, Gaming, Developer Tool, Startup

Try it

API:

GET /api/presets

List all categories with preset counts.

GET /api/presets/:category

Get all presets for a category with ready-to-paste HTML.

Response
html
1 2 3 4 5 6 7 8 9 10 11 12
{
  "id": "saas",
  "name": "SaaS / Web App",
  "presets": [
    {
      "name": "Tech Rocket",
      "emoji": "rocket",
      "url": "https://emojifavicons.com/rocket?shape=rounded-square&bg=1a1a2e&animate=float",
      "html": "<link rel=\"icon\" href=\"https://emojifavicons.com/rocket?shape=rounded-square&bg=1a1a2e&animate=float\">"
    }
  ]
}

💧 Watermark / Pattern Texture

Generate a tileable SVG pattern with repeating emoji. Perfect for slide decks, placeholder backgrounds, and design mockups.

GET /watermark/:emoji
ParameterTypeDefaultDescription
opacitynumber15Emoji opacity: 3-80
spacingnumber80Pattern spacing in px: 20-300
rotatenumber-30Pattern rotation in degrees: -90 to 90
fontnumber24Emoji font size: 8-96
sizenumber400SVG output size: 100-2000
bghextransparentBackground color hex
url
1 2 3
/* Use as CSS background */
background-image: url("https://emojifavicons.com/watermark/fire?opacity=10&spacing=60");
background-repeat: repeat;
Try it

🔖 Bookmarklet

Preview how an emoji favicon would look on any website. Drag the bookmarklet to your bookmarks bar, visit any site, and click it.

GET /bookmarklet
GET /bookmarklet/:emoji

The bookmarklet is a tiny JavaScript snippet that finds all <link rel="icon"> tags on the current page and replaces their href with an emojifavicons.com URL. The change is temporary and resets on reload.

You can customize the bookmarklet with query params:

url
https://emojifavicons.com/bookmarklet/rocket?shape=circle&bg=1a1a2e
Try it

🎨 CSS Variable / Data URI

Get any emoji as a CSS custom property containing an SVG data URI. Use in background-image, list-style-image, or pseudo-elements.

GET /css/:emoji

Returns CSS text with a --emoji-{name} custom property and usage examples.

GET /api/css/:emoji

Returns JSON with the CSS variable, data URI, URL, and usage snippets.

All URL params (shape, bg, size, animate) carry through to the generated SVG.

1 2 3 4 5 6 7
/* Response from /css/fire */
:root {
  --emoji-fire: url("data:image/svg+xml,...");
}
.icon-fire {
  background: var(--emoji-fire) no-repeat center / contain;
}
Try it

🎬 Animated Sequence

Define a multi-frame emoji animation as pure SVG. Cycles between 2-8 emoji using CSS keyframes. No JavaScript needed.

GET /sequence/:emoji1+emoji2+emoji3
ParameterTypeDefaultDescription
intervalnumber1000Frame duration in ms: 200-5000
sizenumber48SVG output size: 16-512
bghextransparentBackground color hex

Works in GitHub READMEs, static HTML, email, Notion, anywhere SVG is supported.

html
<link rel="icon" href="https://emojifavicons.com/sequence/fire+rocket+star?interval=800">
/sequence/fire+rocket+star
Try it

🌈 Emoji Recolor / Tint

Apply CSS filter effects to tint any emoji with a custom hex color or one of 10 named presets.

GET /recolor/:emoji?color=hex
ParameterTypeDefaultDescription
color / tinthex or presetgrayscaleTarget color hex (e.g., ff6b35) or preset name
sizenumber48SVG output size: 16-512
bghextransparentBackground color hex

Named presets:

grayscale · sepia · invert · saturate · muted · warm · cool · neon · vintage · pastel

grayscale
sepia
neon
cool
#7c3aed

API:

GET /api/recolor-presets
Try it