Skip to main content
CalcChef

Base58 Address Encoder

Encode hex or text to Base58 or Base58Check and decode it back. Base58Check shows the version byte, the payload and whether the 4-byte checksum matches. How it works

Use the Base58 Address Encoder

Up to 1,024 bytes.

Base58 result

Plain Base58: the bytes and nothing else. No version byte, no checksum. Solana addresses and IPFS CIDv0 strings are plain Base58.

About the Base58 Address Encoder

Base58 writes bytes with 58 characters, 1-9, A-Z and a-z without 0, O, I and l, so the hex 626262 (the text bbb) encodes to a3gV. Base58Check, the form Bitcoin addresses use, puts a version byte in front and adds the first 4 bytes of SHA-256(SHA-256(version + payload)) as a checksum, so a mistyped character is caught. The tool encodes any bytes to either form and decodes them back; it does not create addresses from keys.

Plain Base58 of some bytes

HexBase58
612g
626262a3gV
636363aPEr
000001112
000000000000000000001111111111
48656c6c6f20576f726c64JxF12TrwUP45BMd

Each leading zero byte becomes one leading 1.

Bitcoin wiki examples decoded as Base58Check

StringVersion bytePayload bytesNamed by the tool as
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa0020Bitcoin mainnet pay-to-public-key-hash (P2PKH) address
17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem0020Bitcoin mainnet pay-to-public-key-hash (P2PKH) address
3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX0520Bitcoin mainnet pay-to-script-hash (P2SH) address
5Hwgr3u458GLafKBgxtssHSPqJnYoGrSzgQsPwLFhLNYskDPyyA8032Bitcoin mainnet private key in WIF
L1aW4aubDFB7yfras2S1mN3bqg9nwySY8nkoLmJebSLD5BWv3ENZ8033Bitcoin mainnet private key in WIF
mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn6f20Bitcoin testnet P2PKH address
2MzQwSSnBHWHqSAqtTVQ6v47XtaisrJa1Vcc420Bitcoin testnet P2SH address
92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNccef32Bitcoin testnet private key in WIF
cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMmef33Bitcoin testnet private key in WIF

The first string is the genesis block reward address; the others are the examples in the Bitcoin wiki's list of address prefixes. Every checksum matches. A version byte outside this list is shown without a name.

Building an address step by step (Bitcoin wiki example)

StepValue
Payload: the 20-byte hash of the public keyf54a5851e9372b87810a8e60cdd2e7cfd80b6e31
Version byte (mainnet)00
Checksum: first 4 bytes of SHA-256(SHA-256(version + payload))c7f18fe8
Base58Check result1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs

Frequently asked questions

How do I decode a Bitcoin address to hex?
Choose Decode Base58, switch the scheme from Base58 (raw bytes) to Base58Check, then paste the address. For 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa the tool shows version byte 00, the 20-byte payload 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 and the checksum c29b7d93, which matches. Copy version + payload hex copies 0062e907b15cbf27d5425399ebf6f0fb50ebb88f18.
What is the difference between Base58 and Base58Check?
Plain Base58 is the bytes and nothing else. Base58Check adds one version byte in front and a 4-byte checksum at the end, the first 4 bytes of a double SHA-256 of version and payload, so a mistyped character is caught. Bitcoin addresses use Base58Check; Solana addresses and IPFS CIDv0 strings are plain Base58.
What happens if one character of an address is wrong?
The checksum no longer matches. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNb, with the last letter changed, carries the checksum c29b7d94 while c29b7d93 is expected, so the tool says it does not match and does not name the version byte.
Why does Base58 leave out 0, O, I and l?
They look alike in some fonts. The Bitcoin wiki quotes the comment in the original Bitcoin client that gives this reason. A pasted 0, O, I or l is reported as not a Base58 character.
Can it decode a Solana address?
Yes, as plain Base58: a Solana address decodes to 32 bytes, and the tool notes that 32 bytes is the size of a Solana address and of a SHA-256 hash. Plain Base58 has no checksum, so there is nothing to verify and the tool gives no verdict on the address.
Can it make a Bitcoin address from a public key?
No. An address is the Base58Check of the version byte and a 20-byte hash of the public key (SHA-256, then RIPEMD-160), and the tool does not compute that hash. Give it the 20-byte hash in hex with version 00 and it writes the address: f54a5851e9372b87810a8e60cdd2e7cfd80b6e31 gives 1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs.

Related Tools

View all tools