Braille Converter
Convert text to Unicode Braille patterns and back.
About this tool
Braille is a tactile writing system used by people who are blind or have low vision, where each character is represented by a pattern of raised dots arranged in a 3Γ2 cell. This converter transforms standard text into Unicode Braille patterns and back, allowing digital representation of Braille for educational purposes, accessibility testing, and digital communication with Braille display devices.
To use the tool, select whether you want to convert text to Braille or Braille to text, then paste your input and click Convert. The tool implements Grade 1 (uncontracted) Braille, where each cell represents a single letter, number, or punctuation mark. The output uses Unicode Braille characters (U+2800 to U+28FF), so you can easily copy, share, or paste results into documents, emails, or other applications.
Keep in mind that this tool produces Grade 1 Braille suitable for learning and digital exchange. For official Braille publications, you should consult professional Braille transcription services that follow established standards like Unified English Braille. All processing happens locally in your browser, so your text is never sent to any server.
Frequently Asked Questions
Code Implementation
# Grade 1 Braille (Unicode Braille Patterns U+2800)
LETTER_DOTS = {
'a': 0b000001, 'b': 0b000011, 'c': 0b001001, 'd': 0b011001, 'e': 0b010001,
'f': 0b001011, 'g': 0b011011, 'h': 0b010011, 'i': 0b001010, 'j': 0b011010,
'k': 0b000101, 'l': 0b000111, 'm': 0b001101, 'n': 0b011101, 'o': 0b010101,
'p': 0b001111, 'q': 0b011111, 'r': 0b010111, 's': 0b001110, 't': 0b011110,
'u': 0b100101, 'v': 0b100111, 'w': 0b111010, 'x': 0b101101, 'y': 0b111101,
'z': 0b110101,
}
DIGIT_DOTS = {str(i): v for i, v in enumerate(
[0b011010, 0b000001, 0b000011, 0b001001, 0b011001, 0b010001,
0b001011, 0b011011, 0b010011, 0b001010], 0)}
NUMBER_INDICATOR = 0b111100
def text_to_braille(text: str) -> str:
result = []
num_mode = False
for ch in text.lower():
if ch.isdigit():
if not num_mode:
result.append(chr(0x2800 + NUMBER_INDICATOR))
num_mode = True
result.append(chr(0x2800 + DIGIT_DOTS[ch]))
elif ch in LETTER_DOTS:
num_mode = False
result.append(chr(0x2800 + LETTER_DOTS[ch]))
elif ch == ' ':
num_mode = False
result.append(chr(0x2800))
else:
result.append(ch)
return ''.join(result)
print(text_to_braille("Hello 123"))
Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.