Bitcoin Forum
October 04, 2025, 12:58:48 AM *
News: Latest Bitcoin Core release: 29.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Why You Never See the Characters I,O,0, or l in Bitcoin Addresses about (Base58)  (Read 77 times)
xmrhopium (OP)
Member
**
Offline Offline

Activity: 117
Merit: 32

Bitcoin, Monero!


View Profile WWW
May 14, 2025, 09:23:42 PM
 #1

Some of the you guys are technically more knowledgeable about implementation of the code properly on the Bitcoin backend but being in Bitcoin for a few long time, I ain't got to know about the specific term "Base58" and what's the use of it. Now learning it's technical aspects, getting much interesting.
 
So, what is "Base58"?
 
There are millions, (probably) billions of Bitcoin wallet addresses which has already been created and they all use special kinda encoding called Base58. This encoding helps user to identify the characters clearly, makes easier to read and use properly (which removes confusion while writing down physically with pen in paper......, in any place or reading later from that paper in any situation).

If combined all the numeric and alphabet characters from : A-Z, a-z, 0-9 it gets sum of total 62 characters, which called as a Base62. Some characters can be a bit confusing in Base62, so as this : capital i(l) (looks like lowercase L or even digit 1), capital O(o)looks similar like zero), zero(0)(looks similar to capital 'O'ohhh..., lowercase L(l) (this looks same as capital (i)or numeric (1), so to avoid errors and to remove this confusion, Base58 was implemented in Bitcoin instead of Base62.

So here is the one og topic started by user SgtSpike regarding how this can be a possible creating the Bitcoin vanity address ten plus years ago which includes of (o,i) characters twice a time "1BitcoinEaterAddressDontSendf59kuE". In this adress there are no capital I, capital O, zero, and lowercase I, which is valid as per encoding scheme.

And down one user has replied years ago very clearly.
Neither of those are invalid. Bitcoin's base58 skips '0', 'O', 'I', or 'l'. Characters 'o', 'i', and 'L' are fine.
Code:
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

Now I gat little knowledge about this and sounds more simple concept or nothing at this point of time, probably few other more regular user still don't know yet about it in general but I can sense that many oldie oG's during way back might heavily discussed about this in multiple different bitcoin discussions platforms.

I love it.
btcltcdigger
Hero Member
*****
Offline Offline

Activity: 2394
Merit: 855


Gone where no rabbit has gone before...


View Profile
May 14, 2025, 09:48:00 PM
 #2

Easy, same as why you don't see them in better password generators as well, they're easily gotten wrong by the person reading/writing it.
This way it's easy just to avoid similar looking characters and that's that

▄▄█████████████████▄▄
▄█████████████████████▄
███▀▀█████▀▀░░▀▀███████

██▄░░▀▀░░▄▄██▄░░█████
█████░░░████████░░█████
████▌░▄░░█████▀░░██████
███▌░▐█▌░░▀▀▀▀░░▄██████
███░░▌██░░▄░░▄█████████
███▌░▀▄▀░░█▄░░█████████
████▄░░░▄███▄░░▀▀█▀▀███
██████████████▄▄░░░▄███
▀█████████████████████▀
▀▀█████████████████▀▀
..Rainbet.com..
CRYPTO CASINO & SPORTSBOOK
|
█▄█▄█▄███████▄█▄█▄█
███████████████████
███████████████████
███████████████████
█████▀█▀▀▄▄▄▀██████
█████▀▄▀████░██████
█████░██░█▀▄███████
████▄▀▀▄▄▀███████
█████████▄▀▄██
█████████████████
███████████████████
██████████████████
███████████████████
 
 $20,000 
WEEKLY RAFFLE
|



█████████
█████████ ██
▄▄█░▄░▄█▄░▄░█▄▄
▀██░▐█████▌░██▀
▄█▄░▀▀▀▀▀░▄█▄
▀▀▀█▄▄░▄▄█▀▀▀
▀█▀░▀█▀
10K
WEEKLY
RACE
100K
MONTHLY
RACE
|

██









█████
███████
███████
█▄
██████
████▄▄
█████████████▄
███████████████▄
░▄████████████████▄
▄██████████████████▄
███████████████▀████
██████████▀██████████
██████████████████
░█████████████████▀
░░▀███████████████▀
████▀▀███
███████▀▀
████████████████████   ██
 
..►PLAY...
 
████████   ██████████████
Zoomic
Sr. Member
****
Offline Offline

Activity: 952
Merit: 405


Hire Upgrade00 4ur campaign


View Profile
May 14, 2025, 11:06:30 PM
 #3

Thanks OP for exposing me to this, I haven't thought of it. That is why it is good to read older posts, alot of knowledge was shared then about bitcoin. When I was new in this forum, I used to visit older threads but now I am becoming somehow engaged and lazy.

This encoding helps user to identify the characters clearly, makes easier to read and use properly (which removes confusion while writing down physically with pen in paper......, in any place or reading later from that paper in any situation).
I have never seen anyone write down bitcoin addresses on paper.

█████████████
█████████████
█████████████
▄▄▀▀███▄▄
█░░░█░░░▀▄█
█▀▄▄██▄░░░███
█░░████▀▀▀▀██
█░█▀▀█░░░░█░█
███░░█▄▄█░█
▀▀█████▀▀

█████████████

█████████████

█████████████
█████████████
█████████████
█████████████
▄▄██░██▄▄
██▄▀█░█▀▄██
█▀▀▄░▄░▄░▄▀▀█
▄██▀▄█░█▄▀██▄
██░███░███░██
█████░█████
▀▀██░██▀▀

█████████████

█████████████

█████████████
████
██
██
██
██
██
██
██
██
██
██
██
████
 
 bet105     WHERE THE PROS PLAY     [   BENOW   ] 
 
A R B I T R A G E   B E T      │     L O W   J U I C E     │     B E S T   O D D S     │      N O   K Y C   R E Q U I R E D
████
██
██
██
██
██
██
██
██
██
██
██
████
█████████████
█████████████
█████████████
░░░░░▄░▀████▄
░░░▄███▄░▀███
▄███▀█▀█▄░▀█
▀██▄▀▄▀███▄
█▄░▀▄█▄████▀
███▄░▀███▀░░░
▀████▄░▀░░░░░

█████████████

█████████████

█████████████
█████████████
█████████████
█████████████
▄░█████░▄
█▌▐█████▌▐█
██░███████░██
█▌▐███████▌▐█
██░███████░██
██▄▀▀▀▀▀▄██
▀▀█████▀▀

█████████████

█████████████

█████████████
hosemary
Legendary
*
Offline Offline

Activity: 2912
Merit: 6488



View Profile
May 15, 2025, 12:04:57 AM
 #4

And it's probably worth mentioning that the characters that are not used in bech32 addresses are different from the characters that are not used in P2PKH addresses.

As you mentioned, P2PKH addresses can't contain upper case O, upper case I, lower case l or 0 (zero).
Bech32 addresses can't contain 1, b, i or o after bc1.


███████▄▄███▄███▄
███▄▄████████▌██
▄█████████████▐██▌
██▄███████████▌█▌
███████▀██████▐▌█
██████████████▌▌▐
████████▄███████▐▐
█████████████████
███████████████▄██▄
██████████████▀▀▀
█████▀███▀▀▀

▄▄▄██████▄▄▄███████▄▄▄
███████████████████████████
███▌█████▀███▌█████▀▀███████████▄▄▄▄▄▄▄▄
███▌█████▄███▌█████▄███▐███████████████████▄
▐████████████▀███████▄██████████▀▀▀▀▀▀▀▀████▀
▐████████████▄██▄███████████▌█████████▄████▀
▐█████████▀█████████▌█████████████▄▄████▀
██████████▄███████████▐███▌██▄██████▀
██████████████▀███▐███▌██████████████████████
████▀██████▀▀█████████▌███▀▀▀▀███▀▀▀▀▀▀▀████▌
 
      P R E M I E R   B I T C O I N   C A S I N O   &   S P O R T S B O O K      

█▀▀









▀▀▀

▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

  98%  
RTP

 
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

▀▀█









▀▀▀

█▀▀









▀▀▀

▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

 HIGH 
ODDS

 
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

▀▀█









▀▀▀
 
..PLAY NOW..
Catenaccio
Sr. Member
****
Offline Offline

Activity: 910
Merit: 303



View Profile
May 15, 2025, 01:29:13 AM
 #5

Easy, same as why you don't see them in better password generators as well, they're easily gotten wrong by the person reading/writing it.
This way it's easy just to avoid similar looking characters and that's that
The main reason is those characters are displayed nearly the same on the screen and even you write it down, you might struggle to differentiate them later if you don't add any note on those character like what it is, O (ou) or 0 (zero). Without a note, if you return to check your password backup a long time later like several months, you might not know what is it for.

https://positek.net/password-confusion/

R


▀▀▀▀▀▀▀██████▄▄
████████████████
▀▀▀▀█████▀▀▀█████
████████▌███▐████
▄▄▄▄█████▄▄▄█████
████████████████
▄▄▄▄▄▄▄██████▀▀
LLBIT|
4,000+ GAMES
███████████████████
██████████▀▄▀▀▀████
████████▀▄▀██░░░███
██████▀▄███▄▀█▄▄▄██
███▀▀▀▀▀▀█▀▀▀▀▀▀███
██░░░░░░░░█░░░░░░██
██▄░░░░░░░█░░░░░▄██
███▄░░░░▄█▄▄▄▄▄████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
█████████
▀████████
░░▀██████
░░░░▀████
░░░░░░███
▄░░░░░███
▀█▄▄▄████
░░▀▀█████
▀▀▀▀▀▀▀▀▀
█████████
░░░▀▀████
██▄▄▀░███
█░░█▄░░██
░████▀▀██
█░░█▀░░██
██▀▀▄░███
░░░▄▄████
▀▀▀▀▀▀▀▀▀
|||
▄▄████▄▄
▀█▀
▄▀▀▄▀█▀
▄░░▄█░██░█▄░░▄
█░▄█░▀█▄▄█▀░█▄░█
▀▄░███▄▄▄▄███░▄▀
▀▀█░░░▄▄▄▄░░░█▀▀
░░██████░░█
█░░░░▀▀░░░░█
▀▄▀▄▀▄▀▄▀▄
▄░█████▀▀█████░▄
▄███████░██░███████▄
▀▀██████▄▄██████▀▀
▀▀████████▀▀
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
░▀▄░▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄░▄▀
███▀▄▀█████████████████▀▄▀
█████▀▄░▄▄▄▄▄███░▄▄▄▄▄▄▀
███████▀▄▀██████░█▄▄▄▄▄▄▄▄
█████████▀▄▄░███▄▄▄▄▄▄░▄▀
███████████░███████▀▄▀
███████████░██▀▄▄▄▄▀
███████████░▀▄▀
████████████▄▀
███████████
▄▄███████▄▄
▄████▀▀▀▀▀▀▀████▄
▄███▀▄▄███████▄▄▀███▄
▄██▀▄█▀▀▀█████▀▀▀█▄▀██▄
▄██▀▄███░░░▀████░███▄▀██▄
███░████░░░░░▀██░████░███
███░████░█▄░░░░▀░████░███
███░████░███▄░░░░████░███
▀██▄▀███░█████▄░░███▀▄██▀
▀██▄▀█▄▄▄██████▄██▀▄██▀
▀███▄▀▀███████▀▀▄███▀
▀████▄▄▄▄▄▄▄████▀
▀▀███████▀▀
OFFICIAL PARTNERSHIP
SOUTHAMPTON FC
FAZE CLAN
SSC NAPOLI
Apocollapse
Hero Member
*****
Offline Offline

Activity: 1484
Merit: 852


View Profile
May 15, 2025, 04:12:15 AM
 #6

Yeah that's for legacy and segwit address, you will not find those characters. But in native segwit, they use 0 and l, but they don't use 1, b, i and o.

I do read many times people mentioning base58, but didn't know about it, until I search now. Thanks @OP for sharing.

There are two different encodings being used for Bitcoin addresses.

Native segwit addresses are encoded using the Bech32(m) 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. 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.)
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!