Emoji Data for Developers

The same normalised dataset this site runs on, as a single JSON file. Generated from Unicode 17.0.0 and CLDR 48.2.0, with every source file's checksum recorded.

Compact emoji index

Format
JSON
Size
714 KB
Records
3953
Unicode
17.0.0
Emoji
17.0
CLDR
48.2.0
Generated
2026-07-31
Licence
Unicode License v3

Structure

Rows are positional arrays rather than objects, with shared lookup tables for groups, subgroups and versions. That is what keeps the file small enough to ship to a browser; expand it into objects on load if you prefer.

FieldMeaning
emojiThe emoji character itself.
slugURL-safe identifier, stable across builds.
nameCLDR English short name.
koCLDR Korean short name, or an empty string when CLDR has none.
kwPipe-separated search keywords, English and Korean combined.
gIndex into the shared `groups` array.
sgIndex into the shared `subgroups` array.
flagsBit field: variant 1, skinTone 2, flag 4, zwj 8, component 16, keycap 32.
evIndex into the shared `versions` array (Emoji version).
baseRow index of the base entry, or -1 when this row is itself a base.

Reading it

const data = await fetch('/data/emoji-index.v1.json').then((r) => r.json());

const rows = data.rows.map((row) => {
  const [emoji, slug, name, ko, kw, g, sg, flags, ev, base] = row;
  return {
    emoji,
    slug,
    name,
    korean: ko || null,
    keywords: kw ? kw.split('|') : [],
    group: data.groups[g],
    subgroup: data.subgroups[sg],
    emojiVersion: data.versions[ev],
    isVariant: (flags & data.flagBits.variant) !== 0,
    baseIndex: base,
  };
});

Provenance

Every upstream file is downloaded, checksummed and recorded before the dataset is generated, so a build can be traced back to exact source bytes. The full list of URLs, SHA-256 hashes and retrieval dates is on the data sources page.

What you get here is official data, normalised. It contains no descriptions, meanings or keyword lists written by anyone other than Unicode and CLDR — nothing is scraped from other emoji sites.

Licence and attribution

The Unicode and CLDR data is distributed under the Unicode License v3, which allows redistribution and commercial use with the licence notice retained. Please keep that notice when you redistribute this file.

Emoji artwork is not covered by any of this. Apple, Google, Microsoft and Samsung designs are proprietary and are not included or reproduced anywhere on this site — see the licensing page for the open alternatives.

Frequently asked questions

Is there a public API?

No, and deliberately so. A static file costs nothing to serve, cannot be rate-limited into unreliability, and works offline once cached. If you need the data at runtime, download it and ship it with your project.

Can I use this commercially?

The underlying Unicode and CLDR data is published under the Unicode License v3, which permits commercial use with attribution. The normalised structure here is derived from it. Emoji artwork is a separate matter — see the licensing guide.

How often does it change?

When Unicode publishes a release. The version and generation date are in the manifest, and every change is listed in the changelog.

Why are skin tone variants separate rows?

Because they are separate RGI sequences with their own code points. The `base` column links each one back to its untoned entry so you can fold them together if you would rather.