About this symbol & emoji hub

A click-to-copy reference for Unicode symbols and emoji that doesn't need an account, doesn't install anything, and doesn't send the page anywhere while you use it.

Why it exists

Copying a symbol should not require memorising a numeric code, digging through an operating system's character map, or trusting a page full of intrusive ads and pop-ups just to reach a heart or an arrow. This page keeps the symbols organised by category, makes each one searchable by plain-language name, and turns copying into a single click or tap.

It deliberately favours a curated, well-organised set of commonly wanted symbols over trying to expose the entire Unicode repertoire. A wall of 140,000 characters is not more useful than nine well-labelled categories of the ones people actually come looking for.

How the data is organised

Every symbol lives in a single data file as a plain object: the glyph itself, its display name, its Unicode codepoint where it has exactly one, and a handful of search keywords. That file has no dependency on the page — it is loaded and checked on its own under Node.js before anything ships, which is what makes it possible to assert, mechanically, that:

  • every entry has a real glyph and a real name — nothing blank slipped through
  • no category contains the same glyph twice
  • searching “heart” actually returns the heart symbols, not zero results
  • every listed codepoint matches what the glyph string actually contains, character by character

The page itself only ever reads that data — it never edits it — so the grid you see is generated straight from the same object the tests check.

How copying works

Each tile is a real <button>, not a styled <div>, so it is reachable with Tab and activates with Enter or Space exactly like any other button on the web. A click or a keypress first tries the browser's standard Clipboard API. If that API is missing or refuses — some older or locked-down browsers block it — the tool falls back automatically to a hidden, selectable text field and the older document.execCommand('copy') method, so the vast majority of visitors never notice there was a fallback at all. If both paths fail, the page tells you plainly and shows the character to select and copy by hand instead of failing silently.

Multi-character emoji and any symbol outside the Basic Multilingual Plane (an “astral” character, in Unicode terminology) copy correctly because the tool copies the exact JavaScript string the glyph is stored as — there is no re-encoding step that could drop or corrupt half of a character.

How the site is built

  • Static HTML, one small stylesheet, two small scripts. No framework, no build step, no bundler.
  • Nothing loads from the network beyond this one origin. No web font, no icon CDN, no analytics; the favicon is an inline SVG data URI.
  • System font stack for regular text, so nothing has to download and nothing shifts as the page loads. The symbols themselves render in whatever font your system already uses for that character.
  • What you search for or click never leaves your device. The search box filters in the browser; copying calls the browser's own clipboard function directly.
  • Dark mode follows your system setting via prefers-color-scheme.

Scope and honesty about limits

This tool draws every glyph in your own browser's fonts — it does not ship a custom emoji font, so a symbol can still render differently, or occasionally not render at all, depending on what fonts are installed on the device displaying it. That is a property of fonts and operating systems, not something a web page can fully control.

It also cannot guarantee that a destination will accept a given character — passwords, some file systems and some legacy database fields restrict input to plain ASCII regardless of what is on the clipboard.

If a symbol is missing that you think belongs here, or you find a genuine bug in the copy button or the search, see contact.