# What is Base58 and Why Does Bitcoin use it?

<figure><img src="https://hub.bsvblockchain.org/~gitbook/image?url=https%3A%2F%2F2147185133-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FWtK4ab0ntyPZBmGoKq4t%252Fuploads%252Fgit-blob-02a8fa979f345a33fd1bb3e5501630d27e266f3a%252FBSVA-HashFunctions_Ch2L1_DA1.gif%3Falt%3Dmedia&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b9c1e46c&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### What is Base58?

While **Base58** and **Base58Check** are **not hash functions**, they are important to understand in the Bitcoin system.

* **Base58** is a **binary-to-text encoding** method.
* It converts binary data (8-bit bytes) into **printable ASCII characters**.
* This makes it possible to transmit binary values across channels that only reliably support text — like **email** or the **internet**.

***

#### Why Base58 Instead of Base64?

Bitcoin could have used **Base64**, but the original source code explains why **Base58 is better suited**:

```
// Why base58 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.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.-
```

👉 In simpler terms:

* Base58 **avoids ambiguous characters** like `0` (zero), `O` (capital o), `I` (capital i), and `l` (lowercase L).
* It **removes non-alphanumeric symbols** (`+` and `/`) found in Base64.
* This makes Bitcoin addresses **easier to read, copy, and share** without errors.

***

#### Bitcoin’s Unique Version of Base58

It’s important to note: the **Base58 encoding in Bitcoin is unique** to Bitcoin. It was designed specifically for **addresses and keys** and does not match other Base58 implementations.

***

#### Base58 Value Mapping

The following table shows the character set used in Bitcoin’s **Base58 encoding**:

<figure><img src="/files/35O1IvtugzKJXnCUrHL0" alt=""><figcaption></figcaption></figure>

&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hub.bsvblockchain.org/higher-learning/bsv-academy/bitcoin-primitives-hash-functions/base58-and-base58check/what-is-base58-and-why-does-bitcoin-use-it.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
