Box Drawing & Block Elements Blocks
The Box Drawing block (U+2500–U+257F) and Block Elements block (U+2580–U+259F) provide characters for drawing text-based user interfaces and terminal art in monospaced fonts. This guide explores both blocks, explains how their characters combine to form borders and bar charts, and provides a complete reference.
Before graphical user interfaces became ubiquitous, software developers built entire visual environments using nothing but text characters. The Box Drawing block (U+2500–U+257F) and Block Elements block (U+2580–U+259F) are the Unicode heirs to this tradition — a repertoire of characters that let you draw lines, borders, tables, and filled areas entirely in text. They remain deeply practical today in terminal applications, command-line interfaces, and any context where a monospace font is used.
Box Drawing Characters (U+2500–U+257F)
The Box Drawing block contains 128 characters covering every combination of line segments at the four cardinal directions (left, right, up, down), in both single and double line weights, with various join styles.
Basic Single Lines
The simplest box drawing characters are straight lines:
| Char | Code Point | Description |
|---|---|---|
| ─ | U+2500 | Box Drawings Light Horizontal |
| │ | U+2502 | Box Drawings Light Vertical |
| ━ | U+2501 | Box Drawings Heavy Horizontal |
| ┃ | U+2503 | Box Drawings Heavy Vertical |
Corners
Corners join horizontal and vertical lines:
| Char | Code Point | Description |
|---|---|---|
| ┌ | U+250C | Light Down and Right (top-left corner) |
| ┐ | U+2510 | Light Down and Left (top-right corner) |
| └ | U+2514 | Light Up and Right (bottom-left corner) |
| ┘ | U+2518 | Light Up and Left (bottom-right corner) |
| ╔ | U+2554 | Double Down and Right |
| ╗ | U+2557 | Double Down and Left |
| ╚ | U+255A | Double Up and Right |
| ╝ | U+255D | Double Up and Left |
T-Junctions and Crosses
Where three or four lines meet:
| Char | Code Point | Description |
|---|---|---|
| ├ | U+251C | Light Vertical and Right |
| ┤ | U+2524 | Light Vertical and Left |
| ┬ | U+252C | Light Down and Horizontal |
| ┴ | U+2534 | Light Up and Horizontal |
| ┼ | U+253C | Light Vertical and Horizontal |
| ╬ | U+256C | Double Vertical and Horizontal |
Mixed Single/Double Lines
The block includes characters for mixing single and double lines, allowing visual hierarchy in TUI tables:
| Char | Code Point | Description |
|---|---|---|
| ╒ | U+2552 | Down Single and Right Double |
| ╓ | U+2553 | Down Double and Right Single |
| ╞ | U+255E | Vertical Single and Right Double |
Building a TUI Border
Using box drawing characters, a terminal application can draw a bordered panel:
╔══════════════════╗
║ Unicode FYI ║
╠══════════════════╣
║ Characters: 149K ║
║ Blocks: 167 ║
╚══════════════════╝
This structure uses: - ╔ U+2554, ═ U+2550, ╗ U+2557 for the top border - ║ U+2551 for vertical sides - ╠ U+2560, ╣ U+2563 for the horizontal divider - ╚ U+255A, ╝ U+255D for the bottom border
Popular terminal UI libraries like Python's rich, Go's tview, and Rust's tui-rs all use these characters internally.
Dashed and Dotted Lines
The box drawing block also includes dashed variants for visual variety:
| Char | Code Point | Description |
|---|---|---|
| ╌ | U+254C | Light Double Dash Horizontal |
| ╍ | U+254D | Heavy Double Dash Horizontal |
| ┄ | U+2504 | Light Triple Dash Horizontal |
| ┅ | U+2505 | Heavy Triple Dash Horizontal |
| ┈ | U+2508 | Light Quadruple Dash Horizontal |
Block Elements (U+2580–U+259F)
The Block Elements block contains 32 characters that divide a character cell into filled and empty regions. Because each character cell in a monospace font is a fixed rectangular grid, these characters can create smooth-looking gradients, progress bars, and pixel art by selectively filling halves, quarters, and eighths of each cell.
Half Block Characters
| Char | Code Point | Description |
|---|---|---|
| ▀ | U+2580 | Upper Half Block |
| ▄ | U+2584 | Lower Half Block |
| ▌ | U+258C | Left Half Block |
| ▐ | U+2590 | Right Half Block |
| █ | U+2588 | Full Block |
| ▋ | U+258B | Left Seven Eighths Block |
| ▍ | U+258D | Left Three Eighths Block |
Shade Characters
The three shade characters are among the most visually recognizable box/block characters:
| Char | Code Point | Description | Density |
|---|---|---|---|
| ░ | U+2591 | Light Shade | ~25% fill |
| ▒ | U+2592 | Medium Shade | ~50% fill |
| ▓ | U+2593 | Dark Shade | ~75% fill |
| █ | U+2588 | Full Block | 100% fill |
These create a four-step grayscale ramp used for shadows, gradients, and the classic "installing..." progress visualization of early DOS software. In modern terminals with color support, these shade characters can be colored to create smooth-looking gradients.
Vertical Eighths for Progress Bars
A particularly useful subset is the vertical eighths, which fill the cell from the bottom up in eight steps:
| Char | Code Point | Fill |
|---|---|---|
| ▁ | U+2581 | 1/8 |
| ▂ | U+2582 | 2/8 |
| ▃ | U+2583 | 3/8 |
| ▄ | U+2584 | 4/8 (lower half) |
| ▅ | U+2585 | 5/8 |
| ▆ | U+2586 | 6/8 |
| ▇ | U+2587 | 7/8 |
| █ | U+2588 | Full |
These eight characters make it possible to render a smooth bar chart or histogram in a terminal with 8× the vertical resolution of a simple block character approach. Python's sparklines libraries, btop, and many other TUI tools use exactly this technique.
Retro Computing Aesthetics
Box drawing characters carry a strong retro-computing aesthetic associated with the era of DOS, BBS (Bulletin Board Systems), and early Unix terminals. ANSI art — the BBS-era art form of creating elaborate images using box drawing, block elements, and ANSI color codes — still has an active community today.
Many modern developer tools intentionally evoke this aesthetic:
- htop / btop for system monitoring
- git log --graph for commit history
- Database query results in psql and mysql clients
- Python's rich library for terminal output formatting
Font Support and Alignment
Box drawing characters only work correctly when: 1. A monospace font is used 2. The font includes all the box drawing characters 3. Line spacing is tight enough that characters in adjacent rows visually connect
Popular monospace fonts with excellent box drawing support include Fira Code, JetBrains Mono, Cascadia Code, and Iosevka. If a font lacks some of the mixed single/double or heavy variants, rendering will be inconsistent.
The recommendation for terminal application developers is to test on multiple fonts and provide ASCII fallbacks (-, |, +) for environments where box drawing characters may not render correctly.
Block Explorer में और
The Basic Latin block (U+0000–U+007F) is the first Unicode block and covers …
The Latin-1 Supplement block (U+0080–U+00FF) extends ASCII with accented Latin characters for …
The General Punctuation block (U+2000–U+206F) contains typographic spaces, dashes, quotation marks, and …
The Mathematical Operators block (U+2200–U+22FF) contains 256 symbols covering set theory, logic, …
The Arrows block (U+2190–U+21FF) contains 112 arrow characters including simple directional arrows, …
The Dingbats block (U+2700–U+27BF) was created to encode the Zapf Dingbats typeface …
The Miscellaneous Symbols block (U+2600–U+26FF) is one of Unicode's most eclectic, containing …
The CJK Unified Ideographs block (U+4E00–U+9FFF) is one of the largest Unicode …
The Hangul Syllables block (U+AC00–U+D7A3) contains 11,172 precomposed Korean syllable blocks algorithmically …
Emoji in Unicode span multiple blocks across the Supplementary Multilingual Plane, including …
The Currency Symbols block (U+20A0–U+20CF) contains dedicated Unicode characters for currencies that …
The Enclosed Alphanumerics block (U+2460–U+24FF) contains circled numbers, parenthesized numbers and letters, …
The Geometric Shapes block (U+25A0–U+25FF) and related blocks contain squares, circles, triangles, …
The Musical Symbols block (U+1D100–U+1D1FF) is a Supplementary Multilingual Plane block containing …