User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Preview will appear here
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

Braille Unicode characters (U+2800 - U+28FF) encode a 2ร—4 dot matrix per glyph, yielding 256 possible patterns. Artists exploit this density to create high-resolution text-based images in terminals and chat platforms. Converting these static frames into animated GIFs requires decoding each character's dot pattern into a pixel grid, rendering sequential frames to a raster canvas, then encoding the result as a valid GIF89a binary with LZW compression. Getting the dot-to-bit mapping wrong produces garbled output. Getting the LZW table management wrong produces a corrupt file that no viewer can open. This tool handles both correctly: it parses the Braille codepoint offset from 0x2800, maps the 8-bit result to the standard dot positions, renders at configurable scale, and outputs a spec-compliant animated GIF with NETSCAPE2.0 looping extension.

Frame separation uses blank-line delimiters. Each frame must have consistent dimensions; the tool pads shorter rows automatically. Limitations: output uses a 2-color palette (foreground/background). Transparency is not supported. Maximum practical canvas size depends on browser memory, but typical Braille art of 80ร—40 characters per frame at scale 4 produces a 640ร—640 pixel GIF, which encodes in under a second.

braille art gif converter ascii art animation braille unicode gif encoder pixel art

Formulas

Each Braille character maps to a pixel grid via its Unicode codepoint offset:

offset = codePointAt(char) โˆ’ 0x2800

The 8-bit offset maps to dot positions in a 2-column ร— 4-row cell. The standard Braille dot numbering assigns bits as follows:

Bit 0 (LSB) โ†’ Dot 1 (row 0, col 0)
Bit 1 โ†’ Dot 2 (row 1, col 0)
Bit 2 โ†’ Dot 3 (row 2, col 0)
Bit 3 โ†’ Dot 4 (row 0, col 1)
Bit 4 โ†’ Dot 5 (row 1, col 1)
Bit 5 โ†’ Dot 6 (row 2, col 1)
Bit 6 โ†’ Dot 7 (row 3, col 0)
Bit 7 (MSB) โ†’ Dot 8 (row 3, col 1)

For a frame with W characters wide and H lines tall, the output image dimensions in pixels are:

width = W ร— 2 ร— scale
height = H ร— 4 ร— scale

GIF frame delay is specified in hundredths of a second. For a target of fps frames per second:

delay = 100fps

The GIF89a LZW compression starts with a minimum code size of M bits (for a 2-color palette, M = 2). The clear code is 2M and EOI code is 2M + 1. Dictionary entries start at 2M + 2, with code width incrementing each time the dictionary size reaches 2currentBits.

Where W = frame width in characters, H = frame height in lines, scale = pixel multiplier per dot, fps = frames per second, M = minimum LZW code size.

Reference Data

Braille CharUnicodeHex OffsetBinary (8-bit)Dot PatternDots Active
โ €U+28000x0000000000EmptyNone
โ U+28010x0100000001Top-left1
โ ‚U+28020x0200000010Mid-left2
โ „U+28040x0400000100Lower-left3
โ ˆU+28080x0800001000Top-right4
โ U+28100x1000010000Mid-right5
โ  U+28200x2000100000Lower-right6
โก€U+28400x4001000000Bottom-left7
โข€U+28800x8010000000Bottom-right8
โ ƒU+28030x0300000011Top+Mid left1, 2
โ ‰U+28090x0900001001Top-left + Top-right1, 4
โ U+280F0x0F00001111Top 4 dots1, 2, 3, 4
โฃฟU+28FF0xFF11111111All filled1, 2, 3, 4, 5, 6, 7, 8
โฃ€U+28C00xC011000000Bottom row7, 8
โ ฟU+283F0x3F00111111Top 6 dots1, 2, 3, 4, 5, 6
โก‡U+28470x4701000111Left col + dot 71, 2, 3, 7
โขถU+28B60xB610110110Mixed2, 3, 5, 6, 8
โ •U+28150x1500010101Diagonal1, 3, 5
โกซU+286B0x6B01101011Checkerboard1, 2, 4, 6, 7
โก„U+28440x4401000100Lower-left + dot 73, 7

Frequently Asked Questions

Separate each frame with one or more blank lines. The converter splits input on sequences of two or more consecutive newlines. Each resulting block becomes one animation frame. All frames are padded to match the widest and tallest frame dimensions.
Characters outside the Unicode Braille Patterns block (U+2800 - U+28FF) and standard whitespace are stripped automatically. A warning toast is shown listing the removed characters. Regular spaces (U+0020) are treated as empty Braille cells (equivalent to U+2800, all dots off).
Braille art is fundamentally a binary dot matrix: each dot is either on or off. Terminal colors are applied by the terminal emulator, not encoded in the Unicode characters. This converter extracts the structural dot data and renders it with a configurable foreground and background color pair. Multi-color rendering would require parsing ANSI escape codes, which is a different domain.
The canvas limit in most browsers is around 16384ร—16384 pixels. At scale 4, an 80-character-wide frame produces 640 pixels wide. You can safely use frames up to approximately 2000 characters wide at scale 4 before hitting canvas limits. The LZW encoder handles large frames but encoding time increases quadratically with pixel count.
By default, yes. The encoder includes the NETSCAPE2.0 Application Extension block with a loop count of 0, which signals infinite looping per the GIF specification. You can set a specific loop count in the settings.
A single-frame GIF is technically valid and widely supported. The output is simply a static GIF image. The NETSCAPE extension is omitted for single frames, producing a smaller file. You can still use this as a raster image export of your Braille art.