How Braille Art Works (and How to Make Your Own from Any Image)

Those dotted pictures you see in Discord servers and Reddit threads are built from a single block of 256 Unicode characters. Here is the clever encoding behind them, why they can show far more detail than classic ASCII art, and how to turn any photo into one.

Every character is a tiny 2×4 screen

Unicode reserves the range U+2800 to U+28FF for braille patterns. A braille cell has eight dot positions, arranged as two columns of four, and each dot can independently be raised or flat. Eight on/off dots means 2⁸ = 256 combinations — and Unicode includes every single one as its own character. In other words, each braille character is a miniature 2-pixel-wide, 4-pixel-tall monochrome display.

The encoding is elegant: the eight dots map to the eight bits of a byte, and that byte is simply added to U+2800. The character with no dots (U+2800, ⠀) is a blank; the character with all eight dots (U+28FF, ⣿) is a solid block; ⠁ (U+2801) has only the top-left dot. One quirk trips people up: the bit order follows braille history, not screen order. Braille was originally a six-dot system, so dots 1–3 run down the left column and 4–6 down the right; dots 7 and 8 (the bottom pair) were added later and got the two highest bits. Any converter has to shuffle bits to match screen layout — but once it does, a grid of these characters behaves exactly like a low-resolution 1-bit display.

This is why braille art crushes classic ASCII art on detail. In letter-based ASCII art, one character cell gives you roughly one "pixel" of shading. A braille cell packs eight independently controllable pixels into the same space, so edges, curves, and small features survive. A shape like this diamond needs only eight characters:

Diamond — 8 characters, 64 dots
⣠⣾⣷⣄
⠙⢿⡿⠋
Heart — 12 characters
⣾⣿⣦⣴⣿⣷
⠈⠛⢿⡿⠛⠁
Arrow — 12 characters
⣤⣤⣤⣤⣷⣄
⠛⠛⠛⠛⡿⠋

From photo to dots: the conversion pipeline

An image-to-braille converter does three things. It scales your image so its width in pixels equals twice the number of characters you want per line (two pixel columns per character). It converts every pixel to a brightness value using the standard luminance formula — about 30% red, 59% green, 11% blue, matching how human eyes weight color. Then it applies a threshold: each of the eight pixels behind a character is compared to a cutoff brightness, and pixels darker than the cutoff become raised dots. The resulting 8-bit number picks the character. That is the whole trick — repeated a few thousand times.

Getting good results: it is all about contrast

Because thresholding is a hard yes/no decision, the source image matters more than the converter. What works:

  • Pick high-contrast subjects. Logos, silhouettes, line art, and well-lit portraits convert cleanly. Foggy photos full of mid-grey tones turn to mush, because every pixel lands near the threshold.
  • Crop tight. Empty background wastes characters. The subject should fill most of the frame.
  • Sweep the threshold. There is no universally correct cutoff — drag it until the subject separates from the background. A few points can be the difference between a face and a blob.
  • Invert when the subject is light. Converters raise dots for dark pixels. A white logo on black comes out as a hole in a solid block unless you flip it.
  • Match width to destination. More characters per line means more detail but breaks on narrow screens. Around 40–60 characters suits most chats; go wider only for forums or terminals.

Make your own in about ten seconds

The free Fix42 Braille ASCII Art Generator implements exactly the pipeline above, with sliders for width (20–120 characters) and threshold (0–255), plus an invert toggle. It runs entirely in your browser on an HTML canvas — your image is never uploaded anywhere — and regenerates live as you drag the sliders, so tuning takes seconds. Copy the result or download it as a .txt file. If you are wondering where to paste it, see our guides for Discord and Twitch and game chats — each platform has its own quirks.

Frequently asked questions

Is braille art readable as actual braille?

No. Braille art borrows the characters from the Unicode braille block purely as visual pixels — the dot patterns spell nothing in any braille code, and screen readers announce them as a stream of dot patterns rather than describing the picture. If accessibility matters where you post, add a short caption describing what the image shows.

Why do braille art pieces use ⠀ instead of a normal space?

The blank braille pattern (U+2800) looks like a space but is treated as a real printable character. Many platforms collapse runs of ordinary spaces, trim them from line starts, or render them narrower than braille glyphs — any of which shifts the artwork. Blank braille characters keep exactly the same width as the dotted ones, so alignment survives.

How many different braille characters are there?

Exactly 256, from U+2800 (no dots) to U+28FF (all eight dots raised). Each of the eight dot positions is one bit, so every possible on/off combination of a 2×4 dot grid exists as a distinct character. That completeness is what makes the block usable as a pixel canvas.

Why does my converted image come out as a solid block or a silhouette hole?

Converters raise dots for pixels darker than the threshold. If your subject is light on a dark background, the background gets all the dots and your subject appears as an empty gap. Turn on the invert option, or adjust the threshold: lowering it keeps only the very darkest areas, raising it fills more.

What width should I choose when generating braille art?

Match the destination. Around 40 characters is safe for phone screens and chat apps, 60 suits desktop Discord or Reddit, and 100 or more only makes sense in terminals, code files, or wide forum layouts. Remember each character is two pixels wide and four tall, so doubling the width quadruples the total character count.

Does converting an image to braille art upload my photo?

Not with a client-side tool. The Fix42 generator draws your image onto a hidden HTML canvas in your own browser, reads the pixels locally, and builds the braille text there — no server ever receives the file. You can verify this class of tool by loading the page and then disconnecting from the internet; conversion still works.

Turn any image into braille art

Drop in a photo, tune two sliders, copy the result. Free and fully in-browser.

⠿ Open the Braille Art Generator