Base32 Encoder & Decoder

Encode text to Base32 or decode Base32 back to readable text, with RFC 4648, base32hex and Crockford alphabets.

Mode
Output options

Input: 0 characters ยท Output: 0 characters

No uploads. Your files stay on your device.

Free forever, no sign-up, no cookies. Buy me a coffee

How it works

Base32 packs every 5 bits of your data into one printable character, so 5 bytes become 8 characters. Pick Encode to turn text into Base32 or Decode to read a Base32 string back โ€” the result updates instantly as you type. Text is converted to UTF-8 bytes first, so accents and emoji survive the round trip. The default alphabet is the standard one from RFC 4648 ยง6 (Aโ€“Z and 2โ€“7, padded with =), which is what TOTP secrets, DNSSEC NSEC3 and Tor addresses use.

Two other alphabets are built in: base32hex (RFC 4648 ยง7, digits 0โ€“9 then Aโ€“V) sorts in the same order as the raw bytes, and Crockford Base32 drops I, L, O and U so a human reading a code aloud cannot confuse them โ€” it is the alphabet used by ULIDs, and this page accepts hyphens and maps I/L to 1 and O to 0 when decoding it. Decoding is forgiving about line breaks, spaces, lower case and missing padding, but genuinely malformed input gets a clear message instead of silent garbage. Everything runs locally in your browser: secrets and tokens are never uploaded, stored or logged.

Frequently asked questions

How do I encode text to Base32?

Leave the mode on Encode, then type or paste your text into the left box and the Base32 result appears in the right box instantly. Your text is converted to UTF-8 bytes first, so accents and emoji round-trip correctly. Click Copy result to put it on your clipboard or Download .txt to save it. To go the other way, switch to Decode, or press Swap to feed the result straight back in and reverse the direction.

What is the difference between Base32, base32hex and Crockford Base32?

All three pack 5 bits of data into one character, they just use different symbols. The standard alphabet from RFC 4648 section 6 uses A to Z and 2 to 7 and is what TOTP secrets and Tor addresses use. base32hex, from RFC 4648 section 7, uses 0 to 9 then A to V so encoded strings sort in the same order as the underlying bytes. Crockford Base32 leaves out I, L, O and U so a code read aloud cannot be misheard, and it is the alphabet used by ULIDs.

Why does my Base32 string end with = signs?

Base32 turns 5 bytes into 8 characters, so when the input length is not a multiple of 5 the final block is padded with = characters to fill it out. The padding carries no data, it only tells the decoder how many bytes that last block really holds. You can switch padding off for the compact form, and this decoder restores missing padding automatically. Crockford Base32 is defined without padding, so the option is disabled for it.

Report a bug