AES Encryption Explained: How It Works and Why It Matters
Jun 23, 2026
Convert your text into Base32 encoding (RFC 4648) for TOTP secrets, DNS records, and data transmission.
Decode Base32 strings back to their original text form. Perfect for inspecting TOTP secrets, DNSSEC records, and encoded tokens.
Base32 is a binary-to-text encoding scheme defined in RFC 4648 that converts binary data into a printable ASCII string format. It uses 32 characters (A-Z and 2-7) to represent binary data in a human-readable way. Base32 encoding is commonly used for TOTP secrets, DNSSEC records, hash visualization, and other applications where a case-insensitive alphanumeric encoding is preferred.
The term "Base32" comes from the fact that the encoding uses a base-32 numeral system to represent 5 bits of data using each character. Every 5 bytes (40 bits) of input are encoded into 8 Base32 characters (each representing 5 bits). This means that Base32-encoded data is approximately 60% larger than the original binary data (compared to Base64's 33% overhead).
Base32 encoding works by taking the binary representation of the input data and grouping it into 5-bit chunks. Each 5-bit chunk is then converted to its corresponding Base32 character. If the input data is not a multiple of 5 bytes, padding characters (=) are added to make the output length a multiple of 8 characters.
While Base64 is more space-efficient (33% overhead vs 60% for Base32), Base32 offers advantages in specific scenarios:
Base32 (RFC 4648) uses 32 characters: the letters A-Z (26 characters) and the digits 2-7 (6 characters). Padding uses = when necessary.
Base32 encodes 5 bits per character with ~60% overhead, while Base64 encodes 6 bits per character with ~33% overhead. Base32 uses only uppercase letters and digits, making it case-insensitive and easier to read aloud, but produces longer output.
TOTP (RFC 6238) recommends Base32 for encoding secrets because it's case-insensitive, avoids visually ambiguous characters, and can be easily entered manually if QR code scanning fails.
Padding characters (=) are added when the input length is not a multiple of 5 bytes. The output must be a multiple of 8 characters. One = is added for 1 byte remainder, three === for 2 bytes, four ==== for 3 bytes, and two == for 4 bytes.
The standard Base32 alphabet (RFC 4648) does not contain any characters with special meaning in URLs (no +, /, or = in the main alphabet). The padding = can be safely omitted when used in URLs.
Blog
Jun 23, 2026
Jun 23, 2026
Jun 23, 2026
Jun 23, 2026
Jun 23, 2026
Jun 23, 2026