Free exact browser converter
Base32 Decoder
Decode RFC 4648 Base32 into strict UTF-8 text or hexadecimal bytes. Check padding, trailing bits and alphabet without losing zero bytes.
Interactive tool
Base32 Decoder
Ready
Choose a clear output representation.
Detailed conversion guide
How Base32 Decoder Works
Each Base32 character supplies five bits. The decoder restores complete bytes and checks unused trailing bits are zero. It accepts a valid padded value or its unpadded form.
Choose text for actual UTF-8 payloads. Choose hex for arbitrary bytes or a value such as 74======, whose FF byte cannot be read as UTF-8.
| Input | Output | Meaning |
|---|---|---|
JBSWY3DP | Hello | Default example |
MY====== | f | Boundary example |
JavaScript Example
Runnable example for the default sample. The tool also validates its full input contract.
const value = input.replace(/=+$/,"").toUpperCase();
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
const bits = Array.from(value,c => alphabet.indexOf(c).toString(2).padStart(5,"0")).join("");
const bytes = Uint8Array.from(bits.match(/.{8}/g)||[], b => parseInt(b,2));
const decoded = new TextDecoder("utf-8",{fatal:true,ignoreBOM:true}).decode(bytes);Formats, Boundaries and Limitations
The tool rejects invalid padding counts and impossible lengths. MZ====== is rejected because it has nonzero trailing bits, even though a permissive decoder might recover the same byte as MY======.
This decoder uses the RFC 4648 alphabet, not Crockford Base32 or Base32hex. It does not guess omitted or confused characters.
Related converters
More Text and Encoding Tools
Choose the tool that matches your text or byte workflow.