Skip to content
πŸ› οΈToolsShed

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.