Base32 decoder — turn Base32 or Base32hex back into text

Paste a Base32 string to see the text it holds. Lowercase letters, spaces, hyphens and missing = padding are all accepted, and bytes that are not text are shown as hex.

Live demo · real result from this tool
Alphabet

Decoded text

ToolsRift decodes Base32 online

Processed on your device — nothing is uploaded.

How to use the Base32 decoder

  1. Paste the encoded string into Base32 to decode. Spaces, line breaks and hyphens between groups are ignored.
  2. Leave Alphabet on Base32 (A–Z, 2–7), or pick Base32hex (0–9, A–V) if the string contains digits 0, 1, 8 or 9.
  3. Read the Decoded text. If the bytes are not text, you get them as hex with a short warning.
  4. If something is wrong, the message names the bad character and its position, so you can fix a typo.

What it does and when to use it

Use this tool when you have a Base32 value and want to know what is inside it. Typical cases are checking a value from a config file, reading an ID from a URL, or confirming that a two-factor secret was copied correctly. Authenticator secrets are random bytes, so they usually come out as hex rather than words; that is expected.

The decoder is forgiving about formatting, because people often receive Base32 split into groups such as JBSW Y3DP or written in lower case. It is strict about the characters themselves, because a wrong character silently changes the bytes.

To go the other way, use the Base32 encoder. For other formats, try the Base64 decoder or Base58, which is common in cryptocurrency addresses. To look at binary output byte by byte, paste the hex into the hex dump viewer.

How it works

The decoder follows RFC 4648, sections 6 (Base32) and 7 (Base32hex).

  1. Spaces, line breaks and hyphens are removed, trailing = signs are dropped, and the text is upper-cased.
  2. Each character is looked up in the chosen alphabet to give a 5-bit value. An unknown character stops the decode with its position.
  3. The 5-bit values are joined into a bit stream and read back 8 bits at a time as bytes.
  4. Some lengths can never come from whole bytes. A string whose length leaves 1, 3 or 6 characters over in the last group of 8 is rejected.
  5. The bytes are shown as UTF-8 text if they are valid, otherwise as hex.

Decoding runs in your browser; nothing is sent to a server.

Worked examples

jbswy3dp                      →  Hello
CPNMUOJ1E8======  (Base32hex) →  foobar
MZXW6YTB01                    →  “0” at position 9 is not in the Base32 alphabet (A–Z, 2–7).
74======                      →  The decoded 1 bytes are not valid UTF-8 text, so they are shown as hex.
                                 ff

The first line shows that lower case is fine. The second is an RFC 4648 test vector in the hex alphabet. In the third, someone typed digits where Base32 has none, and the tool points at the first one. The last decodes to the single byte 0xFF, which is not text.

Limits and tips

  • Decoded text is read as UTF-8. Bytes in another character set appear as hex.
  • The result is not checked against any checksum, because Base32 has none. A single wrong letter gives a different but valid-looking output.
  • Very common mix-ups when typing keys by hand: O for 0, I or L for 1, and B for 8. Only the letters are valid in standard Base32.

Frequently asked questions

Does the decoder care about upper or lower case?
No. Input is converted to upper case before decoding, so jbswy3dp and JBSWY3DP both give Hello. Base32 was designed to be case-insensitive.
Why does my key say "0 is not in the Base32 alphabet"?
Standard Base32 has no 0, 1 or 8. If someone copied a key by hand, a letter O may have become a zero, or an I a one. Fix those characters and try again. If the string really uses 0–9 and A–V, switch the Alphabet to Base32hex.
Do I need the = signs at the end?
No. Trailing = padding is removed before decoding, so a string with or without it gives the same result. An = in the middle of the string is still an error.
Why do I see hex instead of text?
The decoded bytes are not valid UTF-8, so they cannot be shown as text. This is normal for secret keys, hashes and other binary data. The tool shows the bytes as hex with a warning instead of printing garbled characters.
Is decoding Base32 the same as decrypting it?
No. Base32 is a public encoding with no key, so decoding always works for anyone. If a value was really encrypted, decoding the Base32 only gives you the encrypted bytes.

Sources

  1. RFC 4648: The Base16, Base32, and Base64 Data Encodings — IETF / RFC Editor, accessed 2026-10-08

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close