Base32 / Base58 Encode / Decode

Encode text to Base32 (RFC 4648) or Base58 (the Bitcoin alphabet) and decode either one back to text, fully UTF-8 safe and entirely in your browser.

Loading tool…

Base32 / Base58 Encode / DecodeConvert text to and from Base32 (RFC 4648) or Base58 (the Bitcoin alphabet), with UTF-8-safe round-trips for emoji and non-Latin scripts. Pick a base, choose Encode or Decode, and the result updates as you type. Everything runs entirely in your browser, so the text you paste never leaves your device.

What is Base32 / Base58 Encode / Decode?

A free online Base32 and Base58 encoder and decoder that turns plain text into a Base32 (RFC 4648) or Base58 (Bitcoin alphabet) string, and decodes either back to readable text. Developers reach for Base32 when they need a case-insensitive, padding-aligned encoding for TOTP/2FA secrets, DNS labels, or filesystem-safe identifiers, and for Base58 when working with Bitcoin addresses, keys, or short human-friendly IDs that omit easily confused characters (0, O, I, l). Both directions are UTF-8 aware, so emoji and non-Latin scripts (Korean, Japanese, Chinese, Arabic, accented Latin) round-trip without corruption. Select the base, switch between Encode and Decode, use Swap to convert the other way, and copy the result in one click.

How to use Base32 / Base58 Encode / Decode

  1. Pick the base with the Base32 / Base58 toggle: Base32 uses the RFC 4648 alphabet with = padding, Base58 uses the Bitcoin alphabet with no padding.
  2. Choose a direction with the Encode / Decode toggle.
  3. Type or paste your content into the input box (plain text in Encode mode, an encoded string in Decode mode).
  4. Read the converted result instantly in the output box below, which updates as you type.
  5. Click the copy button on the output to copy the result to your clipboard.
  6. Use Swap to send the output back into the input and flip the mode, or Clear to empty the input.

Examples

Encode text to Base32

Input

Hello

Output

JBSWY3DP

Decode a Base32 string

Input

JBUSC===

Output

Hi!

Encode text to Base58

Input

Hello World!

Output

2NEpo7TZRRrLZSi2U

Frequently asked questions

What is the difference between Base32 and Base58 here?
Base32 follows RFC 4648: an uppercase A–Z and 2–7 alphabet with = padding so the output length is a multiple of 8, and decoding is case-insensitive. Base58 uses the Bitcoin alphabet, which drops 0, O, I and l to avoid look-alike characters, adds no padding, and is case-sensitive.
Does it handle emoji and non-Latin characters like Korean or Japanese?
Yes. Text is converted through UTF-8 before encoding, so emoji and non-Latin scripts encode correctly and decode back to the exact original characters.
Why do I see an "Invalid input" error?
In Decode mode this appears when the text is not valid for the selected base — for example it contains characters outside that alphabet, or it decodes to bytes that are not valid UTF-8 text. Check that you picked the matching base and pasted a correctly formatted string.
Is my data uploaded to a server?
No. The Base32 and Base58 codecs run entirely in your browser in JavaScript. The text you paste never leaves your device and is never sent to any server.
Can I convert in both directions?
Yes. Use the Encode / Decode toggle to choose a direction, or press Swap to feed the current output back into the input and flip the mode automatically.

Related tools