Every emoji list you were about to hand-build: food, flags, cozy, kid-safe. 79 collections covering all 3,816 emojis, served as static JSON from a CDN. No key, no SDK, one GET.
{
"slug": "cozy",
"tag": "cozy",
"title": "Cozy",
"facet": "vibe",
"mode": "include",
"emojis": [
"☕️",
"🌙",
"🌧️",
"🍞",
"🍪",
"🍲",
"🍵",
"🏡",
"…"
],
"count": 22,
"version": "2026-07-21"
}
{
"version": "2026-07-21",
"count": 79,
"collections": [
{
"slug": "activities",
"tag": "activities",
"title": "Activities",
"facet": "category",
"mode": "include",
"count": 85,
"version": "2026-07-21"
},
{
"slug": "aesthetic",
"tag": "aesthetic",
"title": "Aesthetic",
"facet": "vibe",
"mode": "include",
"count": 23,
"count_default": 18,
"version": "2026-07-21"
},
{
"slug": "ai",
"tag": "ai",
"title": "Ai",
"facet": "theme",
"mode": "include",
"count": 15,
"version": "2026-07-21"
},
{
"slug": "animals",
"tag": "animals",
"title": "Animals",
"facet": "category",
"mode": "include",
"count": 130,
"version": "2026-07-21"
},
{
"…": "75 more"
}
]
}
{
"slug": "violent",
"tag": "violent",
"title": "Violent",
"facet": "safety",
"mode": "exclude",
"emojis": [
"☠️",
"⚔️",
"🏹",
"💣️",
"🔪",
"🔫",
"🗡️",
"🩸",
"🪓"
],
"count": 9,
"version": "2026-07-21"
}
[
{
"char": "🕯️",
"name": "candle",
"slug": "candle",
"codepoints": [
128367
],
"unicode_version": "0.7",
"base": null,
"skin_tone": null,
"gender": null,
"tags": [
{
"tag": "cozy",
"facet": "vibe",
"confidence": 0.85,
"source": "llm"
},
{
"tag": "spooky",
"facet": "vibe",
"confidence": 0.6,
"source": "llm"
}
]
},
{
"…": "3,815 more records"
}
]
Same input, same output. Stable codepoint order, byte for byte reproducible builds.
Pin a build and nothing changes underneath you. Upgrade when you choose.
Static files on a CDN with open CORS. Ship it to the client, bundle it, or mirror everything.
Suggestive, violent, substances, gambling. Every safety tag passes three gates before it ships, and the build fails if one hasn't.
Codepoints, ZWJ sequences and artwork analysis tag everything a rule can prove.
An LLM tags against a closed vocabulary with a confidence score. It can propose, never publish.
A person approves every safety tag. The compiler rejects any that a human hasn't seen.
Kid-safe is derived, not tagged. It is everything minus the safety blocklists, computed at build time, so it can never drift out of sync.
kid-safe.json · 3,778 emojisEvery app rebuilds the same lists. Which emojis are food. Which are safe for kids. Which ones are actually purple. Then Unicode ships a new version, and the lists quietly rot.
emoji.group is that work done once, in the open: deterministic builds, human reviewed safety tags, and static JSON that will still resolve in ten years.
Pin a version and forget about us. That is the point.