A Practical Guide to Bitcoin Addresses

Explainers Jan 13, 2021

Published: 2021-01-13 at block 665,874
Bitcoin Price: $34,100

Table of Contents

What is a Bitcoin Wallet Address?

You can think of a Bitcoin wallet address like a mailing address. It’s a possible destination for a bitcoin payment.

These public addresses are NOT public keys. It’s common to confuse the two, but they are completely different. Your wallet uses your private key to create a public key. It then hashes your public key to generate an address.

Also, addresses are NOT accounts. An account is an abstract collection of various addresses.

Private keys vs. public keys vs. addresses vs. accounts is a topic that deserves its own article. For the scope of this blog post, we’ll only be dealing with addresses.

What is an example of a Bitcoin Address? What is the format?

A Bitcoin address looks like random text, but its format usually begins with a 1, 3, or bc1. Here are some examples of Bitcoin addresses:

  • 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem
  • 1JqDybm2nWTENrHvMyafbSXXtTk5Uv5QAn
  • 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
  • 3279PyBGjZTnu1GNSXamReTj98kiYgZdtW
  • bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
  • bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6

Though other prefixes exist, 1, 3, and bc1 are the most common and relevant to users.

Later in the blog post, I explain the differences between these prefixes. Some of them can even save you money when sending transactions.

What is my Bitcoin Address? How to get a bitcoin address?

Does it say Receive, Deposit, Addresses, or something like that in your wallet or exchange? You should be able to find your Bitcoin address there (starting with a 1, 3, or bc1) and/or a QR code that represents it.

For your convenience, I've added screenshots for you to get your bitcoin address on:

Let me know in the comments section at the bottom of the page if I missed any that you’d like to see!

How to get a bitcoin address on: CashApp

How to get a bitcoin address on: Coinbase

How to get a bitcoin address on: Coinbase Pro

How to get a bitcoin address on: Electrum

How to get a bitcoin address on: Bitcoin Core

How to get a bitcoin address on: Ledger

How to get a bitcoin address on: Trezor

How to get a bitcoin address on: Blockstream Green

How to get a bitcoin address on: Liquality

Looking Up Your Bitcoin Wallet Address on a Block Explorer

Ok, so you know where to find your bitcoin addresses within your wallet or exchange. These should display your addresses' activities and transaction histories.

In case they don't or you want to see more details, you can use a block explorer.

Remember, the Bitcoin blockchain and all transactions recorded on it are public. So you can find your addresses' histories on the blockchain through a block explorer.

It’s like viewing a shipped order on Fedex. On Fedex, you enter your tracking number. You then get its details, like when your package shipped, etc.

Like with Fedex, you can enter your address into a block explorer. It will then display the address' transaction history.

You can use block explorers like:

But if you're privacy conscious, you should host your own block explorer. Also consider connecting to one using Tor.  Why? Because if you're typing unique addresses into an online service, they can map that to your device.

If you'd like a tutorial on hosting your own block explorer, let me know in the comments below.

Regardless, knowing how to use a block explorer is a key skill to have within the world of Bitcoin. It's like knowing how to use Google. Give it a try using the example addresses in the beginning of this blog post.

I've covered block explorers, transaction fee rates, and mempools in another blog post. I recommend reading it if you haven't already.

Side note: I've also created a full guide on how to use mempool.space.

Why Does My Bitcoin Address Change?

Depending on your software, you might notice that your Bitcoin address often changes. Don't worry, this is standard practice and good for your privacy and security!

Changing addresses can be confusing to new users. They expect their Bitcoin address to stay the same, like their home address.

But Bitcoin addresses are more like tissues - they're disposable for each transaction. Reusing Bitcoin addresses is not "sanitary" for your privacy and security.

Photo by Christopher Bill / Unsplash

Again, the Bitcoin blockchain and all transactions recorded on it are public. Whoever receives bitcoin from you can see your address and its history. If you reuse the same address, they can easily find out your Bitcoin savings and more by using a block explorer.

So you should avoid reusing addresses. Fortunately, BIP32 hierarchical deterministic (HD) wallets make this very easy.

The HD wallet topic is outside the scope of this blog post. But in short, these wallets generate a ton of addresses for you using a single private key, and are now the standard. Make sure not to confuse HD wallets with hardware wallets.

If you're interested in learning more about BIP32 HD wallets and the differences between private keys vs. public keys vs. addresses vs. accounts, check out this blog post.

Bitcoin Address Collision

You might be wondering: "If we're all using new addresses for every transaction, can we ever generate duplicates of addresses already in use?"

As covered in the Bitcoin Wiki, Bitcoin addresses are basically random numbers. It's possible, although extremely unlikely, for two people to generate the same address.

Bitcoiners call this an address collision. If this happens, then either person could spend the bitcoin sent to that address.

But there are so many potential addresses that it's pretty much impossible.

Murch, a highly-respected Bitcoin engineer and moderator of the Bitcoin Stack Exchange, explains:

  • There are 2^160 possible addresses. More specifically, 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976, ie., 1.461 quindecillion addresses.
  • To put this number into perspective, there are only 2^63 grains of sand on all beaches on Earth, ie., 9.223 quintillion.
  • As of 2021-01-10, there are about 34 million addresses in use. Even at 1 trillion addresses, the chance for an address collision is 3.42*10^(-27), ie. 0.000000000000000000000000342%. You have a much better chance at winning the lottery (0.0000071511238%) or getting struck by lightning (0.0002%).
  • It'd be easier to generate random private keys, calculate the corresponding addresses, and hope to find an address that has funds.
Euro Jackpot lottery, choose the right numbers
Photo by Waldemar Brandt / Unsplash

But let’s say there was an address collision. Would it be possible for either person to spend the funds of the entire wallet? Not if they avoid address reuse! They can only spend the funds associated with that one address.

Address Prefixes (1 Legacy, 3 Nested SegWit, bc1 Native SegWit) and How to Save Money on Your Bitcoin Transaction Fees

At this point, we’ve covered:

Now let’s dive deeper into the technicalities of addresses. If you’re using an address that starts with a “1”, you'll be able to save 80% on transaction fees by the end of this blog post.

As mentioned above, users’ Bitcoin addresses look like random text, but usually begin with a 1, 3, or bc1:

  • 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem
  • 1JqDybm2nWTENrHvMyafbSXXtTk5Uv5QAn
  • 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
  • 3279PyBGjZTnu1GNSXamReTj98kiYgZdtW
  • bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
  • bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6

Let’s break down the prefixes one by one:

Prefix “1”: Legacy Addresses, aka, Pay to Public Key Hash (P2PKH)

  • 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhe
  • 1JqDybm2nWTENrHvMyafbSXXtTk5Uv5QAn

Legacy addresses start with the digit “1”. These Pay-to-Public-Key-Hash (P2PKH) addresses were once the standard address type up until August 2017. Many now advise against using them. Why?

Legacy addresses incur the most expensive transaction fees when sending payments. They also limit the Bitcoin network's ability to scale. And their case-sensitive nature often causes unwanted errors.

Even though they have many drawbacks, some incompetent wallets and exchanges still use this address type. If your vendor is still using Legacy addresses, let me know in the comments below.

Prefix “bc1”: Native SegWit Bech32 Addresses, aka, Pay to Witness Public Key Hash (P2WPKH)

  • bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
  • bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6

Native SegWit Bech32 "Pay-to-witness-public-key-hash" (P2WPKH) addresses are the standard now. If you send bitcoin from these “bc1” addresses, you can save up to 80% in transaction fees vs. legacy addresses. They also help the network scale and are case-insensitive.

SegWit (Segregated Witness) is a topic that deserves its own blog post. But for the scope of this article, know that SegWit reduces transaction sizes. With smaller transaction sizes:

  • You pay less in transaction fees
  • Miners can fit more transactions into a block
  • The network has higher throughput, confirming more transactions faster

These Native SegWit Bech32 addresses are backwards-compatible with legacy addresses. But you need to be careful.

Don't transact with "bc1" addresses if your wallet or exchange doesn't support them. You might lose your funds! Check in with your vendor to see whether they support Bech32 addresses.

Does your wallet or exchange vendor NOT support “bc1” addresses? Let me know in the comments below.

Side note: bech32 is pronounced like "besh thirty two".

Before teaching you how to switch to bech32 addresses, you should know about...

Prefix “3”: Nested SegWit Addresses, aka, Pay to Witness Public Key Hash in a Pay to Script Hash (P2SH-P2WPKH)

  • 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
  • 3279PyBGjZTnu1GNSXamReTj98kiYgZdtW

Nested SegWit addresses start with the digit “3”. They are also known as “Pay-to-witness-public-key-hash in a Pay-to-script-hash” (P2SH-P2WPKH) addresses.

Nested SegWit addresses are the middle ground between Legacy and Native SegWit addresses. They have some of the benefits of Native SegWit but not all.

They are still case sensitive like legacy addresses. But like bech32 addresses, they have a smaller footprint. Spending from this address type can save you up to 40% in transaction fees vs. legacy addresses.

As mentioned above, Native SegWit is backwards-compatible with other address types. But unfortunately, there are wallets and exchanges that only understand legacy addresses. Because they don't yet support "bc1" addresses, they need a workaround. Nested SegWit "3" addresses fill that void.

Smart developers wrapped a Native SegWit P2WPKH in a legacy-friendly P2SH. By using these "3" addresses, users could save on transaction fees in a legacy context.

In theory, transacting with Nested SegWit addresses shouldn't be an issue. Still, I'd recommend checking in with your wallet or exchange before transacting.

How to Use SegWit Addresses

You need to know:

  • Does the wallet or exchange, where your bitcoin is currently stored, support Native or Nested SegWit?
  • Does the wallet or exchange, where you will send bitcoin, support Native or Nested SegWit?

To find out, you might want to use this compatibility matrix:

  • "P2SH-wrapped" refers to "3" addresses (Nested SegWit)
  • "P2SH-P2WPKH" refers to "3" addresses (Nested SegWit)
  • "Bech32" refers to "bc1" addresses (Native SegWit)
  • "P2WPKH" refers to "bc1" addresses (Native SegWit)
  • "P2PKH" refers to "1" addresses (Legacy)

Still, make sure to double-check with your vendor. If neither the sender’s wallet nor the receiver’s wallet supports SegWit, it could result in lost funds.

For your convenience, I've added screenshots for you to get your bitcoin address on:

Ledger Live

Trezor Suite

Are there any other examples you’d like to see? Let me know in the comments below.

How to Use Native SegWit Bech32 “bc1” Addresses, aka, Pay to Witness Public Key Hash (P2WPKH) in Ledger Live

Ok, let’s say that you’re using legacy “1” addresses in a Ledger Wallet. Ledger supports Native SegWit.

To gain the benefits of Native SegWit Bech32 addresses, all you need to do is send funds from your legacy “1” addresses to a "bc1" address.

In Ledger Live, you’ll first need to “Add an Account” to add a “bc1” address:

Now you can navigate to your new Native SegWit account and get a “bc1” receive address:

Once you’ve copied your Native SegWit address, go to your existing Legacy account and send funds to that new “bc1” address:

So you’ve sent funds from your Legacy “1” address to your Native SegWit “bc1” address. You can navigate back to your Native SegWit account and view the balance and transaction history:

It’s that simple! Now you will save a ton on transaction fees when you spend from this Native SegWit address.

How to Use Nested SegWit “3” Addresses, aka, Pay to Witness Public Key Hash in a Pay to Script Hash (P2SH-P2WPKH) in Ledger Live

Ok, let’s say that you’re using legacy “1” addresses in a Ledger Wallet. Ledger supports Nested SegWit.

To gain the benefits of Nested SegWit “3” addresses, all you need to do is send funds from your legacy “1” addresses to a "3" address.

Similar to the example above, you’ll first need to “Add Account” to add a “3” address in Ledger Live:

Now that you have a Nested SegWit account, you can follow the same steps above in the previous section - but of course - instead of using a “bc1” address from your Native SegWit account, use a “3” address from your Nested SegWit account.

That’s it! Now you'll save up to 40% on transaction fees.

How to Use Native SegWit Bech32 “bc1” Addresses, aka, Pay to Witness Public Key Hash (P2WPKH) in Trezor Suite

Ok, let’s say that you’re using legacy “1” addresses in a Trezor Wallet. Trezor supports Native SegWit.

To gain the benefits of Native SegWit Bech32 addresses, all you need to do is send funds from your legacy “1” addresses to a "bc1" address.

Add a "bc1" Native SegWit Bech32 address:

Go to your new "bc1" account, click on the "Receive" tab, then click "Show full address":

Go to your old "1" account, click on the "Send" tab, then enter the new "bc1" address you just got:

Add the rest of the transaction details like the amount you want to send from your Legacy address to your Bech32 address. Once it confirms, you can spend funds from your new Native SegWit account, saving up to 80% on transaction fees!

How to Use Nested SegWit “3” Addresses, aka, Pay to Witness Public Key Hash in a Pay to Script Hash (P2SH-P2WPKH) in Trezor Suite

Ok, let’s say that you’re using legacy “1” addresses in a Trezor Wallet. Trezor supports Nested SegWit.

To gain the benefits of Nested SegWit “3” addresses, all you need to do is send funds from your legacy “1” addresses to a "3" address.

Similar to the example above, you’ll first need to “Add Account” to add a “3” address in Trezor Suite:

Now that you have a Nested SegWit account, you can follow the same steps above in the previous section - but of course - instead of using a “bc1” address from your Native SegWit account, use a “3” address from your Nested SegWit account.

That’s it! Now you'll save up to 40% on transaction fees.

SegWit Adoption

Before ending the blog post, I want to leave you with another resource for checking SegWit adoption.

Though many wallets and exchanges have yet to implement support for Native Bech32 addresses, many support Nested “3” addresses.

Since SegWit's activation on 2017-08-24, transactions that spend from SegWit addresses now represent ⅔ of daily Bitcoin transactions. You can use this chart to see SegWit adoption over time.

Looking to learn more about SegWit? Feel free to let me know in the comments below.


Hope you found this blog post helpful - if you did, please share the article to those who might need it and make sure to subscribe to the newsletter to stay up to date on the latest posts!

What did I miss? What else would you like to learn more about? Let me know in the comments below!

Tags