Unicode Symbol Reference
Last reviewed on April 27, 2026.
A practical pick of Unicode symbols that show up repeatedly in terminal-themed work — the box-drawing characters that draw a TUI panel, the block elements that build progress bars, the arrows that mark direction. Click any symbol to copy it.
Box-drawing characters
Eleven characters cover almost every TUI frame. Three line weights — light, heavy, and double — plus four rounded corners. Mixing weights in the same frame looks unintentional, so pick one and use it consistently.
Block elements
Eight gradients of fill from empty to solid, plus the half-block characters used for higher-resolution pixel art in a terminal. Combining the half blocks with foreground and background colors doubles the effective vertical resolution.
Arrows
The four cardinal arrows plus the four diagonals, in light and heavy weights, with double-line variants for emphasis. Use heavy or double in headlines; reserve light for body text where they are the directional equivalent of a comma.
Geometric shapes
Triangles, circles, squares, and lozenges in solid and outline forms. Useful as bullet points (filled triangle reads as "play / proceed", filled circle reads as "active") and as visual scoring marks in compact tables.
Math and logic
The signs that show up in pseudocode, equations, and logical statements. Most are renderable in any modern font; a few (the script letters, the blackboard-bold letters) only render in fonts that ship the math block.
Punctuation and quote marks
Curly quotes, em-dashes, ellipses, and bullet variants. The kind of characters that auto-correction sometimes inserts and sometimes does not, depending on the editor.
Currency and units
The common currency symbols plus a small set of unit indicators (degree, micro, ohm). Currency symbols in particular often render as boxes if the destination font does not include them — test before relying on a non-Latin currency mark.
Miscellaneous and dingbats
Stars, snowflakes, scissors, checkmarks, crosses, and other one-glyph icons that survive in most environments. Use them sparingly — every one you add is a render-fallback risk.
How to choose Unicode versus ASCII
Unicode symbols look better and pack more meaning per character, but they fail in three places: minimal terminal fonts (think a stripped Docker base image), email-clients that downgrade to ASCII, and environments that pass through some legacy encoding pipeline. The defensive default is:
- If the destination is a modern UTF-8 environment (a website, a desktop terminal, a chat app), Unicode is fine.
- If the destination is unknown or constrained (a CI runner, a log shipper, an email subject), prefer plain ASCII — see the ASCII art gallery for ASCII-only equivalents.
- If you are mixing both, do not put the only directional cue in the Unicode arrow. Pair it with text:
Next →survives the arrow being dropped; a bare→does not.
Common mistakes
- Mixing line weights in a single frame. The light and heavy box-drawing sets do connect in some fonts, but the joining glyphs are not universally available. Stick to one weight per frame.
- Using the math italic letters as fancy text. They look like normal italic in some fonts and like missing-glyph boxes in others, and screen readers either skip them or pronounce each character with its math-italic name. Headache for everyone.
- Treating block elements as font-size-independent. The half blocks combine cleanly only when the line height matches the cell height. In CSS, that means
line-height: 1and a monospace font. - Pasting curly quotes into code. Smart-quote auto-correction in word processors silently breaks shell scripts and JSON. The reference here keeps both the curly and the straight quote so you can tell which you have.
Pairs with other tools on this site
If you want a chunkier text effect than these symbols can provide, the ASCII banner generator turns short text into multi-row block letters. To frame a paragraph in box-drawing characters automatically, use the box-drawing tool. For corrupted-text variants of these symbols, try the glitch text generator — it preserves the base glyph and adds combining marks on top.