What this tool does
Base32 encodes any bytes using only 26 uppercase letters and the digits 2–7 — 32 symbols total, with no lowercase, 0 or 1 that people tend to confuse. It is standardized in RFC 4648 and common in 2FA secrets, recovery codes and certificate fingerprints.
Compared with Base64: Base32 output is ~60% longer but "copy-friendly" — no case sensitivity and no ambiguous 0/O or 1/l/I pairs. This page implements RFC 4648: encoding emits = padding, decoding tolerates lowercase, whitespace and missing padding. Everything is converted locally.
How to use
- Pick encode or decode Encode turns text into Base32; decode restores Base32 to UTF-8 text — decoding binary content reports an error instead of emitting mojibake.
- Paste and convert No need to strip whitespace or = padding before decoding — the tool cleans it automatically. The "send to decode/encode" button makes round-trip checking one click.
FAQ
Base32 vs Base64 — which one?
Base64 is compact (+33%) for machine-to-machine transfer; Base32 (+60%) trades size for human-friendliness — ideal for keys and recovery codes handled by people.
Do I need to fix case and padding before decoding?
No. Decoding uppercases, strips whitespace and = padding automatically, and works without padding. Only out-of-alphabet characters (0, 1, 8, 9…) cause an error.
Why does my 2FA secret not match?
2FA secrets are "Base32 of bytes" — encoded as raw bytes, then displayed. Encoding the already-decoded text again gives a different result. Make sure you are feeding the original secret text.
Can it decode binary data?
This tool outputs decoded results as UTF-8 text and errors clearly on binary. For binary Base32 payloads, use a general-purpose decoder or script.
Is Crockford Base32 supported?
No. The Crockford variant excludes I, L, O and has its own check-digit rules — a different spec. This tool implements RFC 4648 only.
Is my content uploaded?
No. Encoding and decoding run in a browser Worker; content never leaves your device.
Limits
Up to 2MB per run; RFC 4648 alphabet (A–Z, 2–7) only — no Crockford / z-base-32 variants.
Decoded output is UTF-8 text: binary content errors out clearly instead of printing mojibake.
Encoding always emits = padding; decoding tolerates missing or extra padding.