87 characters · free to copy
Box drawing characters
Unicode block U+2500 to U+257F holds 128 characters designed to snap together into frames, tables, trees and grids — light, heavy, double, dashed and rounded, plus every joint where those weights meet. They are what a terminal UI, a directory tree and an ASCII table are actually made of. Copy any character below; each is listed with its Unicode name and code point, grouped so the pieces you need together sit together.
Light lines
The default set. Eleven characters draw any rectangular grid, and every one of them joins cleanly to the others.
Heavy lines
The same eleven shapes at a thicker weight. Mix with light lines to emphasise an outer border or a selected row.
Double lines
Two parallel strokes. The classic DOS-era frame, still the most decorative option in the block.
Rounded corners
Arc corners that soften a light-line box. Swap these in for ┌ ┐ └ ┘ and nothing else changes.
Dashed lines
Triple- and quadruple-dash runs, light and heavy. Useful for a divider that should read as secondary.
Diagonals and halves
Slashes for crossing out a cell, and half-length stubs for line ends that stop mid-cell.
Light-heavy transitions
Joints where a light line meets a heavy one. These are what let you thicken one row of a table without breaking the joins.
Double-single transitions
Joints between double and single lines — the pieces you need when a double outer frame meets single inner dividers.
Click any character to copy it. Nothing is downloaded — these are text characters, not images.
Unicode blocks
- U+2500–U+257F Box Drawing
How to use Box Drawing Characters
Use a monospaced font, always
This is the rule everything else depends on. Box-drawing characters are designed on a fixed cell, so in a proportional font the verticals drift out of column and the frame falls apart. JetBrains Mono, Menlo, Consolas, Cascadia Code and DejaVu Sans Mono all render the block well.
Pick one weight and stay in it
Light joins to light and heavy joins to heavy. Mixing them without the transition pieces leaves visible gaps where the strokes fail to meet. If you do want a heavy outer border with light inner dividers, take the joints from the light-heavy transitions group.
Build corners, then edges, then joints
A table is four corners, two edge runs and the intersections between them. Lay out the corners first and the rest follows mechanically — which is also why this is easy to generate in code.
Set line-height to 1 for solid frames
Vertical strokes are drawn to the full height of the character cell. Any extra leading shows as a gap between rows, so a box that looks broken usually just needs line-height: 1.
About Box Drawing Characters
The Box Drawing block is a direct descendant of the IBM PC code page 437 character set, which gave DOS applications their frames and menus decades before anyone could rely on graphics. Unicode preserved the whole repertoire at U+2500, and it remains in constant use: the borders in a terminal file manager, the branches of a directory tree, the frames around a command-line table and the grids in this site’s games are all drawn from these 128 characters.
What makes the block unusually well designed is the systematic coverage of joints. It is not enough to have a horizontal line and a vertical line; you need every combination of what arrives at a cell from each of the four directions, at each weight. That is why the block contains characters as specific as "down light and horizontal heavy" — they exist so a table can change stroke weight partway through without a single gap appearing at the join.
The practical constraint is the font. These glyphs are drawn to touch the exact edges of their character cell so that adjacent cells connect into a continuous stroke. That only holds in a monospaced font at a line-height of 1. Give the text extra leading and horizontal hairlines appear between rows; set a proportional font and the verticals wander out of alignment. Almost every "box drawing looks broken" problem is one of those two things.
There is one deliberate gap in the block. Unicode encodes light and heavy diagonals and a light diagonal cross, but no double-line diagonal and no arcs at heavy weight, because the original code page had none and the block was chartered for compatibility rather than completeness. If you need a rounded heavy corner it does not exist — the four arcs at U+256D to U+2570 are light-weight only.
Games drawn with these characters
Every board on this site is built from Unicode, not sprites. These ones use the characters above.
Frequently asked questions
Why do my box drawing characters not line up?
Almost always the font. These glyphs assume a fixed-width cell, so a proportional font pushes the vertical strokes out of column. Switch to a monospaced font such as JetBrains Mono, Consolas or Menlo. If the frame lines up horizontally but shows gaps between rows, set line-height to 1 — extra leading separates the vertical strokes.
What is the difference between box drawing characters and ASCII art?
ASCII art fakes lines with the 128 characters of ASCII — dashes, pipes and plus signs — so corners are approximate and joins are visibly rough. Box-drawing characters are purpose-built glyphs that meet exactly at the cell edge, giving continuous unbroken strokes. They are Unicode, not ASCII, though the two are often mixed up.
Which box drawing characters do I need for a simple table?
Eleven: the four corners ┌ ┐ └ ┘, the two edges ─ │, the four T-joints ├ ┤ ┬ ┴ and the cross ┼. Every rectangular grid, however large, is built from just those.
Can I mix light and heavy lines?
Yes, but only through the transition characters. A heavy vertical meeting a light horizontal needs a glyph built for exactly that case, such as U+2542. Join a heavy line straight to a light one without the right piece and you get a visible gap. The light-heavy transitions group above has the full set.
Do box drawing characters work on mobile?
They render on every modern phone — the block is old and universally supported. The catch is that mobile browsers often use a proportional default font, so wrap them in a monospace CSS rule rather than trusting the default, or the alignment will break.
Are there rounded corners in the box drawing block?
Four, at U+256D to U+2570, and they are light weight only. Drop them in place of ┌ ┐ └ ┘ to soften a light-line box. There is no heavy or double-line equivalent — the block inherited its repertoire from code page 437, which had none.
Support the arcade
Enjoying the games?
UnicodeGames is free, has no ads and never will. If it brightened a coffee break, you can return the favour.
Buy me a coffeeOne-off · No account needed · Handled by Buy Me a Coffee