Overview
A browsable character reference covering seven Unicode ranges: control characters (0-31), printable ASCII (32-126), the 127-255 extended range, Latin Extended (256-383), arrows (8592-8703), math symbols (8704-8959) and misc symbols (9728-9983). Each cell shows the glyph with its decimal and hexadecimal value, and clicking a cell copies the character itself. Search filters by character, decimal or hex without a page reload.
How It Works
Pick a range from the dropdown, or leave it on Printable ASCII (32-126), the default. Type into the search box to filter: a match against the rendered character, its decimal code, or its hexadecimal form keeps a cell visible. Click any cell to copy the character to the clipboard; hovering shows the U+ code point in the tooltip. The grid renders up to 300 characters at a time, and when a range or search exceeds that, a note tells you how many were hidden so you can narrow the query instead of scrolling forever.
Step-by-Step Usage Guide
- Choose a range from the dropdown, such as Printable ASCII or Math Symbols.
- Type a character, decimal value, or hex value in the search box to narrow the grid.
- Hover a cell to see its U+ code point in the tooltip.
- Click the cell to copy the character itself to the clipboard.
Technical Specifications & Standards
Ranges are defined as decimal code point pairs and each cell is produced by String.fromCodePoint, so what you copy is a real Unicode character, not an HTML entity. Two facts about the ranges are worth knowing before you trust them. First, the 127-255 range is labelled Extended ASCII, but ISO ASCII only defines 0-127; the 128-255 slots here follow the Latin-1 (ISO-8859-1) convention, and files encoded in Windows-1252 will disagree with it in about 27 positions, notably the curly quotes and dashes in the 0x80-0x9F band. Second, the range labelled emoji (9728-9983) is actually the Unicode Miscellaneous Symbols block, which contains glyphs like sun and umbrella that render as plain text rather than color emoji on most platforms. The 300-cell render cap is a deliberate guard: the arrows block alone spans 112 code points, many unassigned, and painting thousands of cells at once makes the grid scroll janky.
Targeted Use Cases
- Finding the exact code point for an arrow, bullet, or math symbol in a UI string.
- Decoding a hex dump or packet capture where control characters appear as values.
- Checking which characters live in the 128-255 band before writing an encoding test.
- Grabbing a copy of a special character for a password, regex, or config file.
Notes & Gotchas
- Treat the 127-255 range as Latin-1, not as true ASCII, when you document byte values.
- Search by decimal when you already have a byte from a hex dump, by hex when the source was a code point.
- Remember that what is copied is the raw character; paste it into UTF-8 files, not into encodings that cannot hold it.
- If a glyph renders as a box, the character exists in Unicode but your font lacks it; check the code point rather than assuming the value is wrong.
Frequently Asked Questions
Is 127-255 really part of ASCII?
No. ASCII is a 7-bit code covering 0-127. The 128-255 band shown here follows the Latin-1 convention that most tools use for single-byte values, but Windows-1252 files differ in a few positions, so verify against your actual encoding when it matters.
How do I find a character if I only know its hex value?
Type the hex digits, such as 3c for the less-than sign, into the search box. The filter matches against the hexadecimal column as well as the character and its decimal value.
What does clicking a cell copy?
The character itself, not its code or an escape sequence. That makes it easy to paste directly into source code or a config file.
Why can I not scroll past 300 characters?
The grid deliberately renders at most 300 cells at a time to keep the page fast, and shows a note with the hidden count. Refine your search to bring the target character inside the visible window.