The best source of truth for emoji is the latest Unicode.org emoji-test.txt.
The data is obtained via the update
script (updata-from-source.mjs
).
Instead of main
being set to emoji-metadata.json
it is now set to the lighter-weight emoji.js
.
Only
fully-qualified
emoji are included.
Four versions of the data are provided (and it should be easy to add more):
This is a simple array of emoji provided as an ES6 module.
Usage:
import emoji from 'emoji-metadata'
The data looks like this:
export default [
{
category: "Smileys & Emotion",
subcategory: "face-smiling",
chars: "😀",
name: "grinning face"
},
{
category: "Smileys & Emotion",
subcategory: "face-smiling",
chars: "😃",
name: "grinning face with big eyes"
},
...
]
This is a hierarchical structure of groups and subgroups.
It looks like this:
[
{
"name": "Smileys & Emotion",
"subGroups": [
{
"name": "face-smiling",
"emoji": [
{
"codes": [
"U+1F600"
],
"chars": "😀",
"name": "grinning face"
},
...
]
},
...
],
},
...
]
This is the same data as emoji-groups, but flattened.
It looks like this:
[
{
"category": "Smileys & Emotion",
"subcategory": "face-smiling",
"codes": [
"U+1F600"
],
"chars": "😀",
"name": "grinning face"
},
{
"category": "Smileys & Emotion",
"subcategory": "face-smiling",
"codes": [
"U+1F603"
],
"chars": "😃",
"name": "grinning face with big eyes"
},
...
]
The javascript version is obviously the most convenient to use. The hierarchical version is the most efficient (unless you don't want the codes), while emoji-metadata strikes a happy medium (and with on-the-fly compression is probably hardly larger than the hierarchical version).
Finally, the version of the unicode data is stored in emoji-version.json
in case that's helpful.