Also available in: Español · Português · Français · العربية
Braille translator
Converts text to uncontracted Unified English Braille and reads it back again, showing the dot numbers behind every cell.
What is a braille translator?
It turns ordinary text into braille cells and back again. The cells here are Unicode braille patterns, the block of 256 characters that encodes every combination of the six (or eight) dots, so the output is real text you can copy into a document, a label file or a message rather than a picture of braille.
This one produces uncontracted braille — Grade 1 — where every letter is written out in full. It also reads braille back into text, and shows you the dot numbers behind each cell so you can check the output rather than trust it.
Everything runs in your browser. Nothing is uploaded, and there is no account.
How to use the braille translator
- Choose a direction. Text to braille, or braille to text. Switching direction moves the result into the input box, so you can convert something and immediately convert it back.
- Type or paste. Letters, digits and punctuation all convert. The capital and number indicators are inserted where the standard requires them, which is why the cell count is usually higher than the character count.
- Check the cells, then copy. The panel underneath lists each cell with its dot numbers. Copy gives you the braille as Unicode characters.
Why this tool does not offer Grade 2, and what that would take
Braille comes in two grades. Grade 1 is letter-for-letter. Grade 2 is contracted: about 180 signs stand in for common letter groups and whole words, so “the” is one cell and “knowledge” is one cell, and a page of Grade 2 is roughly a quarter shorter. Experienced readers read Grade 2. A tool that maps letters one to one and calls the result a braille translation is describing Grade 1 while implying Grade 2, and the people most affected are the ones least able to check.
So the first question was what a contraction table costs, and the answer turned out to be the opposite of the obvious worry. We measured the reference implementation's Unified English Braille contraction tables: the whole include chain is 226 KB raw and 39.3 KB gzipped. That is a quarter of the PDF library this site already ships on its PDF pages. Payload is not the reason.
The reason is that Grade 2 is not a table. Counting the rules in that file: of 3,346 lines, about 90 are the position-based group signs a substitution table could express — the ones that say “ch” is one cell, or that “ea” only appears in the middle of a word. The other 2,926 lines are whole-word forms, regex-like context conditions and per-word behaviour. That is a ratio of more than thirty to one, and it is not incidental complexity. Whether a contraction is allowed depends on how a word is pronounced and how it divides into parts, and spelling does not carry that. There is no reading of the letters alone that tells you the rule.
Publishing a Grade 2 output of unverified quality would be worse than not offering it, so this page offers Grade 1 and says which grade it is, in the tool as well as in the article. If you need contracted braille for something that will be embossed and read, use a transcription service or software built for it.
One thing worth recording: we also tried to measure how much of Grade 2 a simple table gets right, so the shortfall could be given as a number. That measurement was abandoned rather than published. The only reference implementation we could reach is a release candidate from 2017 that crashes on ordinary input — it aborts on the word “WORLD” — and three runs of our own comparison produced three different answers because of bugs in the comparison, not the braille. The rule counts above need no such machinery, so those are what this page states.
Honest limitations
Uncontracted braille is real braille and is genuinely used — for labels, for signage, for learners, and for material where contraction would be ambiguous — but it is not what a fluent adult reads for pleasure. Treat this as a correct Grade 1 tool, not a substitute for transcription.
Two characters are deliberately missing, and the reason is a property of the script rather than an oversight. Dot 4 on its own is a prefix in UEB: it opens the two-cell signs for @, & and <. It cannot also stand for a character, because then a backtick followed by an “a” would be indistinguishable from an @ sign. And an ellipsis in braille is literally three full stops, so encoding it as its own character would make “...” and “…” the same cells and leave the reverse direction guessing. Both are left alone rather than faked.
The capital indicator and the em dash share an opening cell — the em dash is dot 6 followed by dots 3-6, and dot 6 alone is the capital sign. Valid braille is still unambiguous, because a capital indicator can only come before a letter, and the reverse translation applies exactly that rule. This is the kind of thing an all-pairs round-trip test finds and reading the alphabet table does not.
Numbers work by reusing the first ten letters after a number sign, which is why a letter directly following a digit needs a letter sign to say the digits have stopped. Without it “1a” would read as “11”. The tool inserts it; the reverse direction honours it.
The engine carries 37 assertions, and the one that matters is a round trip over every ordered pair of supported characters — 9,025 of them — because Grade 1 is designed to be unambiguous and that is a property to test rather than an output to write down. It is checked with a control confirming that braille output genuinely differs from its input, so the round trip cannot pass by doing nothing.
Why is it free?
Mapping characters to cells is a lookup and some bookkeeping about capitals and numbers, and it happens on your own machine. Nothing is uploaded, there is no account, and there is nothing to watermark.
If you want the underlying characters rather than a translation, the Unicode symbol pages on this site list blocks you can copy directly.