<p>As I understand it, those characters, when lowercase and uppercase, can be confused with numbers or other characters like 0 and o. They really don't have much difference in appearance</p>

CC BY-SA 4.0
2024-05-09T18:05:08.147Z
That is correct, but not an answer to the question.
Pieter Wuille
CC BY-SA 4.0
2024-05-09T17:58:39.837Z
2024-05-09T17:58:39.837Z
Xem số mệnh-Xem Vận Mệnh
<p>There are two different encodings being used for Bitcoin addresses.</p>
<p>Native segwit addresses are encoded using the <a href="https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki" rel="nofollow noreferrer">Bech32</a>(<a href="https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki" rel="nofollow noreferrer">m</a>) encoding. Bech32 uses the 32 symbols <code>023456789acdefghjklmnpqrstuvwxyz</code> to encode data. On mainnet bitcoin native segwit addresses start with the human readable part <code>bc</code> and the separator <code>1</code>. The prefix is different on test networks.</p>
<p>All prior addresses use <a href="https://en.bitcoin.it/wiki/Base58Check_encoding#Base58_symbol_chart" rel="nofollow noreferrer">Base58</a>. Base58 uses the numbers from 1-9 (excluding 0) and all letters of the English alphabet in uppercase and lowercase, excluding capital O, capital I, and lowercase l, because <code>0</code> and <code>O</code>, as well as <code>I</code> and <code>l</code> are easy to confuse in many fonts. This leaves the 58 symbols: <code>_123456789ABCDEFGH_JKLMN_PQRSTUVWXYZabcdefghijk_mnopqrstuvwxyz</code>. (Omissions are included in the symbol line-up as <em>underscores</em> in case the letters in the text were hard to parse out of context of the order.)</p>

CC BY-SA 4.0
2024-05-09T14:18:50.763Z
2024-05-09T18:26:33.067Z
2024-05-09T18:26:33.067Z
Murch
<p>I need to be able to validate BTC addresses. I keep reading how characters 0, O, I, l are not allowed to avoid visual ambiguity.</p>
<p>That said, I've run into a couple of address which contain these characters, and they seem to be fine:
<code>bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq</code>
<code>bc1qvtrafpjnl3ygg2w40eldlq7ggdgg8wuu3nqcxe</code></p>
<p>So what's going on with these? Do these rules not apply to bc1 address? Are they more of a recommendation than a requirement? Thanks</p>

<bech32-address><base58><address-format>
Are the characters 0, O, I, l really not allowed in address?
Pablote
# Are the characters 0, O, I, l really not allowed in address?

(Asked by: username_0 on 2024-05-09)

I need to be able to validate BTC addresses. I keep reading how characters 0, O, I, l are not allowed to avoid visual ambiguity.

That said, I've run into a couple of address which contain these characters, and they seem to be fine:
`bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq`
`bc1qvtrafpjnl3ygg2w40eldlq7ggdgg8wuu3nqcxe`

So what's going on with these? Do these rules not apply to bc1 address? Are they more of a recommendation than a requirement? Thanks

**Tags:** bech32-address, base58, address-format


---

## 2 answers

### Answer by username_3 on 2024-05-09. Score: 4 | Accepted answer

There are two different encodings being used for Bitcoin addresses.

Native segwit addresses are encoded using the [Bech32](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)([m](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki)) encoding. Bech32 uses the 32 symbols `023456789acdefghjklmnpqrstuvwxyz` to encode data. On mainnet bitcoin native segwit addresses start with the human readable part `bc` and the separator `1`. The prefix is different on test networks.

All prior addresses use [Base58](https://en.bitcoin.it/wiki/Base58Check_encoding#Base58_symbol_chart). Base58 uses the numbers from 1-9 (excluding 0) and all letters of the English alphabet in uppercase and lowercase, excluding capital O, capital I, and lowercase l, because `0` and `O`, as well as `I` and `l` are easy to confuse in many fonts. This leaves the 58 symbols: `_123456789ABCDEFGH_JKLMN_PQRSTUVWXYZabcdefghijk_mnopqrstuvwxyz`. (Omissions are included in the symbol line-up as *underscores* in case the letters in the text were hard to parse out of context of the order.)


---

### Answer by username_1 on 2024-05-09. Score: -1

As I understand it, those characters, when lowercase and uppercase, can be confused with numbers or other characters like 0 and o. They really don't have much difference in appearance

> **Comments:**
> **username_2**: That is correct, but not an answer to the question.  

---

