Draw text with Braille dots
The Unicode Braille block (U+2800–U+28FF) contains 256 characters, one for every possible arrangement of dots in a 2-wide by 4-tall cell. That makes Braille characters a handy, compact way to draw bitmaps in plain text — each character packs eight pixels. This tool renders your text on a pixel grid and then encodes that grid as Braille characters you can copy and paste.
How the encoding works
Each supported character is stored as a 5×5 pixel font, where 1 is a filled
dot and 0 is blank. The letters are laid out left to right with a one-pixel
gap to form one wide pixel grid. The grid is then scanned in 2×4 blocks; for
each block the renderer sets the corresponding dot bits and adds them to the
base code point:
cell = 0x2800
for each set pixel (col, row) in the 2x4 block:
cell |= DOT_BIT[row][col]
character = String.fromCharCode(cell)
The Unicode dot-bit assignment is non-sequential. Left-column dots from top to bottom are bits 1, 2, 4, and 64; right-column dots are bits 8, 16, 32, and 128. This matches the six-dot Braille cell layout (dots 1–6) extended to eight dots (dots 7 and 8 added below). The tool uses the exact mapping so every cell produces a valid Unicode Braille character rather than an arbitrary glyph.
Braille dot art versus readable Braille
It is worth being clear about what this output is and is not. The dots form a visual bitmap of the Western Latin letters you typed — they are pixel art rendered with Braille characters. They are not Braille spellings that a person who reads Braille would understand, and a refreshable Braille display would interpret the raw dot patterns rather than the English words.
Readable Braille (Grade 1 or Grade 2) is a completely different encoding where specific dot patterns represent letters, contractions, and words. If you need to produce tactile-print Braille for accessibility purposes, use a dedicated Braille translation tool rather than this renderer.
Where Braille dot art is used
- Social media bios and profiles — Unicode Braille characters render on Twitter/X, Instagram, Discord, and most modern platforms, allowing compact visual text in character-limited fields.
- Code comments and decorative headers — similar to ASCII art banners but with a finer resolution since each Braille cell packs 2×4 pixels into a single character, making the output more compact than a comparable ASCII glyph grid.
- Chat messages and forums — the dot texture gives a distinctive retro-digital aesthetic.
Visual comparison: ASCII art vs Braille bitmap
An ASCII block-letter H using # needs 5 rows of 5 characters (25 characters for one letter). The same H rendered as Braille dots packs the same visual information into roughly 3 rows of 3 Braille cells (9 characters), making the output considerably more compact at the cost of relying on Unicode support.
Tips and notes
- Keep inputs short — three to five characters gives a clean output. Longer text produces a very wide grid that may wrap in narrow contexts.
- The output displays best in a Unicode-aware context with good font coverage. If you see empty boxes instead of dots, your font lacks Braille glyphs — switch to Segoe UI Symbol, Noto Sans, or DejaVu Sans.
- Unlike classic ASCII art, Braille bitmap output does not strictly require a monospace font, though monospace keeps multi-character output best aligned.
- Nothing you type is uploaded; the entire rendering runs locally in your browser.