Braille

Contents

Characters A-Z All 64 6-dot Braille Unicode characters All 256 8-dot Braille Unicode characters Braille for representing numbers Links Author's View

Characters A-Z

a/1b/2c/3d/4e/5f/6g/7h/8i/9j/0
 
klmnopqrst
 
uvxyzw

Notes: A-J form the base characters, and K-Z (except W) can be formed by adding dots to them: K-T: A-J plus 1 dot U-V and X-Z (excluding W): A-E plus 2 dots 'ejoty' gives every 5th char.

All 64 6-dot Braille Unicode characters

charmeaningdots'12374568'-styledot count
a/111*******1
b/2 [mnemonic: 2 blobs like 'B']1212******2
c/3 [mnemonic: *c*at's eyes]141***5***2
d/4 [mnemonic: 'D' at an angle]1451***56**3
e/5 [mnemonic: dots go down: d*e*crease]151****6**2
f/6 [mnemonic: (top or) bottom half of 'F']12412**5***3
g/7 [mnemonic: *g*ang of four, (top half of 'g'), (a lot of ink in a small space like 'G')]124512**56**4
h/8 [mnemonic: top half of 'h']12512***6**3
i/9 [mnemonic: 2 pieces like 'i', dots go up: *i*ncrease]24*2**5***2
j/0 [mnemonic: 'J' without a hat]245*2**56**3
k [mnemonic: right ends of 'k']131*3*****2
l [mnemonic: straight line like 'l']123123*****3
m [mnemonic: left part of 'm' with a gap]1341*3*5***3
n [mnemonic: a bit like an 'n' on its side, 2 eyes + *n*ose + mouth]13451*3*56**4
o [mnemonic: get 'o' if add a dot on the left (3 dots to 4 dots)]1351*3**6**3
p [mnemonic: 'p']1234123*5***4
q [mnemonic: mirror image of 'q']12345123*56**5
r [mnemonic: points *r*ight]1235123**6**4
s [mnemonic: points *s*outh, top half of 's']234*23*5***3
t [mnemonic: looks like a *T*etris piece]2345*23*56**4
u [mnemonic: left part of 'u' with a gap]1361*3***7*3
v [mnemonic: 'v' at an angle]1236123***7*4
w [mnemonic: points *w*est, middle of a 'w' on its side]2456*2**567*4
x [mnemonic: 4 points like 'x']13461*3*5*7*4
y [mnemonic: top of 'y' on its side]134561*3*567*5
z [mnemonic: mirror image of bottom of 'z', 'Oz': symbol for 'o' + dot 6 gives 'z']13561*3**67*4
(blank)(BLANK)********0
, [pattern like a]2*2******1
' [pattern like a]3**3*****1
[pattern like a]4****5***1
[pattern like a]5*****6**1
(caps) [pattern like a]6******7*1
; [pattern like b]23*23*****2
[pattern like b]45****56**2
(Grade 1) [pattern like b]56*****67*2
: [pattern like c]25*2***6**2
- [pattern like c]36**3***7*2
. [pattern like d]256*2***67*3
[pattern like e]26*2****7*2
! [pattern like f]235*23**6**3
[pattern like g]2356*23**67*4
? [pattern like h]236*23***7*3
[pattern like i]35**3**6**2
[pattern like j]356**3**67*3
[pattern like k]46****5*7*2
[pattern like l]456****567*3
34**3*5***2
345**3*56**3
161*****7*2
12612****7*3
1461***5*7*3
246*2**5*7*3
124612**5*7*4
346**3*5*7*3
2346*23*5*7*4
12346123*5*7*5
1561****67*3
125612***67*4
12356123**67*5
14561***567*4
1245612**567*5
(number)3456**3*567*4
23456*23*567*5
123456123*567*6

Mnemonics: 'corners' are even numbers, in anticlockwise order: f/6⠋⠙d/4 h/8⠓⠚j/0 mirror images: ⠑⠊ e/i (vowels) (e starts with dot 1, i starts with dot 2, i.e. small letter with small number) mirror images: ⠗⠺ r/w (right/wrong) (right/west) similar: ⠇⠗ l/r (left/right) similar: ⠕⠗ o/r ('or') similar: ⠕⠵ o/z ('Oz') similar: ⠧⠼ v/number similar: ⠛⠭ g/x contain dot 1: A-H K-R U-Z (excluding W) don't contain dot 1: I&J S&T W vowels: ⠁⠑⠊⠕⠥ aeiou 26 letters: ⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵ abcdefghijklmnopqrstuvwxyz

All 256 8-dot Braille Unicode characters

There are 256 Braille Unicode characters: U+2800..U+28FF (10240..10495). The final column is useful for sorting the chars as though they are the binary representation of integers. Note: the char '*' has a lower Unicode codepoint than '1', thus sorting as a string, sorts them in numerical order.

dechexchardots '12374568'-styledots '12345678'-style paddeddot count
102402800(BLANK)********0
10241280111*******1
1024228022*2******1
1024328031212******2
1024428043**3*****1
102452805131*3*****2
10246280623*23*****2
102472807123123*****3
1024828084****5***1
102492809141***5***2
10250280A24*2**5***2
10251280B12412**5***3
10252280C34**3*5***2
10253280D1341*3*5***3
10254280E234*23*5***3
10255280F1234123*5***4
1025628105*****6**1
102572811151****6**2
10258281225*2***6**2
10259281312512***6**3
10260281435**3**6**2
1026128151351*3**6**3
102622816235*23**6**3
1026328171235123**6**4
10264281845****56**2
1026528191451***56**3
10266281A245*2**56**3
10267281B124512**56**4
10268281C345**3*56**3
10269281D13451*3*56**4
10270281E2345*23*56**4
10271281F12345123*56**5
1027228206******7*1
102732821161*****7*2
10274282226*2****7*2
10275282312612****7*3
10276282436**3***7*2
1027728251361*3***7*3
102782826236*23***7*3
1027928271236123***7*4
10280282846****5*7*2
1028128291461***5*7*3
10282282A246*2**5*7*3
10283282B124612**5*7*4
10284282C346**3*5*7*3
10285282D13461*3*5*7*4
10286282E2346*23*5*7*4
10287282F12346123*5*7*5
10288283056*****67*2
1028928311561****67*3
102902832256*2***67*3
102912833125612***67*4
102922834356**3**67*3
10293283513561*3**67*4
1029428362356*23**67*4
10295283712356123**67*5
102962838456****567*3
10297283914561***567*4
10298283A2456*2**567*4
10299283B1245612**567*5
10300283C3456**3*567*4
10301283D134561*3*567*5
10302283E23456*23*567*5
10303283F123456123*567*6
1030428407***4****1
103052841171**4****2
10306284227*2*4****2
10307284312712*4****3
10308284437**34****2
1030928451371*34****3
103102846237*234****3
10311284712371234****4
10312284847***45***2
1031328491471**45***3
10314284A247*2*45***3
10315284B124712*45***4
10316284C347**345***3
10317284D13471*345***4
10318284E2347*2345***4
10319284F1234712345***5
10320285057***4*6**2
1032128511571**4*6**3
103222852257*2*4*6**3
103232853125712*4*6**4
103242854357**34*6**3
10325285513571*34*6**4
1032628562357*234*6**4
103272857123571234*6**5
103282858457***456**3
10329285914571**456**4
10330285A2457*2*456**4
10331285B1245712*456**5
10332285C3457**3456**4
10333285D134571*3456**5
10334285E23457*23456**5
10335285F123457123456**6
10336286067***4**7*2
1033728611671**4**7*3
103382862267*2*4**7*3
103392863126712*4**7*4
103402864367**34**7*3
10341286513671*34**7*4
1034228662367*234**7*4
103432867123671234**7*5
103442868467***45*7*3
10345286914671**45*7*4
10346286A2467*2*45*7*4
10347286B1246712*45*7*5
10348286C3467**345*7*4
10349286D134671*345*7*5
10350286E23467*2345*7*5
10351286F12346712345*7*6
103522870567***4*67*3
10353287115671**4*67*4
1035428722567*2*4*67*4
1035528731256712*4*67*5
1035628743567**34*67*4
103572875135671*34*67*5
10358287623567*234*67*5
1035928771235671234*67*6
1036028784567***4567*4
103612879145671**4567*5
10362287A24567*2*4567*5
10363287B12456712*4567*6
10364287C34567**34567*5
10365287D1345671*34567*6
10366287E234567*234567*6
10367287F12345671234567*7
1036828808*******81
103692881181******82
10370288228*2*****82
10371288312812*****83
10372288438**3****82
1037328851381*3****83
103742886238*23****83
1037528871238123****84
10376288848****5**82
1037728891481***5**83
10378288A248*2**5**83
10379288B124812**5**84
10380288C348**3*5**83
10381288D13481*3*5**84
10382288E2348*23*5**84
10383288F12348123*5**85
10384289058*****6*82
1038528911581****6*83
103862892258*2***6*83
103872893125812***6*84
103882894358**3**6*83
10389289513581*3**6*84
1039028962358*23**6*84
10391289712358123**6*85
103922898458****56*83
10393289914581***56*84
10394289A2458*2**56*84
10395289B1245812**56*85
10396289C3458**3*56*84
10397289D134581*3*56*85
10398289E23458*23*56*85
10399289F123458123*56*86
1040028A068******782
1040128A11681*****783
1040228A2268*2****783
1040328A3126812****784
1040428A4368**3***783
1040528A513681*3***784
1040628A62368*23***784
1040728A712368123***785
1040828A8468****5*783
1040928A914681***5*784
1041028AA2468*2**5*784
1041128AB1246812**5*785
1041228AC3468**3*5*784
1041328AD134681*3*5*785
1041428AE23468*23*5*785
1041528AF123468123*5*786
1041628B0568*****6783
1041728B115681****6784
1041828B22568*2***6784
1041928B31256812***6785
1042028B43568**3**6784
1042128B5135681*3**6785
1042228B623568*23**6785
1042328B7123568123**6786
1042428B84568****56784
1042528B9145681***56785
1042628BA24568*2**56785
1042728BB12456812**56786
1042828BC34568**3*56785
1042928BD1345681*3*56786
1043028BE234568*23*56786
1043128BF1234568123*56787
1043228C078***4***82
1043328C11781**4***83
1043428C2278*2*4***83
1043528C3127812*4***84
1043628C4378**34***83
1043728C513781*34***84
1043828C62378*234***84
1043928C7123781234***85
1044028C8478***45**83
1044128C914781**45**84
1044228CA2478*2*45**84
1044328CB1247812*45**85
1044428CC3478**345**84
1044528CD134781*345**85
1044628CE23478*2345**85
1044728CF12347812345**86
1044828D0578***4*6*83
1044928D115781**4*6*84
1045028D22578*2*4*6*84
1045128D31257812*4*6*85
1045228D43578**34*6*84
1045328D5135781*34*6*85
1045428D623578*234*6*85
1045528D71235781234*6*86
1045628D84578***456*84
1045728D9145781**456*85
1045828DA24578*2*456*85
1045928DB12457812*456*86
1046028DC34578**3456*85
1046128DD1345781*3456*86
1046228DE234578*23456*86
1046328DF1234578123456*87
1046428E0678***4**783
1046528E116781**4**784
1046628E22678*2*4**784
1046728E31267812*4**785
1046828E43678**34**784
1046928E5136781*34**785
1047028E623678*234**785
1047128E71236781234**786
1047228E84678***45*784
1047328E9146781**45*785
1047428EA24678*2*45*785
1047528EB12467812*45*786
1047628EC34678**345*785
1047728ED1346781*345*786
1047828EE234678*2345*786
1047928EF123467812345*787
1048028F05678***4*6784
1048128F1156781**4*6785
1048228F225678*2*4*6785
1048328F312567812*4*6786
1048428F435678**34*6785
1048528F51356781*34*6786
1048628F6235678*234*6786
1048728F712356781234*6787
1048828F845678***456785
1048928F91456781**456786
1049028FA245678*2*456786
1049128FB124567812*456787
1049228FC345678**3456786
1049328FD13456781*3456787
1049428FE2345678*23456787
1049528FF12345678123456788

Braille for representing numbers

Braille typically numbers dots 1 2 3 7 (left) 4 5 6 8 (right). However, if we use numbering 1 2 3 4 5 6 7 8, then Braille dots can be used as the binary representation for the numbers 0 to 255 inclusive. The 256 Braille chars ordered by binary representation: ⠀⢀⠠⢠⠐⢐⠰⢰⠈⢈⠨⢨⠘⢘⠸⢸ ⡀⣀⡠⣠⡐⣐⡰⣰⡈⣈⡨⣨⡘⣘⡸⣸ ⠄⢄⠤⢤⠔⢔⠴⢴⠌⢌⠬⢬⠜⢜⠼⢼ ⡄⣄⡤⣤⡔⣔⡴⣴⡌⣌⡬⣬⡜⣜⡼⣼ ⠂⢂⠢⢢⠒⢒⠲⢲⠊⢊⠪⢪⠚⢚⠺⢺ ⡂⣂⡢⣢⡒⣒⡲⣲⡊⣊⡪⣪⡚⣚⡺⣺ ⠆⢆⠦⢦⠖⢖⠶⢶⠎⢎⠮⢮⠞⢞⠾⢾ ⡆⣆⡦⣦⡖⣖⡶⣶⡎⣎⡮⣮⡞⣞⡾⣾ ⠁⢁⠡⢡⠑⢑⠱⢱⠉⢉⠩⢩⠙⢙⠹⢹ ⡁⣁⡡⣡⡑⣑⡱⣱⡉⣉⡩⣩⡙⣙⡹⣹ ⠅⢅⠥⢥⠕⢕⠵⢵⠍⢍⠭⢭⠝⢝⠽⢽ ⡅⣅⡥⣥⡕⣕⡵⣵⡍⣍⡭⣭⡝⣝⡽⣽ ⠃⢃⠣⢣⠓⢓⠳⢳⠋⢋⠫⢫⠛⢛⠻⢻ ⡃⣃⡣⣣⡓⣓⡳⣳⡋⣋⡫⣫⡛⣛⡻⣻ ⠇⢇⠧⢧⠗⢗⠷⢷⠏⢏⠯⢯⠟⢟⠿⢿ ⡇⣇⡧⣧⡗⣗⡷⣷⡏⣏⡯⣯⡟⣟⡿⣿ Notes: The first char is a blank Braille char, not space. The 2nd 1/2 all have dot 1 present (lines 9-16). The 2nd 1/4 all have dot 2 present (lines 5-8). The 2nd 1/8 all have dot 3 present (lines 3-4). The 2nd 1/16 all have dot 7 present (line 2). The 2nd 1/32 all have dot 4 present (2nd 1/2 of line 1, chars 9-16). The 2nd 1/64 all have dot 5 present (2nd 1/4 of line 1, chars 5-8). The 2nd 1/128 all have dot 6 present (2nd 1/8 of line 1, chars 3-4). The 2nd 1/256 all have dot 8 present (2nd 1/16 of line 1, char 2). Below is code to generate the 256 chars in that order.

//JavaScript: print 256 Braille chars in binary representation order:

function NumToBraille(vNum)
{
	let vOffset = 0;
	if (vNum & 128) vOffset |= 1;   //dot 1
	if (vNum & 64)  vOffset |= 2;   //dot 2
	if (vNum & 32)  vOffset |= 4;   //dot 3
	if (vNum & 16)  vOffset |= 64;  //dot 7
	if (vNum & 8)   vOffset |= 8;   //dot 4
	if (vNum & 4)   vOffset |= 16;  //dot 5
	if (vNum & 2)   vOffset |= 32;  //dot 6
	if (vNum & 1)   vOffset |= 128; //dot 8
	return String.fromCharCode(0x2800 + vOffset);
}

function BrailleToNum(vChar)
{
	const vOffset = vChar.charCodeAt(0) - 0x2800;
	let vNum = 0;
	if (vOffset & 1)   vNum |= 128; //dot 1
	if (vOffset & 2)   vNum |= 64;  //dot 2
	if (vOffset & 4)   vNum |= 32;  //dot 3
	if (vOffset & 64)  vNum |= 16;  //dot 7
	if (vOffset & 8)   vNum |= 8;   //dot 4
	if (vOffset & 16)  vNum |= 4;   //dot 5
	if (vOffset & 32)  vNum |= 2;   //dot 1
	if (vOffset & 128) vNum |= 1;   //dot 8
	return vNum;
}

let vOutput = "";
for (let i = 0; i < 256; i++)
	vOutput += NumToBraille(i);
console.log(vOutput);
console.log(1 == BrailleToNum(NumToBraille(1)));

#Python: print 256 Braille chars in binary representation order:

def NumToBraille(vNum):
	vOffset = 0
	if vNum & 128: vOffset |= 1   #dot 1
	if vNum & 64:  vOffset |= 2   #dot 2
	if vNum & 32:  vOffset |= 4   #dot 3
	if vNum & 16:  vOffset |= 64  #dot 7
	if vNum & 8:   vOffset |= 8   #dot 4
	if vNum & 4:   vOffset |= 16  #dot 5
	if vNum & 2:   vOffset |= 32  #dot 6
	if vNum & 1:   vOffset |= 128 #dot 8
	return chr(0x2800 + vOffset)

def BrailleToNum(vChar):
    vOffset = ord(vChar) - 0x2800
    vNum = 0
    if vOffset & 1:   vNum |= 128 #dot 1
    if vOffset & 2:   vNum |= 64  #dot 2
    if vOffset & 4:   vNum |= 32  #dot 3
    if vOffset & 64:  vNum |= 16  #dot 7
    if vOffset & 8:   vNum |= 8   #dot 4
    if vOffset & 16:  vNum |= 4   #dot 5
    if vOffset & 32:  vNum |= 2   #dot 6
    if vOffset & 128: vNum |= 1   #dot 8
    return vNum

oChars = []
for i in range(256):
	oChars.append(NumToBraille(i))
vOutput = "".join(oChars)
print(vOutput)
print(1 == BrailleToNum(NumToBraille(1)))

Braille - Wikipedia English Braille - Wikipedia Braille Patterns - Wikipedia NamesList.txt [Unicode characters and names e.g. 'BRAILLE PATTERN BLANK' to 'BRAILLE PATTERN DOTS-12345678'] The Braille Alphabet – PharmaBraille How To Read & Write Braille + The History of Braille! - YouTube [Perkins-style Braille keyboard: 13:55-15:47]

Author's View

Accessibility 'In 1824, at the age of fifteen, [Louis Braille] developed the braille code based on the French alphabet as an improvement on night writing.' Source: Braille - Wikipedia Braille is useful for accessibility, including within literacy and software. An accessibility note: QWERTY keyboards have tactile bumps on the F, J and Numpad5 keys. QWERTY keys (A)SDF and JKL(;) are sometimes used for simulating Perkins-style Braille keyboards. Notation systems As someone familiar with literacy, mathematics and programming, Braille is interesting as a notation system. Some notation systems: The alphabet. Roman numerals. Punctuation. The IPA (International Phonetic Alphabet). (And my JEEPA and other easier-to-use alternatives.) The NATO phonetic alphabet. Morse code. Braille. Mathematical symbols and notation. For which Euler gets much credit for setting a standard. Programming operators, including the ternary operator. Programming syntax such as curly braces for grouping lines, function calls via 'MyFunc(MyArg1, MyArg2)', return statements. ISO country and language codes. ISO dates, week numbers, and weekday numbers. As is common, an existing system with some significant qualities (night writing), is itself significantly improved (Braille). Critically, 6 dots is far more practical than 12. Braille has the benefit that all of the numerals, and 25 of 26 letters, can be derived from 10 symbols (for A-J). This handy anticlockwise 'corners' mnemonic helps learn 4 of those 10 symbols. f/6⠋⠙d/4 h/8⠓⠚j/0 That leaves: ⠃b/2. And: ⠁a/1 ⠉c/3 ⠑e/5 ⠛g/7 ⠊i/9. A case study in teaching I often take my own notes on things, and collect resources by others, and share the best ones. Collecting/combining/critiquing and sometimes improving/inventing/expanding the best explanations is the best way to improve education. Braille is a subject people often have no prior knowledge of, so it's interesting as a test case, to see how quickly it can be learnt and how best to teach it. I found mastering the 10 symbols was the key, and eventually invented mnemonics that made them instantly memorable for me, that I listed above. (I invented all the mnemonics listed above for individual/multiple letters except for top half of 'g' and...) I didn't invent this anticlockwise 'corners' mnemonic, however, but found it extremely useful once I'd come across it: f/6⠋⠙d/4 h/8⠓⠚j/0 Once I felt that I knew the 26 symbols fairly well, I tested my knowledge on some Braille-embossed cartons bought from the chemist. If the carton was upside-down, you'd notice surprisingly more dot 6's than usual. A slight problem was that once a sticker covered one or two Braille characters. I was able to do it, but my main difficulty was distinguishing between characters, where they end/begin, they feel so packed together horizontally, with no space in-between them. I could imagine if I had a machine, that gave you larger gaps, or a gap 'mark' between letters, it would be much easier. Programming A potential use for Braille is to provide 1 symbol for each of 256 chars. This could be useful for inspecting binary files, giving 1 symbol per character. Or... you can use printable Unicode characters, but use Braille characters for any unprintable ones. All files are measured by their size in bytes, where each byte is a number from 0 to 255. Typing I have investigated ways to type at speed. Initially I was an extremely fast touch-typist. Then I discovered Excel autocorrect and AutoHotkey hotstrings, as ways to do text expansion from abbreviations to longer strings. This has greatly reduced the number of characters I type day-to-day, and also allows me to very often avoid pressing the shift key, to capitalise characters. E.g. 'en-' to 'education', 'kg-' to 'knowledge', 'ed-' to 'England'. I settled on auto-generating 'first n letters + last letter (excluding silent e)' and 'first n letters of each word' patterns, to pre-populate my hotstring dictionaries versus creating hotstrings every time I needed one. E.g. dift=different,difficult,differentiate medn=medicine,Mediterranean,medallion,medication,methodisation isanew=Isaac Newton isne=Isaac Newton There are further notes here: hotstring demo - Bazzle. A programmer told me about chording. E.g. you have 5 buttons, one for each finger/thumb, and depending on which ones are touching a sensor, you type a character. It's the same principle as playing a chord on a piano such as C-E-G. This can be one of the fastest ways to type, one advantage is that your hand can stay in one place, it doesn't have to move. This idea is the same principle used by Perkins-style Braille keyboards and stenography keyboards. Since I'd learnt Braille, this was potentially a pattern of chords for each letter that I could use as chords for writing text. I.e. I could try Braille instead of learning some other system. I experimented with using 6 keys of a QWERTY keyboard as a Braille keyboard, via AutoHotkey, briefly in July 2026, something I might come back to in future. There is a link above to a YouTube video about Perkins-style Braille keyboards. They typically have 9 keys (listed left-to-right): Line Spacer (Enter) Dot 3 Dot 2 Dot 1 Space Bar Dot 4 Dot 5 Dot 6 Backspace An alternative layout works like this: Dot 7 (Backspace when pressed by itself) Dot 3 Dot 2 Dot 1 Space Bar Dot 4 Dot 5 Dot 6 Dot 8 (Enter when pressed by itself) Note: backspace and enter are confusingly swapped. Stenography keyboards have 7 left-hand side consonant keys, 4 vowel keys, 10 right-hand side consonant keys. You can use chords to type syllables phonetically and/or custom abbreviations. A syllable contains one or more vowel sounds, and may start and/or end with consonant sounds, hence the left/right splitting of consonant keys on the keyboard.