<p><strong>Why base-58 instead of standard base-64 encoding?</strong></p>

<ul>
<li>Don't want 0OIl characters that look the same in some fonts and
 could be used to create visually identical looking account numbers.</li>
<li>A string with non-alphanumeric characters is not as easily accepted as an account number.</li>
<li>E-mail usually won't line-break if there's no punctuation to break at.</li>
<li>Double-clicking selects the whole number as one word if it's all alphanumeric.</li>
</ul>

<p><strong>Features of Base58Check</strong></p>

<ul>
<li><p>An arbitrarily sized payload</p></li>
<li><p>A  set of 58 alphanumeric symbols consisting of easily distinguished uppercase and lowercase letters (0OIl are not used)</p></li>
<li><p>One byte of version/application information. Bitcoin addresses use 0x00 for this byte (future ones may use 0x05).</p></li>
<li>Four bytes (32 bits) of SHA256-based error checking code. This code can be used to automatically detect and possibly correct typographical errors.</li>
<li>An extra step for preservation of leading zeroes in the data</li>
</ul>

CC BY-SA 4.0
2019-04-26T16:56:59.827Z
"Future ones"... the v5 prefix is used for P2SH addresses, and has been since 2012.
Pieter Wuille
CC BY-SA 4.0
2021-09-08T09:40:28.357Z
For reference: This explanation is also inserted as a comment in the bitcoin source code, see https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12
phinz
CC BY-SA 4.0
2023-01-11T13:40:39.843Z
**broken url** [https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12](https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12) 404 not found -- recorded on 2023-01-11
dreftymac
CC BY-SA 3.0
2018-02-16T22:22:04.087Z
2018-02-16T22:22:04.087Z
Tailer
<p>Why does bitcoin address encoding use base58 instead of, for instance, base64? I don't see it is useful in any way.</p>

<address><address-generation><base58>
Why is Bitcoin address encoded in base58?
dafunkizdiz
# Why is Bitcoin address encoded in base58?

(Asked by: username_0 on 2018-02-16)

Why does bitcoin address encoding use base58 instead of, for instance, base64? I don't see it is useful in any way.

**Tags:** address, address-generation, base58


---

## 1 answers

### Answer by username_1 on 2018-02-16. Score: 15 | Accepted answer

**Why base-58 instead of standard base-64 encoding?**

* Don't want 0OIl characters that look the same in some fonts and
  could be used to create visually identical looking account numbers.
* A string with non-alphanumeric characters is not as easily accepted as an account number.
* E-mail usually won't line-break if there's no punctuation to break at.
* Double-clicking selects the whole number as one word if it's all alphanumeric.

**Features of Base58Check**

* An arbitrarily sized payload
* A set of 58 alphanumeric symbols consisting of easily distinguished uppercase and lowercase letters (0OIl are not used)
* One byte of version/application information. Bitcoin addresses use 0x00 for this byte (future ones may use 0x05).
* Four bytes (32 bits) of SHA256-based error checking code. This code can be used to automatically detect and possibly correct typographical errors.
* An extra step for preservation of leading zeroes in the data

> **Comments:**
> **username_2**: "Future ones"... the v5 prefix is used for P2SH addresses, and has been since 2012.  
> **username_3**: For reference: This explanation is also inserted as a comment in the bitcoin source code, see https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12  
> **username_4**: **broken url** [https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12](https://github.com/bitcoin/bitcoin/blob/0.16/src/base58.h#L7-L12) 404 not found -- recorded on 2023-01-11  

---

