⠠⠓⠑⠇⠇⠕ ⠠⠺⠕⠗⠇⠙⠖ ⠠⠕⠗⠙⠑⠗ ⠼⠁⠃⠉ ⠁⠗⠗⠊⠧⠑⠎ ⠕⠝ ⠼⠃⠚⠃⠋⠤⠼⠚⠓⠤⠼⠃⠋⠲
Convert text to Unicode braille and back, in uncontracted Grade 1 — the form that maps letter for letter. Number and capital indicators are inserted where the code requires them, the dot pattern of any cell can be inspected, and characters with no braille equivalent are listed rather than silently dropped.
Step by step
01Type or paste in either script
Text becomes braille; braille cells become text. The direction follows what you paste, so a copied line of braille from a document decodes without any setup.
02Read what the indicators are doing
A number sign opens a run of digits and stays in effect until a letter ends it; a capital sign marks one letter and a doubled sign marks a whole word. These are part of the code, not decoration.
03Inspect a cell when something looks wrong
Any cell can be broken down into its numbered dots, which is how you check that what you are looking at is the character you meant rather than one dot away from it.
04Check the unsupported list before you use it
Characters with no Grade 1 equivalent are reported explicitly. A translation that quietly drops a symbol is worse than one that tells you it could not represent it.
Worked example
Braille has 64 possible cells and needs to cover 26 letters, 10 digits, and punctuation. The overlap is resolved with indicator cells — which is why the braille for a number is longer than you expect.
Given
Letters, digits, and the cells that switch between them
A ⠠⠁ capital sign + a
d ⠙
a ⠁
space ⠀
4 ⠼⠙ number sign + d
2 ⠃ still numeric, no repeat
digits 1-0 reuse the cells for a-jThe digits are the same six cells as the letters a to j, which is why a number sign has to precede them and stay in effect until a letter breaks the run. Capitals work the same way, one cell for one letter or a doubled cell for a whole word. Braille is longer than print for this reason before contractions are involved at all — and it is why counting characters is not the same as counting cells.
Before you rely on it
This is Grade 1, and published braille usually is not
Uncontracted braille maps character to character, which is what makes it learnable and reversible. Grade 2 — the form used in books and signage — contracts common words and letter groups into single cells and needs a different translator. Do not send Grade 1 output to be embossed for publication.
Unicode braille is not an embossing file
The cells here are Unicode characters that render as dot patterns on a screen. Producing physical braille needs a BRF file and an embosser, with margins, page numbering, and line lengths that a text conversion knows nothing about.
Indicators make braille longer than print
Every capital costs a cell, every number run costs a cell, and some punctuation costs two. A line that fits your layout in print will not fit in braille — which matters if you are producing both from the same source.
Braille is not a language
It is a script. English braille, French braille, and Unified English Braille all differ, and contracted forms differ more. Converting English text produces English braille — it does not translate meaning, and it is not a universal representation.
Screen readers do not need this
A blind reader using a screen reader or a refreshable display gets braille generated by their own software, tuned to their grade and language settings. Putting braille characters into a web page or a document does not improve accessibility, and can make it worse by breaking the text layer.
Round trips are exact, within the supported set
Grade 1 is a one-to-one mapping, so text converted to braille and back returns what you started with — apart from characters the code cannot represent, which are listed rather than dropped silently.
The judgement call
Braille work splits into learning, checking, and producing, and only two of those happen here.
Learning the alphabet or checking a cell
Yes
Grade 1 is the letter-for-letter form, and the dot breakdown shows exactly which dots make each character.
Reading a line of braille someone sent you
Yes
Decoding is exact for uncontracted text, and unsupported characters are named rather than skipped.
Labels, art, or a tactile mock-up
Yes, with care
Fine for short strings — but have a braille reader check anything that will be produced physically.
A book, a menu, or public signage
Grade 2
Published braille is contracted. Grade 1 output would be correct but unidiomatic and much longer.
Making a website accessible
Not this
Screen readers generate braille themselves. Use semantic HTML, real text, and proper labels instead.
Sending to an embosser
BRF, not Unicode
Embossers need a formatted braille file with page layout, not a string of Unicode cells.
Reference
FAQ
Type or paste the text and the braille appears immediately in uncontracted Grade 1 — one cell per character, with number and capital indicators inserted where the code requires them. Paste braille cells instead and they are decoded back to text.
Grade 1 is uncontracted: every character maps to its own cell. Grade 2 contracts common words and letter groups into single cells and is what books, menus, and signage use, because it is far more compact to read and to emboss. This tool produces Grade 1 only.
Indicator cells. Digits reuse the cells for a to j, so a number sign has to precede any run of them, and each capital costs a cell of its own. Uncontracted braille is longer than print before contractions enter the picture at all.
Not directly. Embossers take a formatted braille file — a BRF — with page layout, line lengths, and margins. The output here is Unicode braille characters, which is right for screens, learning, and checking, but is not a production file.
No, and it can hurt. Screen reader users get braille generated by their own software in their own grade and language, from the underlying text. Braille characters in a page break the text layer that software depends on. Semantic HTML, real text, and proper labels are what help.
No. Translation in both directions runs in your browser using a local character table, so it works offline and nothing you type is transmitted or stored.
Translation in both directions runs in your browser from a local character table. Nothing is uploaded or retained, and the tool works offline.