ASCII to Base64 Converter

Convert ASCII text to Base64 and decode Base64 back to ASCII

Privacy First: All conversion happens locally in your browser. Your text never leaves your device.

Result

Copied to clipboard!

Input Length: characters

Output Length: characters

Mode:

Character Mapping

CharacterDecimalHexBinary

What Is ASCII to Base64 Conversion?

ASCII (American Standard Code for Information Interchange) assigns 128 numeric values (0-127) to characters including letters, digits, punctuation, and control codes. Base64 encoding converts these ASCII byte values into a 64-character text representation defined in RFC 4648. ASCII text containing only printable characters (code points 32-126) can be encoded directly using the JavaScript btoa() function.

The conversion is straightforward because each ASCII character occupies exactly 1 byte. Three ASCII characters (3 bytes, 24 bits) map to 4 Base64 characters (4 groups of 6 bits). This produces a consistent 33% size increase. The process is fully reversible: decoding the Base64 string with atob() restores the original ASCII text byte-for-byte. For a deeper understanding of how Base64 works, see the encoding guide.

What Is the ASCII Character Set?

The ASCII standard defines 128 characters, each assigned a numeric value from 0 to 127. These characters divide into control characters (0-31, 127) and printable characters (32-126). Every ASCII character occupies 1 byte in memory and is directly compatible with UTF-8 encoding.

RangeCharactersDescription
0-31Control charactersNon-printable (NUL, TAB, LF, CR, etc.)
32SpacePrintable whitespace
33-47! " # $ % & ' ( ) * + , - . /Punctuation and symbols
48-570-9Digits
65-90A-ZUppercase letters
97-122a-zLowercase letters
127DELControl character (delete)

All 128 ASCII values can be Base64 encoded. The Base64 character table shows how the 64 output characters map to 6-bit index values during the encoding process.

How Does ASCII Map to Base64?

Each ASCII character occupies 1 byte (8 bits, with only 7 bits used for the value). The Base64 algorithm groups 3 input bytes (24 bits) into 4 output characters (4 groups of 6 bits each). Each 6-bit group maps to one character from the Base64 alphabet (A-Z, a-z, 0-9, +, /).

Example: encoding "ABC"

StepDataValue
Input charactersA, B, C3 ASCII characters
Decimal values65, 66, 673 bytes
Binary (8-bit)01000001 01000010 0100001124 bits
6-bit groups010000 010100 001001 0000114 groups
Decimal indices16, 20, 9, 34 indices (0-63)
Base64 charactersQ, U, J, D4 output characters
ResultQUJD

The 3 ASCII characters "ABC" (3 bytes) become the 4 Base64 characters "QUJD". This 3-to-4 ratio is constant for all input data. For a complete walkthrough of each algorithm step, see the Base64 algorithm explanation.

What Is the Difference Between ASCII, UTF-8, and Base64?

ASCII, UTF-8, and Base64 serve different purposes in text and data representation. ASCII defines a character set. UTF-8 extends that character set to cover all Unicode code points. Base64 converts binary data (including text bytes) into a text-safe format for transport.

PropertyASCIIUTF-8Base64
PurposeText character encodingUnicode text encodingBinary-to-text encoding
Character range128 characters (0-127)1,112,064 code points64 output characters
Bytes per character1 byte1-4 bytesEncodes any byte sequence
CompatibilitySubset of UTF-8Superset of ASCIIUses ASCII characters only
ReversibleN/A (character set)N/A (character set)Yes (encoding scheme)

When encoding ASCII text to Base64, the bytes are identical whether interpreted as ASCII or UTF-8. The distinction matters only for characters above code point 127. The Base64 text encoder handles both ASCII and UTF-8 input automatically.

How Do You Handle Non-ASCII Characters?

Characters above code point 127, such as accented letters (e, n), CJK characters, and emoji, are not part of the ASCII standard. These characters require UTF-8 encoding, which represents them as multi-byte sequences (2-4 bytes per character). The JavaScript btoa() function only accepts single-byte characters (0-255) and throws an error for multi-byte input.

To Base64 encode non-ASCII text in JavaScript, first convert to UTF-8 bytes, then apply Base64 encoding:

// Encode non-ASCII text to Base64
const encoded = btoa(unescape(encodeURIComponent(text)));

// Decode Base64 back to non-ASCII text
const decoded = decodeURIComponent(escape(atob(encoded)));

The encodeURIComponent() function converts Unicode characters to percent-encoded UTF-8 bytes. The unescape() function converts those percent-encoded bytes to single-byte characters that btoa() can process. For encoding text that may contain non-ASCII characters, use the Base64 text encoder, which handles this conversion automatically. For language-specific implementations, see the JavaScript Base64 guide or Python Base64 guide.

Frequently Asked Questions

Can Base64 encode any ASCII character?

Yes, all 128 ASCII characters can be Base64 encoded, including control characters (0-31), printable characters (32-126), and the DEL character (127). The Base64 algorithm operates on raw bytes, so any byte value from 0 to 127 is encoded without issue.

Is ASCII the same as UTF-8 for Base64?

For characters in the range 0-127, ASCII and UTF-8 produce identical byte values. UTF-8 is backward-compatible with ASCII for this range. Characters above 127 (accented letters, symbols, emoji) exist only in UTF-8 and require multi-byte sequences, which changes the Base64 output.

Why do I get an error encoding emoji to Base64?

Emoji are not ASCII characters. They are Unicode code points that require multi-byte UTF-8 encoding. The JavaScript btoa() function only accepts characters in the 0-255 byte range. To encode emoji, first convert to UTF-8 bytes using encodeURIComponent(), then apply Base64 encoding. The Base64 text encoder handles this automatically.

How many Base64 characters does one ASCII character produce?

One ASCII character produces approximately 1.33 Base64 characters on average. The exact output follows the formula: ceil(n / 3) * 4 characters, where n is the number of input bytes. So 1 byte produces 4 characters (with padding), 2 bytes produce 4, and 3 bytes produce 4.

Is ASCII to Base64 reversible?

Yes, ASCII to Base64 conversion is fully reversible and lossless. Decoding a Base64 string reproduces the exact original ASCII bytes. The process is deterministic: the same ASCII input always produces the same Base64 output. Use the Base64 text decoder to reverse any Base64 string.