π£ Base58 Encoder and Decoder
By ToolNimba Editorial Team Β· Updated 2026-06-25
Type some text and press Encode.
This Base58 encoder and decoder converts text to Base58 and decodes Base58 back to readable text, both directions in one place. It uses the Bitcoin alphabet, the 58 characters left after removing the four look-alikes 0 (zero), O (capital o), I (capital i), and l (lowercase L), so the output is easy to read aloud and hard to mistype. It handles full UTF-8, so accented letters, emoji, and non-Latin scripts survive the round trip. Switch between Encode and Decode, copy the result with one click, or swap the output back into the input. Everything runs in your browser, so the text you paste never leaves your device.
What is the Base58 Encoder Decoder?
Base58 is a binary-to-text encoding that represents data using 58 printable characters. It starts from the 62 alphanumeric characters (0 to 9, A to Z, a to z) and then removes four that are easy to confuse with one another: the digit 0 and the capital letter O, and the capital letter I and the lowercase l. The result is an alphabet a human can copy from a screen, write on paper, or read over the phone with far less chance of error. This is exactly why Base58 was chosen for Bitcoin addresses and private keys, and why it shows up in short identifiers, content hashes, and clean URLs. Each character carries roughly 5.86 bits of information.
Unlike Base32 and Base64, which slice the input into fixed groups of bits, Base58 treats the entire input as one very large number and converts it to base 58. The encoder reads all the bytes as a single big base-256 integer, then repeatedly divides by 58. Each remainder (a value from 0 to 57) is one Base58 digit, and reading those remainders from last to first gives the encoded string. Because 58 is not a power of two, there is no clean bit-to-character ratio: the output grows by roughly 37% over the input on average, a little smaller than Base32 but larger than Base64. There is also no padding character, so unlike Base64 you never see trailing equals signs, which keeps the output compact and clean.
Leading zero bytes need special handling. Since a leading zero contributes nothing to the value of the big integer, it would simply vanish during the math. To keep the encoding fully reversible, every leading zero byte in the input is written as a single leading '1' character (1 is the first symbol in the alphabet). On decode, each leading '1' is turned back into a zero byte before the rest of the number is converted. This is why so many Bitcoin addresses begin with a 1: the version byte for a legacy address is 0x00, which Base58 renders as a leading 1.
There is an important distinction between plain Base58 and Base58Check. Base58Check is plain Base58 with two extra parts bolted on before encoding. First, a version byte (or prefix) is prepended to the payload to mark what kind of data it is, such as a mainnet address or a private key. Second, a 4-byte checksum is appended, computed by taking the first four bytes of a double SHA-256 hash of the version plus payload. The whole thing is then Base58 encoded. On decode, the wallet recomputes the checksum and rejects the string if it does not match, so a single mistyped character is caught instead of sending funds to a dead address. This tool performs plain Base58 (no checksum), which is the right choice for general text, short IDs, and learning the algorithm.
Be aware that not every system orders the 58 characters the same way. The original Bitcoin alphabet is 1 to 9, then A to Z, then a to z with 0, O, I, and l removed, and TRON uses this same ordering. Ripple (XRP) reshuffles the alphabet to start with r and other letters, and Flickr swaps the case order so lowercase comes before uppercase. A string encoded with one variant will decode to different bytes under another, so always match the variant to the system you are working with. This tool uses the standard Bitcoin ordering.
Finally, remember that Base58 is an encoding, not encryption. It uses no key, and anyone can decode it instantly, so never rely on it to hide passwords, tokens, or secrets. Its job is safe, readable representation of binary data, not confidentiality. This tool first converts your text to UTF-8 bytes, runs the big-integer base conversion, and reverses it on decode, so multibyte characters such as accents and emoji round-trip correctly.
When to use it
- Reading, generating, or sanity-checking the short, human-friendly identifiers used in Bitcoin, TRON, and other blockchain tooling.
- Producing compact, copy-safe IDs for URLs, invoices, or coupon codes where look-alike characters like 0 and O would cause support tickets.
- Encoding short binary values into a string you can read aloud, write down, or dictate over the phone without ambiguity.
- Inspecting or converting content identifiers and hashes that use Base58, such as some IPFS and multibase encoded values.
- Debugging crypto wallet data by decoding a Base58 payload back to its raw bytes to see what is inside.
- Teaching or learning how base conversion works, since Base58 is a clean worked example of converting between number bases.
How to use the Base58 Encoder Decoder
- Choose Encode to turn text into Base58, or Decode to turn Base58 back into text.
- Type or paste your content into the input box. The result updates as you type.
- Read the encoded or decoded result. Base58 output never uses padding characters.
- Press Copy to copy the result, or Swap input and output to feed the result back through.
Formula & method
Worked examples
Encode the word "Hi" (2 bytes).
- ASCII bytes: H = 72, i = 105.
- As one big number: 72 x 256 + 105 = 18537.
- 18537 % 58 = 35 (remainder), 18537 / 58 = 319.
- 319 % 58 = 29 (remainder), 319 / 58 = 5; then 5 % 58 = 5, quotient 0, so we stop.
- Map remainders read last to first: 5 = 6, 29 = W, 35 = c, giving 6Wc.
Result: Hi encodes to 6Wc
Encode the single letter "a" (1 byte).
- ASCII byte: a = 97.
- 97 % 58 = 39 (remainder), 97 / 58 = 1.
- 1 % 58 = 1 (remainder), 1 / 58 = 0, so we stop.
- Map remainders read last to first: 1 = 2, 39 = g, giving 2g.
Result: a encodes to 2g
Encode a value with a leading zero byte, the two bytes 0 and 97.
- The big number ignores the leading zero, so it is just 97, which encodes to 2g.
- The one leading zero byte must be preserved, so prepend one 1 character.
- Concatenate the leading 1 with 2g.
- On decode, the leading 1 is turned back into a zero byte.
Result: The bytes 0 and 97 encode to 12g
Decode the Base58 string "6Wc" back to text.
- Look up each character index: 6 = 5, W = 29, c = 35.
- Apply powers of 58 from right to left: 5 x 58^2 + 29 x 58^1 + 35 x 58^0.
- 5 x 3364 + 29 x 58 + 35 = 16820 + 1682 + 35 = 18537.
- Write 18537 as base-256 bytes: 72 and 105, which are the ASCII codes for H and i.
Result: 6Wc decodes back to Hi
The Bitcoin Base58 alphabet (index to character)
| Index range | Characters |
|---|---|
| 0 to 8 | 1 2 3 4 5 6 7 8 9 |
| 9 to 16 | A B C D E F G H |
| 17 to 32 | J K L M N P Q R S T U V W X Y Z |
| 33 to 43 | a b c d e f g h i j k |
| 44 to 57 | m n o p q r s t u v w x y z |
Characters removed from the 62 alphanumerics and why
| Removed | Confused with |
|---|---|
| 0 (zero) | O (capital letter o) |
| O (capital o) | 0 (digit zero) |
| I (capital i) | l (lowercase L) |
| l (lowercase L) | I (capital i) |
Base58 vs Base32 vs Base64 at a glance
| Property | Base58 | Base32 | Base64 |
|---|---|---|---|
| Alphabet size | 58 | 32 | 64 |
| Padding character | None | = sometimes | = often |
| Size overhead | About 37% | About 60% | About 33% |
| Look-alikes removed | Yes (0 O I l) | No | No |
| URL safe by default | Yes | Yes | No (+ and /) |
| Typical use | Crypto addresses, IDs | TOTP secrets, DNS | Email, data URIs |
Base58 variants and how their alphabets differ
| Variant | Starts with | Used by |
|---|---|---|
| Bitcoin | 1, then digits, upper, lower | Bitcoin, TRON, IPFS |
| Ripple | r and a shuffled order | XRP Ledger |
| Flickr | lowercase before uppercase | Flickr short URLs |
Sample text and its Base58 encoding
| Input | Base58 output |
|---|---|
| a | 2g |
| Hi | 6Wc |
| hi | 8wr |
| Cat | PdgX |
| Hello | 9Ajdvzr |
| Bitcoin | 3WyEDWjcVB |
Common mistakes to avoid
- Confusing Base58 with Base64. They are different schemes. Base58 uses 58 characters, has no padding, and removes look-alike symbols, while Base64 uses 64 characters including +, /, and = padding. Feeding Base64 into a Base58 decoder fails because +, /, and = are not in the Base58 alphabet.
- Using the digit 0, capital O, capital I, or lowercase l. These four characters are deliberately not in the Bitcoin Base58 alphabet. If your string contains any of them, it is not valid Base58 (or it uses a different variant such as Flickr or Ripple Base58, which order the alphabet differently).
- Expecting plain Base58 to validate a typo. Plain Base58 has no checksum, so a mistyped character silently decodes to wrong bytes. Crypto addresses use Base58Check, which appends a 4-byte double SHA-256 checksum so wallets can reject an invalid address. Do not assume this tool flags a typo for you.
- Assuming every Base58 variant uses the same order. This tool uses the original Bitcoin ordering (1 to 9, then A to Z, then a to z, with the four look-alikes removed), the same order TRON uses. Flickr and Ripple use different orderings, so a string encoded with one variant will decode to different bytes with another.
- Treating Base58 as encryption. Base58 hides nothing. Anyone can decode it instantly, so never use it to protect passwords, tokens, or private data. Use real encryption when you need secrecy.
- Forgetting that leading zero bytes map to 1 characters. A leading zero byte is encoded as a leading 1, not dropped. This is why many legacy Bitcoin addresses begin with 1. If you strip leading 1 characters you destroy those zero bytes and the decode will not match.
Glossary
- Base58
- An encoding that represents binary data using 58 characters, the alphanumerics minus the four look-alikes 0, O, I, and l, with no padding.
- Bitcoin alphabet
- The specific 58-character ordering (1 to 9, then A to Z, then a to z, minus 0, O, I, and l) introduced for Bitcoin addresses and keys.
- Base58Check
- Base58 with a version byte prepended and a 4-byte checksum appended, computed from a double SHA-256 hash, so decoders can detect typos.
- Version byte
- A prefix byte added before encoding that marks the type of data, such as a mainnet address or a private key.
- Checksum
- Extra bytes derived from the data (here the first 4 bytes of a double SHA-256) used to detect transcription and typing errors.
- Base conversion
- Treating data as one large number and rewriting it in a different number base, which is how Base58 differs from bit-grouping schemes.
- Leading zero byte
- A zero-valued byte at the front of the input. It carries no numeric value, so Base58 encodes each one as a leading 1 character to stay reversible.
- UTF-8
- The dominant character encoding for text. It represents each character as one to four bytes, which Base58 then treats as one big number.
Frequently asked questions
What is Base58 encoding?
Base58 encoding represents binary data using 58 characters: the alphanumerics with the four look-alikes 0, O, I, and l removed. It treats the whole input as one big number and converts it to base 58. It is reversible and provides no encryption or secrecy.
How is Base58 different from Base64?
Base58 uses a smaller alphabet that removes look-alike characters and the symbols + and /, and it has no padding. Base64 uses 64 characters and is more compact. Base58 output is about 37% larger than the input, while Base64 is about 33% larger. Base58 is URL safe by default; Base64 is not.
What is the difference between Base58 and Base58Check?
Base58Check is plain Base58 plus two extras added before encoding: a version byte that marks the data type, and a 4-byte checksum from a double SHA-256 hash that lets a decoder detect typos. Plain Base58, which this tool uses, has no version byte or checksum and is best for general text and short IDs.
Why does Base58 leave out 0, O, I, and l?
Those four characters are easy to confuse on screen or paper: zero with capital o, and capital i with lowercase L. Removing them means a Base58 string can be copied, written down, or read aloud with far less risk of a transcription error.
How do I decode a Base58 string?
Paste the Base58 string, select Decode, and the original text appears instantly. The tool checks that every character is in the Bitcoin alphabet, restores any leading zero bytes from leading 1 characters, and returns the decoded UTF-8 text.
Why do so many Bitcoin addresses start with 1?
A legacy Bitcoin address uses a version byte of 0x00. Because Base58 encodes every leading zero byte as a leading 1 character, that zero version byte shows up as a 1 at the front of the address.
Is Base58 secure or encrypted?
No. Base58 is an encoding, not encryption. Anyone can decode it without a key, so it offers no security. Never use it to protect passwords or sensitive data. Use proper encryption when you need secrecy.
Does this tool handle emoji and accented characters?
Yes. It converts your text to UTF-8 bytes before encoding and decodes back through UTF-8, so characters like accented letters, Japanese text, and emoji round-trip correctly without corruption.
Which Base58 variant does this tool use?
It uses the original Bitcoin alphabet ordering (1 to 9, then A to Z, then a to z, with 0, O, I, and l removed), the same ordering TRON uses. Ripple and Flickr use different orderings, so do not mix variants between systems.
Is this Base58 tool free and private?
Yes. It is completely free with no sign-up, and all encoding and decoding happens locally in your browser. The text you paste is never uploaded to a server, so it stays on your device.