Image to Braille Art
Braille characters are the highest-resolution text art available in Unicode. Each one is a 2×4 grid of independently addressable dots, so a single character carries eight pixels where an ASCII character carries one brightness level — four times the vertical detail of conventional ASCII art, in the same number of columns.
Drop an image here
PNG, JPG, WebP, SVG — multiple files allowed
Why dithering matters more here than in ASCII art
ASCII art has a built-in grey scale: @ is dark, . is light, and a good
ramp gives you ten or more levels per character. Braille has none of that — a dot is either
raised or it is not. Every pixel is forced to pure black or pure white, which is a one-bit
quantisation of an eight-bit image.
Straight thresholding at one bit produces posterised blobs: any gradient collapses into a hard edge wherever it crosses the threshold, and a whole face can become a silhouette. Floyd–Steinberg dithering fixes this by pushing each pixel's rounding error onto its neighbours, so a mid-grey region becomes a stipple of roughly half-on dots that reads as mid-grey from a distance. Leave it on for photographs. Turn it off for line art, logos and text, where the crisp edges are the whole point and a dither just adds noise.
Picking a width
The width is in characters, and each character is two dots wide, so 80 columns samples the image at 160 pixels across. That is a good default: it fits an 80-column terminal, a Discord message and most code comments. The height follows automatically from the aspect ratio — because braille cells are two dots wide by four tall while a terminal cell is roughly twice as tall as it is wide, the two distortions cancel and the picture comes out with correct proportions.
Beyond about 120 columns you are past the width of most places you would paste this, and the lines wrap into unreadability. Below about 30 the subject stops being recognisable. If the result is muddy, try raising the threshold before increasing the width — often the image is simply too dark rather than too small.
FAQ
Will this render properly where I paste it?
Anywhere with a font covering the Braille Patterns block (U+2800–U+28FF), which includes DejaVu Sans Mono, Menlo, Consolas, Cascadia Code and the default fonts on Discord, GitHub and most terminals. In a font that lacks the block you get replacement boxes instead. Monospace is essential — in a proportional font the columns will not line up.
Why do some lines look like they have gaps?
U+2800 is the blank braille pattern, and although it is a real character it renders as whitespace. A blank area of the image genuinely produces a run of them. Some editors trim trailing whitespace on save, which can eat the ends of lines — paste into a plain text field if that is happening.
Is this readable by someone using a screen reader or a braille display?
No, and it is worth being clear about that. These are the Unicode dot patterns, not braille text — a screen reader will announce meaningless letter sequences, and a refreshable display will show a jumble of dots. It is a visual effect that borrows the characters, nothing more.
Can I get plain ASCII instead?
Yes — PNG to ASCII art has several character ramps, including a block-shading one that sits between ASCII and braille in detail.