Velto
Text & String

Braille Translator

This braille translator turns English text into Unicode braille cells and reads braille back into English, one cell per letter. It works in grade 1 (uncontracted) braille, marks digits with the number sign ⠼ and capitals with the capital indicator ⠠, then shows which of the six dots each cell raises.

Direction is detected automatically: braille cells are decoded, anything else is translated into braille.

Braille

Grade 1

⠠⠓⠑⠇⠇⠕⠂⠀⠠⠺⠕⠗⠇⠙⠖

Grade 1 braille (uncontracted): one cell per letter, digits after the number sign ⠼, capitals after the capital indicator ⠠. Grade 2 contractions are deliberately not applied, as half of them would produce wrong cells.

Cell by cell

Each square shows the six dots of the cell: dots 1-2-3 down the left column, 4-5-6 down the right.

Examples

How to use

  1. 1

    Type English in the box or paste braille cells copied from somewhere else. The field takes up to 2000 characters.

  2. 2

    Leave Direction on automatic detection. Set it to English to braille or Braille to English when an input mixes the two.

  3. 3

    Read the result under the box. The Grade 1 badge confirms that the tool applied no grade 2 contraction.

  4. 4

    Open the cell-by-cell panel to see the six-dot pattern behind each character. Anything listed as unsupported passed through untranslated.

Why this braille translator stops at grade 1

Grade 1 braille, also called uncontracted braille, spells a word out letter by letter, so one printed letter becomes one cell. Grade 2 sits on top of that system and swaps common words and letter groups for contractions that run into the hundreds.

Those contractions depend on position. A b standing on its own means the word but, while the same b inside a word stays a plain letter. Dozens of letter groups work that way, so a table covering half of them turns out cells that read as a different word. The tool therefore handles grade 1 only and puts a Grade 1 badge on every result.

The braille alphabet, cell by cell

A cell holds six dot positions, numbered 1 to 3 down the left column and 4 to 6 down the right. Raising any combination of them gives 63 patterns, of which the 26 below carry the letters. The braille alphabet runs in decades of ten: a to j stay inside the top four positions, k to t repeat those ten shapes with dot 3 added while the rest add dots 3 and 6 to the first five.

LetterCellDotsLetterCellDots
a1n1-3-4-5
b1-2o1-3-5
c1-4p1-2-3-4
d1-4-5q1-2-3-4-5
e1-5r1-2-3-5
f1-2-4s2-3-4
g1-2-4-5t2-3-4-5
h1-2-5u1-3-6
i2-4v1-2-3-6
j2-4-5w2-4-5-6
k1-3x1-3-4-6
l1-2-3y1-3-4-5-6
m1-3-4z1-3-5-6

Only the w breaks that logic. French had no w when Louis Braille drew up the code, so the letter came in later and its cell ⠺ looks unrelated to the ones around it.

Writing numbers and capitals in braille

Digits reuse the first ten letters. A number sign ⠼ (dots 3-4-5-6) opens the sequence, after which a to j stand for 1 to 9 and 0. Take the year 1809 as an example: it comes out as ⠼⠁⠓⠚⠊, where ⠁ is 1, ⠓ is 8, ⠚ is 0 and ⠊ is 9, for five cells in all.

Number mode survives a period and a comma, which keeps 3.14 (⠼⠉⠲⠁⠙) and 1,000 (⠼⠁⠂⠚⠚⠚) reading as one value each. A reader would take a letter straight after a digit as another digit, so a letter sign ⠰ (dots 5-6) closes the number and 1st comes out as ⠼⠁⠰⠎⠞.

Capitals take the capital indicator ⠠ (dot 6) in front of the letter it applies to. Hello, World! becomes ⠠⠓⠑⠇⠇⠕⠂⠀⠠⠺⠕⠗⠇⠙⠖, which is 15 cells counting the space between the words. Decoding is more forgiving than encoding here, since two capital indicators in a row mean a whole word in capitals and ⠠⠠⠉⠁⠞ comes back as CAT.

How to translate braille to English

Pasting cells into the same box is all it takes to go the other way. The tool reads the direction from the input. Any string holding at least one cell from the Unicode Braille Patterns block (U+2800 to U+28FF) goes back to English while anything else goes to braille. The Direction menu forces one side when an input mixes the two.

⠓⠑⠇⠇⠕ ⠺⠕⠗⠇⠙ comes back as hello world, with the empty cell ⠀ and an ordinary space both accepted as a word break. Decoding walks the same table backwards, so a cell belonging to grade 2 or to eight-dot braille, which adds two dots under the standard six, gets flagged as unsupported rather than turned into a guess.

Characters the braille translator leaves untranslated

Accented letters, currency signs, @, % and emoji have no cell in the covered set. They travel through the output untouched and appear in a list under the result, which turns café into ⠉⠁⠋é with the é flagged. The tool leaves them in place rather than swapping in an approximate cell, since a plausible wrong cell is harder to spot than a character that stayed behind.

Punctuation is where this table departs from printed braille on purpose. Printed braille gives dots 2-3-6 to both the question mark and the opening double quote; the tool keeps those dots for ? and writes both double quotes with dots 3-5-6. One cell per character is what lets a decode return the original line. The tool retranslates its own output and reports whether the round trip landed back on the input.

SignCellDots
Number sign3-4-5-6
Capital indicator6
Letter sign5-6
Spaceempty cell
Comma ,2
Semicolon ;2-3
Colon :2-5
Period .2-5-6
Exclamation !2-3-5
Question mark ?2-3-6
Apostrophe '3
Hyphen -3-6
Double quote "3-5-6
Opening bracket (⠐⠣5 then 1-2-6
Closing bracket )⠐⠜5 then 3-4-5

What letter-for-letter braille translation is good for

The output is a run of Unicode characters, ready to copy into a document or a message. Producing an embosser file is a separate craft that depends on line breaks counted in cells and on the contraction rules of grade 2. A transcriber checks that kind of work before anything reaches paper.

For learning the alphabet or checking a braille string found somewhere, a letter-for-letter braille translation sits at the right level. Anything meant to be read under the fingers by someone who reads braille every day calls for grade 2 and a human pass.

Parameters

Every field of this tool can be prefilled from the URL. Use these query parameters:

ParameterTypeDefault
textstringHello, World!
modeauto | toBraille | toTextauto

Example : https://www.veltotools.com/string/braille-translator?text=Hello%2C+World%21&mode=auto

API

The same tool is available as a free JSON API, with the same parameters as above. No key, no sign-up.

GET https://www.veltotools.com/api/v1/string/braille-translator?text=Hello%2C+World%21&mode=auto
$ curl "https://www.veltotools.com/api/v1/string/braille-translator?text=Hello%2C+World%21&mode=auto"

Frequently asked questions

Updated Aug 22, 2026

Related tools