How to Find Any Unicode Character
Finding the exact Unicode character you need can be challenging given over 140,000 characters spread across 150+ scripts and dozens of symbol categories. This guide explains the best tools and techniques for finding any Unicode character by visual appearance, name, keyword, or approximate description.
With over 140,000 characters across more than 150 scripts — ranging from ancient cuneiform to modern emoji — finding the exact Unicode character you need can feel like searching for a single tile in a mosaic the size of a wall. The good news is that Unicode is meticulously organised and well-catalogued. This guide explains the most effective tools and techniques for finding any character, whether you know its rough shape, its language, its name, or just that it exists somewhere.
Understanding How Unicode Characters Are Organised
Before diving into search tools, it helps to understand how Unicode is structured, because the organisation itself helps narrow your search.
Every Unicode character has:
- A code point — a unique number in hexadecimal, written as U+XXXX (e.g., U+00A9 for ©).
- A name — an official uppercase string (e.g.,
COPYRIGHT SIGN). - A block — a named range of code points sharing a theme (e.g., "Latin-1 Supplement", "Mathematical Operators").
- A script — the writing system it belongs to (e.g., Latin, Arabic, Greek, Han).
- A category — a general class such as Letter, Number, Punctuation, Symbol, or Separator.
Knowing any of these properties narrows your search dramatically.
Method 1: Search by Name on UnicodeFYI
UnicodeFYI.com provides a full-text search across all 140,000+ Unicode characters, searching by official name, common aliases, and related keywords.
How to search:
- Go to unicodefyi.com and use the search box on the home page.
- Type any keyword — the character name, a description, or a related term.
- Results show matching characters with their code points, names, and categories.
Search tips:
- Search for
"check mark"to find ✓ ✔ ✅ ☑ ✗ ✘ and all related characters. - Search for
"arrow right"to find →, ➡, ⟶, ⇒, ⇾, and dozens more. - Search for
"snowman"to find ☃ (U+2603) and ⛄ (U+26C4). - Search for
"copyright"to find © (U+00A9).
Browse by block or script:
If you know the writing system or character category, browse directly:
/block/mathematical-operators/— all mathematical operator symbols/block/arrows/— all arrow characters/script/greek/— all Greek alphabet characters/collection/currency-symbols/— currency symbols from across Unicode
Method 2: Unicode Character Table (unicode-table.com)
unicode-table.com is a well-organised reference with a visual grid of all Unicode characters, searchable by name.
Features:
- Click any character to see its code point, name, block, category, and HTML entity.
- Search by name or code point.
- Browse by block using the left sidebar.
- See how the character renders in different fonts.
Method 3: The Unicode Consortium Official Charts
The Unicode Consortium publishes official PDF charts at unicode.org/charts/ that show every character in every block.
When to use this:
- You need to browse an entire block visually (e.g., all Braille patterns, all Box Drawing characters, all Domino tiles).
- You need to confirm an official name or verify a character's position within its block.
- You are researching a specific writing system comprehensively.
The charts are particularly useful for complex scripts like Arabic, Devanagari, or CJK Unified Ideographs, where characters have variant forms and combining sequences.
Method 4: Command-Line Tools
Developers and power users often prefer to find characters directly from the terminal.
Python — unicodedata Module
Python's built-in unicodedata module provides name lookup in both directions.
import unicodedata
# Find the code point and name of a character
char = "©"
print(f"Name: {unicodedata.name(char)}") # COPYRIGHT SIGN
print(f"Code point: U+{ord(char):04X}") # U+00A9
print(f"Category: {unicodedata.category(char)}") # So (Symbol, other)
# Find a character by name
result = unicodedata.lookup("SNOWMAN")
print(result) # ☃
print(f"U+{ord(result):04X}") # U+2603
Python — Searching by Keyword
To find all characters whose names contain a word:
import unicodedata
keyword = "ARROW"
matches = []
for codepoint in range(0x10FFFF):
try:
char = chr(codepoint)
name = unicodedata.name(char)
if keyword in name:
matches.append((f"U+{codepoint:04X}", name, char))
except ValueError:
pass
for code, name, char in matches[:20]:
print(f"{char} {code} {name}")
unicode CLI Tool
Install the unicode command-line tool (available on most systems via package managers):
# macOS (via Homebrew)
brew install unicode-data
# Debian/Ubuntu
sudo apt install unicode
# Search by keyword
unicode snowman
# → ☃ U+2603 SNOWMAN
# Look up a specific code point
unicode U+2603
# → ☃ U+2603 SNOWMAN
# → UTF-8: E2 98 83 UTF-16: 2603 HTML: ☃
# Search by pattern
unicode arrow right
ucd / unip / uni (Alternative Tools)
Several community tools wrap the Unicode data:
# 'uni' tool (Go-based)
go install arp242.net/uni/v2@latest
uni search snowman
uni identify ©
uni print 2603
# Output shows code point, name, and the character itself
Method 5: Browser DevTools Console
Any modern browser gives you a JavaScript environment for instant Unicode lookups.
Open DevTools: Press F12 or Ctrl + Shift + I (Windows/Linux) / Cmd + Option + I (Mac).
Useful one-liners in the Console tab:
// Get the code point of a character
"©".codePointAt(0).toString(16).toUpperCase()
// → "A9" (i.e., U+00A9)
// Get the name of a character (requires Intl API)
// Note: browsers don't expose Unicode names via JS directly
// Convert a code point to a character
String.fromCodePoint(0x2603)
// → "☃"
// Check all code points in a string (handles emoji and supplementary chars)
[..."Hello 🌍"].map(c => `U+${c.codePointAt(0).toString(16).toUpperCase().padStart(4,"0")} ${c}`)
// → ["U+0048 H", "U+0065 e", "U+006C l", "U+006C l", "U+006F o",
// "U+0020 ", "U+1F30D 🌍"]
Method 6: Search by Visual Appearance
Sometimes you see a character and want to know what it is. Several tools let you draw or describe what you see.
Google "Draw to Search"
Google's handwriting input (available in Google Translate) can recognise hand-drawn characters:
- Go to translate.google.com.
- In the source language field, click the pencil icon (handwriting input).
- Draw the character on the pad.
- Google suggests matching characters.
- Select the character, copy it, and look it up in UnicodeFYI or unicode-table.com.
Shapecatcher
shapecatcher.com is dedicated to drawing Unicode characters:
- Draw the character in the canvas.
- Click Search.
- See ranked Unicode candidates with code points and names.
WhatTheFont / Identifont (for Characters in Images)
If you see a character in an image and are unsure whether it is a Unicode character or a font glyph, upload the image to WhatTheFont. If it identifies the font, you can then check whether the character is part of a standard Unicode range.
Method 7: Search by HTML Entity or Escape Sequence
If you have found a character in HTML source code, a CSS file, or a programming language string, you can reverse-engineer its identity.
HTML Named Entities
© → © (U+00A9 COPYRIGHT SIGN)
™ → ™ (U+2122 TRADE MARK SIGN)
— → — (U+2014 EM DASH)
– → – (U+2013 EN DASH)
… → … (U+2026 HORIZONTAL ELLIPSIS)
∞ → ∞ (U+221E INFINITY)
α → α (U+03B1 GREEK SMALL LETTER ALPHA)
♥ → ♥ (U+2665 BLACK HEART SUIT)
HTML Numeric Entities
© → © (decimal)
© → © (hexadecimal)
😀 → 😀 (emoji, hex)
To convert: strip the &# prefix and ; suffix, identify decimal vs hex (x prefix = hex),
then search UnicodeFYI for that code point.
CSS / JavaScript Unicode Escapes
content: "\00A9"; /* CSS: COPYRIGHT SIGN © */
"\u00A9" // JavaScript BMP character (U+00A9 COPYRIGHT SIGN)
"\u{1F600}" // JavaScript supplementary (ES6+, U+1F600 GRINNING FACE)
Strip the \u, \u{, } wrappers to get the hexadecimal code point.
Method 8: Find Characters by Unicode Category in Code
Developers can use Unicode property escapes in regex engines to find all characters belonging
to a Unicode category. The escape form is a backslash followed by p, then a category abbreviation
in curly braces — for example, backslash-p followed by {Lu} matches all uppercase letters across every
script.
Common Unicode General Categories
| Abbreviation | Category | Examples |
|---|---|---|
L |
Any letter | a, A, α, Я, 文 |
Lu |
Uppercase letter | A, B, Δ, Я |
Ll |
Lowercase letter | a, b, α, я |
N |
Any number | 1, ², ½, ③ |
P |
Any punctuation | . , ! " ( ) |
S |
Any symbol | ©, ™, +, =, ♥ |
Sc |
Currency symbol | $, €, £, ¥, ₹ |
Z |
Any separator | space, line break |
Python
Python's built-in re module does not support Unicode property escapes. Use the third-party
regex module (pip install regex), which implements the full Unicode property syntax. The
pattern uses a raw string r"..." so Python does not interpret the backslash — for uppercase
letters use the category Lu, for currency symbols use Sc, for any letter use L.
Using these category patterns lets you find characters like Δ, Ω, and Я alongside A, B, C —
because they all share the Unicode general category Lu (Letter, uppercase).
JavaScript (ES2018+)
Modern JavaScript regex supports Unicode property escapes natively when you add the u flag to
the regex literal. Combine the g flag to find all matches. For example, the pattern for all
Unicode letters is written as a backslash-p followed by {L} inside the regex, and the pattern
for uppercase-only letters uses {Lu} instead.
Summary: Best Tool for Each Situation
| Situation | Best Tool |
|---|---|
| Know a keyword or description | UnicodeFYI search |
| Want to browse a category visually | unicode-table.com or UnicodeFYI /block/ |
| Need official Unicode data | unicode.org/charts/ |
| Working in the terminal | unicode CLI or Python unicodedata |
| Found it in source code | Decode the escape sequence, then look up |
| Saw it on screen, want to identify | Shapecatcher (draw it) |
| In a browser right now | Browser DevTools console |
| Need all characters in a regex category | Unicode property escapes in regex |
The Unicode consortium's naming conventions are highly systematic, so once you learn a few patterns (all Greek letters follow "GREEK SMALL/CAPITAL LETTER name", all arrows follow "DIRECTION ARROW shape"), you can often predict a character's official name and find it immediately.
Más en Practical Unicode
Windows provides several methods for typing special characters and Unicode symbols, including …
macOS makes it easy to type special characters and Unicode symbols through …
Linux offers multiple ways to insert Unicode characters, including Ctrl+Shift+U followed by …
Typing special Unicode characters on smartphones requires different techniques than on desktop …
Mojibake is the garbled text you see when a file encoded in …
Storing Unicode text in a database requires choosing the right charset, collation, …
Modern operating systems support Unicode filenames, but different filesystems use different encodings …
Email evolved from ASCII-only systems, and supporting Unicode in email subjects, bodies, …
Internationalized Domain Names (IDNs) allow domain names to contain non-ASCII characters from …
Using Unicode symbols, special characters, and emoji in web content has important …
Unicode supports both left-to-right and right-to-left text through the bidirectional algorithm and …
A font file only contains glyphs for a subset of Unicode characters, …
Copying and pasting text between applications can introduce invisible characters, change normalization …
Unicode's Mathematical Alphanumeric Symbols block and other areas contain bold, italic, script, …