Base32 Encoder / Decoder
Encode and decode Base32 with RFC 4648, Crockford or z-base-32 alphabets, padding and letter-case options, for text and files, right in your browser.
Your inputs and files stay in your browser
Type text to encode, or paste Base32 to decode — or drop a file below.
Drag and drop a file here
If a file is selected, it will be used instead of the text input.
The encoded or decoded result appears here.
On this page
Encode text or files to Base32 and decode them back with three alphabets: RFC 4648, Crockford and z-base-32. Everything runs in your browser through a WebAssembly module compiled from Rust, so secrets you paste are not uploaded.
Detailed Functionality
Base32 stores 5 bits per character and uses only letters and digits, so the result survives case changes and is easy to type or read aloud. The RFC 4648 alphabet (A–Z, 2–7) is the one used for TOTP secrets in authenticator apps and for Tor onion addresses. Crockford (0–9, A–Z without I, L, O and U) is made for humans: on decode it reads I and L as 1, O as 0 and ignores hyphens. z-base-32 uses a lowercase alphabet ordered for readability and is never padded.
Padding with = to a multiple of 8 characters can be required, optional or omitted. Letter case forces upper- or lowercase output, while Auto keeps the alphabet's usual case. Decoding ignores letter case in every alphabet and, with Allow whitespace/newlines, skips spaces and line breaks.
Text is converted to bytes in the chosen charset (UTF-8, UTF-16LE, UTF-16BE, ASCII or ISO-8859-1). Files can be chosen or dropped onto the page and are read in a Web Worker with a progress bar and Cancel. If the decoded bytes are not valid text, the tool says so and Download still saves the raw bytes.
Practical Examples
Three alphabets: hello encodes to NBSWY3DP (RFC 4648), D1JPRV3F (Crockford) and pb1sa5dx (z-base-32).
Padding and case: Hi becomes JBUQ==== with Required padding and JBUQ with No padding; Letter case set to Lowercase gives jbuq====.
Case-insensitive decoding: both JBSWY3DPEE====== and jbswy3dpee====== decode to Hello!; the unpadded JBSWY3DPEE also works once padding is Optional.
Crockford tolerance: with the Crockford alphabet, DIJPRV3F (letter I instead of 1) and d1jp-rv3f (lowercase with a hyphen) both decode to hello.
How to Use This Tool
Enter text or choose a file
Type or paste text into Input (text), or drop a file onto the page or click Choose file.
Choose the alphabet and padding
Select the Alphabet: RFC 4648 (A-Z2-7), Crockford (0-9A-Z) or z-base-32. Set Padding, Letter case and the Text charset if your text is not UTF-8.
Encode or decode
Click Encode to produce Base32 or Decode to restore the original text or bytes. Use the same alphabet that produced the string.
Copy or download
Click Copy for the clipboard or Download to save the result; binary output can only be saved as a file.
Tips and Best Practices
- Base32 output is about 60% larger than the input (8 characters for every 5 bytes); when case-insensitivity does not matter, Base64 is more compact.
- TOTP secrets from
otpauth://QR codes are RFC 4648 Base32, often without padding: choose Optional padding.JBSWY3DPEHPK3PXPdecodes to 10 raw bytes, so save them with Download. - Unpadded input such as
JBSWY3DPEEis rejected while padding is Required; switch to Optional. - The alphabets are not interchangeable:
pb1sa5dxdecodes tohelloonly with z-base-32 and is invalid as RFC 4648. - Spaces and line breaks in pasted keys are ignored while Allow whitespace/newlines is on.