Cryptocurrency Address Types Explained: Legacy, SegWit, Taproot
If you have used Bitcoin for any length of time, you have encountered addresses that start with "1", addresses that start with "3", and addresses that start with "bc1q" or "bc1p". These are not cosmetic differences — they represent fundamentally different ways of locking and unlocking funds, with significant implications for transaction fees, privacy, and functionality.
This guide explains every major Bitcoin address type, how they work at a technical level, their advantages and disadvantages, and how to choose the right type for your needs. We also cover address formats for Ethereum and other major blockchains.
Bitcoin Address Types
Legacy Addresses (P2PKH) — Starts with "1"
Full name: Pay-to-Public-Key-Hash
Example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Derivation path: m/44'/0'/0' (BIP-44)
Legacy addresses are the original Bitcoin address format, defined in the initial Bitcoin protocol. The address is a Base58Check-encoded hash of the public key:
Address = Base58Check(0x00 || RIPEMD160(SHA256(public_key)))
The 0x00 version byte produces addresses starting with "1" on mainnet.
How spending works (script):
ScriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
ScriptSig: <signature> <publicKey>
To spend funds from a Legacy address, the sender provides their public key and a valid signature. The network verifies that the public key hashes to the address and that the signature is valid for the public key.
Advantages:
- Maximum compatibility — supported by every Bitcoin wallet, exchange, and service since 2009.
- Simple, well-understood.
Disadvantages:
- Largest transaction size (highest fees).
- No SegWit benefits (no witness discount).
- Base58Check encoding is case-sensitive and prone to transcription errors.
- No error detection beyond checksum (which catches random errors but not all substitutions).
P2SH Addresses — Starts with "3"
Full name: Pay-to-Script-Hash
Example: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
Derivation path: m/49'/0'/0' (BIP-49, for SegWit-wrapped)
P2SH was introduced in BIP-16 (2012) to enable more complex spending conditions. Instead of paying to a public key hash, funds are paid to the hash of a script. The script can implement arbitrary spending conditions: multisig, time locks, hash locks, or — most commonly today — wrapping a SegWit output.
P2SH-P2WPKH (SegWit-compatible):
This is the most common use of P2SH addresses today. It wraps a SegWit (P2WPKH) output inside a P2SH script, enabling SegWit benefits while maintaining backward compatibility with older software that only understands P2SH addresses.
RedeemScript: 0x0014 <20-byte-pubkey-hash> (a P2WPKH script)
ScriptPubKey: OP_HASH160 <hash-of-redeemScript> OP_EQUAL
Advantages:
- SegWit benefits (reduced fees, malleability fix) with backward compatibility.
- Supported by virtually all modern wallets and exchanges.
- Enables complex scripts (multisig, time locks).
Disadvantages:
- Higher fees than native SegWit (the wrapper script adds overhead).
- Ambiguous — a "3" address could be plain multisig, wrapped SegWit, or any other P2SH script. You cannot tell from the address alone.
Native SegWit Addresses (P2WPKH) — Starts with "bc1q"
Full name: Pay-to-Witness-Public-Key-Hash (Bech32 encoding)
Example: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
Derivation path: m/84'/0'/0' (BIP-84)
Native SegWit addresses were introduced in BIP-141/BIP-143 (activated in August 2017) and use Bech32 encoding as defined in BIP-173. They do not use Base58Check — instead they use a new encoding that is:
- Lowercase only — eliminates case-sensitivity issues.
- BCH error correction — can detect up to 4 character errors and correct some errors automatically.
- Human-readable prefix —
bcfor Bitcoin mainnet,tbfor testnet.
How spending works:
ScriptPubKey: 0 <20-byte-pubkey-hash>
Witness: <signature> <publicKey>
The signature and public key are moved to the "witness" section of the transaction, which receives a 75% discount on transaction weight (fees).
Advantages:
- Lowest fees of any pre-Taproot address type (witness discount).
- Malleability fix — SegWit fixes transaction malleability, enabling layer-2 protocols like Lightning Network.
- Better error detection — Bech32 encoding catches more errors than Base58Check.
- Simpler scripts — No P2SH wrapper overhead.
Disadvantages:
- Some older wallets and exchanges cannot send to bc1q addresses (increasingly rare as of 2025).
- Slightly longer address string than Legacy or P2SH.
Taproot Addresses (P2TR) — Starts with "bc1p"
Full name: Pay-to-Taproot (Bech32m encoding)
Example: bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297
Derivation path: m/86'/0'/0' (BIP-86)
Taproot was activated on Bitcoin in November 2021 (BIP-340, BIP-341, BIP-342). It represents the most significant upgrade to Bitcoin's scripting capabilities since SegWit.
Taproot uses Schnorr signatures instead of ECDSA and introduces a key-spend/script-spend model:
- Key path spend — The most common case: a single signature authorizes the spend, identical in appearance to any other Taproot transaction.
- Script path spend — Complex conditions (multisig, time locks, hash locks) can be committed to via a Merkle tree, revealed only when needed.
How spending works:
ScriptPubKey: 1 <32-byte-tweaked-public-key>
Witness: <signature> (key path, most common)
— or —
Witness: <script> <control-block> <arguments> (script path)
Advantages:
- Privacy — All Taproot transactions look the same on-chain regardless of the underlying spending conditions. A multisig transaction is indistinguishable from a single-signature transaction when using the key path.
- Efficiency — Schnorr signatures are smaller than ECDSA signatures. Key aggregation (MuSig2) enables multisig setups that produce a single combined signature.
- Scripting flexibility — MAST (Merkelized Alternative Script Trees) enables complex spending conditions without revealing unused branches.
- Low fees — Comparable to or lower than native SegWit for key-path spends.
Disadvantages:
- Still gaining adoption — some wallets and exchanges do not yet fully support sending to or from Taproot addresses.
- Complex implementation increases the risk of wallet bugs (though mature implementations exist).
- Bech32m encoding (different from Bech32) — wallet software must support both.
Address Type Comparison
| Feature | Legacy (1...) | P2SH (3...) | Native SegWit (bc1q...) | Taproot (bc1p...) |
|---|---|---|---|---|
| BIP | Original | BIP-16 | BIP-141/BIP-173 | BIP-341/BIP-350 |
| Derivation | m/44'/0'/0' | m/49'/0'/0' | m/84'/0'/0' | m/86'/0'/0' |
| Encoding | Base58Check | Base58Check | Bech32 | Bech32m |
| Signature | ECDSA | ECDSA | ECDSA | Schnorr |
| Fee cost | Highest | Medium | Low | Lowest (key path) |
| Privacy | Low | Medium | Medium | High |
| Error detection | Basic checksum | Basic checksum | BCH codes | BCH codes |
| Compatibility | Universal | Near-universal | Most wallets | Growing |
Which Bitcoin Address Type Should You Use?
For most users in 2025+: Use Native SegWit (bc1q) as the default. It offers the best balance of low fees, strong compatibility, and mature support.
For maximum privacy and lowest fees: Use Taproot (bc1p) if your wallet supports it and the services you interact with support sending to Taproot addresses.
For compatibility with older services: Use P2SH (3...) if you need to receive funds from a service that cannot send to bc1q or bc1p addresses.
Avoid Legacy (1...) for new wallets unless you have a specific compatibility requirement.
Ethereum Address Format
Ethereum uses a single address format:
0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38
- 20 bytes (40 hexadecimal characters) prefixed with
0x. - Derived from the last 20 bytes of the Keccak-256 hash of the public key.
- EIP-55 mixed-case checksum — Uppercase and lowercase letters serve as a checksum. If you alter the case of any letter, the checksum fails.
- The same address format is used for all EVM-compatible chains (Ethereum, Polygon, Arbitrum, Optimism, BSC).
Important: Sending tokens on the wrong network (e.g., ETH mainnet vs. Polygon) to the same address will not lose funds (the address exists on all EVM chains), but you may need to switch networks to access them.
ENS (Ethereum Name Service)
ENS provides human-readable names for Ethereum addresses:
vitalik.eth → 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Always verify the resolved address before sending funds. ENS names can be transferred, so the address behind a name can change.
Other Blockchain Address Formats
Bitcoin Cash (BCH)
Bitcoin Cash uses CashAddr format to distinguish from Bitcoin addresses:
bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a
The bitcoincash: prefix prevents accidental sending to Bitcoin addresses.
Litecoin (LTC)
Litecoin uses similar address types to Bitcoin:
- Legacy: starts with
LorM - P2SH: starts with
Mor3 - Native SegWit: starts with
ltc1q
Solana (SOL)
Solana uses Base58-encoded Ed25519 public keys:
7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV
32 bytes, Base58-encoded, typically 32-44 characters.
Cardano (ADA)
Cardano uses Bech32-encoded addresses with the prefix addr:
addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3jcu5d8ps7zex2k2xt3uqxgjqnnj83ws8lhrn648jjxtwq2ytjqp
Cardano addresses are notably longer than Bitcoin addresses because they encode both payment credentials and staking credentials.
TRON (TRX)
TRON uses Base58Check-encoded addresses starting with T:
TJYeasTPa6gpB9Ut5HALR2twMHU3gYpML8
Cosmos (ATOM)
Cosmos uses Bech32 encoding with chain-specific prefixes:
cosmos1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu
Each Cosmos SDK chain uses a different prefix (e.g., osmo for Osmosis, juno for Juno).
Use the SafeSeed Address Generator to derive addresses for multiple blockchains and address types from a single seed phrase. See how the same seed produces different addresses for Bitcoin Legacy, SegWit, Taproot, Ethereum, and more. All processing happens locally in your browser.
Address Validation and Safety
Checksum Verification
Always verify addresses before sending funds:
- Bitcoin Legacy/P2SH: Base58Check includes a 4-byte checksum. Most wallets verify this automatically.
- Bitcoin SegWit/Taproot: Bech32/Bech32m includes a 6-character checksum with strong error detection (BCH codes).
- Ethereum: EIP-55 mixed-case checksum. If a wallet does not implement EIP-55, it will accept any case — this is a warning sign.
Address Reuse
For privacy, avoid reusing Bitcoin addresses. Each transaction should use a fresh address. HD wallets (BIP-44) generate new addresses automatically.
Ethereum addresses are typically reused (account-based model), though using multiple accounts can improve privacy.
Clipboard Hijacking
Malware can monitor your clipboard and replace cryptocurrency addresses with the attacker's address. Always visually verify at least the first and last 6 characters of an address after pasting, and ideally the entire address. Some wallets display a visual hash (identicon) of the address for easier verification.
QR Code Verification
When scanning a QR code to get an address, verify the decoded address matches what you expect. Malicious QR codes can encode attacker-controlled addresses.
Converting Between Address Types
You cannot "convert" an address between types (e.g., Legacy to SegWit) because each type uses a different derivation path and produces a different set of keys. However, you can:
- Generate multiple address types from the same seed phrase — Your seed phrase derives keys for all address types simultaneously via different derivation paths.
- Send funds from one address type to another — Simply send a transaction from your Legacy address to your SegWit address. This is a normal Bitcoin transaction.
There is no way to access funds sent to a SegWit address using the Legacy derivation path, because they use different private keys.
FAQ
What is the difference between a Legacy and SegWit address?
Legacy addresses (starting with "1") use the original Bitcoin transaction format. SegWit addresses (starting with "bc1q") use Segregated Witness, which separates signature data from transaction data, resulting in smaller transactions, lower fees, and a fix for transaction malleability. SegWit is recommended for all new wallets.
Can I send Bitcoin from a Legacy address to a SegWit address?
Yes. All Bitcoin address types are interoperable on the network. You can send from any address type to any other address type. The only compatibility issue is with wallet software — some older wallets cannot create transactions that send to bc1q or bc1p addresses.
Why does my wallet show different addresses each time?
This is expected behavior for HD wallets using BIP-44. A new address is generated for each transaction to improve privacy. All addresses are derived from the same seed phrase and can be recovered. Previously used addresses remain valid and can still receive funds.
What is Bech32 encoding?
Bech32 is an address encoding format specified in BIP-173, used for native SegWit (bc1q) addresses. It uses lowercase alphanumeric characters (excluding 1, b, i, o), includes a BCH error-correcting checksum, and has a human-readable prefix (bc for Bitcoin mainnet). Bech32m (BIP-350) is a modified version used for Taproot (bc1p) addresses.
Which Bitcoin address type has the lowest fees?
Taproot (bc1p) addresses generally have the lowest fees for key-path spends due to Schnorr signature efficiency. Native SegWit (bc1q) is a close second. P2SH-wrapped SegWit (3...) is more expensive, and Legacy (1...) addresses are the most expensive due to their larger transaction size.
Can I use the same address for Bitcoin and Bitcoin Cash?
No. Although Legacy Bitcoin and Bitcoin Cash addresses may look similar (both start with "1"), sending Bitcoin to a Bitcoin Cash address (or vice versa) may result in the funds being sent on the wrong chain. Bitcoin Cash uses CashAddr format (starting with "bitcoincash:") to prevent this confusion.
What happens if I send crypto to the wrong address type on the wrong network?
For EVM chains (Ethereum, Polygon, BSC, etc.), the same address exists on all chains, so funds are not lost — you just need to access the correct network. For non-EVM chains with different address formats, wallets typically prevent you from sending to an invalid address. If somehow funds are sent to a non-existent address format, they may be permanently lost.
Are all Ethereum addresses the same format?
Yes. Ethereum uses a single address format (0x + 40 hex characters) for all purposes: receiving ETH, ERC-20 tokens, NFTs, and interacting with smart contracts. The same address is valid on all EVM-compatible chains.