Skip to Content
DocumentationCrypto BasicsBitcoin Address Types

Bitcoin Address Types

Open the Bitcoin receive panel and you’ll see more than one address type. This surprises people, and the confusion it causes is real: “I have three Bitcoin accounts — did my coins move? Which one is the real one?”

They are all real, they all belong to the same recovery phrase, and you can safely use any of them.

If you don’t want the detail: use Native SegWit (bc1…). It has lower fees than the older types and is accepted essentially everywhere. That’s the KeepKey default and the right answer for almost everyone.

What an address type actually is

When you receive bitcoin, the coins are locked to a small script that says who may spend them. The script type (also called the address type or address format) is the style of that lock. Bitcoin has added better lock designs over the years, each one cheaper or more capable than the last, and older ones were kept working so nothing ever breaks.

The lock style is visible in the address itself:

TypeAddress starts withDerivationStandard
Legacy (P2PKH)1…m/44'/0'/…BIP-44
SegWit (P2SH-wrapped, “Nested”)3…m/49'/0'/…BIP-49
Native SegWit (P2WPKH)bc1q…m/84'/0'/…BIP-84
Taproot (P2TR)bc1p…m/86'/0'/…BIP-86

All four derive from the same recovery phrase. Your backup covers every one of them — there is nothing extra to write down.

Why they show as separate balances

Each type derives from a different branch of your wallet tree, so each has its own set of addresses and its own extended public key (xpub for Legacy, ypub for SegWit, zpub for Native SegWit). That is why KeepKey shows them as separate sub-accounts with separate balances.

Nothing is lost or stranded. If you received to a 3… address years ago, those coins are still yours, still backed up by the same phrase, and still spendable — they just live in the SegWit sub-account rather than the Native SegWit one. You can spend from any sub-account, and KeepKey lets you pick which one to spend from in the send form.

Which one to use

Native SegWit (bc1q…) is the recommendation. Two reasons:

It’s cheaper to spend. Bitcoin fees are charged by transaction size, not amount, and the newer lock styles need less data to unlock. Approximate size of one spent input:

Type~Size per inputRelative cost
Legacy 1…~148 vBmost expensive
SegWit 3…~91 vBmiddle
Native SegWit bc1q…~68 vBcheap
Taproot bc1p…~58 vBmarginally cheaper

It’s accepted essentially everywhere. Bech32 (bc1q) support is now near-universal across wallets, exchanges, and payment processors. On the rare occasion a service still refuses bc1 withdrawals, you can receive to your SegWit 3… sub-account instead — that’s exactly what it’s there for.

Why Taproot is not our default

Taproot is the newest and technically the most efficient type, and KeepKey firmware supports it. It is still not the KeepKey default, and we don’t recommend it as your everyday address.

The reason is compatibility, not security. Taproot uses a newer address encoding (bech32m, bc1p…), and support for sending to bc1p addresses lags well behind support for bc1q. Some exchanges and services will reject a bc1p withdrawal address outright. The fee saving over Native SegWit is small — a few virtual bytes per input — and it does not come close to justifying handing out an address that a counterparty may not be able to pay.

Because of that, KeepKey deliberately fails closed on Taproot:

  • The three standard sub-accounts (Legacy, SegWit, Native SegWit) are always available. Taproot is only added when your firmware explicitly reports Taproot support; older firmware, or any device that doesn’t answer the question, simply doesn’t see it.
  • Wallet recovery scans skip Taproot paths unless it is turned on deliberately.

Use it if you know you want it and you control both ends of your payments. Otherwise, stay on bc1q….

Things that are true regardless of your address type

  • You can send to any address type from any address type. The type describes how your coins are locked, not who you can pay. Holding Native SegWit does not stop you from paying a 1…, 3…, or bc1p… address.
  • Your recovery phrase covers all of them. There is no per-type backup.
  • Always verify the address on the device screen. Whatever the format, the KeepKey shows the full address, never truncated — see Verify on Device.
  • Legacy and Nested SegWit are compatibility options, not upgrades. Keep them if you already have coins there; there’s no reason to start using them for new deposits.

Do you need to move old coins?

No — not for its own sake. Consolidating from a Legacy account into Native SegWit costs a transaction fee today to save fees later, which only makes sense if you have a meaningful balance sitting on the old type and fees are currently low. If you’re unsure, leaving it alone is a perfectly fine decision.

For developers

The script type is an explicit parameter throughout the stack — see SDK for the script_type values and paths, and Supported Chains for the full firmware-level list of Bitcoin address types and signing support.

One implementation note worth knowing: BIP-86 reuses the ordinary xpub version bytes rather than defining new ones, so a Taproot account’s script intent has to travel alongside the key rather than being inferred from its prefix (commonly as a tr(xpub…) descriptor). Code that infers script type from the xpub prefix alone will get Taproot wrong.

Last updated on