Encoding

Base32

Base32 (RFC 4648) encode and decode — text and files, right in your browser.

Base32, like Base64, encodes binary data as text, but uses an alphabet of only 32 characters (A-Z2-7) with no easily confused characters (0/O, 1/I). That's why Base32 shows up more often where a string might be typed by a person, not just copy-pasted.

How to use it

Common uses

Things to keep in mind

Base32 grows data by roughly 60% (versus ~33% for Base64) — a trade-off for broader compatibility with case-insensitive systems and manual entry.

Base32hex is a separate variant of the same standard with a different alphabet (0-9A-V) that preserves sort order — it's incompatible with plain Base32.

Article about this tool: Base32: how it differs from Base64 and when it is more convenient

Frequently asked questions

How is Base32 different from Base64?

Base32 uses a smaller 32-character alphabet (A-Z and 2-7), which makes it case-insensitive and free of visually ambiguous characters. That makes it popular for things like TOTP secret keys, DNS labels, and filenames, at the cost of larger output.

Why is Base32 output so much bigger than Base64?

Base32 encodes 5 bits per character instead of 6, so the output is about 60% larger than the original data — noticeably more overhead than Base64's ~33%.

Does this tool send my data anywhere?

No. All encoding and decoding runs locally in your browser per RFC 4648 — nothing is uploaded to a server.

Why doesn't the Base32 alphabet include the digits 0 and 1?

Those digits are easy to confuse with the letters O and I/l when read or typed manually, so RFC 4648 deliberately excluded them from the alphabet, keeping only unambiguous characters.

How is Base32 different from Base32hex?

Base32hex (from the same RFC 4648) uses the alphabet 0-9A-V instead of A-Z2-7 and preserves string sort order to match the order of the original bytes. The two variants are mutually incompatible.

Articles: Encoding

Base64: why encoding is needed and how it works

How Base64 turns binary data into ASCII text and where that is actually needed.

URL Encode/Decode: percent-encoding in links

How special characters in URLs and query parameters turn into %XX sequences.

HTML Entities: how to safely output special characters on a page

Why the characters < > & need escaping and how that prevents broken markup.

JWT: token structure and what "decoding" a JWT actually means

The header, payload, and signature of a JWT, and why decoding is not the same as verifying the signature.

Unicode Escape: what \uXXXX sequences mean

Where \u0041-style sequences in JSON and JS strings come from and what they mean.

ROT13 and the Caesar cipher: simple character substitution

Why shifting by 13 letters makes ROT13 self-inverse, and why anyone still uses it today.

Punycode: how internationalized domains work in DNS

How a domain with non-Latin characters gets converted into an ASCII form with the xn-- prefix.

Morse code: how text becomes dots and dashes

The principle behind encoding letters as dots and dashes, and where Morse code is still used today.

Data URI: when to embed images directly in code

How a data: URI embeds a file’s contents directly in HTML or CSS, and when that is worth it.

Gzip + Base64: compressing data for text-based transfer

Why compressed binary data also gets Base64-encoded before going into a text field.

XML Entities: escaping characters in XML documents

The five required XML entities without which a document breaks during parsing.