Base32 and Base58 Converter

Convert text and bytes into Base32 and Base58 and back again, two ways of writing data using nothing but letters and digits. Both exist because Base64 is awkward to read aloud, type or drop into a web address, and each drops a different set of confusable characters.

How to use it

Text or raw bytes go in one end and the encoded string comes out the other, and pasting an encoded string back gives you the original.

  1. Pick the alphabet Base32 for anything typed by a human, Base58 for identifiers in a URL, Base85 when size matters most.
  2. Choose the direction Encoding takes text and gives you the encoded form; decoding does the reverse.
  3. Copy the result Grouping the output in blocks makes a long code far easier to read aloud or copy by hand.
Full instructions

Input

text to encode, or an encoded string to decode

Output

In depth

Choosing the right alphabet when Base64 will not do

Why Base32, Base58, Base62, and Base85 exist alongside Base64, what each one drops and why, how to encode or decode with the controls on this page, a worked example comparing them side by side, and the checksum that makes Base58Check catch a mistyped character.

Screenshot: The encodings that are not Base64
The encodings that are not Base64 as it appears when the page opens.

The problem Base64 leaves behind

Base64 is the standard way to carry binary data through text-only channels. It works well when software reads the result, but it has a few awkward properties when people have to deal with it. The plus and slash characters cause trouble inside URLs. The upper and lower case letters look alike in some fonts. The output is hard to read aloud over the phone. And it includes characters that confuse double-click selection in a terminal.

Different communities solved these problems by choosing different subsets of printable characters. Each subset is called an alphabet, and each one trades something for something else. A smaller alphabet means longer output but fewer reading errors. A larger alphabet means shorter output but more characters that need escaping. This tool handles all of them and lets you switch between alphabets without retyping, so you can compare the results directly.

Who uses these encodings

Developers who generate licence keys, backup codes, or one-time passwords use Base32 because it survives being typed by a customer who is reading it off a screen. Blockchain developers work with Base58 and Base58Check every day because wallet addresses use that alphabet. Programmers embedding binary data in source code or PostScript files use Base85 because it is the most compact option. API designers who need identifiers that are safe in URLs without percent-encoding sometimes choose Base62, which uses only letters and digits.

System administrators setting up two-factor authentication encounter Base32 secrets in TOTP configuration. Anyone who has scanned a QR code to set up an authenticator app has already used a Base32-encoded secret without knowing it. Database designers who want compact primary keys that look clean in a URL sometimes pick Base62 for their identifiers. Game developers who generate invite codes or session tokens want something that players can share over voice chat without confusion, and Base32 fills that role.

The controls on the page

The dropdown labelled Encoding lists every alphabet the tool supports. The choices are Base32, which is the standard RFC 4648 version. Base32 with hex digits, which keeps the same structure but uses 0 through 9 and A through V. Z-base-32, which was designed to be spoken aloud and uses a character set chosen to sound different over a phone line. Base58 with the Bitcoin alphabet. Base58 with the Flickr alphabet, which swaps the case of six letters. Base62, which uses only the 26 upper case letters, 26 lower case letters, and 10 digits. And Base85, the most compact option, which uses printable ASCII including punctuation.

The dropdown labelled Direction switches between Encode and Decode. Paste or type your text into the Input panel and the Output panel fills in right away.

Add padding characters is a checkbox that controls whether the output includes trailing padding. Base32 pads with equals signs, the same way Base64 does. Base58 and Base62 do not use padding at all, so this checkbox has no effect on those alphabets.

Group the output for reading breaks the output into blocks separated by spaces. This makes a long encoded string much easier to read aloud or copy by hand, which is the whole reason some of these encodings exist.

How the alphabets compare

Base32 uses 32 characters: the upper case letters A through Z and the digits 2 through 7. It leaves out 0, 1, and 8 because they look like O, I, and B in many fonts. The result is about 60 percent longer than the original, but a person can type it without making mistakes.

Base58 uses 58 characters. It keeps both upper and lower case for density but drops 0, O, I, and lowercase l because they are easily confused. This is the alphabet behind Bitcoin and other cryptocurrency addresses. The output is shorter than Base32 but harder to read aloud because case matters.

Base62 uses 62 characters: all the letters and all the digits. Nothing is dropped for readability. It is popular for short URL tokens and identifiers because every character is safe in a web address without escaping.

Base85 uses 85 characters and is the most compact of the group. The output is about 25 percent shorter than Base64. The trade-off is that it includes punctuation marks like exclamation points and angle brackets, which need escaping in HTML, JSON, and most shell commands. It is best suited for contexts where the encoded text is never shown to a person.

A walked-through example

Take the word Hello as input. Set Encoding to Base32 and Direction to Encode. The output is JBSWY3DP. Switch to Base58 with the Bitcoin alphabet. The output becomes 9Ajdvzr. Switch to Base62 and you get 5TP3P3v. Switch to Base85 and you get 87cURD.

The trend is clear. Base32 is the longest at 8 characters. Base58 and Base62 are in the middle. Base85 is the shortest at 6 characters. But Base85 could contain a character like < that would break an HTML page, while Base32 is entirely safe to paste into any system.

Now decode. Set Encoding to Base32, Direction to Decode, and paste JBSWY3DP into the input. The output is Hello. The round trip is exact.

The checksum in Base58Check

Plain Base58 encoding has no error detection. If you mistype one character, the decode succeeds but gives you wrong data. For a cryptocurrency address, that means sending money to a place that does not exist.

Base58Check adds four bytes of checksum to the end of the data before encoding. When you decode, the checksum is recalculated and compared. A single wrong character, a swapped pair, or a missing character will all be caught. This is why Bitcoin addresses use Base58Check rather than plain Base58. The tool detects and reports checksum failures when decoding. The checksum is a double SHA-256 hash of the payload, truncated to four bytes. You do not need to know how it works to use it, but knowing that it exists explains why the encoded form is a few characters longer than plain Base58.

Common mistakes

  • Confusing encoding with encryption. Every encoding on this page is reversible by anyone. None of them hides data. Use real encryption if you need secrecy.
  • Using Base85 in a context where punctuation is dangerous. Angle brackets, quotes, and backslashes all appear in the Base85 alphabet. If the output goes into HTML, a shell command, or a JSON value, those characters will cause problems.
  • Leaving padding on when the receiving system rejects it. Turn off the Add padding characters checkbox if the other end treats equals signs as invalid.
  • Choosing Base58 when the reader will need to type the value. Case matters in Base58, and a long mixed-case string is easy to mistype. Base32 is the better choice for anything a person has to enter by hand.
  • Decoding with the wrong alphabet. A string encoded with the Bitcoin alphabet will not decode correctly with the Flickr alphabet, even though both are called Base58. The six swapped letters produce wrong output without any error.
  • Thinking these encodings compress data. Every encoding here makes the output larger than the input. They change the representation, but they never make it smaller. If you need to shrink data, use a compression tool first and then encode the compressed result.

When to reach for a different page

  • For Base64 encoding and decoding, use the Base64 tool. It has its own controls for URL-safe output and line wrapping that are specific to Base64.
  • For converting a number between decimal, hex, and binary, use the Number Base Converter. That tool works with numeric values. This one works with streams of bytes.
  • For hashing data, use a hash tool. Hashing produces a fixed-size output that cannot be reversed. Encoding produces output that can always be decoded.
  • For generating a random key or password, use a password generator. Encoding transforms existing data. It does not create new random data.

Nothing leaves your browser

Every conversion runs on your own device. The text you paste is encoded or decoded entirely in your browser's memory. No server is involved, no copy is kept, and no record of what you converted exists after you close the tab. That matters when you are working with production secrets, API tokens, or wallet keys that should not appear in a third party's logs.

Disconnect from the internet and the tool works exactly the same way, because there was never a server call to make.

Help

The encodings that are not Base64

Text or raw bytes go in one end and the encoded string comes out the other, and pasting an encoded string back gives you the original. Each alphabet is described beside the box, including which characters it leaves out and why, so you can tell which one suits a string that has to survive being read down a phone.

Pick the alphabet

Base32 for anything typed by a human, Base58 for identifiers in a URL, Base85 when size matters most.

Choose the direction

Encoding takes text and gives you the encoded form; decoding does the reverse.

Copy the result

Grouping the output in blocks makes a long code far easier to read aloud or copy by hand.

Each alphabet drops characters for a reason

Base32 uses no lower case and no digits 0, 1 or 8, because a person reading a code aloud or typing it off a screen confuses them with O, I, l and B. Base58 keeps mixed case for density but drops the same lookalikes, which is why a Bitcoin address has no zero and no capital O. Base85 keeps everything and is the most compact, which makes it the worst to type and the best for embedding binary in a file nobody reads by hand. Choosing between them is entirely a question of who or what has to read the result.

Good to know

Base32 is the one to give people

Backup codes and licence keys use it because it survives being read over the phone and typed back in.

Base58Check adds a checksum

Four extra bytes that detect a mistyped character, which is why cryptocurrency addresses use it rather than plain Base58.

None of these is encryption

They are all reversible by anyone. Encoding hides nothing.

Common questions

What is the difference between Base32 and Base64?
Base32 uses a smaller alphabet with no lookalike characters, so it is easier to type and read aloud, at the cost of longer output.
Why does Base58 leave out some characters?
It removes 0, O, I and l because they are easily confused when read or typed, which matters for addresses people copy by hand.
What is Base58Check?
Base58 with a checksum appended, so a single mistyped character is detected rather than sending funds nowhere.
Which encoding is the most compact?
Base85 of those here — about a quarter smaller than Base64 — but it uses punctuation that needs escaping in many contexts.
Is encoding the same as encrypting?
No. Anyone can decode any of these. Use encryption if you need something kept secret.