Base64 Characters Table
Complete reference of all 64 Base64 characters. See each character's 6-bit index, binary representation, ASCII code, and group. Essential reference for understanding how Base64 maps binary data to printable text.
Base64 Alphabet — All 64 Characters
Detailed Character Reference
| Index | 6-Bit Binary | Char | ASCII Dec | ASCII Hex | Group | Description |
|---|---|---|---|---|---|---|
| 0 | 000000 | A | 65 | 0x41 | Uppercase | First letter of alphabet |
| 1 | 000001 | B | 66 | 0x42 | Uppercase | Second letter |
| 2 | 000010 | C | 67 | 0x43 | Uppercase | Third letter |
| 3 | 000011 | D | 68 | 0x44 | Uppercase | Fourth letter |
| 4 | 000100 | E | 69 | 0x45 | Uppercase | Most common English letter |
| 5 | 000101 | F | 70 | 0x46 | Uppercase | Sixth letter |
| 6 | 000110 | G | 71 | 0x47 | Uppercase | Seventh letter |
| 7 | 000111 | H | 72 | 0x48 | Uppercase | Eighth letter |
| 8 | 001000 | I | 73 | 0x49 | Uppercase | Ninth letter |
| 9 | 001001 | J | 74 | 0x4A | Uppercase | Tenth letter |
| 10 | 001010 | K | 75 | 0x4B | Uppercase | Eleventh letter |
| 11 | 001011 | L | 76 | 0x4C | Uppercase | Twelfth letter |
| 12 | 001100 | M | 77 | 0x4D | Uppercase | Thirteenth letter |
| 13 | 001101 | N | 78 | 0x4E | Uppercase | Fourteenth letter |
| 14 | 001110 | O | 79 | 0x4F | Uppercase | Fifteenth letter |
| 15 | 001111 | P | 80 | 0x50 | Uppercase | Sixteenth letter |
| 16 | 010000 | Q | 81 | 0x51 | Uppercase | Seventeenth letter |
| 17 | 010001 | R | 82 | 0x52 | Uppercase | Eighteenth letter |
| 18 | 010010 | S | 83 | 0x53 | Uppercase | Nineteenth letter |
| 19 | 010011 | T | 84 | 0x54 | Uppercase | Twentieth letter |
| 20 | 010100 | U | 85 | 0x55 | Uppercase | Twenty-first letter |
| 21 | 010101 | V | 86 | 0x56 | Uppercase | Twenty-second letter |
| 22 | 010110 | W | 87 | 0x57 | Uppercase | Twenty-third letter |
| 23 | 010111 | X | 88 | 0x58 | Uppercase | Twenty-fourth letter |
| 24 | 011000 | Y | 89 | 0x59 | Uppercase | Twenty-fifth letter |
| 25 | 011001 | Z | 90 | 0x5A | Uppercase | Twenty-sixth letter |
| 26 | 011010 | a | 97 | 0x61 | Lowercase | First lowercase letter |
| 27 | 011011 | b | 98 | 0x62 | Lowercase | Second lowercase letter |
| 28 | 011100 | c | 99 | 0x63 | Lowercase | Third lowercase letter |
| 29 | 011101 | d | 100 | 0x64 | Lowercase | Fourth lowercase letter |
| 30 | 011110 | e | 101 | 0x65 | Lowercase | Most common letter in English |
| 31 | 011111 | f | 102 | 0x66 | Lowercase | Sixth lowercase letter |
| 32 | 100000 | g | 103 | 0x67 | Lowercase | Seventh lowercase letter |
| 33 | 100001 | h | 104 | 0x68 | Lowercase | Eighth lowercase letter |
| 34 | 100010 | i | 105 | 0x69 | Lowercase | Ninth lowercase letter |
| 35 | 100011 | j | 106 | 0x6A | Lowercase | Tenth lowercase letter |
| 36 | 100100 | k | 107 | 0x6B | Lowercase | Eleventh lowercase letter |
| 37 | 100101 | l | 108 | 0x6C | Lowercase | Twelfth lowercase letter |
| 38 | 100110 | m | 109 | 0x6D | Lowercase | Thirteenth lowercase letter |
| 39 | 100111 | n | 110 | 0x6E | Lowercase | Fourteenth lowercase letter |
| 40 | 101000 | o | 111 | 0x6F | Lowercase | Fifteenth lowercase letter |
| 41 | 101001 | p | 112 | 0x70 | Lowercase | Sixteenth lowercase letter |
| 42 | 101010 | q | 113 | 0x71 | Lowercase | Seventeenth lowercase letter |
| 43 | 101011 | r | 114 | 0x72 | Lowercase | Eighteenth lowercase letter |
| 44 | 101100 | s | 115 | 0x73 | Lowercase | Nineteenth lowercase letter |
| 45 | 101101 | t | 116 | 0x74 | Lowercase | Twentieth lowercase letter |
| 46 | 101110 | u | 117 | 0x75 | Lowercase | Twenty-first lowercase letter |
| 47 | 101111 | v | 118 | 0x76 | Lowercase | Twenty-second lowercase letter |
| 48 | 110000 | w | 119 | 0x77 | Lowercase | Twenty-third lowercase letter |
| 49 | 110001 | x | 120 | 0x78 | Lowercase | Twenty-fourth lowercase letter |
| 50 | 110010 | y | 121 | 0x79 | Lowercase | Twenty-fifth lowercase letter |
| 51 | 110011 | z | 122 | 0x7A | Lowercase | Twenty-sixth lowercase letter |
| 52 | 110100 | 0 | 48 | 0x30 | Digits | Zero digit |
| 53 | 110101 | 1 | 49 | 0x31 | Digits | One digit |
| 54 | 110110 | 2 | 50 | 0x32 | Digits | Two digit |
| 55 | 110111 | 3 | 51 | 0x33 | Digits | Three digit |
| 56 | 111000 | 4 | 52 | 0x34 | Digits | Four digit |
| 57 | 111001 | 5 | 53 | 0x35 | Digits | Five digit |
| 58 | 111010 | 6 | 54 | 0x36 | Digits | Six digit |
| 59 | 111011 | 7 | 55 | 0x37 | Digits | Seven digit |
| 60 | 111100 | 8 | 56 | 0x38 | Digits | Eight digit |
| 61 | 111101 | 9 | 57 | 0x39 | Digits | Nine digit |
| 62 | 111110 | + | 43 | 0x2B | Symbols | Plus sign (62nd character) |
| 63 | 111111 | / | 47 | 0x2F | Symbols | Forward slash (63rd character) |
Showing 64 of 64 Base64 characters (plus padding =)
Base64 uses a 64-character alphabet to represent binary data as printable ASCII text. Each character maps to a 6-bit value (0–63), which is why there are exactly 64 characters. The alphabet is carefully designed:
- A–Z (indices 0–25): 26 uppercase letters across ASCII 65–90
- a–z (indices 26–51): 26 lowercase letters across ASCII 97–122
- 0–9 (indices 52–61): 10 digits across ASCII 48–57
- + (index 62): Plus sign at ASCII 43
- / (index 63): Forward slash at ASCII 47
- = (not indexed): Padding character at ASCII 61, used when input bytes aren't a multiple of 3
Why this order? The characters are ordered so that sorting by index produces a lexicographically stable result that's roughly the same as ASCII sorting. Uppercase letters (earliest in ASCII) map to the lowest indices, followed by lowercase (mid-range ASCII), then digits (higher ASCII), and finally the two symbols.
URL-safe variant: For URLs, + and / are replaced with - (hyphen) and _ (underscore) respectively. Padding is often omitted in URL-safe Base64 since the length can be inferred. This variant is used in JWTs, cookies, and URL parameters.
Build a Base64 Lookup Table in Code
Generate the Base64 alphabet, look up characters by index, and encode binary data.
// The standard Base64 alphabet
const BASE64_ALPHABET =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz" +
"0123456789+/";
// Look up Base64 character by 6-bit index
function base64Char(index: number): string {
return BASE64_ALPHABET[index];
}
// Build a lookup table object
function buildBase64Table() {
const table: Record<number, {
char: string;
ascii: number;
hex: string;
group: string;
}> = {};
for (let i = 0; i < 64; i++) {
const ch = BASE64_ALPHABET[i];
let group = "Uppercase";
if (i >= 26 && i < 52) group = "Lowercase";
else if (i >= 52 && i < 62) group = "Digits";
else if (i >= 62) group = "Symbols";
table[i] = {
char: ch,
ascii: ch.charCodeAt(0),
hex: `0x${ch.charCodeAt(0).toString(16)}`,
group,
};
}
return table;
}
// Encode 3 bytes to 4 Base64 chars
function encode3Bytes(b0: number, b1: number, b2: number): string {
const n = (b0 << 16) | (b1 << 8) | b2;
return (
BASE64_ALPHABET[(n >> 18) & 63] +
BASE64_ALPHABET[(n >> 12) & 63] +
BASE64_ALPHABET[(n >> 6) & 63] +
BASE64_ALPHABET[n & 63]
);
}
console.log(encode3Bytes(77, 97, 110)); // "TWFu"
console.log(base64Char(25)); // "Z"Frequently Asked Questions
Search below or browse through our most commonly asked questions.