Base32 Encoder / Decoder
Convert text to and from Base32. Standard Base32 (RFC 4648) uses the alphabet A–Z + 2–7, which is what TOTP / 2FA seed strings are encoded with. The base32hex variant (0–9 + A–V) preserves lexicographic order, handy for filenames and DNS labels. Padding with `=` is optional on encode and tolerated on decode.
How to use
- Pick encode or decode.
- Choose the variant — Standard (TOTP / 2FA) or Hex (Crockford-style).
- Toggle padding off if you want a clean output without trailing `=`.
Frequently asked questions
- Why not just use Base64?
- Base32 uses only A–Z and 2–7 — case-insensitive and avoids visually confusing characters like 0/O and 1/l. That makes it safer for hand-typed secrets, voice transcripts, and DNS labels.
- Is this what TOTP / 2FA apps use?
- Yes. The seed string you scan or type into Google Authenticator / Authy / 1Password is Base32-encoded with the standard alphabet. Padding is usually stripped.
- What's the difference between Standard and Hex?
- Standard (A–Z, 2–7) is the common one. Base32hex (0–9, A–V) preserves the sort order of the original bytes, which matters for things like generated filenames where you want byte-order sorting to match string-order sorting.
- Does this work on binary data?
- The input field is text — Unicode is encoded as UTF-8 first. For arbitrary binary data, paste the bytes hex-encoded into a separate tool first.
Related tools
TOTP Code Generator
Generate live RFC 6238 TOTP codes from a Base32 secret — handy for testing 2FA flows, debugging authenticator integration, or as a temporary fallback when your phone is unreachable.
Quoted-Printable Encoder & Decoder
Encode text to MIME Quoted-Printable (RFC 2045) or decode it back — handling =XX escapes, soft line breaks, and UTF-8 — entirely in your browser, with 76-character line wrapping on encode.
Base45 Encoder & Decoder
Encode text to Base45 and decode Base45 back to text, following RFC 9285, in your browser.
Punycode Converter
Convert internationalized domains between Unicode (`münchen.de`) and Punycode ASCII (`xn--mnchen-3ya.de`).
CBOR Decoder (Diagnostic Notation)
Decode CBOR (RFC 8949) from hex or base64 into readable diagnostic notation — integers, byte and text strings, arrays, maps, tags, floats, simple values, and indefinite-length items — entirely in your browser.
JWK to PEM Converter (and back)
Turn a JWK or a whole JWKS into PEM public keys and back, with the RFC 7638 thumbprint for each — computed in your browser.