Base32 Encoder / Decoder

Encode text or bytes to Base32, or decode Base32 back — RFC 4648, base32hex, Crockford, and z-base-32, with hex byte I/O and optional padding. Runs entirely in your browser, no server, no sign-up.

Result

What this tool does

Encode any text or bytes to Base32 (RFC 4648 and its common variants), or decode a Base32 string back to the original data — instantly, right in your browser. Nothing is sent to a server: it runs locally, works offline, and needs no sign-up. Pick a Mode, a Variant, and a Data format, then optionally toggle Lowercase or Padding.

Modes

ModeWhat it does
encode (default)Turns your input into a Base32 string — e.g. foobar becomes MZXW6YTBOI======.
decodeReverses it — turns a Base32 string back into the original text or bytes. Decoding is case-insensitive and accepts padded or unpadded input.

Variants — the alphabet

VariantAlphabetNotes
standard (default)RFC 4648 §6 — A–Z and 2–7The everyday Base32, used by TOTP secrets, S/KEY, and many file formats.
hexRFC 4648 §7 base32hex — 0–9 and A–VSorts in the same order as the raw bytes; used in DNSSEC NSEC3.
crockford0–9 and A–Z minus the ambiguous I L O UHuman-friendly; case-insensitive; never padded.
zbase32A permuted, human-oriented alphabetDesigned to be easier to read and type aloud; never padded.

Data format — text or raw bytes

FormatWhen encodingWhen decoding
text (default)Reads the input as UTF-8 textRenders the bytes as UTF-8 text (errors if they aren't valid UTF-8)
hexReads the input as a hex byte string (48 65 6c or 0x48656c)Renders the decoded bytes as hex — use this for binary data

Switch to hex whenever your data is binary and not readable text.

Options

Examples

InputSettingsOutput
foobarencode · standardMZXW6YTBOI======
foobarencode · standard · no paddingMZXW6YTBOI
foobarencode · standard · lowercasemzxw6ytboi
fooencode · hex format · data 0x666f6fMZXW6===
MZXW6YTBOI======decode · standardfoobar
foobarencode · hex (base32hex)CPNMUOJ1E8======

FAQ

Is it free and private?

Yes — your input never leaves your device, and it keeps working offline once the page has loaded.

Which variant do I want?

Use standard unless you have a reason not to — it's the RFC 4648 Base32 that most tools mean by "Base32". Choose hex for DNSSEC/NSEC3 and order-preserving keys, crockford for human-typed IDs, and zbase32 when the string has to be read aloud.

My decoded output looks garbled.

The bytes probably aren't UTF-8 text. Switch the Data format to hex to see the raw bytes.

Does it handle TOTP / 2FA secrets?

Yes — those are standard RFC 4648 Base32. Decode them with the standard variant.

Why does padding sometimes do nothing?

Padding only applies to the standard and hex variants. Crockford and z-base-32 are defined without padding, so the toggle is ignored for them.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool base32-codec "foobar"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/base32-codec/?input=foobar&mode=encode&variant=standard&format=text&lowercase=true&padding=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.