DuckyTools
Home Developer Base32 Encoder

Base32 Encoder Developer

Encode text as Base32 — the encoding used for TOTP secrets and case-insensitive identifiers.

Base32 Encoder is a free online tool that encode text as Base32 — the encoding used for TOTP secrets and case-insensitive identifiers. It runs entirely in your web browser using plain JavaScript, so files are processed on your own device and never uploaded to a server. There is no sign-up, no file size limit imposed by the site, no watermark and no paid tier.

Price
Free — no account, no quota, no watermark
Category
Developer
Where it runs
In your browser, on your device
Files uploaded
None
Technology
plain JavaScript
Settings
2
Works offline
Yes, after the first visit

About Base32 Encoder

Base32 is defined in RFC 4648 and uses A–Z plus 2–7 — 32 characters chosen so that the alphabet survives being read aloud, written down or typed in either case. It is deliberately less efficient than Base64, expanding data by 60% rather than 33%, and the trade is that it has no case sensitivity and none of the characters that are easy to confuse. That is why every TOTP authenticator secret you have ever scanned is Base32.

How to use it

  1. Paste the text you want to run through base32 encoder.
  2. Set include = padding and lowercase output.

The 2 settings

SettingWhat it doesDefault
Include = paddingOn or off. On by default.On
Lowercase outputOn or off. Off by default.Off

Under the hood

Runs onplain JavaScript — runs the whole thing
ControlsInclude = padding, Lowercase output

Questions

Why use Base32 when Base64 is more compact?

Because Base64 is case-sensitive and includes `+` and `/`, which need escaping in URLs and filenames. Base32 survives being dictated over a phone, written on paper, or typed by someone who does not know that case matters — which is exactly the situation a two-factor setup code is in.

What are the = signs for?

Padding to a multiple of eight characters. They carry no data and most decoders, including the one here, accept input without them. RFC 4648 requires them; several real-world implementations omit them anyway.

Is the output correct against the standard?

Yes — it matches the RFC 4648 test vectors. "foobar" encodes to MZXW6YTBOI======, which you can verify against the RFC directly.